Skip to main content

Decorator for logging function arguments and return value by human-readable way

Project description

logwrap

https://travis-ci.com/python-useful-helpers/logwrap.svg?branch=master https://github.com/python-useful-helpers/logwrap/workflows/Python%20package/badge.svg https://coveralls.io/repos/github/python-useful-helpers/logwrap/badge.svg?branch=master Documentation Status https://img.shields.io/pypi/v/logwrap.svg https://img.shields.io/pypi/pyversions/logwrap.svg https://img.shields.io/pypi/status/logwrap.svg https://img.shields.io/github/license/python-useful-helpers/logwrap.svg https://img.shields.io/badge/code%20style-black-000000.svg

logwrap is a helper for logging in human-readable format function arguments and call result on function call. Why? Because logging of *args, **kwargs become useless with project grow and you need more details in call log.

Cons:

  • Log records are not single line.

Pros:

  • Log records are not single 100500 symbols length line. (Especially actual for testing/development environments and for Kibana users).

  • Service free: job is done by this library and it’s dependencies. It works at virtualenv

  • Free software: Apache license

  • Open Source: https://github.com/python-useful-helpers/logwrap

  • PyPI packaged: https://pypi.python.org/pypi/logwrap

  • Self-documented code: docstrings with types in comments

  • Tested: see bages on top

  • Support multiple Python versions:

Python 3.7
Python 3.8
Python 3.9
Python 3.10

This package includes helpers:

  • logwrap - main helper. The same is LogWrap.

  • LogWrap - class with logwrap implementation. May be used directly.

  • pretty_repr

  • pretty_str

  • PrettyFormat

  • LogOnAccess - property with logging on successful get/set/delete or failure.

Usage

logwrap

The main decorator. Could be used as not argumented (@logwrap.logwrap) and argumented (@logwrap.logwrap()). Not argumented usage simple calls with default values for all positions.

Argumented usage with arguments from signature:

@logwrap.logwrap(
    log=None,  # if not set: try to find LOGGER, LOG, logger or log object in target module and use it if it logger instance. Fallback: logger named logwrap
    log_level=logging.DEBUG,
    exc_level=logging.ERROR,
    max_indent=20,  # forwarded to the pretty_repr
    blacklisted_names=None,  # list argument names, which should be dropped from log
    blacklisted_exceptions=None,  # Exceptions to skip details in log (no traceback, no exception details - just class name)
    log_call_args=True,  # Log call arguments before call
    log_call_args_on_exc=True,  # Log call arguments if exception happens
    log_traceback = True,  # Log traceback if exception happens
    log_result_obj=True,  # Log result object
)

Usage examples:

@logwrap.logwrap()
def foo():
    pass

is equal to:

@logwrap.logwrap
def foo():
    pass

Get decorator for use without parameters:

get_logs = logwrap.logwrap()  # set required parameters via arguments

type(get_logs) == LogWrap  # All logic is implemented in LogWrap class starting from version 2.2.0

@get_logs
def foo():
    pass

Call example (python 3.8):

import logwrap

@logwrap.logwrap
def example_function1(
        arg0: str,
        /,
        arg1: str,
        arg2: str='arg2',
        *args,
        kwarg1: str,
        kwarg2: str='kwarg2',
        **kwargs
) -> tuple():
    return (arg0, arg1, arg2, args, kwarg1, kwarg2, kwargs)

example_function1('arg0', 'arg1', kwarg1='kwarg1', kwarg3='kwarg3')

This code during execution will produce log records:

Calling:
'example_function1'(
    # POSITIONAL_ONLY:
    arg0='arg0',  # type: str
    # POSITIONAL_OR_KEYWORD:
    arg1='arg1',  # type: str
    arg2='arg2',  # type: str
    # VAR_POSITIONAL:
    args=(),
    # KEYWORD_ONLY:
    kwarg1='kwarg1',  # type: str
    kwarg2='kwarg2',  # type: str
    # VAR_KEYWORD:
    kwargs={
        'kwarg3': 'kwarg3',
    },
)
Done: 'example_function1' with result:

 (
    'arg0',
    'arg1',
    'arg2',
    (),
    'kwarg1',
    'kwarg2',
    {
        'kwarg3': 'kwarg3',
    },
 )

