{ "info": { "author": "Pablo Cabezas", "author_email": "pabcabsal@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10" ], "description": "# configclasses\n\n![PyPI](https://img.shields.io/pypi/v/12factor-configclasses)\n[![codecov](https://codecov.io/gh/headsrooms/configclasses/branch/master/graph/badge.svg?token=U0bxsmAUoe)](https://codecov.io/gh/headsrooms/configclasses)\n\n[![Downloads](https://pepy.tech/badge/12factor-configclasses/month)](https://pepy.tech/project/12factor-configclasses)\n\n\nLike dataclasses but for config.\n\nSpecify your config with a class and load it with your env vars or env files.\n\n\n```python\nimport httpx\nfrom configclasses import configclass\n\n\nclass UserAPIClient(httpx.AsyncClient):\n def __init__(self, config: ClientConfig, *args, **kwargs):\n self.config = config\n super().__init__(*args, **kwargs)\n\n async def get_users(self, headers: Optional[Headers] = None) -> Dict[str, Any]:\n response = await self.get(f\"{self.path}/users\", auth=headers)\n response.raise_for_status()\n return response.json()\n \n@configclass\nclass ClientConfig:\n host: str\n port: int\n\nconfig = ClientConfig.from_path(\".env\")\nasync with UserAPIClient(config) as client:\n users = await client.get_users(auth_headers)\n```\n\n## Features\n\n- Fill your configclasses with existent env vars.\n- Define default values in case these variables have no value at all.\n- Load your config files in env vars following [12factor apps](https://12factor.net) recommendations.\n- Support for _.env_, _yaml_, _toml_, _ini_ and _json_.\n- Convert your env vars with specified type in configclass: `int`, `float`, `str` or `bool`.\n- Use nested configclasses to more complex configurations.\n- Specify a prefix with `@configclass(prefix=\"\")` to append this prefix to your configclass' attribute names.\n- Config groups (__TODO__): https://cli.dev/docs/tutorial/config_groups/\n\n## Requirements\n\nPython 3.8+\n\n\n## Installation\n\nDepending on your chosen config file format you can install:\n\n- .env -> ```pip install 12factor-configclasses[dotenv]```\n- .yaml -> ```pip install 12factor-configclasses[yaml]```\n- .toml -> ```pip install 12factor-configclasses[toml]```\n- .ini -> ```pip install 12factor-configclasses```\n- .json -> ```pip install 12factor-configclasses```\n\nOr install all supported formats with:\n\n pip install 12factor-configclasses[full]\n \n## Usage\n\nThere are three ways to use it:\n\n- Loading an .env file:\n\n```.env\n# .env\nHOST=0.0.0.0\nPORT=8000\nDB_URL=sqlite://:memory:\nGENERATE_SCHEMAS=True\nDEBUG=True\nHTTPS_ONLY=False\nGZIP=True\nSENTRY=False\n```\n\n```python\n#config.py\nfrom configclasses import configclass\n\n\n@configclass\nclass DB:\n user: str\n password: str\n url: str\n\n\n@configclass\nclass AppConfig:\n host: str\n port: int\n db: DB\n generate_schemas: bool\n debug: bool\n https_only: bool\n gzip: bool\n sentry: bool\n```\n\n```python\n# app.py\nfrom api.config import AppConfig\n\napp_config = AppConfig.from_path(\".env\")\napp = Starlette(debug=app_config.debug)\n\nif app_config.https_only:\n app.add_middleware(\n HTTPSRedirectMiddleware)\nif app_config.gzip:\n app.add_middleware(GZipMiddleware)\nif app_config.sentry:\n app.add_middleware(SentryAsgiMiddleware)\n\n...\n\nregister_tortoise(\n app,\n db_url=app_config.db.url,\n modules={\"models\": [\"api.models\"]},\n generate_schemas=app_config.generate_schemas,\n)\n\nif __name__ == \"__main__\":\n uvicorn.run(app, host=app_config.host, port=app_config.port)\n```\n\n \n- Loading predefined environmental variables:\n\nThe same than before, but instead of:\n\n app_config = AppConfig.from_path(\".env\")\n \nYou will do:\n\n app_config = AppConfig.from_environ()\n \n- Loading a file from a string:\n\n```python\ntest_env = \"\"\"HOST=0.0.0.0\nPORT=8000\nDB_URL=sqlite://:memory:\nGENERATE_SCHEMAS=True\nDEBUG=True\nHTTPS_ONLY=False\nGZIP=True\nSENTRY=False\"\"\"\napp_config = AppConfig.from_string(test_env, \".env\")\n```\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/kingoodie/configclasses", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "12factor-configclasses", "package_url": "https://pypi.org/project/12factor-configclasses/", "platform": "", "project_url": "https://pypi.org/project/12factor-configclasses/", "project_urls": { "Homepage": "https://github.com/kingoodie/configclasses", "Repository": "https://github.com/kingoodie/configclasses" }, "release_url": "https://pypi.org/project/12factor-configclasses/1.0.0/", "requires_dist": [ "tomlkit[toml] (>=0.7,<0.8); extra == \"toml\" or extra == \"full\"", "python-dotenv[dotenv] (>=0.19,<0.20); extra == \"dotenv\" or extra == \"full\"", "pyyaml[yaml] (>=6,<7); extra == \"yaml\" or extra == \"full\"" ], "requires_python": ">=3.10,<4.0", "summary": "Like dataclasses but for config.", "version": "1.0.0", "yanked": false, "yanked_reason": null }, "last_serial": 11879347, "releases": { "0.1.3": [ { "comment_text": "", "digests": { "md5": "26ae6e7ee1dca7dd37ee5818c44b6a67", "sha256": "89b0bccb74d4091292ac34ae06e916be8a12aace29a6af29a9ccdb8e89cd3bc5" }, "downloads": -1, "filename": "12factor_configclasses-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "26ae6e7ee1dca7dd37ee5818c44b6a67", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.8,<4.0", "size": 4282, "upload_time": "2019-10-29T18:09:50", "upload_time_iso_8601": "2019-10-29T18:09:50.972093Z", "url": "https://files.pythonhosted.org/packages/04/58/686069e3ee2102b09facb3a524dfbebbb050e08649b4d34cf96e2599b8df/12factor_configclasses-0.1.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e9697709f3ba93b452c36082ad4e3380", "sha256": "e970b2ded58fc95fc78080591dda621fc7782c7a190a027a061b590654661b47" }, "downloads": -1, "filename": "12factor-configclasses-0.1.3.tar.gz", "has_sig": false, "md5_digest": "e9697709f3ba93b452c36082ad4e3380", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.8,<4.0", "size": 3616, "upload_time": "2019-10-29T18:09:49", "upload_time_iso_8601": "2019-10-29T18:09:49.492174Z", "url": "https://files.pythonhosted.org/packages/b8/da/1477d567788db5c118ce6e980397e19b2eb88d56e1e2dd1da78ba7b11bad/12factor-configclasses-0.1.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "fc9281732778134307ac1927b16718b6", "sha256": "fdb8e24b20dacf00c9f769cb230c47ddb6883b14b466e7192e1af2260d95a9ac" }, "downloads": -1, "filename": "12factor_configclasses-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "fc9281732778134307ac1927b16718b6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.8,<4.0", "size": 4706, "upload_time": "2019-11-01T21:51:32", "upload_time_iso_8601": "2019-11-01T21:51:32.731199Z", "url": "https://files.pythonhosted.org/packages/58/e7/86dbeb84bcd7a353aaef4c5615c2cc4b9395390304ae0da221b8c2c4bac4/12factor_configclasses-0.2.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "959c43fde21966370a4347e5464e7083", "sha256": "1cd6ad2c3a3f31bed6c45287c098348facccb90d2fccebe9290748ce346938fb" }, "downloads": -1, "filename": "12factor-configclasses-0.2.0.tar.gz", "has_sig": false, "md5_digest": "959c43fde21966370a4347e5464e7083", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.8,<4.0", "size": 3794, "upload_time": "2019-11-01T21:51:31", "upload_time_iso_8601": "2019-11-01T21:51:31.128630Z", "url": "https://files.pythonhosted.org/packages/99/c1/cac31e5c30cd342674ee2f75a26a31ffc99fcd80f53d281992bc341d7baf/12factor-configclasses-0.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "2338d462324863e167786ce2b40d37db", "sha256": "742674680913747092367f07847b2d2ed63ee4c4a6b75c18a48e3a15d533b2a7" }, "downloads": -1, "filename": "12factor_configclasses-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "2338d462324863e167786ce2b40d37db", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.8,<4.0", "size": 4708, "upload_time": "2019-11-01T23:34:46", "upload_time_iso_8601": "2019-11-01T23:34:46.405999Z", "url": "https://files.pythonhosted.org/packages/44/0c/e5eeb3a3221035f6a93db33e6da30a453f5bf432bf508917e19d007093d6/12factor_configclasses-0.2.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "8023eadf4a19191a846acb581538f264", "sha256": "3ebe65fc8492b8300e9de3b89e677eeb2d97db2aa249c60927c966b8e705b1e0" }, "downloads": -1, "filename": "12factor-configclasses-0.2.1.tar.gz", "has_sig": false, "md5_digest": "8023eadf4a19191a846acb581538f264", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.8,<4.0", "size": 3836, "upload_time": "2019-11-01T23:34:45", "upload_time_iso_8601": "2019-11-01T23:34:45.149524Z", "url": "https://files.pythonhosted.org/packages/11/62/0d5b14f5d8e6a4cc178d35d86e8af6c4adbfe9c93072197273799da52022/12factor-configclasses-0.2.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "1be985e6d590a36cb036cd4aae752082", "sha256": "c653b609f482f3622ed6b081b5bff64125cbb97fd58f73dd39e97926ff3ab877" }, "downloads": -1, "filename": "12factor_configclasses-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "1be985e6d590a36cb036cd4aae752082", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.8,<4.0", "size": 4794, "upload_time": "2019-11-02T10:38:10", "upload_time_iso_8601": "2019-11-02T10:38:10.683242Z", "url": "https://files.pythonhosted.org/packages/b4/ef/4a6c1b8289c99332049e37e84316e0c85539bc657ed6a998aac967e5a2ba/12factor_configclasses-0.2.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ae50e7de5c9d7fdecc3bdd4e60b7b29a", "sha256": "632297d45ee6f0bc20365f3e1a2b10ac25d85da96a2ddb11dc0659231cf036ec" }, "downloads": -1, "filename": "12factor-configclasses-0.2.2.tar.gz", "has_sig": false, "md5_digest": "ae50e7de5c9d7fdecc3bdd4e60b7b29a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.8,<4.0", "size": 3915, "upload_time": "2019-11-02T10:38:09", "upload_time_iso_8601": "2019-11-02T10:38:09.191844Z", "url": "https://files.pythonhosted.org/packages/d9/40/cac49f0b2a3861166dd9a4d4eb72a579dadebacf4ccfd5d5d27185e91f61/12factor-configclasses-0.2.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "3ee831c1ef6d8e72eea0d7d0fd3414ee", "sha256": "b1399e6570937543d3cbb30255f4c405193609e2a34d5833f33481bc2843489c" }, "downloads": -1, "filename": "12factor_configclasses-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "3ee831c1ef6d8e72eea0d7d0fd3414ee", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.8,<4.0", "size": 4803, "upload_time": "2019-11-02T15:32:59", "upload_time_iso_8601": "2019-11-02T15:32:59.043147Z", "url": "https://files.pythonhosted.org/packages/57/7f/0ca273f83d1daab49d10bd29bf1fdbe3d822f9cac844b93b8e961b559340/12factor_configclasses-0.2.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "4042f8d3e008f213d904f0051ab43edf", "sha256": "807527dc410afa03adaf5636dd4e47d80ea57af635139c786a5c793dd66947c0" }, "downloads": -1, "filename": "12factor-configclasses-0.2.3.tar.gz", "has_sig": false, "md5_digest": "4042f8d3e008f213d904f0051ab43edf", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.8,<4.0", "size": 3922, "upload_time": "2019-11-02T15:32:57", "upload_time_iso_8601": "2019-11-02T15:32:57.564803Z", "url": "https://files.pythonhosted.org/packages/6b/fb/c891e64f61c4083bb94de147f44ad2f55c1a14b005a550d40b5178508312/12factor-configclasses-0.2.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "54baad1a19473af34866abb544410634", "sha256": "c0e729b9d261824c759e9a49952c951d7e1ac08f6186102f6c691f3a3fe34cb0" }, "downloads": -1, "filename": "12factor_configclasses-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "54baad1a19473af34866abb544410634", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.8,<4.0", "size": 6211, "upload_time": "2019-11-08T19:25:06", "upload_time_iso_8601": "2019-11-08T19:25:06.408105Z", "url": "https://files.pythonhosted.org/packages/8f/dc/2464026ac14d7f9d780d5dba967356da8c605b2a1e65db167d26675f3dde/12factor_configclasses-0.2.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "7dde780e401bd2bd78d14d2306479ace", "sha256": "5ef316ca3c42da92139426ab8e8b23d9e5a73feaed9a11242535b53683534e63" }, "downloads": -1, "filename": "12factor-configclasses-0.2.4.tar.gz", "has_sig": false, "md5_digest": "7dde780e401bd2bd78d14d2306479ace", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.8,<4.0", "size": 6160, "upload_time": "2019-11-08T19:25:04", "upload_time_iso_8601": "2019-11-08T19:25:04.653896Z", "url": "https://files.pythonhosted.org/packages/c6/b0/d3d413a839fd146df95d8a5639037627ce078ce97791752a2bb601a8d5dc/12factor-configclasses-0.2.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "078f70459bd710b650d2da6714a46fd4", "sha256": "694ce4c2ed6491fe170c494d0d7402c3f794e1de989608f968698a40dc3dccc7" }, "downloads": -1, "filename": "12factor_configclasses-0.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "078f70459bd710b650d2da6714a46fd4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.8,<4.0", "size": 6507, "upload_time": "2019-11-08T19:53:24", "upload_time_iso_8601": "2019-11-08T19:53:24.383671Z", "url": "https://files.pythonhosted.org/packages/b2/91/a6ac5ca057542bcadf82a7a3a23039dd78c0550716e99c0292cdaf7a3a3f/12factor_configclasses-0.2.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "dff1bc7f7958bfd8632c9c132ece0d60", "sha256": "730c439415f92db1ecb5cb3c83172830866633a5b8702811b1b693f8fe461935" }, "downloads": -1, "filename": "12factor-configclasses-0.2.5.tar.gz", "has_sig": false, "md5_digest": "dff1bc7f7958bfd8632c9c132ece0d60", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.8,<4.0", "size": 6262, "upload_time": "2019-11-08T19:53:22", "upload_time_iso_8601": "2019-11-08T19:53:22.543056Z", "url": "https://files.pythonhosted.org/packages/7b/2f/5a3c2f5bbd5a7d6220137daf9b958ec0481276447c2e1b94f9682c433450/12factor-configclasses-0.2.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "344b4786e8a363eee72d30c8f8ccc648", "sha256": "f26b4073fb907d71e297cad8266ce788dea440588e6e0ec1a60762a83d544f76" }, "downloads": -1, "filename": "12factor_configclasses-0.2.6-py3-none-any.whl", "has_sig": false, "md5_digest": "344b4786e8a363eee72d30c8f8ccc648", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.8,<4.0", "size": 6540, "upload_time": "2019-11-23T22:35:35", "upload_time_iso_8601": "2019-11-23T22:35:35.223558Z", "url": "https://files.pythonhosted.org/packages/a0/a4/c0d13d9088a39f53d069d042a8f30774249e355b28c41750680c3a9d1936/12factor_configclasses-0.2.6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a020d8371ab28265477c2f581cc75c5c", "sha256": "eb735ed6ff32a7e255416b070497898666403794a42d112f74cfe6e89f21481c" }, "downloads": -1, "filename": "12factor-configclasses-0.2.6.tar.gz", "has_sig": false, "md5_digest": "a020d8371ab28265477c2f581cc75c5c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.8,<4.0", "size": 6315, "upload_time": "2019-11-23T22:35:33", "upload_time_iso_8601": "2019-11-23T22:35:33.965850Z", "url": "https://files.pythonhosted.org/packages/5c/42/d239f84bc8ef8a0aefc908fdc7cf5c16ac138e36b0325921f3866314819e/12factor-configclasses-0.2.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "e930c0b3aa9381abe75379e859dd69f3", "sha256": "dbcbeae602b6c2becb8ea9bc7b2b6e0468cc2df280a29a67735a23f5ef98247e" }, "downloads": -1, "filename": "12factor_configclasses-0.2.7-py3-none-any.whl", "has_sig": false, "md5_digest": "e930c0b3aa9381abe75379e859dd69f3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.8,<4.0", "size": 6527, "upload_time": "2019-12-15T13:10:51", "upload_time_iso_8601": "2019-12-15T13:10:51.282119Z", "url": "https://files.pythonhosted.org/packages/3a/57/ad6c946fb747fd75580438982e806fcd9e05db9e34313fabb63e61200952/12factor_configclasses-0.2.7-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "82d00d3c19443f82fd54a911c0dd39d9", "sha256": "e67577487a9d51d202be081ac572b596bbf86978d2219d81467bbe1aee98d036" }, "downloads": -1, "filename": "12factor-configclasses-0.2.7.tar.gz", "has_sig": false, "md5_digest": "82d00d3c19443f82fd54a911c0dd39d9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.8,<4.0", "size": 6347, "upload_time": "2019-12-15T13:10:49", "upload_time_iso_8601": "2019-12-15T13:10:49.808641Z", "url": "https://files.pythonhosted.org/packages/f4/85/c2439bb1a2e45ea2e95d24b35ee1149bf2317971e8c4cdfe4765dd990c3a/12factor-configclasses-0.2.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "84cc19c5a61aa763c2fd2dbcc2e5e828", "sha256": "ba04bc01e67c17c3800279c703e3d64c66462484932f359bf39306842d5e3e34" }, "downloads": -1, "filename": "12factor_configclasses-0.2.8-py3-none-any.whl", "has_sig": false, "md5_digest": "84cc19c5a61aa763c2fd2dbcc2e5e828", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.8,<4.0", "size": 6534, "upload_time": "2020-02-22T10:38:11", "upload_time_iso_8601": "2020-02-22T10:38:11.217351Z", "url": "https://files.pythonhosted.org/packages/17/bc/724129621d49a0197cdd470015dc1ddebacc0464b83c47c215cb95857dd3/12factor_configclasses-0.2.8-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "79409c8d0ce7eb703afef4328d73bff7", "sha256": "372fc69fa73ccc20547c0e07232e465ff4bc53d6dde36a4ca2c5304b6c93da62" }, "downloads": -1, "filename": "12factor-configclasses-0.2.8.tar.gz", "has_sig": false, "md5_digest": "79409c8d0ce7eb703afef4328d73bff7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.8,<4.0", "size": 6314, "upload_time": "2020-02-22T10:38:09", "upload_time_iso_8601": "2020-02-22T10:38:09.480820Z", "url": "https://files.pythonhosted.org/packages/30/5f/7d51b991a191acccb0157c8e9e492d42290a9dd15fdcac0bf9274902f6fc/12factor-configclasses-0.2.8.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "b1b3b4a533e379edf05592597294bcdc", "sha256": "e24debe9524e2ab8dc1aa55459c6934c651f187bb3fe66dbf0c3d1fafb6ab49c" }, "downloads": -1, "filename": "12factor_configclasses-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b1b3b4a533e379edf05592597294bcdc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.8,<4.0", "size": 6808, "upload_time": "2020-04-04T20:00:38", "upload_time_iso_8601": "2020-04-04T20:00:38.840415Z", "url": "https://files.pythonhosted.org/packages/cc/90/c5216bce23c9f4e9977c1edbedc0ccf77bf156e67cb5ebb232c75e1485f9/12factor_configclasses-0.3.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e502b3fb2c02920e12ed99222f7d8846", "sha256": "159d5c0785121551a56ed88b2d05eb9cae965545f5a3bff05d8852137d15a027" }, "downloads": -1, "filename": "12factor-configclasses-0.3.0.tar.gz", "has_sig": false, "md5_digest": "e502b3fb2c02920e12ed99222f7d8846", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.8,<4.0", "size": 6674, "upload_time": "2020-04-04T20:00:37", "upload_time_iso_8601": "2020-04-04T20:00:37.354524Z", "url": "https://files.pythonhosted.org/packages/11/5f/120b9696c827bc466f1c776706239ec8077b63fb7c773a64a8332903a429/12factor-configclasses-0.3.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "a59f5f479a7a237117ea0e7dea9bba4a", "sha256": "ce5fe76883be8f4557e8d60b3d806d04d9dd63469f0323138155122fc8a901ef" }, "downloads": -1, "filename": "12factor_configclasses-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "a59f5f479a7a237117ea0e7dea9bba4a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.8,<4.0", "size": 7508, "upload_time": "2021-06-19T22:27:12", "upload_time_iso_8601": "2021-06-19T22:27:12.298301Z", "url": "https://files.pythonhosted.org/packages/b9/d2/13f9184e1233117e4a19f2f05ec2cdbb8dc877c3050dcd93316d8ed5ddbb/12factor_configclasses-0.4.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f7dd06e93cc937343626a8ae23a9ff61", "sha256": "6f4ec3f038f5acc9066decda3fcd3471507eaf8b72b880844ffc16d28f0d3af8" }, "downloads": -1, "filename": "12factor-configclasses-0.4.0.tar.gz", "has_sig": false, "md5_digest": "f7dd06e93cc937343626a8ae23a9ff61", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.8,<4.0", "size": 6768, "upload_time": "2021-06-19T22:27:10", "upload_time_iso_8601": "2021-06-19T22:27:10.817424Z", "url": "https://files.pythonhosted.org/packages/e6/ca/ba47693730b56b7fe5f9560d9efa713659f4f639eecd8e5ca00fa242d5aa/12factor-configclasses-0.4.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "f0d4b485176a643f19fc986b020dc7df", "sha256": "7ccf83f74dad43eea07904d438d6386ba6cae214e425358ddb81687a01938ed3" }, "downloads": -1, "filename": "12factor_configclasses-0.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "f0d4b485176a643f19fc986b020dc7df", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.8,<4.0", "size": 7525, "upload_time": "2021-06-19T23:04:37", "upload_time_iso_8601": "2021-06-19T23:04:37.317978Z", "url": "https://files.pythonhosted.org/packages/54/70/a8dcd367f6500bd56e8ad3d9728cf33fc7e680f2ddd621ddbbd64bfd7894/12factor_configclasses-0.4.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "d642414ef2b3fb9a09d1cc20988b39c6", "sha256": "1267baa72365156fcc49a769e7af42315f19102d4acd943b05e1f019ae674e4d" }, "downloads": -1, "filename": "12factor-configclasses-0.4.1.tar.gz", "has_sig": false, "md5_digest": "d642414ef2b3fb9a09d1cc20988b39c6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.8,<4.0", "size": 6776, "upload_time": "2021-06-19T23:04:34", "upload_time_iso_8601": "2021-06-19T23:04:34.992915Z", "url": "https://files.pythonhosted.org/packages/f0/c0/34c7309fdbc9e46e4d77132eb106ada1e70cf85891d02be2d47cb93b3e31/12factor-configclasses-0.4.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "882905d39d629f45e61a5130d3e2250b", "sha256": "c4468c3f7820581464c6cdb60d1f5e4cc1d14cc64d6f0da62336868e4d6c9d2a" }, "downloads": -1, "filename": "12factor_configclasses-0.4.2-py3-none-any.whl", "has_sig": false, "md5_digest": "882905d39d629f45e61a5130d3e2250b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.8,<4.0", "size": 7540, "upload_time": "2021-06-28T21:02:25", "upload_time_iso_8601": "2021-06-28T21:02:25.810883Z", "url": "https://files.pythonhosted.org/packages/3f/dd/e75542b2d7bd416877ba62f6faa5d325cf17cf5ab69bab8d77f21988efff/12factor_configclasses-0.4.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a35eafb0c8177eae72bd3febba4e9b96", "sha256": "ce901b7170a90900b8ec995805311c93ce49d1100126bf2b611d66f8a8bd5b99" }, "downloads": -1, "filename": "12factor-configclasses-0.4.2.tar.gz", "has_sig": false, "md5_digest": "a35eafb0c8177eae72bd3febba4e9b96", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.8,<4.0", "size": 6777, "upload_time": "2021-06-28T21:02:19", "upload_time_iso_8601": "2021-06-28T21:02:19.951629Z", "url": "https://files.pythonhosted.org/packages/d5/ee/6559c8c3afedeb46e8aa91023d34d14a175e1ce70a165e67695e5ed0f1fe/12factor-configclasses-0.4.2.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "ac7d8df2d829f3f32c971d22f33f411f", "sha256": "435cf66d2c7f60f9425a2a9d466300f462cf4902b9b8f10e6689ac48c1033531" }, "downloads": -1, "filename": "12factor_configclasses-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ac7d8df2d829f3f32c971d22f33f411f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.10,<4.0", "size": 7587, "upload_time": "2021-10-30T18:22:18", "upload_time_iso_8601": "2021-10-30T18:22:18.111796Z", "url": "https://files.pythonhosted.org/packages/cb/f0/ec7449e4a56596339f62b953968f6400b5883ac4c4da35b1cae8a2be9aa8/12factor_configclasses-1.0.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "fa70d51c12ad98f799067e3fd5ee5fad", "sha256": "d5531c17b6c7445d94e48024bd5d37264a376e39dd4088950a9664d020afb197" }, "downloads": -1, "filename": "12factor-configclasses-1.0.0.tar.gz", "has_sig": false, "md5_digest": "fa70d51c12ad98f799067e3fd5ee5fad", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.10,<4.0", "size": 7334, "upload_time": "2021-10-30T18:22:16", "upload_time_iso_8601": "2021-10-30T18:22:16.715413Z", "url": "https://files.pythonhosted.org/packages/25/86/c0e3b447f9b2f210ce7000479175e577aa51ec1507617ec2333323a8726c/12factor-configclasses-1.0.0.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ac7d8df2d829f3f32c971d22f33f411f", "sha256": "435cf66d2c7f60f9425a2a9d466300f462cf4902b9b8f10e6689ac48c1033531" }, "downloads": -1, "filename": "12factor_configclasses-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ac7d8df2d829f3f32c971d22f33f411f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.10,<4.0", "size": 7587, "upload_time": "2021-10-30T18:22:18", "upload_time_iso_8601": "2021-10-30T18:22:18.111796Z", "url": "https://files.pythonhosted.org/packages/cb/f0/ec7449e4a56596339f62b953968f6400b5883ac4c4da35b1cae8a2be9aa8/12factor_configclasses-1.0.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "fa70d51c12ad98f799067e3fd5ee5fad", "sha256": "d5531c17b6c7445d94e48024bd5d37264a376e39dd4088950a9664d020afb197" }, "downloads": -1, "filename": "12factor-configclasses-1.0.0.tar.gz", "has_sig": false, "md5_digest": "fa70d51c12ad98f799067e3fd5ee5fad", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.10,<4.0", "size": 7334, "upload_time": "2021-10-30T18:22:16", "upload_time_iso_8601": "2021-10-30T18:22:16.715413Z", "url": "https://files.pythonhosted.org/packages/25/86/c0e3b447f9b2f210ce7000479175e577aa51ec1507617ec2333323a8726c/12factor-configclasses-1.0.0.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }