{ "info": { "author": "Randy Syring", "author_email": "randy.syring@level12.io", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "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" ], "description": ".. default-role:: code\n\nKeg: more than Flask\n####################\n\n.. image:: https://codecov.io/github/level12/keg/coverage.svg?branch=master\n :target: https://codecov.io/github/level12/keg?branch=master\n\n.. image:: https://img.shields.io/pypi/v/Keg.svg\n :target: https://img.shields.io/pypi/v/Keg.svg\n\n.. image:: https://img.shields.io/pypi/l/keg.svg\n :target: https://img.shields.io/pypi/l/keg.svg\n\n.. image:: https://img.shields.io/pypi/pyversions/keg.svg\n :target: https://img.shields.io/pypi/pyversions/keg.svg\n\n.. image:: https://img.shields.io/pypi/status/Keg.svg\n :target: https://img.shields.io/pypi/status/Keg.svg\n\n.. image:: https://ci.appveyor.com/api/projects/status/wm35hheykxs8851r\n :alt: AppVeyor Build\n :target: https://ci.appveyor.com/project/level12/keg-6gnlh\n\nKeg is an opinionated but flexible web framework built on Flask and SQLAlchemy.\n\n\nKeg's Goal\n==========\n\nThe goal for this project is to encapsulate Flask best practices and libraries so devs can avoid\nboilerplate and work on the important stuff.\n\nWe will lean towards being opinionated on the big things (like SQLAlchemy as our ORM) while\nsupporting hooks and customizations as much as possible.\n\nThink North of Flask but South of Django.\n\nFeatures\n========\n\nDefault Logging Configuration\n-----------------------------\n\nWe highly recommend good logging practices and, as such, a Keg application does basic setup of the\nPython logging system:\n\n- Sets the log level on the root logger to INFO\n- Creates two handlers and assigns them to the root logger:\n\n - outputs to stderr\n - outputs to syslog\n\n- Provides an optional json formatter\n\nThe thinking behind that is:\n\n- In development, a developer will see log messages on stdout and doesn't have to monitor a file.\n- Log messages will be in syslog by default and available for review there if no other action is\n taken by the developer or sysadmin. This avoids the need to manage log placement, permissions,\n rotation, etc.\n- It's easy to configure syslog daemons to forward log messages to different files or remote log\n servers and it's better to handle that type of need at the syslog level than in the app.\n- Structured log files (json) provide metadata details in a easy-to-parse format and should be\n easy to generate.\n- The options and output should be easily configurable from the app to account for different needs\n in development and deployed scenarios.\n- Keg's logging setup should be easy to turn off and/or completely override for situations where it\n hurts more than it helps.\n\nInstallation\n============\n\n`pip install keg`\n\n\nApp Configuration\n=================\n\nCLI Command\n-----------\n\nThe command ` develop config` will give detailed information about the files and objects\nbeing used to configure an application.\n\nProfile Priority\n----------------\n\nAll configuration classes with the name `DefaultProfile` will be applied to the app's config\nfirst.\n\nThen, the configuration classes that match the \"selected\" profile will be applied on top of the\napp's existing configuration. This makes the settings from the \"selected\" profile override any\nsettings from the `DefaultProfile.`\n\nPractically speaking, any configuration that applies to the entire app regardless of what context\nit is being used in will generally go in `myapp.config` in the `DefaultProfile` class.\n\nSelecting a Configuration Profile\n---------------------------------\n\nThe \"selected\" profile is the name of the objects that the Keg configuration handling code will\nlook for. It should be a string.\n\nA Keg app considers the \"selected\" profile as follows:\n\n* If `config_profile` was passed into `myapp.init()` as an argument, use it as the\n selected profile. The `--profile` cli option uses this method to set the selected profile and\n therefore has the highest priority.\n* Look in the app's environment namespace for \"CONFIG_PROFILE\". If found, use it.\n* If running tests, use \"TestProfile\". Whether or not the app is operating in this mode is\n controlled by the use of:\n\n - `myapp.init(use_test_profile=True)` which is used by `MyApp.testing_prep()`\n - looking in the app's environment namespace for \"USE_TEST_PROFILE\" which is used by\n `keg.testing.invoke_command()`\n\n* Look in the app's main config file (`app.config`) and all it's other\n config files for the variable `DEFAULT_PROFILE`. If found, use the value from the file with\n highest priority.\n\n\nKeg Development\n===============\n\nTo develop on keg, begin by installing dependencies and running the tests::\n\n git clone https://github.com/level12/keg keg-src\n cd keg-src\n\n cp keg_apps/db/user-config-tpl.py ~/.config/keg_apps.db/keg_apps.db-config.py\n # edit the DB connection info in this file (you don't have to use vim):\n vim ~/.config/keg_apps.db/keg_apps.db-config.py\n\n # Create a virtualenv with a supported python version. Activate it.\n pip install -e .[tests]\n pytest keg\n\nYou can then examine tox.ini for insights into our development process. In particular, we:\n\n* use `pytest` for testing (and coverage analysis)\n* use `flake8` for linting\n\nPreview Readme\n--------------\n\nWhen updating the readme, use `restview --long-description` to preview changes.\n\n\nIssues & Discussion\n====================\n\nPlease direct questions, comments, bugs, feature requests, etc. to:\nhttps://github.com/level12/keg/issues\n\nCurrent Status\n==============\n\n* Stable in a relatively small number of production environments.\n* API is likely to change with smaller compatibility breaks happening more frequently than larger ones.\n\n\nConfiguration Variables\n-----------------------\n\nThis is not an exhaustive list of `KEG_` specific configuration variables:\n\n- ``KEG_DB_ENGINE_OPTIONS``: Add additional engine options to the\n ``sqlalchemy.create_engine`` call when working with a database. ::\n\n KEG_DB_ENGINE_OPTIONS = {\n 'json_serializer': flask.json.dumps,\n 'json_deserializer': flask.json.loads,\n }\n\n\nChangelog\n=========\n\n0.8.0 released 2019-03-25\n-------------------------\n\n- BREAKING CHANGE: Remove web.BaseView awareness of xhr() method and remove dependency on the\n deprecated flask.request.is_xhr (0899c5d_)\n- improve CI (3311389_)\n- Update to support Flask 1.0+ (63e3667_)\n- remove Pipenv including updated readme & tox (03b3920_)\n\n.. _3311389: https://github.com/level12/keg/commit/3311389\n.. _63e3667: https://github.com/level12/keg/commit/63e3667\n.. _03b3920: https://github.com/level12/keg/commit/03b3920\n.. _0899c5d: https://github.com/level12/keg/commit/0899c5d\n\n\n0.7.0 released 2019-02-07\n-------------------------\n\n- Enable setting engine options from KEG variable (5bb807f_)\n\n.. _5bb807f: https://github.com/level12/keg/commit/5bb807f\n\n\n0.6.6 released 2018-11-13\n-------------------------\n\n- Add optional i18n support using morphi (d75a8fb_)\n- Update pipenv dependencies to remove warning (b3b089e_)\n- Pass through CLI invocation arguments and allow STDIN in CLI tests (bac2e3b_)\n\n.. _d75a8fb: https://github.com/level12/keg/commit/d75a8fb\n.. _b3b089e: https://github.com/level12/keg/commit/b3b089e\n.. _bac2e3b: https://github.com/level12/keg/commit/bac2e3b\n\n\n0.6.5 released 2018-05-28\n-------------------------\n\n- Update readme, start using pipenv, pin Flask < 1.0 (abdc9bf_)\n\n.. _abdc9bf: https://github.com/level12/keg/commit/abdc9bf\n\n\n0.6.4 released 2018-01-09\n-------------------------\n\n- when testing, don't log to syslog by default (304a0a7_)\n\n.. _304a0a7: https://github.com/level12/keg/commit/304a0a7\n\n\n0.6.3 released 2018-01-09\n-------------------------\n\n- add '@cee:' prefix to json syslog formatter (b7ea5d3_)\n\n.. _b7ea5d3: https://github.com/level12/keg/commit/b7ea5d3\n\n\n0.6.2 released 2017-12-19\n-------------------------\n\n- db: get rid of code to replace session object (149b42c_)\n\n.. _149b42c: https://github.com/level12/keg/commit/149b42c\n\n\n0.6.1 released 2017-11-16\n-------------------------\n\n- fix quiet logging (e46fd2b_)\n- a few small updates/fixes to readme (2044439_)\n\n.. _e46fd2b: https://github.com/level12/keg/commit/e46fd2b\n.. _2044439: https://github.com/level12/keg/commit/2044439\n\n\n0.6.0 released 2017-08-18\n-------------------------\n\n- ADD: make CLIBase operate off `current_app` as last resort (1b358c1_)\n- ADD: --quiet option to script options (6eb723f_)\n- BREAKING CHANGE: adjust cli API on KegApp (af45880_)\n\n.. _1b358c1: https://github.com/level12/keg/commit/1b358c1\n.. _6eb723f: https://github.com/level12/keg/commit/6eb723f\n.. _af45880: https://github.com/level12/keg/commit/af45880\n\n\n0.5.1 released 2017-08-15\n-------------------------\n\n- ADD: mitigate CSRF bug in Flask-WTF (42a2e70_)\n- ADD: config, init, and routing enhancements (cdfa901_)\n- MAINT: upgrade to CircleCI 2.0 (60e3bfa_)\n\n.. _42a2e70: https://github.com/level12/keg/commit/42a2e70\n.. _cdfa901: https://github.com/level12/keg/commit/cdfa901\n.. _60e3bfa: https://github.com/level12/keg/commit/60e3bfa\n\n\n0.5.0 released 2017-06-27\n-------------------------\n\n- prep for pyp usage (23424b9_)\n- Merge branch 'logging-improvements' (PR66_)\n\n.. _23424b9: https://github.com/level12/keg/commit/23424b9\n.. _PR66: https://github.com/level12/keg/pull/66\n\n\n\n0.4.1 - 2017-02-09\n------------------\n\n* BUG: Properly quote pgsql identifiers during create (86852ad_)\n\n.. _86852ad: https://github.com/level12/keg/commit/86852ad\n\n\n\n0.4.0 - 2016-12-19\n------------------\n\n* BUG: Properly Update Keyring Config Data (7f1908f_)\n* MSSQL dialect support (df7e89d_)\n* MAINT: Refactor keyring to accept bytes (15bc04b_)\n* MAINT: Remove deprecated flask hooks (4f7e2bf_)\n* Remove unicode_literal futures (dc2fa85_)\n* MAINT: Create windows build environment (983e040_)\n* MAINT: Run CI with Docker (bc7a877_)\n* Remove extra cp in readme (7e94815_)\n\n.. _7f1908f: https://github.com/level12/keg/commit/7f1908f\n.. _df7e89d: https://github.com/level12/keg/commit/df7e89d\n.. _15bc04b: https://github.com/level12/keg/commit/15bc04b\n.. _4f7e2bf: https://github.com/level12/keg/commit/4f7e2bf\n.. _dc2fa85: https://github.com/level12/keg/commit/dc2fa85\n.. _983e040: https://github.com/level12/keg/commit/983e040\n.. _bc7a877: https://github.com/level12/keg/commit/bc7a877\n.. _7e94815: https://github.com/level12/keg/commit/7e94815\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/level12/keg", "keywords": "", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "Keg", "package_url": "https://pypi.org/project/Keg/", "platform": "", "project_url": "https://pypi.org/project/Keg/", "project_urls": { "Homepage": "https://github.com/level12/keg" }, "release_url": "https://pypi.org/project/Keg/0.8.0/", "requires_dist": [ "appdirs", "BlazeUtils", "blinker", "Click (>=3.0)", "Flask", "Flask-SQLAlchemy", "pathlib", "python-json-logger", "six", "morphi ; extra == 'i18n'", "flask-webtest ; extra == 'tests'", "flask-wtf ; extra == 'tests'", "keyring ; extra == 'tests'", "pytest ; extra == 'tests'", "pytest-cov ; extra == 'tests'", "psycopg2-binary ; extra == 'tests'", "mock ; extra == 'tests'", "pymssql ; (sys_platform == \"win32\") and extra == 'tests'" ], "requires_python": "", "summary": "A web framework built on Flask & SQLAlchemy. Somewhere North of Flask but South of Django.", "version": "0.8.0" }, "last_serial": 4985713, "releases": { "0.1.0": [], "0.3.0": [ { "comment_text": "", "digests": { "md5": "2f1cdb4eb5a02d95f482bb287f63f869", "sha256": "5446f61f26f4e55e5fd6621c977bf7c2c3bea6b43a36ce0360158dd29deba0a6" }, "downloads": -1, "filename": "Keg-0.3.0.tar.gz", "has_sig": false, "md5_digest": "2f1cdb4eb5a02d95f482bb287f63f869", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45051, "upload_time": "2016-03-17T23:03:09", "url": "https://files.pythonhosted.org/packages/77/23/fbef698f335d92d3a1158d80b770b081246820a751c48453870e09b1cf79/Keg-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "68c74ad29af9fd41aab5097a4e00855f", "sha256": "f8020f9df8b177ee0250cd29fffd07bc8935c78690ddf03173695de7d88a5ea5" }, "downloads": -1, "filename": "Keg-0.3.1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "68c74ad29af9fd41aab5097a4e00855f", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 58935, "upload_time": "2016-03-17T23:20:43", "url": "https://files.pythonhosted.org/packages/79/92/4189a0bafc22b0b5f394df475e541c49304f7ebafd4a5fb404072101c49b/Keg-0.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5b3e99152db3034c5a3940ccaed9d1ff", "sha256": "7ec5214966c7170fa15d442965cdaa3104ab8313a32de94677c9af314be008c1" }, "downloads": -1, "filename": "Keg-0.3.1.tar.gz", "has_sig": true, "md5_digest": "5b3e99152db3034c5a3940ccaed9d1ff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45597, "upload_time": "2016-03-17T23:21:13", "url": "https://files.pythonhosted.org/packages/73/91/e4b834b6f39e34d833bc8260daa3237b3ced22b8deaa01fe4acbaa7a762e/Keg-0.3.1.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "91759b96005fd49b0ea5be46b4d53dfe", "sha256": "93b3eaff8df30367c64b8e6b62cca1c287f739f7471d4cbfd6b9d792259e08c3" }, "downloads": -1, "filename": "Keg-0.4.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "91759b96005fd49b0ea5be46b4d53dfe", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 62078, "upload_time": "2016-12-19T23:02:49", "url": "https://files.pythonhosted.org/packages/f7/04/f71f2d5a156ec71fd5a1827c9be535216f8937f9cade92bff4be3681b597/Keg-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9494e534f27ed808f4555cd7bba42e8c", "sha256": "55c71c9e7e410147c49d7dda2ffd1bdec8f0ff4bd79433e634a31103a00d5bf4" }, "downloads": -1, "filename": "Keg-0.4.0.tar.gz", "has_sig": true, "md5_digest": "9494e534f27ed808f4555cd7bba42e8c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48861, "upload_time": "2016-12-19T23:02:52", "url": "https://files.pythonhosted.org/packages/0b/bb/3cb0dc932242381ca418175b6d773af99eb191cc6818c2f478ae6e866fe8/Keg-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "1fa541d76c4043bc765986f761a517a3", "sha256": "c0dd0852e296c8acfee6c1980c4a6de5787c5e46a1154445e7035cf25c275a44" }, "downloads": -1, "filename": "Keg-0.4.1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "1fa541d76c4043bc765986f761a517a3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 62186, "upload_time": "2017-02-09T16:26:21", "url": "https://files.pythonhosted.org/packages/48/c1/8c2b1401bde997b1ca165222411e9e0f9496ee986921cd1997e872379997/Keg-0.4.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3ecdb7c55aa2fad25c3925bc28dfe80f", "sha256": "e1b6f89e91dabb9bb6dc66dbacf082974229c77eeea88fdbcfa568df65fcaa59" }, "downloads": -1, "filename": "Keg-0.4.1.tar.gz", "has_sig": true, "md5_digest": "3ecdb7c55aa2fad25c3925bc28dfe80f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49023, "upload_time": "2017-02-09T16:26:23", "url": "https://files.pythonhosted.org/packages/39/e6/f59bd8664db90a3938d05a96c9d31a8f132acff3aef44f3fc97ecc5a42bb/Keg-0.4.1.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "0498b0a62cd68f70f2b4ba1176998460", "sha256": "c242a14ff28b66eddbec144cc295fa05b799be609493c1467e2ebd494028c42e" }, "downloads": -1, "filename": "Keg-0.5.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0498b0a62cd68f70f2b4ba1176998460", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 64657, "upload_time": "2017-06-28T03:34:10", "url": "https://files.pythonhosted.org/packages/5f/e0/c53417b881e7c54a12c8f70a105f92bfe7dcd4c3529fd1d5804168f6118d/Keg-0.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "11d22450dd5f0c4d607c05ee7a920a0e", "sha256": "bbd3a95ce0b230cd2859ad288374ed13f603c9bf4a252bd821285e2f33834b36" }, "downloads": -1, "filename": "Keg-0.5.0.tar.gz", "has_sig": false, "md5_digest": "11d22450dd5f0c4d607c05ee7a920a0e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45493, "upload_time": "2017-06-28T03:34:12", "url": "https://files.pythonhosted.org/packages/ef/05/66ea4a5588ee8854e0a81ed204356c098597ae3d77832dfca8f927017222/Keg-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "82d320e9fe7c5b7a46381085ce4ab6cc", "sha256": "f95ed8aa4b1922fe1464bcd9573d1c7ca1cfbfdb5f764384de809a22da1900d8" }, "downloads": -1, "filename": "Keg-0.5.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "82d320e9fe7c5b7a46381085ce4ab6cc", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 65018, "upload_time": "2017-08-15T17:57:30", "url": "https://files.pythonhosted.org/packages/f3/2e/18852c2fdc273057a4e8666b71634c322cdafc8f567488311a839a26b9c2/Keg-0.5.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "00ba66fded9b633148d9a1c83cac64f6", "sha256": "fc92a7557a7335d44abf51774626ee9bb19d4b93a67c5ac11bf43d7f6235aa88" }, "downloads": -1, "filename": "Keg-0.5.1.tar.gz", "has_sig": false, "md5_digest": "00ba66fded9b633148d9a1c83cac64f6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49299, "upload_time": "2017-08-15T17:57:32", "url": "https://files.pythonhosted.org/packages/ce/6e/7a96e513e8d870daead35c8c3bca6c95833952cdd451fe7e9cf44e83b4e7/Keg-0.5.1.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "ee7e1d0a37f60f3c828829a5aa635fd8", "sha256": "03b0a499e018fd8a50fdc3f1bbe7c590a6b7f51779f131aaa63e605588c04536" }, "downloads": -1, "filename": "Keg-0.6.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ee7e1d0a37f60f3c828829a5aa635fd8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 62026, "upload_time": "2017-08-18T17:05:42", "url": "https://files.pythonhosted.org/packages/a0/6e/29069441b57701aa76d31cbc6c2bc0e48cb848ae313e2a014ee99d835747/Keg-0.6.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "22566599009ba76e1b78e0889af31e29", "sha256": "2725c8ddd287a6dfb062db48b910879ce84a380f8956867eb54835c3d474abce" }, "downloads": -1, "filename": "Keg-0.6.0.tar.gz", "has_sig": false, "md5_digest": "22566599009ba76e1b78e0889af31e29", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45324, "upload_time": "2017-08-18T17:05:44", "url": "https://files.pythonhosted.org/packages/d9/a9/a89a091dbf0d8627b40adcc7a040c20d8d530a593e6450ac80a037f0269e/Keg-0.6.0.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "f4033d2361d0f4f7ebe8a2d8df47e6d9", "sha256": "c21a1357a398c865cdc77400e8255cd5121a61f3744e61c770889188bf218402" }, "downloads": -1, "filename": "Keg-0.6.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f4033d2361d0f4f7ebe8a2d8df47e6d9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 62108, "upload_time": "2017-11-16T16:31:53", "url": "https://files.pythonhosted.org/packages/18/e0/e420443e070f4a180c600519313b636ccc61375d640e2e59d0f7b37a5796/Keg-0.6.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "19f6c1c33a44b903575e26a903d2179f", "sha256": "9e1022300d9a6f194cc61f47aaa69574cc67089196e54bcc0d03965c3c12739e" }, "downloads": -1, "filename": "Keg-0.6.1.tar.gz", "has_sig": false, "md5_digest": "19f6c1c33a44b903575e26a903d2179f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47823, "upload_time": "2017-11-16T16:31:55", "url": "https://files.pythonhosted.org/packages/aa/69/b43c216f5673894c6c00c9c3303d239f7639262b2ce869d504951ea7094b/Keg-0.6.1.tar.gz" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "700959d08bf801f42150fa15cb502e2d", "sha256": "2822d697521f12a23237be5831b7b6a53c132c91c81553ca65e1ceeff793927c" }, "downloads": -1, "filename": "Keg-0.6.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "700959d08bf801f42150fa15cb502e2d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 62142, "upload_time": "2017-12-19T23:00:29", "url": "https://files.pythonhosted.org/packages/b4/7b/a34d50638d2816b3fa07a9dcdb1aad978c1fcdda6f53c73058a1a5b81925/Keg-0.6.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4730a18f8d9ca61af7b567cb3cfb5d41", "sha256": "aa243c622215594a64b73f1ac96b7735c358bd457fb3844270d557fdbda66f51" }, "downloads": -1, "filename": "Keg-0.6.2.tar.gz", "has_sig": false, "md5_digest": "4730a18f8d9ca61af7b567cb3cfb5d41", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44884, "upload_time": "2017-12-19T23:00:32", "url": "https://files.pythonhosted.org/packages/22/f5/28f26e9815466dc840a14c373d82e0c5bdaa2551f360c47b0e822a9efeff/Keg-0.6.2.tar.gz" } ], "0.6.3": [ { "comment_text": "", "digests": { "md5": "4903d405dc8661fc94d31b1623d169ed", "sha256": "94a1139be27ac522a9abf9ff0023a84a0561f7991e578a0750c165db0d4a5e40" }, "downloads": -1, "filename": "Keg-0.6.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4903d405dc8661fc94d31b1623d169ed", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 62599, "upload_time": "2018-01-09T22:25:09", "url": "https://files.pythonhosted.org/packages/22/10/092156b43b9537e8c4382bfccc3b0f047fc70b857d17281ca295eaf10f81/Keg-0.6.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d9bbc35dac08948dd28ada447fddd3a0", "sha256": "49c6d6618db14e0524a7a2dc85b168a6057701201b5268f845070d6641d88321" }, "downloads": -1, "filename": "Keg-0.6.3.tar.gz", "has_sig": false, "md5_digest": "d9bbc35dac08948dd28ada447fddd3a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48466, "upload_time": "2018-01-09T22:25:11", "url": "https://files.pythonhosted.org/packages/7a/41/99a283fcca54fb335632c2b20ef518807e0bd3107c6a173e017f4e4493a9/Keg-0.6.3.tar.gz" } ], "0.6.4": [ { "comment_text": "", "digests": { "md5": "eaddd3b44e4c2c1a3cfe93b2dd8023d3", "sha256": "1ba55beb8f7067602c9ecad35509dee3bc1e42b8da636f9dab9284d0338f5cb7" }, "downloads": -1, "filename": "Keg-0.6.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "eaddd3b44e4c2c1a3cfe93b2dd8023d3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 62702, "upload_time": "2018-01-09T22:49:12", "url": "https://files.pythonhosted.org/packages/58/b7/683cf8af1ce3caa3b046336d585deb960467ac562c6ffecc4acd11266f9f/Keg-0.6.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "602d8c734a61280774cd23527eba09f8", "sha256": "613c83fbfa288763349ebd7281a13bf1e87e88d096849d61f95bf555b85ff9f7" }, "downloads": -1, "filename": "Keg-0.6.4.tar.gz", "has_sig": false, "md5_digest": "602d8c734a61280774cd23527eba09f8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48574, "upload_time": "2018-01-09T22:49:13", "url": "https://files.pythonhosted.org/packages/f9/9e/404a3ba60a4a4be1e08d459b4a11e43be5a82e13c49febc8a7aec980117f/Keg-0.6.4.tar.gz" } ], "0.6.5": [ { "comment_text": "", "digests": { "md5": "336a062d150cc972b8ccd6ef3e295a5a", "sha256": "77a29b8b758ef4fb60f1caea5b8a33bb07e0c02817c969b704b1bd40865af6df" }, "downloads": -1, "filename": "Keg-0.6.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "336a062d150cc972b8ccd6ef3e295a5a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 62661, "upload_time": "2018-05-29T01:20:00", "url": "https://files.pythonhosted.org/packages/8f/42/94769575482e07fa65f0fc6e9af8a162f8ce5e11023c4509f76a7ebc7e2e/Keg-0.6.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2e7f990d41522d916a0166dea20175e0", "sha256": "4fe7ba5c228b4056d7fd8a326d70f54699b5fa286d450c07e5a1ef363473b622" }, "downloads": -1, "filename": "Keg-0.6.5.tar.gz", "has_sig": false, "md5_digest": "2e7f990d41522d916a0166dea20175e0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48570, "upload_time": "2018-05-29T01:20:01", "url": "https://files.pythonhosted.org/packages/05/a1/bd8d479fb38160b74a44be3abfb0d55e296a7238921409cc6d4a92dd3ea4/Keg-0.6.5.tar.gz" } ], "0.6.6": [ { "comment_text": "", "digests": { "md5": "351d53451c5b8e1eb9178d77f9011e95", "sha256": "11b0a0fd63792f9034078674b5a74ced719999a2e8fb41450bbbfe2e2f0c2de9" }, "downloads": -1, "filename": "Keg-0.6.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "351d53451c5b8e1eb9178d77f9011e95", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 59821, "upload_time": "2018-11-13T21:06:04", "url": "https://files.pythonhosted.org/packages/c6/15/2a4cfab495ec23469c6ed9224a0613eeac066ab23467b747cf3527594ebf/Keg-0.6.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c04ca33369386bb6e0c1a472a2a27a0e", "sha256": "a00a5ff00305c66c88419a4705a637c6a0fa7de0c704da8150c7d148f240555a" }, "downloads": -1, "filename": "Keg-0.6.6.tar.gz", "has_sig": false, "md5_digest": "c04ca33369386bb6e0c1a472a2a27a0e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49680, "upload_time": "2018-11-13T21:06:05", "url": "https://files.pythonhosted.org/packages/70/92/4bfe07d6bf0f20ddfcc3690ba8ba87e78b893406fbb995be018b1539560a/Keg-0.6.6.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "5335ca66cb3089d073f253f02e38a9cb", "sha256": "f64ba9e05e0e4db7cac119533d6ae8a32b9595229f5afc9019eda4ae5fc89629" }, "downloads": -1, "filename": "Keg-0.7.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5335ca66cb3089d073f253f02e38a9cb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 60290, "upload_time": "2019-02-07T20:59:19", "url": "https://files.pythonhosted.org/packages/9d/be/5e038724c2c0c9a7660164e5223df824d075a2876c7dbc47d56494375fbf/Keg-0.7.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8fdd06c1da0ba2474a191e1d32627b19", "sha256": "9b675729467c9d35b520369ab6caaaea3d9bbbeef571a4f4005f66bf444fbcd2" }, "downloads": -1, "filename": "Keg-0.7.0.tar.gz", "has_sig": false, "md5_digest": "8fdd06c1da0ba2474a191e1d32627b19", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50295, "upload_time": "2019-02-07T20:59:22", "url": "https://files.pythonhosted.org/packages/14/15/6eb19dc00d3f39a45a9dad996c86eadcfa11fe900158d05ef31d1b208ca2/Keg-0.7.0.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "b9f27ea19e0ae5318acee61ca7705e55", "sha256": "27250e69b40f2a652c9bae2078ac6e95558d688c782b808aee51e5246979fc05" }, "downloads": -1, "filename": "Keg-0.8.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b9f27ea19e0ae5318acee61ca7705e55", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 60349, "upload_time": "2019-03-26T03:08:52", "url": "https://files.pythonhosted.org/packages/35/10/f60b30f21700d23d55bc9499d0a3dc02c411ba8915119c0c773d9f874b8c/Keg-0.8.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "061b150d9cc323c285fa1e69eac47025", "sha256": "e5dfbbac1d82dfadf0733291777bfb6e59e59496456e1762ac7a5a3e7031580d" }, "downloads": -1, "filename": "Keg-0.8.0.tar.gz", "has_sig": false, "md5_digest": "061b150d9cc323c285fa1e69eac47025", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48813, "upload_time": "2019-03-26T03:08:54", "url": "https://files.pythonhosted.org/packages/0f/ca/16fb77ab0565ab05b1bee82618ddf549da3dcf21cebdd10877a373e4c981/Keg-0.8.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b9f27ea19e0ae5318acee61ca7705e55", "sha256": "27250e69b40f2a652c9bae2078ac6e95558d688c782b808aee51e5246979fc05" }, "downloads": -1, "filename": "Keg-0.8.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b9f27ea19e0ae5318acee61ca7705e55", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 60349, "upload_time": "2019-03-26T03:08:52", "url": "https://files.pythonhosted.org/packages/35/10/f60b30f21700d23d55bc9499d0a3dc02c411ba8915119c0c773d9f874b8c/Keg-0.8.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "061b150d9cc323c285fa1e69eac47025", "sha256": "e5dfbbac1d82dfadf0733291777bfb6e59e59496456e1762ac7a5a3e7031580d" }, "downloads": -1, "filename": "Keg-0.8.0.tar.gz", "has_sig": false, "md5_digest": "061b150d9cc323c285fa1e69eac47025", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48813, "upload_time": "2019-03-26T03:08:54", "url": "https://files.pythonhosted.org/packages/0f/ca/16fb77ab0565ab05b1bee82618ddf549da3dcf21cebdd10877a373e4c981/Keg-0.8.0.tar.gz" } ] }