Skip to main content

Representing complex object as unicode or simple string.

Project description

unilog

Version PyVersions PyImplementations Status Coverage License

Unilog module aimed at facilitating the development and logging complex data structures, mainly for python2.7. In python3, there is no such pain when printing complex data structures, so python3 support is due to backward compatibility with the old code. But for python3, the functionality of registering converters will be useful, for printing or logging complex data structures that do not override the __str__ method or need to represent them in a different way. The functionality of registering converters is also available for python2.7.

Unilog provides 3 functions (their description can be obtained by the help function):

  • as_unicode

  • as_str

  • register_converter

Installation

$ pip install unilog

Example

data = {
    'date': datetime.date(2016, 12, 6),
    'datetime': datetime.datetime(2016, 12, 6, 11, 22, 33, 444444),
    'str': 'item1',
    'str2': 'пункт2',
    u'юникод': u'пункт3',
    'int': 4,
    'float': 4.44,
    'bytearray': bytearray([0, 1, 2]),
    'NoneType': None,
    'True': True,
    'False': False,
    'list': [
        datetime.date(2016, 12, 6), datetime.datetime(2016, 12, 6, 11, 22, 33, 444444),
        'item1', 'пункт2', u'пункт3', 4, 4.44, bytearray([0, 1, 2]), None, True, False
    ],
    'tuple': (
        datetime.date(2016, 12, 6), datetime.datetime(2016, 12, 6, 11, 22, 33, 444444),
        'item1', 'пункт2', u'пункт3', 4, 4.44, bytearray([0, 1, 2]), None, True, False
    ),
    'generator': (i for i in xrange(3, 6))
}

# default python2.7 behavior
>>> print unicode(data)
{'bytearray': bytearray(b'\x00\x01\x02'), 'tuple': (datetime.date(2016, 12, 6),
datetime.datetime(2016, 12, 6, 11, 22, 33, 444444), 'item1',
'\xd0\xbf\xd1\x83\xd0\xbd\xd0\xba\xd1\x822', u'\u043f\u0443\u043d\u043a\u04423', 4, 4.44,
bytearray(b'\x00\x01\x02'), None, True, False), 'int': 4, 'float': 4.44,
'datetime': datetime.datetime(2016, 12, 6, 11, 22, 33, 444444), 'date': datetime.date(2016, 12, 6),
'False': False, 'generator': <generator object <genexpr> at 0x7ff51a58df00>,
'str2': '\xd0\xbf\xd1\x83\xd0\xbd\xd0\xba\xd1\x822', 'list': [datetime.date(2016, 12, 6),
datetime.datetime(2016, 12, 6, 11, 22, 33, 444444), 'item1',
'\xd0\xbf\xd1\x83\xd0\xbd\xd0\xba\xd1\x822', u'\u043f\u0443\u043d\u043a\u04423', 4, 4.44,
bytearray(b'\x00\x01\x02'), None, True, False], 'str': 'item1',
u'\u044e\u043d\u0438\u043a\u043e\u0434': u'\u043f\u0443\u043d\u043a\u04423', 'True': True,
'NoneType': None}

# use unilog.as_unicode function
>>> print unilog.as_unicode(data)
{'bytearray': b'\\x00\\x01\\x02', 'tuple': (u'2016-12-06', u'2016-12-06 11:22:33.444444', 'item1',
'пункт2', u'пункт3', 4, 4.44, b'\\x00\\x01\\x02', None, True, False), 'int': 4, 'float': 4.44,
'datetime': u'2016-12-06 11:22:33.444444', 'date': u'2016-12-06', 'False': False,
'generator': '<generator object <genexpr> at 0x7ff51a58df00>', 'str2': 'пункт2',
 'list': [u'2016-12-06', u'2016-12-06 11:22:33.444444', 'item1', 'пункт2', u'пункт3', 4, 4.44,
 b'\\x00\\x01\\x02', None, True, False], 'str': 'item1', u'юникод': u'пункт3', 'True': True, 'NoneType': None}

# use unilog.as_unicode function with pretty print
>>> print unilog.as_unicode(data, pretty=True)
{
    'bytearray': b'\\x00\\x01\\x02',
    'tuple': (
        u'2016-12-06',
        u'2016-12-06 11:22:33.444444',
        'item1',
        'пункт2',
        u'пункт3',
        4,
        4.44,
        b'\\x00\\x01\\x02',
        None,
        True,
        False
    ),
    'int': 4,
    'float': 4.44,
    'datetime': u'2016-12-06 11:22:33.444444',
    'date': u'2016-12-06',
    'False': False,
    'generator': '<generator object <genexpr> at 0x7ff51a58df00>',
    'str2': 'пункт2',
    'list': [
        u'2016-12-06',
        u'2016-12-06 11:22:33.444444',
        'item1',
        'пункт2',
        u'пункт3',
        4,
        4.44,
        b'\\x00\\x01\\x02',
        None,
        True,
        False
    ],
    'str': 'item1',
    u'юникод': u'пункт3',
    'True': True,
    'NoneType': None
}

License

MIT licensed. See the bundled LICENSE file for more details.

Project details


Download files

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

Source Distribution

unilog-2.0.0.tar.gz (4.5 kB view details)

Uploaded Source

File details

Details for the file unilog-2.0.0.tar.gz.

File metadata

  • Download URL: unilog-2.0.0.tar.gz
  • Upload date:
  • Size: 4.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for unilog-2.0.0.tar.gz
Algorithm Hash digest
SHA256 5256dd85bb9ba331cee1d4c4c59ac44e98e99052be1487162fd0e93d01090e82
MD5 c003ce2ee3bad4ed284f4d7fbd4d0727
BLAKE2b-256 ca5af1e0be335facc69e9590b0f89cb3011366d4b12979d2103dff87306cb871

See more details on using hashes here.

Supported by

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