{ "info": { "author": "Kevin James", "author_email": "KevinJames@thekev.in", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Utilities" ], "description": "Useful Python Tidbits\n=====================\n\nEver find yourself copying and pasting small chunks of Python code between a\nbunch of your projects? The goal of this library is to reduce or eliminate that\nproblem.\n\nYes, I realize that's never going to happen. Contributions are very appreciated\nthough, let's see how close we can get.\n\n|pypi| |circleci| |pythons|\n\nInstallation\n------------\n\n.. code-block:: console\n\n $ pip install --upgrade tidbits\n\nNote that in an effort to keep this library generalized, optional dependencies\nare not included, ie. for the `Sentry`_ integration you will still need to\n\n.. code-block:: console\n\n $ pip install raven\n\nFor convenience, these are bundled as extra dependencies, ie. you can do\n\n.. code-block:: console\n\n $ pip install --upgrade tidbits[gcloud,sentry]\n\nUsage\n-----\n\nGCloud\n~~~~~~\n\n> requires ``python-json-logger`` or ``tidbits[gcloud]``\n\nHave you ever run an app on Google Cloud and wondered why all your logs were\nmarked as errors, regardless of log level? Well, most likely you weren't\nformatting them correctly -- Google Cloud expects JSON logs with \"severity\"\nrather than \"levelname\", which you can set with:\n\n.. code-block:: python\n\n from tidbits.gcloud.log import get_handler\n\n logging.getLogger().addHandler(get_handler())\n # or, even better, set all your loggers at once with tidbits.log\n\nLog\n~~~\n\nEver had to configure the loggers of all of your dependencies? This one's for\nyou.\n\n.. code-block:: python\n\n from tidbits.log import get_all_loggers\n from tidbits.log import get_all_base_loggers\n from tidbits.log import set_handler\n from tidbits.log import set_loglevel\n\n import requests\n\n get_all_loggers()\n # ['requests', 'urllib3', 'urllib3.connection', 'urllib3.connectionpool', 'urllib3.poolmanager', 'urllib3.response', 'urllib3.util', 'urllib3.util.retry']\n\n get_all_base_loggers()\n # ['requests', 'urllib3']\n\n set_handler(myCoolHandler, logger='applesauce')\n # the \"applesauce\" logger uses this (and only this) handler\n set_handler_globally(myCoolHandler)\n # all loggers use this (and only this) handler\n set_handler_globally(myCoolHandler, ignore={'aardvark', 'banana'})\n # all loggers except those listed use this (and only this) handler\n\n set_loglevel(debug=True)\n # sets logging.getLogger() to DEBUG and all others to INFO\n set_loglevel(debug=False)\n # sets logging.getLogger() to INFO and all others to WARNING\n\nIntegrations\n~~~~~~~~~~~~\n\n> requires ``raven`` or ``tidbits[sentry]``\n\nDo you use `Sentry`_? I do. And every single project I use it in contains the\nsame block for configuring it and instrumenting the error logger.\n\n.. code-block:: python\n\n from tidbits.integration.sentry import SENTRY\n from tidbits.integration.sentry import instrument_logger\n\n try:\n {}['missing_key']\n except Exception:\n # damn, I totally didn't expect an error here, better send it to Sentry\n SENTRY.captureException()\n\n # creates events in Sentry for each error log\n instrument_logger(level=logging.Error)\n\n.. _Sentry: https://sentry.io/\n\n.. |pypi| image:: https://img.shields.io/pypi/v/tidbits.svg?style=flat-square\n :alt: Latest PyPI Version\n :target: https://pypi.org/project/tidbits/\n\n.. |circleci| image:: https://img.shields.io/circleci/project/github/TheKevJames/tidbits/master.svg?style=flat-square\n :alt: CircleCI Test Status\n :target: https://circleci.com/gh/TheKevJames/tidbits/tree/master\n\n.. |pythons| image:: https://img.shields.io/pypi/pyversions/tidbits.svg?style=flat-square\n :alt: Python Version Support\n :target: https://pypi.org/project/tidbits/\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/TheKevJames/tidbits", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "tidbits", "package_url": "https://pypi.org/project/tidbits/", "platform": "", "project_url": "https://pypi.org/project/tidbits/", "project_urls": { "Changelog": "https://github.com/TheKevJames/tidbits/releases", "Homepage": "https://github.com/TheKevJames/tidbits" }, "release_url": "https://pypi.org/project/tidbits/0.4.1/", "requires_dist": [ "python-json-logger (<1.0.0,>=0.1.0); extra == 'gcloud'", "raven (<7.0.0,>=5.0.0); extra == 'sentry'" ], "requires_python": "", "summary": "Useful Python Tidbits", "version": "0.4.1" }, "last_serial": 4442041, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "13d8f91e8f8bece715b4818d48528a49", "sha256": "3f137faa512271aea9daa4ebd7293c7f5bb76d02c6970ef21fe85846c8ea4fa0" }, "downloads": -1, "filename": "tidbits-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "13d8f91e8f8bece715b4818d48528a49", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4862, "upload_time": "2017-10-20T23:56:53", "url": "https://files.pythonhosted.org/packages/d2/2c/1bf14a1888d7866765533776efc8a600f2e8beb9410e2fa0f609b29b5469/tidbits-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "70a7dad0c22d3d4b99c2b52fb6386a59", "sha256": "a68f8b2e83ed1716ccf9698b2f3f043a82b9f0168519d4b2a0233f720b03f099" }, "downloads": -1, "filename": "tidbits-0.1.0.tar.gz", "has_sig": false, "md5_digest": "70a7dad0c22d3d4b99c2b52fb6386a59", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2631, "upload_time": "2017-10-20T23:56:54", "url": "https://files.pythonhosted.org/packages/f1/3b/b069d5c387447ca0317acf0e165419c3bd47735bdbfa49f818225aee7048/tidbits-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "73c67db9f30bb75cff7972ad8c77872e", "sha256": "21ba50b1499c9e7bc4e59b566274abe8762197164b1b4cdb2ab0cad8a72b42f1" }, "downloads": -1, "filename": "tidbits-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "73c67db9f30bb75cff7972ad8c77872e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7897, "upload_time": "2017-10-21T02:25:13", "url": "https://files.pythonhosted.org/packages/f0/5b/f88784ff652fac6d82a8d38da2a0aba9938aa0de86d431df14a29791948d/tidbits-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "12a115c29b265995f97de4f02e4c51b3", "sha256": "baa95bb6db16a26c45b29ef547c718c5b9cc53d5329fe9ddd03046f69aa9b537" }, "downloads": -1, "filename": "tidbits-0.2.0.tar.gz", "has_sig": false, "md5_digest": "12a115c29b265995f97de4f02e4c51b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4404, "upload_time": "2017-10-21T02:25:14", "url": "https://files.pythonhosted.org/packages/a7/8c/9e29b132138d54b6fd245ea563293d44d831f6a2ee3a186d189eadd8fa1a/tidbits-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "e1d526267935f677c00f56c8ecc47f84", "sha256": "751ac2710fcd8b82c47d1d104aa3c92eab3f13d04ed465b88c27c0627cfd84dc" }, "downloads": -1, "filename": "tidbits-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e1d526267935f677c00f56c8ecc47f84", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7921, "upload_time": "2017-10-21T02:58:00", "url": "https://files.pythonhosted.org/packages/92/27/9b607abe520cf3bf10193dd3d574d928b442f45466673701548a5dfae91b/tidbits-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7cfe0ef888d0db8876b18465afa98aed", "sha256": "5f5bb1aa066901b4c242d0e6bce13003e97666f2e828221f1dec20983b4b15a4" }, "downloads": -1, "filename": "tidbits-0.2.1.tar.gz", "has_sig": false, "md5_digest": "7cfe0ef888d0db8876b18465afa98aed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4349, "upload_time": "2017-10-21T02:58:01", "url": "https://files.pythonhosted.org/packages/0a/3e/babf4deb1a9be06dcab612b4f49eda4e73995b447cd4925da6d5b8041ee8/tidbits-0.2.1.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "4d7bae82b50de08c6eca9041276045fb", "sha256": "b9fd1a2dbd13c4b5142d3e76836a4dc2f85630770dfe4455d44f62e984b60217" }, "downloads": -1, "filename": "tidbits-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4d7bae82b50de08c6eca9041276045fb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8118, "upload_time": "2017-11-21T20:41:13", "url": "https://files.pythonhosted.org/packages/92/75/f9b1d07458e63da380810be0456c283caeff02ec6672e9cafc5394225595/tidbits-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d7b82fee0879c505e000725e2eae630a", "sha256": "83cf2cb91605b1105697b218054b8d8e7ecd64c54e3cd81ae0f953c13154b1d3" }, "downloads": -1, "filename": "tidbits-0.3.0.tar.gz", "has_sig": false, "md5_digest": "d7b82fee0879c505e000725e2eae630a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4466, "upload_time": "2017-11-21T20:41:15", "url": "https://files.pythonhosted.org/packages/20/74/f8881f67b17905666fbcbeb293fbe7de9e17245b217e07e3d8fb6c598f19/tidbits-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "0081bb1bf0b3e4476447d49d5ff9abd4", "sha256": "f2dc6ec19fa2d2281b316fac533035bac288873aa2c3a2594468bbfa6de3909a" }, "downloads": -1, "filename": "tidbits-0.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0081bb1bf0b3e4476447d49d5ff9abd4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8135, "upload_time": "2018-01-04T01:24:56", "url": "https://files.pythonhosted.org/packages/28/53/3a467592e20de0d8cc8acda36ae4a7ceae4c9b6e153eb14e07db90929244/tidbits-0.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1d77baded5c8e89b99f99aaae44603a5", "sha256": "77ea52f8e32446d29e22e1cf90cd3f3a8ba9849800c0d0fb9cbeb30350649f46" }, "downloads": -1, "filename": "tidbits-0.3.1.tar.gz", "has_sig": false, "md5_digest": "1d77baded5c8e89b99f99aaae44603a5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4461, "upload_time": "2018-01-04T01:24:57", "url": "https://files.pythonhosted.org/packages/89/cb/5cddcc2f259b5691b49d3a00d1a921db9eb75f686857411f4c60538def27/tidbits-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "cca53a31e16a0731f399ba90844d0ff0", "sha256": "109d67488ef39c73ec0ecec3b128f52698f23895eaef750545a234bb01834ef2" }, "downloads": -1, "filename": "tidbits-0.3.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "cca53a31e16a0731f399ba90844d0ff0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8182, "upload_time": "2018-03-22T23:46:24", "url": "https://files.pythonhosted.org/packages/9b/d2/487a4de518bcf8943ff8f69d1f6429407c1d6491dfd3614e549a7c35afe5/tidbits-0.3.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7304f78ead1e790ad86be7d6f3ad9340", "sha256": "eacf2cf5d7bbc9c83ca90fb31bc1f5e1cfe85459cacafcd7cb7961c40a063a3f" }, "downloads": -1, "filename": "tidbits-0.3.2.tar.gz", "has_sig": false, "md5_digest": "7304f78ead1e790ad86be7d6f3ad9340", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4509, "upload_time": "2018-03-22T23:46:26", "url": "https://files.pythonhosted.org/packages/59/62/7ee023ec0972cb9700511d45e9464c1e12ee986edfce75a9c000bc68f258/tidbits-0.3.2.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "1106375d4adec22b2442fa41eb40d604", "sha256": "43a71f2c5f7e7124855e762cef095fe9ce1df08a9a9740348d153f2db678afa3" }, "downloads": -1, "filename": "tidbits-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1106375d4adec22b2442fa41eb40d604", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5875, "upload_time": "2018-08-03T03:44:10", "url": "https://files.pythonhosted.org/packages/be/54/cab40564b8e537cf463c890b6ec078bd3ea3066646dfc2d0a7c708f5f43e/tidbits-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ee078fa0ab789679c0832f8363ada1c3", "sha256": "53a3474b80059d6d907fb325e67514fcca43863b9c17eb5d71edd2adc5171024" }, "downloads": -1, "filename": "tidbits-0.4.0.tar.gz", "has_sig": false, "md5_digest": "ee078fa0ab789679c0832f8363ada1c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4578, "upload_time": "2018-08-03T03:44:11", "url": "https://files.pythonhosted.org/packages/dd/57/d8915a1773f5a57cc3dd7e254b683e5d3b2edf4609aa4ae6ed54608b9988/tidbits-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "39162dc60c48fa8cfb946a4cd4aa97a5", "sha256": "393d147fe79763f9ec746b5c2492d63227887b451901cb27fb6201d08bd741df" }, "downloads": -1, "filename": "tidbits-0.4.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "39162dc60c48fa8cfb946a4cd4aa97a5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6727, "upload_time": "2018-11-01T20:10:15", "url": "https://files.pythonhosted.org/packages/da/70/46d164c3d70526374de339540602b998d02692263f373b2be39fd2b151cd/tidbits-0.4.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ca742edff6ddf6e2e6254c1e0740be1f", "sha256": "4d1fa9c60e267ffa00d626de8bb7e9e1aff75e7027dc1ae1e982e6fb60fce516" }, "downloads": -1, "filename": "tidbits-0.4.1.tar.gz", "has_sig": false, "md5_digest": "ca742edff6ddf6e2e6254c1e0740be1f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5381, "upload_time": "2018-11-01T20:10:16", "url": "https://files.pythonhosted.org/packages/32/ac/9e7d104388364fb4c93331297b1092fc2344b49083ae7a1a2e7c3aaff287/tidbits-0.4.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "39162dc60c48fa8cfb946a4cd4aa97a5", "sha256": "393d147fe79763f9ec746b5c2492d63227887b451901cb27fb6201d08bd741df" }, "downloads": -1, "filename": "tidbits-0.4.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "39162dc60c48fa8cfb946a4cd4aa97a5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6727, "upload_time": "2018-11-01T20:10:15", "url": "https://files.pythonhosted.org/packages/da/70/46d164c3d70526374de339540602b998d02692263f373b2be39fd2b151cd/tidbits-0.4.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ca742edff6ddf6e2e6254c1e0740be1f", "sha256": "4d1fa9c60e267ffa00d626de8bb7e9e1aff75e7027dc1ae1e982e6fb60fce516" }, "downloads": -1, "filename": "tidbits-0.4.1.tar.gz", "has_sig": false, "md5_digest": "ca742edff6ddf6e2e6254c1e0740be1f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5381, "upload_time": "2018-11-01T20:10:16", "url": "https://files.pythonhosted.org/packages/32/ac/9e7d104388364fb4c93331297b1092fc2344b49083ae7a1a2e7c3aaff287/tidbits-0.4.1.tar.gz" } ] }