LogWrap

Example construction and read from test:

log_call = logwrap.LogWrap()
log_call.log_level == logging.DEBUG
log_call.exc_level == logging.ERROR
log_call.max_indent == 20
log_call.blacklisted_names == []
log_call.blacklisted_exceptions == []
log_call.log_call_args == True
log_call.log_call_args_on_exc == True
log_call.log_traceback == True
log_call.log_result_obj == True

On object change, variable types is validated.

In special cases, when special processing required for parameters logging (hide or change parameters in log), it can be done by override pre_process_param and post_process_param.

See API documentation for details.

pretty_repr

This is specified helper for making human-readable repr on complex objects. Signature is self-documenting:

def pretty_repr(
    src,  # object for repr
    indent=0,  # start indent
    no_indent_start=False,  # do not indent the first level
    max_indent=20,  # maximum allowed indent level
    indent_step=4,  # step between indents
)

pretty_str

This is specified helper for making human-readable str on complex objects. Signature is self-documenting:

def pretty_str(
    src,  # object for __str__
    indent=0,  # start indent
    no_indent_start=False,  # do not indent the first level
    max_indent=20,  # maximum allowed indent level
    indent_step=4,  # step between indents
)
Limitations:

Dict like objects is always marked inside {} for readability, even if it is collections.OrderedDict (standard repr as list of tuples).

Iterable types is not declared, only brackets is used.

String and bytes looks the same (its __str__, not __repr__).

PrettyFormat

PrettyFormat is the main formatting implementation class. pretty_repr and pretty_str uses instances of subclasses PrettyRepr and PrettyStr from this class. This class is mostly exposed for typing reasons. Object signature:

def __init__(
    self,
    max_indent=20,  # maximum allowed indent level
    indent_step=4,  # step between indents
)

Callable object (PrettyFormat instance) signature:

def __call__(
    self,
    src,  # object for repr
    indent=0,  # start indent
    no_indent_start=False  # do not indent the first level
)

Adopting your code

pretty_repr behavior could be overridden for your classes by implementing specific magic method:

def __pretty_repr__(
    self,
    parser  # PrettyFormat class instance,
    indent  # start indent,
    no_indent_start  # do not indent the first level
):
    return ...

This method will be executed instead of __repr__ on your object.

def __pretty_str__(
    self,
    parser  # PrettyFormat class instance,
    indent  # start indent,
    no_indent_start  # do not indent the first level
):
    return ...

This method will be executed instead of __str__ on your object.

LogOnAccess

This special case of property is useful in cases, where a lot of properties should be logged by similar way without writing a lot of code.

Basic API is conform with property, but in addition it is possible to customize logger, log levels and log conditions.

Usage examples:

  1. Simple usage. All by default. logger is re-used:

    • from instance if available with names logger or log,

    • from instance module if available with names LOGGER, log,

    • else used internal logwrap.log_on_access logger.

import logging

class Target(object):

    def init(self, val='ok')
        self.val = val
        self.logger = logging.get_logger(self.__class__.__name__)  # Single for class, follow subclassing

    def __repr__(self):
        return "{cls}(val={self.val})".format(cls=self.__class__.__name__, self=self)

    @logwrap.LogOnAccess
    def ok(self):
        return self.val

    @ok.setter
    def ok(self, val):
        self.val = val

    @ok.deleter
    def ok(self):
        self.val = ""
  1. Use with global logger for class:

class Target(object):

  def init(self, val='ok')
      self.val = val

  def __repr__(self):
      return "{cls}(val={self.val})".format(cls=self.__class__.__name__, self=self)

  @logwrap.LogOnAccess
  def ok(self):
      return self.val

  @ok.setter
  def ok(self, val):
      self.val = val

  @ok.deleter
  def ok(self):
      self.val = ""

  ok.logger = 'test_logger'
  ok.log_level = logging.INFO
  ok.exc_level = logging.ERROR
  ok.log_object_repr = True  # As by default
  ok.log_before = True  # As by default
  ok.log_success = True  # As by default
  ok.log_failure = True  # As by default
  ok.log_traceback = True  # As by default
  ok.override_name = None  # As by default: use original name

