:mod:`weaver.utils` =================== .. py:module:: weaver.utils Module Contents --------------- .. data:: LOGGER .. py:class:: _Singleton Bases: :class:`type` .. py:class:: _NullType Bases: :class:`six.with_metaclass()` Represents a ``null`` value to differentiate from ``None``. .. data:: null .. function:: get_weaver_url(container) -> AnyStr Retrieves the home URL of the `weaver` application. .. function:: get_any_id(info) -> Union[AnyStr, None] Retrieves a dictionary `id-like` key using multiple common variations ``[id, identifier, _id]``. :param info: dictionary that potentially contains an `id-like` key. :returns: value of the matched `id-like` key or ``None`` if not found. .. function:: get_any_value(info) -> AnyValue Retrieves a dictionary `value-like` key using multiple common variations ``[href, value, reference]``. :param info: dictionary that potentially contains a `value-like` key. :returns: value of the matched `value-like` key or ``None`` if not found. .. function:: get_any_message(info) -> AnyStr Retrieves a dictionary 'value'-like key using multiple common variations [message]. :param info: dictionary that potentially contains a 'message'-like key. :returns: value of the matched 'message'-like key or an empty string if not found. .. function:: get_registry(container) -> Registry Retrieves the application ``registry`` from various containers referencing to it. .. function:: get_settings(container) -> SettingsType Retrieves the application ``settings`` from various containers referencing to it. .. function:: get_header(header_name, header_container) -> Union[AnyStr, None] Searches for the specified header by case/dash/underscore-insensitive ``header_name`` inside ``header_container``. .. function:: get_cookie_headers(header_container, cookie_header_name='Cookie') -> HeadersType Looks for ``cookie_header_name`` header within ``header_container``. :returns: new header container in the form ``{'Cookie': }`` if it was matched, or empty otherwise. .. function:: get_url_without_query(url) -> AnyStr Removes the query string part of an URL. .. function:: is_valid_url(url) -> bool .. function:: parse_extra_options(option_str) Parses the extra options parameter. The option_str is a string with coma separated ``opt=value`` pairs. Example:: tempdir=/path/to/tempdir,archive_root=/path/to/archive :param option_str: A string parameter with the extra options. :return: A dict with the parsed extra options. .. function:: fully_qualified_name(obj) -> str Obtains the ``'.'`` full path definition of the object to allow finding and importing it. .. function:: now() -> datetime .. function:: now_secs() -> int Return the current time in seconds since the Epoch. .. function:: wait_secs(run_step=-1) .. function:: expires_at(hours=1) -> int .. function:: localize_datetime(dt, tz_name='UTC') -> datetime Provide a timezone-aware object for a given datetime and timezone name .. function:: get_base_url(url) -> AnyStr Obtains the base URL from the given ``url``. .. function:: path_elements(path) -> List[AnyStr] .. function:: lxml_strip_ns(tree) -> None .. function:: ows_context_href(href, partial=False) -> JSON Returns the complete or partial dictionary defining an ``OWSContext`` from a reference. .. function:: pass_http_error(exception, expected_http_error) -> None Given an `HTTPError` of any type (pyramid, requests), ignores (pass) the exception if the actual error matches the status code. Other exceptions are re-raised. :param exception: any `Exception` instance ("object" from a `try..except exception as "object"` block). :param expected_http_error: single or list of specific pyramid `HTTPError` to handle and ignore. :raise exception: if it doesn't match the status code or is not an `HTTPError` of any module. .. function:: raise_on_xml_exception(xml_node) Raises an exception with the description if the XML response document defines an ExceptionReport. :param xml_node: instance of :class:`etree.Element` :raise Exception: on found ExceptionReport document. .. function:: str2bytes(string) -> bytes Obtains the bytes representation of the string. .. function:: bytes2str(string) -> str Obtains the unicode representation of the string. .. function:: islambda(func) -> bool .. data:: first_cap_re .. data:: all_cap_re .. function:: convert_snake_case(name) -> AnyStr .. function:: parse_request_query(request) -> Dict[AnyStr, Dict[AnyKey, AnyStr]] :param request: :return: dict of dict where k=v are accessible by d[k][0] == v and q=k=v are accessible by d[q][k] == v, lowercase .. function:: get_log_fmt() -> AnyStr .. function:: get_log_date_fmt() -> AnyStr .. function:: get_log_monitor_msg(job_id, status, percent, message, location) -> AnyStr .. function:: get_job_log_msg(status, message, progress=0, duration=None) -> AnyStr .. function:: make_dirs(path, mode=493, exist_ok=True) Alternative to ``os.makedirs`` with ``exists_ok`` parameter only available for ``python>3.5``. .. function:: fetch_file(file_reference, file_outdir) -> AnyStr Fetches a file from a local path or remote URL and dumps it's content to the specified output directory. :param file_reference: Local filesystem path or remote URL file reference. :param file_outdir: Output directory path of the fetched file. :return: Path of the local copy of the fetched file. .. data:: REGEX_SEARCH_INVALID_CHARACTERS .. data:: REGEX_ASSERT_INVALID_CHARACTERS .. function:: get_sane_name(name, min_len=3, max_len=None, assert_invalid=True, replace_character='_') -> Union[AnyStr, None] Returns a cleaned-up version of the input name, replacing invalid characters matched with ``REGEX_SEARCH_INVALID_CHARACTERS`` by ``replace_character``. :param name: value to clean :param min_len: Minimal length of ``name`` to be respected, raises or returns ``None`` on fail according to ``assert_invalid``. :param max_len: Maximum length of ``name`` to be respected, raises or returns trimmed ``name`` on fail according to ``assert_invalid``. If ``None``, condition is ignored for assertion or full ``name`` is returned respectively. :param assert_invalid: If ``True``, fail conditions or invalid characters will raise an error instead of replacing. :param replace_character: Single character to use for replacement of invalid ones if ``assert_invalid=False``. .. function:: assert_sane_name(name, min_len=3, max_len=None) Asserts that the sane name respects conditions. .. seealso:: - argument details in :func:`get_sane_name` .. function:: clean_json_text_body(body) -> AnyStr Cleans a textual body field of superfluous characters to provide a better human-readable text in a JSON response.