{ "info": { "author": "Hynek Schlawack", "author_email": "hs@ox.cx", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": ".. image:: https://www.structlog.org/en/latest/_static/structlog_logo_small.png\n :alt: structlog Logo\n :width: 256px\n :target: https://www.structlog.org/\n\n============================================\n``structlog``: Structured Logging for Python\n============================================\n\n.. image:: https://img.shields.io/pypi/v/structlog.svg\n :target: https://pypi.org/project/structlog/\n :alt: PyPI\n\n.. image:: https://readthedocs.org/projects/structlog/badge/?version=stable\n :target: https://www.structlog.org/en/stable/?badge=stable\n :alt: Documentation Status\n\n.. image:: https://dev.azure.com/the-hynek/structlog/_apis/build/status/hynek.structlog?branchName=master\n :target: https://dev.azure.com/the-hynek/structlog/_build?definitionId=1\n :alt: CI Status\n\n.. image:: https://codecov.io/github/hynek/structlog/branch/master/graph/badge.svg\n :target: https://codecov.io/github/hynek/structlog\n :alt: Test Coverage\n\n.. image:: https://img.shields.io/badge/code%20style-black-000000.svg\n :target: https://github.com/psf/black\n :alt: Code style: black\n\n.. -begin-short-\n\n``structlog`` makes logging in Python less painful and more powerful by adding structure to your log entries.\n\nIt's up to you whether you want ``structlog`` to take care about the **output** of your log entries or whether you prefer to **forward** them to an existing logging system like the standard library's ``logging`` module.\n\n.. -end-short-\n\nOnce you feel inspired to try it out, check out our friendly `Getting Started tutorial `_ that also contains detailed installation instructions!\n\n.. -begin-spiel-\n\nIf you prefer videos over reading, check out this DjangoCon Europe 2019 talk by `Markus Holtermann `_: \"`Logging Rethought 2: The Actions of Frank Taylor Jr. `_\".\n\n\nEasier Logging\n==============\n\nYou can stop writing prose and start thinking in terms of an event that happens in the context of key/value pairs:\n\n.. code-block:: pycon\n\n >>> from structlog import get_logger\n >>> log = get_logger()\n >>> log.info(\"key_value_logging\", out_of_the_box=True, effort=0)\n 2016-04-20 16:20.13 key_value_logging effort=0 out_of_the_box=True\n\nEach log entry is a meaningful dictionary instead of an opaque string now!\n\n\nData Binding\n============\n\nSince log entries are dictionaries, you can start binding and re-binding key/value pairs to your loggers to ensure they are present in every following logging call:\n\n.. code-block:: pycon\n\n >>> log = log.bind(user=\"anonymous\", some_key=23)\n >>> log = log.bind(user=\"hynek\", another_key=42)\n >>> log.info(\"user.logged_in\", happy=True)\n 2016-04-20 16:20.13 user.logged_in another_key=42 happy=True some_key=23 user='hynek'\n\n\nPowerful Pipelines\n==================\n\nEach log entry goes through a `processor pipeline `_ that is just a chain of functions that receive a dictionary and return a new dictionary that gets fed into the next function.\nThat allows for simple but powerful data manipulation:\n\n.. code-block:: python\n\n def timestamper(logger, log_method, event_dict):\n \"\"\"Add a timestamp to each log entry.\"\"\"\n event_dict[\"timestamp\"] = time.time()\n return event_dict\n\nThere are `plenty of processors `_ for most common tasks coming with ``structlog``:\n\n- Collectors of `call stack information `_ (\"How did this log entry happen?\"),\n- \u2026and `exceptions `_ (\"What happened\u203d\").\n- Unicode encoders/decoders.\n- Flexible `timestamping `_.\n\n\n\nFormatting\n==========\n\n``structlog`` is completely flexible about *how* the resulting log entry is emitted.\nSince each log entry is a dictionary, it can be formatted to **any** format:\n\n- A colorful key/value format for `local development `_,\n- `JSON `_ for easy parsing,\n- or some standard format you have parsers for like nginx or Apache httpd.\n\nInternally, formatters are processors whose return value (usually a string) is passed into loggers that are responsible for the output of your message.\n``structlog`` comes with multiple useful formatters out-of-the-box.\n\n\nOutput\n======\n\n``structlog`` is also very flexible with the final output of your log entries:\n\n- A **built-in** lightweight printer like in the examples above.\n Easy to use and fast.\n- Use the **standard library**'s or **Twisted**'s logging modules for compatibility.\n In this case ``structlog`` works like a wrapper that formats a string and passes them off into existing systems that won't ever know that ``structlog`` even exists.\n Or the other way round: ``structlog`` comes with a ``logging`` formatter that allows for processing third party log records.\n- Don't format it to a string at all!\n ``structlog`` passes you a dictionary and you can do with it whatever you want.\n Reported uses cases are sending them out via network or saving them in a database.\n\n.. -end-spiel-\n\n.. -begin-meta-\n\nGetting Help\n============\n\nPlease use the ``structlog`` tag on `StackOverflow `_ to get help.\n\nAnswering questions of your fellow developers is also great way to help the project!\n\n\nProject Information\n===================\n\n``structlog`` is dual-licensed under `Apache License, version 2 `_ and `MIT `_, available from `PyPI `_, the source code can be found on `GitHub `_, the documentation at https://www.structlog.org/.\n\nWe collect useful third party extension in `our wiki `_.\n\n``structlog`` targets Python 2.7, 3.5 and newer, and PyPy.\n\n\nRelease Information\n===================\n\n19.2.0 (2019-10-16)\n-------------------\n\n\nBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n- Python 3.4 is not supported anymore.\n It has been unsupported by the Python core team for a while now and its PyPI downloads are negligible.\n\n It's very unlikely that ``structlog`` will break under 3.4 anytime soon, but we don't test it anymore.\n\n\nDeprecations:\n^^^^^^^^^^^^^\n\n*none*\n\n\nChanges:\n^^^^^^^^\n\n- Full Python 3.8 support for ``structlog.stdlib``.\n- Added more pass-through properties to ``structlog.stdlib.BoundLogger``.\n To makes it easier to use it as a drop-in replacement for ``logging.Logger``.\n `#198 `_\n- ``structlog.stdlib.ProcessorFormatter`` now takes a logger object as an optional keyword argument.\n This makes ``ProcessorFormatter`` work properly with ``stuctlog.stdlib.filter_by_level()``.\n `#219 `_\n- ``structlog.dev.ConsoleRenderer`` now uses no colors by default, if ``colorama`` is not available.\n `#215 `_\n- ``structlog.dev.ConsoleRenderer`` now initializes ``colorama`` lazily, to prevent accidental side-effects just by importing ``structlog``.\n `#210 `_\n- Added new processor ``structlog.dev.set_exc_info()`` that will set ``exc_info=True`` if the method's name is `exception` and ``exc_info`` isn't set at all.\n *This is only necessary when the standard library integration is not used*.\n It fixes the problem that in the default configuration, ``structlog.get_logger().exception(\"hi\")`` in an ``except`` block would not print the exception without passing ``exc_info=True`` to it explicitly.\n `#130 `_,\n `#173 `_,\n `#200 `_,\n `#204 `_\n- A best effort has been made to make as much of ``structlog`` pickleable as possible to make it friendlier with ``multiprocessing`` and similar libraries.\n Some classes can only be pickled on Python 3 or using the `dill `_ library though and that is very unlikely to change.\n\n So far, the configuration proxy, ``structlog.processor.TimeStamper``, ``structlog.BoundLogger``, ``structlog.PrintLogger`` and ``structlog.dev.ConsoleRenderer`` have been made pickelable.\n Please report if you need any another class fixed.\n `#126 `_\n- Added a new thread-local API that allows binding values to a thread-local context explicitly without affecting the default behavior of ``bind()``.\n `#222 `_,\n `#225 `_\n- Added ``pass_foreign_args`` argument to ``structlog.stdlib.ProcessorFormatter``.\n It allows to pass a foreign log record's ``args`` attribute to the event dictionary under the ``positional_args`` key.\n `#228 `_\n- ``structlog.dev.ConsoleRenderer`` now calls ``str()`` on the event value.\n `#221 `_\n\n`Full changelog `_.\n\nAuthors\n=======\n\n``structlog`` is written and maintained by `Hynek Schlawack `_.\nIt\u2019s inspired by previous work done by `Jean-Paul Calderone `_ and `David Reid `_.\n\nThe development is kindly supported by `Variomedia AG `_.\n\nA full list of contributors can be found on GitHub\u2019s `overview `_.\nSome of them disapprove of the addition of thread local context data. :)\n\nThe ``structlog`` logo has been contributed by `Russell Keith-Magee `_.\n\n\n", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://www.structlog.org/", "keywords": "logging,structured,structure,log", "license": "MIT or Apache License, Version 2.0", "maintainer": "Hynek Schlawack", "maintainer_email": "hs@ox.cx", "name": "structlog", "package_url": "https://pypi.org/project/structlog/", "platform": "", "project_url": "https://pypi.org/project/structlog/", "project_urls": { "Homepage": "https://www.structlog.org/" }, "release_url": "https://pypi.org/project/structlog/19.2.0/", "requires_dist": [ "six", "coverage ; extra == 'azure-pipelines'", "freezegun (>=0.2.8) ; extra == 'azure-pipelines'", "pretend ; extra == 'azure-pipelines'", "pytest (>=3.3.0) ; extra == 'azure-pipelines'", "simplejson ; extra == 'azure-pipelines'", "pytest-azurepipelines ; extra == 'azure-pipelines'", "python-rapidjson ; (python_version >= \"3.6\") and extra == 'azure-pipelines'", "coverage ; extra == 'dev'", "freezegun (>=0.2.8) ; extra == 'dev'", "pretend ; extra == 'dev'", "pytest (>=3.3.0) ; extra == 'dev'", "simplejson ; extra == 'dev'", "sphinx ; extra == 'dev'", "twisted ; extra == 'dev'", "pre-commit ; extra == 'dev'", "python-rapidjson ; (python_version >= \"3.6\") and extra == 'dev'", "sphinx ; extra == 'docs'", "twisted ; extra == 'docs'", "coverage ; extra == 'tests'", "freezegun (>=0.2.8) ; extra == 'tests'", "pretend ; extra == 'tests'", "pytest (>=3.3.0) ; extra == 'tests'", "simplejson ; extra == 'tests'", "python-rapidjson ; (python_version >= \"3.6\") and extra == 'tests'" ], "requires_python": "", "summary": "Structured Logging for Python", "version": "19.2.0" }, "last_serial": 5982470, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "97fa9a90e46bda13f30d5d435351f843", "sha256": "23579c5ea38fdd273114da2f2eb09102e42256de43a102642d247e8c7d2cdce7" }, "downloads": -1, "filename": "structlog-0.1.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "97fa9a90e46bda13f30d5d435351f843", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 19013, "upload_time": "2013-09-12T16:06:43", "url": "https://files.pythonhosted.org/packages/eb/e9/0e3d8814929a5e20ab9727f034260f05d38b181b1acb604af2c96cd11003/structlog-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c30db3c6e3cebdeda0566e9af9a4c447", "sha256": "1aa5a6cd0005c32d3ce283182c91ea9b5ea33b8f568722445d4b954d1ce5d595" }, "downloads": -1, "filename": "structlog-0.1.0.tar.gz", "has_sig": true, "md5_digest": "c30db3c6e3cebdeda0566e9af9a4c447", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58236, "upload_time": "2013-09-12T16:06:35", "url": "https://files.pythonhosted.org/packages/0d/c9/9ce7617326b6b3ccca68cffaca528e8374ba377aed59cf94c04a1ea4a3c9/structlog-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "32b298691541355e724ea7afd6bb15d4", "sha256": "0dba4699507f6173926f3120b276cca13ffae47aafc1f45a55f673a677a7355b" }, "downloads": -1, "filename": "structlog-0.2.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "32b298691541355e724ea7afd6bb15d4", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 22306, "upload_time": "2013-09-17T09:54:34", "url": "https://files.pythonhosted.org/packages/e1/2d/d790a4cace0ba0c40de7830f2f860bbcac75f6c0e171deb382a11724ed56/structlog-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "46e6dc4dbd73361b9cbe6e2cde62348f", "sha256": "a2875aab8b177b522390f587aa53aafaa88dac0f32ab105aaea413b56080ec00" }, "downloads": -1, "filename": "structlog-0.2.0.tar.gz", "has_sig": true, "md5_digest": "46e6dc4dbd73361b9cbe6e2cde62348f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 64339, "upload_time": "2013-09-17T09:54:26", "url": "https://files.pythonhosted.org/packages/5c/fd/34af64377110a7345cc0f7e57e94e517a3d3857001c5300fb3a68b315439/structlog-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "b887e80e49cce9b1eade3a8ecf996bb2", "sha256": "5cf8d4915c6e2ac179dc25d3ea752c4968e8b24b6988e3cf2e1168517d18e054" }, "downloads": -1, "filename": "structlog-0.3.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "b887e80e49cce9b1eade3a8ecf996bb2", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 25834, "upload_time": "2013-09-23T13:34:16", "url": "https://files.pythonhosted.org/packages/b2/9b/5ff79a227251fcde4b39a5428a4a61a12a00455828583a1dae83fe21084e/structlog-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "308a3e328d90923c757796ab48db3f63", "sha256": "dec1678afdcff900912fbb98dce2b4a63f1e02cb05183c5b98a70785700fd431" }, "downloads": -1, "filename": "structlog-0.3.0.tar.gz", "has_sig": true, "md5_digest": "308a3e328d90923c757796ab48db3f63", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 76050, "upload_time": "2013-09-23T13:34:06", "url": "https://files.pythonhosted.org/packages/e5/b4/b85c94c32347c1ad25793b346471b061f086eec5d8f1b7a061090d6bb2e6/structlog-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "e5194c6d8a8713b4cf7076548e821ccf", "sha256": "15fe392b528611ea88e5f10a5a4d003bfd489e58574bc7189376563dba94d036" }, "downloads": -1, "filename": "structlog-0.3.1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "e5194c6d8a8713b4cf7076548e821ccf", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 25790, "upload_time": "2013-09-26T07:12:18", "url": "https://files.pythonhosted.org/packages/1e/0b/54b417936e5f4dc8c7408ff5e3bc28c62b8e222291d1e7ab300ab510b4c6/structlog-0.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a62074b64b176de4169bd3e026ca58f0", "sha256": "1c913981aa9e327d8953096d2b1ee75943e3efc88ecf8efa20b9709aa68c32bf" }, "downloads": -1, "filename": "structlog-0.3.1.tar.gz", "has_sig": true, "md5_digest": "a62074b64b176de4169bd3e026ca58f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 76123, "upload_time": "2013-09-26T07:12:10", "url": "https://files.pythonhosted.org/packages/a9/f1/38148a3aa77cb3816d0b1ac479639dc4193a7c669152fb4298fa40b93f81/structlog-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "15f82e1e0dce79f885b1b185c01f1877", "sha256": "92c106017e57e5e084df366cb871a03a1663c5b0bc8a0690b8da2634bfae4e8d" }, "downloads": -1, "filename": "structlog-0.3.2-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "15f82e1e0dce79f885b1b185c01f1877", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 25847, "upload_time": "2013-09-27T09:35:37", "url": "https://files.pythonhosted.org/packages/f1/52/0f4770957b8f856297996a17ee14e756c2120bb05ad7557eb600e891221c/structlog-0.3.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "02780dfdf48b5d01a2c6c81459cc83d9", "sha256": "62c94c2880685a082cdcd6c38012609d5643b9d0b8d0cdec2d434eae433d15a9" }, "downloads": -1, "filename": "structlog-0.3.2.tar.gz", "has_sig": true, "md5_digest": "02780dfdf48b5d01a2c6c81459cc83d9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 76272, "upload_time": "2013-09-27T09:35:29", "url": "https://files.pythonhosted.org/packages/b2/aa/529fa369a73f1a77ac0c15ffbc2f2a5717315ff531891c2ec857b4dfee31/structlog-0.3.2.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "09edb13e69a5ff00e175e12c74d79531", "sha256": "d365d5597792fa02b97a2b73f2c15cfdaf3b529a3add727e70dd1941facdb141" }, "downloads": -1, "filename": "structlog-0.4.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "09edb13e69a5ff00e175e12c74d79531", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26992, "upload_time": "2013-11-10T14:13:58", "url": "https://files.pythonhosted.org/packages/b5/ef/0e9d394a9bc5d9b6f488f97c871b320127e2a723d915cf2420e231e75cdd/structlog-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dfa5a91228334c1be421bde7ae299b5d", "sha256": "f337ed12a7035b89b152ec4914d8b95c9a9d392522f1b55fec11205221882c8a" }, "downloads": -1, "filename": "structlog-0.4.0.tar.gz", "has_sig": true, "md5_digest": "dfa5a91228334c1be421bde7ae299b5d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 79766, "upload_time": "2013-11-10T14:14:01", "url": "https://files.pythonhosted.org/packages/b9/90/d17d58f9cb5c1f7132066edc26e81e9e5aeb81a142f6b835dd4e32c9f9b5/structlog-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "d127be5fa1cfd77215230227b0224506", "sha256": "1027b290588b0098ccd38833a3d4b0a2e2a7bd1e6dd6ceba908c5d1887a6da41" }, "downloads": -1, "filename": "structlog-0.4.1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "d127be5fa1cfd77215230227b0224506", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26990, "upload_time": "2013-12-19T20:20:11", "url": "https://files.pythonhosted.org/packages/1e/56/92cd09fbc879e1e22db02df881208467bcab20def31684ee7218e11ce403/structlog-0.4.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "49441470a7eff0405c444c17daa1a9cb", "sha256": "6f90f3dfe54a9f34d34bc247015f76548967c688c9abbbe7a7cd9201e2cf2201" }, "downloads": -1, "filename": "structlog-0.4.1.tar.gz", "has_sig": true, "md5_digest": "49441470a7eff0405c444c17daa1a9cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 80301, "upload_time": "2013-12-19T20:20:14", "url": "https://files.pythonhosted.org/packages/0c/7c/074dfde5100f2f15ad2d839f06b394c77cc73ab72e7356be87593fa99832/structlog-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "bac34e976f0146fc9136f437f6ddc7c8", "sha256": "7661cb04d83fac9f1a4ce329e0c16ef451f7b9d456da896f7303d38ff7e2e59a" }, "downloads": -1, "filename": "structlog-0.4.2-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "bac34e976f0146fc9136f437f6ddc7c8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 27111, "upload_time": "2014-07-26T12:42:00", "url": "https://files.pythonhosted.org/packages/09/77/3bc7a9ed20bca70b83a9dee2ec6b1bf5ee5841d6d4c0f6eec0459cf0e23f/structlog-0.4.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "062cda36069e8573e00c265f451f899e", "sha256": "45a6e7ba0e1f335822cf24e14b95d9590fe13e9e2a6abe58a099638037e84377" }, "downloads": -1, "filename": "structlog-0.4.2.tar.gz", "has_sig": true, "md5_digest": "062cda36069e8573e00c265f451f899e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 81413, "upload_time": "2014-07-26T12:42:03", "url": "https://files.pythonhosted.org/packages/79/3e/d4c1d05c72a3f34004174e6596e9d3ce9b1c2b1ced685dc25d8e244c5912/structlog-0.4.2.tar.gz" } ], "15.0.0": [ { "comment_text": "", "digests": { "md5": "20b9f0ad399cb3fe8cf893bfbce7396e", "sha256": "1cd09841dbf4013b71f4149ce02b2f86849d800671f387ed8a5e9e5a3260b609" }, "downloads": -1, "filename": "structlog-15.0.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "20b9f0ad399cb3fe8cf893bfbce7396e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26132, "upload_time": "2015-01-23T15:43:29", "url": "https://files.pythonhosted.org/packages/81/f0/abce5077c063a6322e4a49e5bf64f5b64a4e582c01ddb2365f8c40f40e65/structlog-15.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "62950d11a7ae3bca2ea00f0cb5583235", "sha256": "f6659f9b516600bc5779a0005f6f56d3bd8f32a00645e3d4aa3022bcd31e1062" }, "downloads": -1, "filename": "structlog-15.0.0.tar.gz", "has_sig": true, "md5_digest": "62950d11a7ae3bca2ea00f0cb5583235", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66132, "upload_time": "2015-01-23T15:43:32", "url": "https://files.pythonhosted.org/packages/e9/55/f5bc254bfd24857d04786116100e7b61833b26136795d2b8acdd40528497/structlog-15.0.0.tar.gz" } ], "15.1.0": [ { "comment_text": "", "digests": { "md5": "5fa636812f7997bf9c56058b274df504", "sha256": "b49dbc8e2fc2aec92580864aef561384b71a7c076772105a5ca91b05c8ef772f" }, "downloads": -1, "filename": "structlog-15.1.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "5fa636812f7997bf9c56058b274df504", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26140, "upload_time": "2015-02-24T12:31:26", "url": "https://files.pythonhosted.org/packages/4d/1d/2c0372741c47ca5a5ec0e9e841df2f117d2c49e367301b7cb869db36da8c/structlog-15.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c8e2b395b74031202f24e800e10be669", "sha256": "1017abfe5e8cd292da859368a5d372e8a3c3b4d353cf6fd27cc13cda32f152cb" }, "downloads": -1, "filename": "structlog-15.1.0.tar.gz", "has_sig": true, "md5_digest": "c8e2b395b74031202f24e800e10be669", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66349, "upload_time": "2015-02-24T12:31:29", "url": "https://files.pythonhosted.org/packages/e7/b3/75d97c50a6894652b36d8e5f4e8d52dc07cd0e0aee22e53e350dae8fc4be/structlog-15.1.0.tar.gz" } ], "15.2.0": [ { "comment_text": "", "digests": { "md5": "5c8a2a38c21933a095d85617c928f963", "sha256": "168559f026626d5f2522bd41e0564008dccd33cf4921fcc6fd611ba4c7c9eed2" }, "downloads": -1, "filename": "structlog-15.2.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "5c8a2a38c21933a095d85617c928f963", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26675, "upload_time": "2015-06-10T12:19:09", "url": "https://files.pythonhosted.org/packages/a9/fc/bfe3c17e40abaf32b2dfcaf4b3e46dcd36598a613ee017aed87814e19428/structlog-15.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "245dcd145d14e7633e3d089cebcaf327", "sha256": "fbd9cac9537dd2370a2d8580113e5a02b8b136b7c2fb9d25c476ef4d220b16b5" }, "downloads": -1, "filename": "structlog-15.2.0.tar.gz", "has_sig": true, "md5_digest": "245dcd145d14e7633e3d089cebcaf327", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 67985, "upload_time": "2015-06-10T12:19:13", "url": "https://files.pythonhosted.org/packages/47/e0/73d623659b817f12070e6ec0ecf5aeee1f41b9b7e68d32fe33c124c5a859/structlog-15.2.0.tar.gz" } ], "15.3.0": [ { "comment_text": "", "digests": { "md5": "3e6278652335bb3f141a3e9cdedca116", "sha256": "3291786cfd3dfb7067e10886f132dc628f4f6122f5203c1e90911d1bcf24c981" }, "downloads": -1, "filename": "structlog-15.3.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "3e6278652335bb3f141a3e9cdedca116", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26699, "upload_time": "2015-09-25T11:27:13", "url": "https://files.pythonhosted.org/packages/70/31/dc455c8e73dfc3aef454f24c5191116fc38f4f108b2ff9445ca451f4d169/structlog-15.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "373666bf2cfb5677182e382f7f38e6c2", "sha256": "87276738473ff00014f3f6ce9adf559d142ca4a71567805c46f09ea61df938c1" }, "downloads": -1, "filename": "structlog-15.3.0.tar.gz", "has_sig": true, "md5_digest": "373666bf2cfb5677182e382f7f38e6c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68385, "upload_time": "2015-09-25T11:27:16", "url": "https://files.pythonhosted.org/packages/b8/ab/da68533eb01d7e011a69c9fa93445c3228d92671743fcb96230a4d3ca44d/structlog-15.3.0.tar.gz" } ], "16.0.0": [ { "comment_text": "", "digests": { "md5": "e76718f24ad671b1255f1489ee230990", "sha256": "bed91b277972d3cf9090403e0cb3c84f2a38ae890357165892d60e1b0240be84" }, "downloads": -1, "filename": "structlog-16.0.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "e76718f24ad671b1255f1489ee230990", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 29740, "upload_time": "2016-01-28T12:49:38", "url": "https://files.pythonhosted.org/packages/35/3c/258e5d3fda2605feae1f384970b20fd3d94d9dd2df216791623438716168/structlog-16.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "59ac00a23b966c6d63ad85c26f454ea9", "sha256": "ba305858ee5dcd4518d79ee99907565bcd2ccd3f1cfba9679105078d13e566d0" }, "downloads": -1, "filename": "structlog-16.0.0.tar.gz", "has_sig": true, "md5_digest": "59ac00a23b966c6d63ad85c26f454ea9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 154029, "upload_time": "2016-01-28T12:49:51", "url": "https://files.pythonhosted.org/packages/6e/8e/7be23d5ef287113264b93676ab67f895f28b5f795d91a9a45ba3f4daeeab/structlog-16.0.0.tar.gz" } ], "16.1.0": [ { "comment_text": "", "digests": { "md5": "008047aa80023df43a0db30e27fdc3c8", "sha256": "a8cc45c208c6b251031ec223940552eccd97dbdb322474e0c4ec9e50f76a225a" }, "downloads": -1, "filename": "structlog-16.1.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "008047aa80023df43a0db30e27fdc3c8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 28947, "upload_time": "2016-05-24T14:56:24", "url": "https://files.pythonhosted.org/packages/c5/bf/f87b8273e5016618d750e79a2dae7f42b0a6310bc1f4368dcb217b426e8e/structlog-16.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "74c0567b1224b0a33f78b7af500952dd", "sha256": "b44dfaadcbab84e6bb97bd9b263f61534a79611014679757cd93e2359ee7be01" }, "downloads": -1, "filename": "structlog-16.1.0.tar.gz", "has_sig": true, "md5_digest": "74c0567b1224b0a33f78b7af500952dd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 154359, "upload_time": "2016-05-24T14:56:28", "url": "https://files.pythonhosted.org/packages/3d/d8/90e87637a53ebcb0bbc78b76bceea2f7e8bd98de80feefec7471e38dccf2/structlog-16.1.0.tar.gz" } ], "17.1.0": [ { "comment_text": "", "digests": { "md5": "d9caa7c6407fbc3b7a9691ffa7663b50", "sha256": "88dca8b62e4d41f7fc1f927aba350e9347fcbdda3277780d7cea172138f4bd31" }, "downloads": -1, "filename": "structlog-17.1.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "d9caa7c6407fbc3b7a9691ffa7663b50", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 35201, "upload_time": "2017-04-24T11:59:11", "url": "https://files.pythonhosted.org/packages/25/dd/e2acd062a1714ba9cc60a0bf81f036a9b5355a5a4de725ff257b2561b7c9/structlog-17.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ec1055b80f61bbbd4c3ac56cad5fdfbf", "sha256": "5c8bd391e269ea4e670cd0463bae88e0c2ff1d10c23adbe1d01c21662ce4c240" }, "downloads": -1, "filename": "structlog-17.1.0.tar.gz", "has_sig": true, "md5_digest": "ec1055b80f61bbbd4c3ac56cad5fdfbf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 164152, "upload_time": "2017-04-24T11:59:13", "url": "https://files.pythonhosted.org/packages/60/c9/5871c38001829eeb9c0f4f1e4da094cd5d7244107bbec8190a0333711103/structlog-17.1.0.tar.gz" } ], "17.2.0": [ { "comment_text": "", "digests": { "md5": "20e8710b7e534eaa4b16d967551f4b8d", "sha256": "9947d12d904529e6133384e52091ce92d0541472a722460cfcb4bcc8d02340b0" }, "downloads": -1, "filename": "structlog-17.2.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "20e8710b7e534eaa4b16d967551f4b8d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 33687, "upload_time": "2017-05-15T15:51:52", "url": "https://files.pythonhosted.org/packages/9c/10/6f9ba14af65179d0e1a5f281064525a45a68763736188a5a6472846e3359/structlog-17.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ef9e2f7c72e7f2aa95969b4919930e97", "sha256": "6980001045abd235fa12582222627c19b89109e58b85eb77d5a5abc778df6e20" }, "downloads": -1, "filename": "structlog-17.2.0.tar.gz", "has_sig": true, "md5_digest": "ef9e2f7c72e7f2aa95969b4919930e97", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 312342, "upload_time": "2017-05-15T15:51:54", "url": "https://files.pythonhosted.org/packages/8f/b1/d86780fdcddb3ff3326392b4226d54c109592d5456f395ca5eb2350d7fbc/structlog-17.2.0.tar.gz" } ], "18.1.0": [ { "comment_text": "", "digests": { "md5": "05e1af1c2a898e1560379249db3fdf52", "sha256": "0b0d9b2e34c82d33f540252b9c8853c50521ccf7d7b5e2f30172a0850cba77dd" }, "downloads": -1, "filename": "structlog-18.1.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "05e1af1c2a898e1560379249db3fdf52", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 35476, "upload_time": "2018-01-27T08:11:29", "url": "https://files.pythonhosted.org/packages/e9/ea/0d4fd621c7e797ad9fa2cd0e4bd1b4b613364ecfeca39512e1fb30f43394/structlog-18.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9a6cbd3dc2f1ccd5519d876eddaf692a", "sha256": "ff1e7aae015b346060c03b1cc4a1f29d428de7d858eaf06ea93ee35ac51071a0" }, "downloads": -1, "filename": "structlog-18.1.0.tar.gz", "has_sig": true, "md5_digest": "9a6cbd3dc2f1ccd5519d876eddaf692a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 317033, "upload_time": "2018-01-27T08:11:31", "url": "https://files.pythonhosted.org/packages/2a/ba/de51bd39a473d6dc6dd98689d1e31cf2df24d16f7c09911bae895ed27f12/structlog-18.1.0.tar.gz" } ], "18.2.0": [ { "comment_text": "", "digests": { "md5": "3cd2f4380e7f65241b504744a8028457", "sha256": "e912c03a3cf6876803c3f1b1e4b09dd4b9e4bcd0977586cb59cf538351ba6b1b" }, "downloads": -1, "filename": "structlog-18.2.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "3cd2f4380e7f65241b504744a8028457", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 31238, "upload_time": "2018-09-05T09:45:11", "url": "https://files.pythonhosted.org/packages/f0/00/0fd0ca13fa19361bec0418e4c3b6b7509048cb1fb2fa8b7cd6b3dffe13d8/structlog-18.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f568a2055a5b0b2fefbed06df188a39f", "sha256": "e361edb3b9aeaa85cd38a1bc9ddbb60cda8a991fc29de9db26832f6300e81eb4" }, "downloads": -1, "filename": "structlog-18.2.0.tar.gz", "has_sig": true, "md5_digest": "f568a2055a5b0b2fefbed06df188a39f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 316679, "upload_time": "2018-09-05T09:45:13", "url": "https://files.pythonhosted.org/packages/e0/83/428997c0fe7f696f8a6db7f33b559e099c3cb19e4f5e30ff9c6a8b25437d/structlog-18.2.0.tar.gz" } ], "19.1.0": [ { "comment_text": "", "digests": { "md5": "e11840395bd4a87d2fb67c491acd9638", "sha256": "db441b81c65b0f104a7ce5d86c5432be099956b98b8a2c8be0b3fb3a7a0b1536" }, "downloads": -1, "filename": "structlog-19.1.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "e11840395bd4a87d2fb67c491acd9638", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 31355, "upload_time": "2019-02-02T13:29:10", "url": "https://files.pythonhosted.org/packages/6d/21/3b640b10c78c65819d7c6dfc46a2efcd6e9c79ee947ad0c92d661e5b79c5/structlog-19.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bb6bf7a6bb0807a4df4183736d630920", "sha256": "5feae03167620824d3ae3e8915ea8589fc28d1ad6f3edf3cc90ed7c7cb33fab5" }, "downloads": -1, "filename": "structlog-19.1.0.tar.gz", "has_sig": true, "md5_digest": "bb6bf7a6bb0807a4df4183736d630920", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 317443, "upload_time": "2019-02-02T13:29:12", "url": "https://files.pythonhosted.org/packages/e7/e8/988ab8398bd0a445ba2093702caaebd394a303e534f6dddea733a2aada77/structlog-19.1.0.tar.gz" } ], "19.2.0": [ { "comment_text": "", "digests": { "md5": "bb813bfd0e09cd445c2ac45f1695f401", "sha256": "6640e6690fc31d5949bc614c1a630464d3aaa625284aeb7c6e486c3010d73e12" }, "downloads": -1, "filename": "structlog-19.2.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "bb813bfd0e09cd445c2ac45f1695f401", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 39286, "upload_time": "2019-10-16T10:34:23", "url": "https://files.pythonhosted.org/packages/72/43/7c4519a5ba1695d855148fc091574c2205475ca547162051a6f56cd59d55/structlog-19.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f011903a800d0d37860a0016d4c57355", "sha256": "4287058cf4ce1a59bc5dea290d6386d37f29a37529c9a51cdf7387e51710152b" }, "downloads": -1, "filename": "structlog-19.2.0.tar.gz", "has_sig": true, "md5_digest": "f011903a800d0d37860a0016d4c57355", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 327709, "upload_time": "2019-10-16T10:34:26", "url": "https://files.pythonhosted.org/packages/86/64/2a7d6f2e55d627a50f5e50162ec73dbe8f9bb8ff3ded372813cd3d4eb067/structlog-19.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "bb813bfd0e09cd445c2ac45f1695f401", "sha256": "6640e6690fc31d5949bc614c1a630464d3aaa625284aeb7c6e486c3010d73e12" }, "downloads": -1, "filename": "structlog-19.2.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "bb813bfd0e09cd445c2ac45f1695f401", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 39286, "upload_time": "2019-10-16T10:34:23", "url": "https://files.pythonhosted.org/packages/72/43/7c4519a5ba1695d855148fc091574c2205475ca547162051a6f56cd59d55/structlog-19.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f011903a800d0d37860a0016d4c57355", "sha256": "4287058cf4ce1a59bc5dea290d6386d37f29a37529c9a51cdf7387e51710152b" }, "downloads": -1, "filename": "structlog-19.2.0.tar.gz", "has_sig": true, "md5_digest": "f011903a800d0d37860a0016d4c57355", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 327709, "upload_time": "2019-10-16T10:34:26", "url": "https://files.pythonhosted.org/packages/86/64/2a7d6f2e55d627a50f5e50162ec73dbe8f9bb8ff3ded372813cd3d4eb067/structlog-19.2.0.tar.gz" } ] }