Testing

The main test mechanism for the package logwrap is using tox. Available environments can be collected via tox -l

CI systems

For code checking several CI systems is used in parallel:

  1. Travis CI: is used for checking: PEP8, pylint, bandit, installation possibility and unit tests. Also it’s publishes coverage on coveralls.

  2. coveralls: is used for coverage display.

  3. GitHub: is used for functional tests.

CD systems

  1. Travis CI: is used for linux and SDIST package delivery on PyPI.

Project details


Release history Release notifications | RSS feed

This version

9.0.2

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

logwrap-9.0.2.tar.gz (43.5 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

logwrap-9.0.2-py3-none-any.whl (25.7 kB view details)

Uploaded Python 3

logwrap-9.0.2-cp310-cp310-win_amd64.whl (86.0 kB view details)

Uploaded CPython 3.10Windows x86-64

logwrap-9.0.2-cp310-cp310-win32.whl (76.7 kB view details)

Uploaded CPython 3.10Windows x86

logwrap-9.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (892.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

logwrap-9.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (882.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

logwrap-9.0.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (806.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.12+ x86-64manylinux: glibc 2.5+ x86-64

logwrap-9.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (853.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

logwrap-9.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl (769.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.12+ i686manylinux: glibc 2.5+ i686

logwrap-9.0.2-cp39-cp39-win_amd64.whl (85.4 kB view details)

Uploaded CPython 3.9Windows x86-64

logwrap-9.0.2-cp39-cp39-win32.whl (76.7 kB view details)

Uploaded CPython 3.9Windows x86

logwrap-9.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (885.3 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

logwrap-9.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (876.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

logwrap-9.0.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (806.4 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.12+ x86-64manylinux: glibc 2.5+ x86-64

logwrap-9.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (847.6 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

logwrap-9.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl (767.4 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.12+ i686manylinux: glibc 2.5+ i686

logwrap-9.0.2-cp38-cp38-win_amd64.whl (85.0 kB view details)

Uploaded CPython 3.8Windows x86-64

logwrap-9.0.2-cp38-cp38-win32.whl (76.5 kB view details)

Uploaded CPython 3.8Windows x86

logwrap-9.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (893.1 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

logwrap-9.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (884.4 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

logwrap-9.0.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (870.8 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.12+ x86-64manylinux: glibc 2.5+ x86-64

logwrap-9.0.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (859.6 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

logwrap-9.0.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl (827.0 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.12+ i686manylinux: glibc 2.5+ i686

logwrap-9.0.2-cp37-cp37m-win_amd64.whl (83.5 kB view details)

Uploaded CPython 3.7mWindows x86-64

logwrap-9.0.2-cp37-cp37m-win32.whl (75.4 kB view details)

Uploaded CPython 3.7mWindows x86

logwrap-9.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (802.9 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

logwrap-9.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (794.3 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ARM64

logwrap-9.0.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (723.3 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.12+ x86-64manylinux: glibc 2.5+ x86-64

logwrap-9.0.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (767.3 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

logwrap-9.0.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl (689.3 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.12+ i686manylinux: glibc 2.5+ i686

File details

Details for the file logwrap-9.0.2.tar.gz.

File metadata

  • Download URL: logwrap-9.0.2.tar.gz
  • Upload date:
  • Size: 43.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.7.9

File hashes

Hashes for logwrap-9.0.2.tar.gz
Algorithm Hash digest
SHA256 0faf14ff14316cfe3a84df29fc74eb745a0889342afa1b642e5c1143f9e35f8a
MD5 8afbb035b175040ca41d81c9a6602a5b
BLAKE2b-256 a400eb39e125a366c098a3feaa713a90727a75c4a116ed2550c975b53385fd0d

See more details on using hashes here.

File details

Details for the file logwrap-9.0.2-py3-none-any.whl.

File metadata

  • Download URL: logwrap-9.0.2-py3-none-any.whl
  • Upload date:
  • Size: 25.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.7

File hashes

Hashes for logwrap-9.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2cafd10a93d1951f2a23f6a4c02b9aa671b64591c4f54cf5ec0776ef030e358a
MD5 ec216deda1c945bf6acdc8527d9678ff
BLAKE2b-256 fe0b27b3d3b2e7609906591f79a5624343587c1ab628abb33b0c112b02384153

See more details on using hashes here.

File details

Details for the file logwrap-9.0.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: logwrap-9.0.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 86.0 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0

File hashes

Hashes for logwrap-9.0.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 41caebce32d1abee8261ef404e23e4e7839ca4d7430400b175465d20f6f4e1c9
MD5 3b76e972c3fb20df30b9e87633e0cbfa
BLAKE2b-256 87cd1613a4b0708ab06759626e48e603e8b3bcdd430fa8e6933e497727e0c421

See more details on using hashes here.

File details

Details for the file logwrap-9.0.2-cp310-cp310-win32.whl.

File metadata

  • Download URL: logwrap-9.0.2-cp310-cp310-win32.whl
  • Upload date:
  • Size: 76.7 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0

File hashes

Hashes for logwrap-9.0.2-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 593b3116eb4f6db156d4a40e035843c38b084be9ec407d5ab22205fde7ce5d3c
MD5 5ba6637f902bb2d2ceafc08d284c7dc1
BLAKE2b-256 a0f47d665d11c3bbd1ba73fe7d403db1bb6a3219cdc347c28b3e3f7db1a53560

See more details on using hashes here.

File details

Details for the file logwrap-9.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for logwrap-9.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 603dcb782a8ad25ed0481f4b981f3134b87ed75b760a30ae443216bb4752bf54
MD5 8ca247475c053eca226580d7424b2283
BLAKE2b-256 cab237ca3ea6346127e19c874445d2b0522811299b07b4d61e284d85a6eed9e7

See more details on using hashes here.

File details

Details for the file logwrap-9.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for logwrap-9.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 876c672e70b80cf4e958248c68f6982acfec5aa2f8911c7d9607877856866bb9
MD5 c6e8ee4966af38c59394258a3def4304
BLAKE2b-256 251d32045dea288d73a1243278f37cbfd76ce4de8a4889757ea26c6a4fb01cbc

See more details on using hashes here.

File details

Details for the file logwrap-9.0.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for logwrap-9.0.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 b947e2f68610bbf0dee5e4ca7600ccb5e2393d8f9a21baa5577ca10960545159
MD5 f1a3bc798b229c23b9634bea8ffa6fba
BLAKE2b-256 16f89011169113df49db766ffe0e6156baa39476dbd9961d5eedd27875ea91d3

See more details on using hashes here.

File details

Details for the file logwrap-9.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for logwrap-9.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 ee39806d80bd2451f1e1711ca4706ce3e7b2e810eb3ac1781fb5b80e0da11625
MD5 78fc85d7f93e7e7b4af657f2e2340403
BLAKE2b-256 c0c50feba69be0a9d2a3a6ef1b2821aadec4fe9507879e7a01e4c9b8adeaa38c

See more details on using hashes here.

File details

Details for the file logwrap-9.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for logwrap-9.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 bf2e6510f83c19de0d5b8f568189882d0046b2034ecb3f3887dd8a5dc57ea82f
MD5 c6ba008d2eb3f788a0c8913faa8e3371
BLAKE2b-256 6a212872a1a87a81dd8be5da5acc0adf4d4da69bf41aa466897556ed4ae95bc6

See more details on using hashes here.

File details

Details for the file logwrap-9.0.2-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: logwrap-9.0.2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 85.4 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for logwrap-9.0.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 6b191c4622f183119d90ef4041c5512d8c0c36c9fdc1e55b02651ed7fa94e941
MD5 ab717f8f1da69db6a365560414e9f3ce
BLAKE2b-256 5b44d810b6732d9d4036586718c3dfa40aea78811631663ad899c8e4b71720ed

See more details on using hashes here.

File details

Details for the file logwrap-9.0.2-cp39-cp39-win32.whl.

File metadata

  • Download URL: logwrap-9.0.2-cp39-cp39-win32.whl
  • Upload date:
  • Size: 76.7 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for logwrap-9.0.2-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 f7d09cd753e70b96ec70c593f76f22d1a4681efdc1517b5ea4924ad74166fa2d
MD5 35428562057073dcd71eca8f99f159ce
BLAKE2b-256 6e62b219df281d2c0135c4eefc541667876d39d6d334b6680d2a70807f005456

See more details on using hashes here.

File details

Details for the file logwrap-9.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for logwrap-9.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9e5a1a003e47e3e6a6f17679de9ddd542b8c6509dded2eca303a6d829e04c781
MD5 d91fb791ca00417d05a4ae4673b5d2c3
BLAKE2b-256 48fcbe07600126456e8acd1f748ca86940babc07fb0caa45a96d3a1fd55fc2ea

See more details on using hashes here.

File details

Details for the file logwrap-9.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for logwrap-9.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f7c2abebb371da819cac5a3330cd45afbc71fed54d986daf1a81d4240db6e93b
MD5 36898a75b82ed886adde2549eee4f2dd
BLAKE2b-256 27322da695ffa0ecc5d1f066d93d0506dea4e55d547d6a98b9c4f87e78eb59f4

See more details on using hashes here.

File details

Details for the file logwrap-9.0.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for logwrap-9.0.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 7e8fa1da0c022fd1528dfe888d5f2e67023864f8d5391464ad90be391368cbf2
MD5 2342ee88b94cc691d1c50ff162803926
BLAKE2b-256 e67744e10d6bad433fbb6df950561ceda2e1d462117eadb603f453b6d993e663

See more details on using hashes here.

File details

Details for the file logwrap-9.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for logwrap-9.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 fd0b99690eaa725160336b75e05dd14ceb1cbc2401544e8ab0100425b7eaddab
MD5 8cec9b19f708c8dda93d71c3eba5d71a
BLAKE2b-256 0f1e69d5cde1ac77a01a13ec2159cc5427709bcc016bf01c233af84431553399

See more details on using hashes here.

File details

Details for the file logwrap-9.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for logwrap-9.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 96bd0726fbc71ce280e4d1e2cfc551a904166100110fef2a31ad780196bec5cd
MD5 6aefdd3226177ffd32a39bca8ef31480
BLAKE2b-256 2287133e17aa7b4952ecf7a810a23eedc9a700b89e25c73e6ce799cb6ca28668

See more details on using hashes here.

File details

Details for the file logwrap-9.0.2-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: logwrap-9.0.2-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 85.0 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10

File hashes

Hashes for logwrap-9.0.2-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 4bac8a70fdf915c4ff50a1c4d23348bacedff0f50306d80519ab3dd846224a5c
MD5 6071e22cab77eb5808e7625b1458bd2a
BLAKE2b-256 e04e50fa05245c6f4fb5e6e45ec143a086939bcc98c94884cee744c230fa186a

See more details on using hashes here.

File details

Details for the file logwrap-9.0.2-cp38-cp38-win32.whl.

File metadata

  • Download URL: logwrap-9.0.2-cp38-cp38-win32.whl
  • Upload date:
  • Size: 76.5 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10

File hashes

Hashes for logwrap-9.0.2-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 7d87b86fcdd246b72c0c624ca01880b9f4a6c9df945b9adbbf1814d5297aae8b
MD5 cd16d006b819689681bebc152ab9674c
BLAKE2b-256 e3918128bbc481094e560b4eb2b73ca4260247f8c2f1715f3e02d835d4cd2bf1

See more details on using hashes here.

File details

Details for the file logwrap-9.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for logwrap-9.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 423b30138406c56328f502411f6ae23405112df428311fd5c050235cbe793d37
MD5 4d6e1b7fb2a9129720266e52d435d506
BLAKE2b-256 14e36a464a91f24cd011324a1212394e98533f4ee0abf4857969310d63234ac1

See more details on using hashes here.

File details

Details for the file logwrap-9.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for logwrap-9.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 88782e42e32565d9547f5c0ea2781a4155c14e019042b62038a0d2ad034519c7
MD5 fd03ed0d5faa13f70c59ae843fa25c8c
BLAKE2b-256 5497852c5153983e54260bb7dc68fa70770a8206d5018ec3b198257248c43fa5

See more details on using hashes here.

File details

Details for the file logwrap-9.0.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for logwrap-9.0.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 854af5bd200c42621ffb3b7c8ef523177e5a39cb9c69967a297fb057df954d02
MD5 16136f088b5fa94ef5f1574b6f53a919
BLAKE2b-256 75c9323918f4e043e45b2e845a57259ec5f0f540259eb11e2ff2b0630dc3019f

See more details on using hashes here.

File details

Details for the file logwrap-9.0.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for logwrap-9.0.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 73ceb7ca601976a79d0eb171b0a154f74ae47143ee2a0045f05a28bea01cdeb8
MD5 e41e59137adee682a414945d5660ef96
BLAKE2b-256 999192f2496215a6c3960090ab8ee11131a5b29d8dedf895fecb8e3ebbee1894

See more details on using hashes here.

File details

Details for the file logwrap-9.0.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for logwrap-9.0.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 fb5cd01ac2381fa1ee3f9a78bea9d61e5f2eaa3640e4b23e2c40d1433f1d4d65
MD5 a438fa23e1bbf279270c6c086aaec409
BLAKE2b-256 a145d2a4b244b2e5eb368d7a7a7b966f688bb3068aae5e5ec8c0e98a29d0d24c

See more details on using hashes here.

File details

Details for the file logwrap-9.0.2-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: logwrap-9.0.2-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 83.5 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.7.9

File hashes

Hashes for logwrap-9.0.2-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 e8681326fa3c5acf36bcf5abb1f876c7bd5d52b0370e8fe786c4b86453178a00
MD5 95d8691a5e3f100f7fb9fba78382ff99
BLAKE2b-256 cb2a9b767ac3e970c78d1e957c8efba9ab1f4542cc58b441ab8096fb02bc2801

See more details on using hashes here.

File details

Details for the file logwrap-9.0.2-cp37-cp37m-win32.whl.

File metadata

  • Download URL: logwrap-9.0.2-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 75.4 kB
  • Tags: CPython 3.7m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.7.9

File hashes

Hashes for logwrap-9.0.2-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 c4bb5c91cc7423e085c4fc4a836a1687a3d672946db0270fd5e6081d508764af
MD5 8c19297c64e4525a9c94d2d4f730ddc2
BLAKE2b-256 5e0b1e7a26288e00444368b91d32f392e2a84954424fe25f54c35fcd71cbc7c9

See more details on using hashes here.

File details

Details for the file logwrap-9.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for logwrap-9.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 af1c2846ec20852a1607bd98e17d07053cd353b7fb72ca085e5c34d495ee287e
MD5 674d933193d8ac0b263f8eca51657e0e
BLAKE2b-256 967c56bbadaf1e24950033bd403b5afe1cfb982343a87a467096cd8f7b51958c

See more details on using hashes here.

File details

Details for the file logwrap-9.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for logwrap-9.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 70306472fe16e4367beb82a7a258ea5488c215b309847d6f31ed22b486703983
MD5 551499e4485159d5bedd085316cbe9dd
BLAKE2b-256 c09aefb24b452babb2e3b28bcad02cb8a599d70d0f397c21fb64dfd48d6289fa

See more details on using hashes here.

File details

Details for the file logwrap-9.0.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for logwrap-9.0.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 863528a8a6da77faeb90bae4a97692bce385869e3b836c3e9e33a15437684c0f
MD5 59120578a7077ee24e794a8811639aab
BLAKE2b-256 0b95c94f01d4bc7ecc8b0498775b2243c43c6003dde26a896e2614d959943fb6

See more details on using hashes here.

File details

Details for the file logwrap-9.0.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for logwrap-9.0.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a22987b73ecfa16e2aac5e5803f2104b4a7eca3f58f1fb603f7008783db1dcac
MD5 e963b9abc9da739c023db73b0501d2da
BLAKE2b-256 a7b0016a54add0d15f6f440f0b248045fae32ba62356f8dda95291209d12e2b2

See more details on using hashes here.

File details

Details for the file logwrap-9.0.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for logwrap-9.0.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 2600c006fc78aaaa9e8445769b0dacf5ab25c662b09a1ce70791723a56075056
MD5 fc94d0a3faadfd3967ac4f3e5514b3c0
BLAKE2b-256 a9b7e3e212a287d7a761f3b6bb17e2e387417668a4a3c71e7105636803b60bd8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page