{ "info": { "author": "Chris Chang", "author_email": "c@crccheck.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "project_runpy\n=============\n\n.. image:: https://travis-ci.org/crccheck/project_runpy.svg\n :target: https://travis-ci.org/crccheck/project_runpy\n\nGeneric helpers I wish existed or am constantly copying into my Python projects.\n\n\n``env``\n-------\n\nGet information about your environment variables.\n\n``.get(key, ...)``\n~~~~~~~~~~~~~~~~~~\n\nYou can use ``env.get`` as a drop-in replacement for ``os.environ.get``. It\nacts the same but is smarter about types and has extra magic for ENVIRONMENT\nbased settings::\n\n from project_runpy import env\n\n env.get('DATABASE_URL') # get an environment variable\n env.get('DATABASE_URL', 'sqlite:///:memory:') # provide a default\n env.get('DEBUG', True) # default can be bool\n env.get('WORKERS', 10) # default can be other types too, like int\n env.get('DEBUG', True, type_func=bool) # explicitly get bool\n\nIf additional kwargs are specified, they will become the default if ENVIRONMENT\nmatches the key::\n\n from project_runpy import env\n\n env.get('WORKERS', 10, DEV=1) # if ENVIRONMENT == DEV: default = 1\n env.get('DEBUG', FALSE, type_func=bool, TEST=False) # combine it\n\n``.require(key, ...)``\n~~~~~~~~~~~~~~~~~~~~~~\n\nIf you want to be extra strict/cautious, you can raise an exception if the\nenvironment variable was not set by using ``.require`` instead of ``.get``.\n\nDemo::\n\n >>> from project_runpy import env\n >>> env.require('SHIRTSNSHOES')\n ImproperlyConfigured: Environment variable not found: SHIRTSNSHOES\n\n\n``ColorizingStreamHandler``\n---------------------------\n\nLogging handler that produces colorized console output\n\nUsage::\n\n import logging\n\n from project_runpy import ColorizingStreamHandler\n\n logger = logging.getLogger(__name__)\n logger.setLevel(logging.DEBUG)\n logger.addHandler(ColorizingStreamHandler())\n\nDjango::\n\n LOGGING = {\n\n ...\n\n 'handlers': {\n\n ...\n\n 'console': {\n 'level': 'DEBUG',\n 'class': 'project_runpy.ColorizingStreamHandler',\n },\n },\n\n ...\n\n }\n\n``ReadableSqlFilter``\n---------------------\n\nA logging filter designed to make the ``django.db.backends`` output more\nreadable in local dev. This is an alternate to Django Debug Toolbar's SQL panel\n(which, you should be using too) and adds feedback for queries outside HTML.\nThis **will slow down** your dev server, but it's a tradeoff for getting faster\nfeedback for optimizing your queries.\n\nDjango compatibility: Django >= 2.0\n\nTurns::\n\n (0.002) SELECT \"tx_elevators_building\".\"id\", \"tx_elevators_building\".\"elbi\",\n \"tx_elevators_building\".\"name_1\", \"tx_elevators_building\".\"name_2\",\n \"tx_elevators_building\".\"address_1\", \"tx_elevators_building\".\"address_2\",\n \"tx_elevators_building\".\"city\", \"tx_elevators_building\".\"zip_code\",\n \"tx_elevators_building\".\"county\", \"tx_elevators_building\".\"owner\",\n \"tx_elevators_building\".\"contact\", \"tx_elevators_building\".\"latitude\",\n \"tx_elevators_building\".\"longitude\" FROM \"tx_elevators_building\" LIMIT 21;\n args=()\n\nInto::\n\n (0.002) SELECT...FROM \"tx_elevators_building\" LIMIT 21\n\nAnd when you have many queries, they all line up nicely in your terminal.\n\nTo install, edit your Django settings::\n\n LOGGING = {\n ...\n 'filters': {\n 'readable_sql': {\n '()': 'project_runpy.ReadableSqlFilter',\n },\n },\n 'loggers': {\n 'django.db.backends': {\n 'filters': ['readable_sql'],\n ...\n },\n },\n ...\n }\n\nAbout\n-----\n\nInspired by `dj-settings-helpers`_, `ansistrm.py`_, and tornado_'s ``define``.\n\n.. _dj-settings-helpers: https://github.com/tswicegood/dj-settings-helpers\n.. _ansistrm.py: https://gist.github.com/vsajip/758430\n.. _tornado: http://www.tornadoweb.org/en/latest/options.html#tornado.options.define\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://github.com/crccheck/project_runpy", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "project_runpy", "package_url": "https://pypi.org/project/project_runpy/", "platform": "", "project_url": "https://pypi.org/project/project_runpy/", "project_urls": { "Homepage": "https://github.com/crccheck/project_runpy" }, "release_url": "https://pypi.org/project/project_runpy/1.0.0/", "requires_dist": null, "requires_python": ">=3", "summary": "Helper utilities for Python projects", "version": "1.0.0" }, "last_serial": 5504770, "releases": { "0.1-dev.0": [ { "comment_text": "", "digests": { "md5": "b7bf179d8929d2f9cc337feeb1c97b32", "sha256": "171f384582b9d8fd1f8f04877dc5b18e5eef9a9aac0125e61f1dadf36758dae1" }, "downloads": -1, "filename": "project_runpy-0.1-dev.0.tar.gz", "has_sig": false, "md5_digest": "b7bf179d8929d2f9cc337feeb1c97b32", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2303, "upload_time": "2013-05-21T02:51:15", "url": "https://files.pythonhosted.org/packages/6f/7a/ec79a3a92e75455d61ee43ea3723a99ac58d35b9e47e5fd0f07ff4f942a1/project_runpy-0.1-dev.0.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "11e0277d2267f91d1aad9e16011f0426", "sha256": "a8b6c9e7e2a2bff19a14ff797332d08a4dfd8afe77c29a8dae88ef1f9ca34120" }, "downloads": -1, "filename": "project_runpy-0.1.0.tar.gz", "has_sig": false, "md5_digest": "11e0277d2267f91d1aad9e16011f0426", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3167, "upload_time": "2013-06-06T14:04:30", "url": "https://files.pythonhosted.org/packages/fb/61/c5b848234b9bc86abaec02c5ac6d2f80db34a58d952ef58a888959d5ffc8/project_runpy-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "7369ce4739cc7f93f36ea33a01b4039e", "sha256": "b23c9851d0e1d4a6a05824ce55166dfdc5a2e7293bac89d44ad7b0dae0c68309" }, "downloads": -1, "filename": "project_runpy-0.1.1.tar.gz", "has_sig": false, "md5_digest": "7369ce4739cc7f93f36ea33a01b4039e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7489, "upload_time": "2013-06-07T02:01:39", "url": "https://files.pythonhosted.org/packages/ba/92/459418e65f3f7a9386eb3b0db3323fa3592c53d95bc323ab6c268ccee446/project_runpy-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "d3814e989136a3fffe2131d83df6798e", "sha256": "8540647ba163584431cea5bea5272cf2139ed0427a8b0f34a5fdb848dc04a5d0" }, "downloads": -1, "filename": "project_runpy-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d3814e989136a3fffe2131d83df6798e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8260, "upload_time": "2014-01-27T04:42:48", "url": "https://files.pythonhosted.org/packages/d1/6b/db3eb6b0e405f6f1f901faa368f2b2b0a12255f8b74683cecfd9f0b382cb/project_runpy-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "94520f8bb5f3e5eac85d196c18c3ca72", "sha256": "d194b99fcedffe123ec81da6d5c36e4b896e14453d10cfc305099f490ee7f180" }, "downloads": -1, "filename": "project_runpy-0.3.0.tar.gz", "has_sig": false, "md5_digest": "94520f8bb5f3e5eac85d196c18c3ca72", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8717, "upload_time": "2014-01-27T05:52:41", "url": "https://files.pythonhosted.org/packages/75/9d/e94e61412448bd90162b6fe730e779d401fdaf826000d0656b38b3cbf6a0/project_runpy-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "c3603a3c87b1a5a6ee651fdfddddde34", "sha256": "6353ae92d02522855c95253f92d564f45f826ade22f60c1f713a4b5c315f3e70" }, "downloads": -1, "filename": "project_runpy-0.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c3603a3c87b1a5a6ee651fdfddddde34", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 8050, "upload_time": "2014-08-18T03:49:29", "url": "https://files.pythonhosted.org/packages/42/b6/ae7217aa0e7799bf8318bf5e6138bfdfd1af01f06dd751e3fe6e7d5a8cae/project_runpy-0.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "903f7ea07add625dc3a0b9421d9e632e", "sha256": "aba701e921a677672980d514254fcf6e830b604ece5debef658ef7a7e90c3554" }, "downloads": -1, "filename": "project_runpy-0.3.1.tar.gz", "has_sig": false, "md5_digest": "903f7ea07add625dc3a0b9421d9e632e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8898, "upload_time": "2014-08-18T03:49:26", "url": "https://files.pythonhosted.org/packages/c9/49/942d0a3df51ba5ebc7344e4cff9541a7b794443cd0e40c5db25c1817e2a2/project_runpy-0.3.1.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "3c17c2ba4b7282c315f4e1c3904e40ef", "sha256": "2a270ca26c2a5c91111dc9698cb2a4e27d4b1d033ea81716abc0be8d104c4c15" }, "downloads": -1, "filename": "project_runpy-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3c17c2ba4b7282c315f4e1c3904e40ef", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 21097, "upload_time": "2019-07-09T02:07:18", "url": "https://files.pythonhosted.org/packages/6e/10/ce978c41204c48b0538b6d1858584fcfede66b368bbb28016ae0022184c2/project_runpy-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a3751f289617252b8af29f13508b8b4b", "sha256": "e3797541220c0e9a8d602684ce4a769b706d4124a1404d9b53ff63ac17faa4c8" }, "downloads": -1, "filename": "project_runpy-0.4.0.tar.gz", "has_sig": false, "md5_digest": "a3751f289617252b8af29f13508b8b4b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10653, "upload_time": "2019-07-09T02:07:49", "url": "https://files.pythonhosted.org/packages/46/78/b740379f1517c78ba0d08dc131eb1daa980149a003540639f4f751dd2715/project_runpy-0.4.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "63df31825d05f77ca1b184b149eb3fc8", "sha256": "d009f606147645a3ab7ac6e706787ca9d0ae49ef6cbc6d0c8a106d3a455c3411" }, "downloads": -1, "filename": "project_runpy-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "63df31825d05f77ca1b184b149eb3fc8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 20857, "upload_time": "2019-07-09T05:02:53", "url": "https://files.pythonhosted.org/packages/b3/e9/becff45620d7c33d5a00002768d68a8ed4e93731b787b8102f6c47b74b74/project_runpy-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0646cdd3134b3c74ea6631100c226f81", "sha256": "edeb9769beef9b53efe2061b77734d40df5e5ae75ede69a0391038494deedc60" }, "downloads": -1, "filename": "project_runpy-1.0.0.tar.gz", "has_sig": false, "md5_digest": "0646cdd3134b3c74ea6631100c226f81", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 10464, "upload_time": "2019-07-09T05:02:55", "url": "https://files.pythonhosted.org/packages/66/be/88b835d8477340209fec9deefa789b73bf38d5226303a1197a8f438af4fc/project_runpy-1.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "63df31825d05f77ca1b184b149eb3fc8", "sha256": "d009f606147645a3ab7ac6e706787ca9d0ae49ef6cbc6d0c8a106d3a455c3411" }, "downloads": -1, "filename": "project_runpy-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "63df31825d05f77ca1b184b149eb3fc8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 20857, "upload_time": "2019-07-09T05:02:53", "url": "https://files.pythonhosted.org/packages/b3/e9/becff45620d7c33d5a00002768d68a8ed4e93731b787b8102f6c47b74b74/project_runpy-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0646cdd3134b3c74ea6631100c226f81", "sha256": "edeb9769beef9b53efe2061b77734d40df5e5ae75ede69a0391038494deedc60" }, "downloads": -1, "filename": "project_runpy-1.0.0.tar.gz", "has_sig": false, "md5_digest": "0646cdd3134b3c74ea6631100c226f81", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 10464, "upload_time": "2019-07-09T05:02:55", "url": "https://files.pythonhosted.org/packages/66/be/88b835d8477340209fec9deefa789b73bf38d5226303a1197a8f438af4fc/project_runpy-1.0.0.tar.gz" } ] }