boss.helper
===========

.. py:module:: boss.helper


Attributes
----------

.. autoapisummary::

   boss.helper.SPAM
   boss.helper.format
   boss.helper.log


Classes
-------

.. autoapisummary::

   boss.helper.Logger


Functions
---------

.. autoapisummary::

   boss.helper.get_module
   boss.helper.get_class_by_name
   boss.helper.file_from_url
   boss.helper.extend_none_allowed_list


Module Contents
---------------

.. py:function:: get_module(path, relative_path=None)

.. py:function:: get_class_by_name(name, relative_path=None)

   Resolve class by name

   :param name: (str) "%s.%s" % (module.name, class.name)
   :return: (class)


.. py:function:: file_from_url(url: str) -> io.IOBase

   Load content from a file specified by a URL.

   This can be every type of URL supported by pythons urllib
   (e.g. http://, file://, etc ). Giving the basic auth credentials in the URL in the form
   http://user:password@hostname:port/path is supported.

   :returns: file handle on the file


.. py:function:: extend_none_allowed_list(list1: list | None, list2: list | None) -> list | None

   Extend a list with another list which both can be None.

   If one of the lists is None, the other list is returned. If both lists are None, None is returned.

   :param list1: list to extend
   :param list2: list to extend with


.. py:data:: SPAM
   :value: 5


.. py:class:: Logger(name, level=NOTSET)

   Bases: :py:obj:`logging.Logger`


   Instances of the Logger class represent a single logging channel. A
   "logging channel" indicates an area of an application. Exactly how an
   "area" is defined is up to the application developer. Since an
   application can have any number of areas, logging channels are identified
   by a unique string. Application areas can be nested (e.g. an area
   of "input processing" might include sub-areas "read CSV files", "read
   XLS files" and "read Gnumeric files"). To cater for this natural nesting,
   channel names are organized into a namespace hierarchy where levels are
   separated by periods, much like the Java or Python package namespace. So
   in the instance given above, channel names might be "input" for the upper
   level, and "input.csv", "input.xls" and "input.gnu" for the sub-levels.
   There is no arbitrary limit to the depth of nesting.


   .. py:method:: setLevel(level, globally=False)

      Set the logging level of this logger.  level must be an int or a str.



   .. py:method:: spam(msg, *args, **kwargs)


.. py:data:: format
   :value: '%(asctime)-15s %(name)s: %(message)s'


.. py:data:: log

