{ "info": { "author": "Kyrylo Shpytsya", "author_email": "kshpitsa@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "[![linux test status](https://img.shields.io/travis/kshpytsya/scopedlog.svg?label=Linux)](https://travis-ci.org/kshpytsya/scopedlog)\n\n# scopedlog\nA library for scoped logging on top of [structlog](http://www.structlog.org) (or similar sinks), inspired by the idea of an apparently defunct [lithoxyl](https://github.com/mahmoud/lithoxyl). Note that I ([kshpytsya](https://github.com/kshpytsya)) have deliberatly not looked into actual lithoxyl's implementation to keep a fresh mind.\n\nHere is an example:\n\n```python\nimport contextlib import structlog\nimport structlog.stdlib\nimport structlog.dev\nimport structlog.processors\nimport scopedlog\nimport scopedlog.sink_structlog\nimport scopedlog.idgen_seq\n\nstructlog.configure(processors=[\n structlog.stdlib.add_log_level,\n structlog.processors.ExceptionPrettyPrinter(),\n structlog.dev.ConsoleRenderer()\n])\n\nslog = scopedlog.ScopedLog(\n sink=scopedlog.sink_structlog.StructlogSink(structlog.get_logger()),\n id_gen=scopedlog.idgen_seq.GlobalSeqScopeIdGenenerator()\n)\n\nwith contextlib.suppress(RuntimeError):\n with slog.info(\"scope1\", k1=1) as sl:\n sl.debug(\"state1\", k2=2, k3=3)\n sl.info(\"state1\", k4=4)\n sl.warn(\"state1\", k5=5)\n raise RuntimeError(\"bad one\")\n\nwith contextlib.suppress(RuntimeError):\n with slog.debug(\"scope2\", k1=1) as sl:\n sl.debug(\"state1\", k2=2, k3=3)\n sl.info(\"state1\", k4=4)\n sl.warn(\"state1\", k5=5)\n raise RuntimeError(\"bad too ;)\")\n\nwith slog.debug(\"scope3\") as sl:\n sl.fail()\n\nwith slog.debug(\"scope4\") as sl:\n sl.exit_kw[\"k1\"] = 1\n```\nAnd expected output:\n![](https://scopedlog-screenshot.surge.sh/scopedlog-screenshot.png)\n\nSee [tests](tests) for more examples.", "description_content_type": "text/markdown; charset=UTF-8; variant=GFM", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/kshpytsya/scopedlog", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "scopedlog", "package_url": "https://pypi.org/project/scopedlog/", "platform": "", "project_url": "https://pypi.org/project/scopedlog/", "project_urls": { "Homepage": "https://github.com/kshpytsya/scopedlog" }, "release_url": "https://pypi.org/project/scopedlog/0.1.4/", "requires_dist": null, "requires_python": ">=3.6, <=3.7", "summary": "library for scoped logging on top of structlog (or similar sinks)", "version": "0.1.4" }, "last_serial": 4024060, "releases": { "0.1.2": [ { "comment_text": "", "digests": { "md5": "7791ddf737f5a81f4bcc859dc6ad33e3", "sha256": "4ce2bb116a95bb00004b4a00ea6503d89eefc586902f18ac53db2387a655b04c" }, "downloads": -1, "filename": "scopedlog-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "7791ddf737f5a81f4bcc859dc6ad33e3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6, <=3.7", "size": 5796, "upload_time": "2018-07-02T18:55:29", "url": "https://files.pythonhosted.org/packages/38/bf/08852bf8c4fc9821861886814e2e4203851b5fd9eccff3fc9948ac1d7712/scopedlog-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d241662b827b2c352610642f4b0a3577", "sha256": "665612f51c41c7ba78e87f65211f05fd2748d62f81ff364d263c41b4615b1d6b" }, "downloads": -1, "filename": "scopedlog-0.1.2.tar.gz", "has_sig": false, "md5_digest": "d241662b827b2c352610642f4b0a3577", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6, <=3.7", "size": 7111, "upload_time": "2018-07-02T18:55:27", "url": "https://files.pythonhosted.org/packages/bc/4e/b5e6a371417fcc3c62febe816f8127ad70fe2b7278f8f0035241f7fb844a/scopedlog-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "2b7f38a8b09e76ae07bd0354a7582df4", "sha256": "2f463ff3b9f3a7d3fdadcfdedb06bb52f165968fb6d89b95ab4072ddeb9890f1" }, "downloads": -1, "filename": "scopedlog-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "2b7f38a8b09e76ae07bd0354a7582df4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6, <=3.7", "size": 5794, "upload_time": "2018-07-02T19:09:49", "url": "https://files.pythonhosted.org/packages/eb/5f/ccda08c7b93ff9b2f5bd06cc8140e55bf97b1161f47d5e16e46dcdb968ac/scopedlog-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5fb49d3f121382cb39c0beed0cbffa2e", "sha256": "acbe8718382f2a0ccea22b53bd80aa93a7bcf94fc2f49b7c9957ff5cd7ff710d" }, "downloads": -1, "filename": "scopedlog-0.1.3.tar.gz", "has_sig": false, "md5_digest": "5fb49d3f121382cb39c0beed0cbffa2e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6, <=3.7", "size": 7117, "upload_time": "2018-07-02T19:09:48", "url": "https://files.pythonhosted.org/packages/c2/77/4c9b9e271b9423e152a04db6f92822d23c55220b2da6eba477ee7c4e445e/scopedlog-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "06d2ad876135d8131f8b269f66f4896f", "sha256": "ec0dca83281301af19f2e473a8e883784a027f3d8f541bbd2d3b1b99d8845562" }, "downloads": -1, "filename": "scopedlog-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "06d2ad876135d8131f8b269f66f4896f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6, <=3.7", "size": 5794, "upload_time": "2018-07-02T20:39:56", "url": "https://files.pythonhosted.org/packages/85/6c/1407050769a205f34828c4115410fa53b9b15971cefa9914715f27837aa6/scopedlog-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4ba0e99b6dc05f216d5c59b5408511ba", "sha256": "d32b7c7f572733992d9c3f10a490c45d68d28fc931c8f43c930ad68c23156162" }, "downloads": -1, "filename": "scopedlog-0.1.4.tar.gz", "has_sig": false, "md5_digest": "4ba0e99b6dc05f216d5c59b5408511ba", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6, <=3.7", "size": 7128, "upload_time": "2018-07-02T20:39:54", "url": "https://files.pythonhosted.org/packages/45/df/742b6f9554b8b8f56912146c76829a9f2b88bd5daa79dc48c9218e21829a/scopedlog-0.1.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "06d2ad876135d8131f8b269f66f4896f", "sha256": "ec0dca83281301af19f2e473a8e883784a027f3d8f541bbd2d3b1b99d8845562" }, "downloads": -1, "filename": "scopedlog-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "06d2ad876135d8131f8b269f66f4896f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6, <=3.7", "size": 5794, "upload_time": "2018-07-02T20:39:56", "url": "https://files.pythonhosted.org/packages/85/6c/1407050769a205f34828c4115410fa53b9b15971cefa9914715f27837aa6/scopedlog-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4ba0e99b6dc05f216d5c59b5408511ba", "sha256": "d32b7c7f572733992d9c3f10a490c45d68d28fc931c8f43c930ad68c23156162" }, "downloads": -1, "filename": "scopedlog-0.1.4.tar.gz", "has_sig": false, "md5_digest": "4ba0e99b6dc05f216d5c59b5408511ba", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6, <=3.7", "size": 7128, "upload_time": "2018-07-02T20:39:54", "url": "https://files.pythonhosted.org/packages/45/df/742b6f9554b8b8f56912146c76829a9f2b88bd5daa79dc48c9218e21829a/scopedlog-0.1.4.tar.gz" } ] }