Metadata-Version: 2.1 Name: django-environ Version: 0.9.0 Summary: A package that allows you to utilize 12factor inspired environment variables to configure your Django application. Home-page: https://django-environ.readthedocs.org Author: Daniele Faraglia Author-email: daniele.faraglia@gmail.com Maintainer: Serghei Iakovlev Maintainer-email: egrep@protonmail.ch License: MIT Project-URL: Documentation, https://django-environ.readthedocs.org Project-URL: Funding, https://opencollective.com/django-environ Project-URL: Say Thanks!, https://saythanks.io/to/joke2k Project-URL: Changelog, https://django-environ.readthedocs.org/en/latest/changelog.html Project-URL: Bug Tracker, https://github.com/joke2k/django-environ/issues Project-URL: Source Code, https://github.com/joke2k/django-environ Keywords: environment,django,variables,12factor Platform: any Classifier: Development Status :: 5 - Production/Stable Classifier: Framework :: Django Classifier: Framework :: Django :: 1.11 Classifier: Framework :: Django :: 2.0 Classifier: Framework :: Django :: 2.1 Classifier: Framework :: Django :: 2.2 Classifier: Framework :: Django :: 3.0 Classifier: Framework :: Django :: 3.1 Classifier: Framework :: Django :: 3.2 Classifier: Framework :: Django :: 4.0 Classifier: Operating System :: OS Independent Classifier: Intended Audience :: Developers Classifier: Natural Language :: English Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.4 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Topic :: Utilities Classifier: License :: OSI Approved :: MIT License Requires-Python: >=3.4,<4 Description-Content-Type: text/x-rst License-File: LICENSE.txt License-File: AUTHORS.rst Provides-Extra: develop Requires-Dist: coverage[toml] (>=5.0a4) ; extra == 'develop' Requires-Dist: pytest (>=4.6.11) ; extra == 'develop' Requires-Dist: furo (==2021.8.*,>=2021.8.17b43) ; extra == 'develop' Requires-Dist: sphinx (>=3.5.0) ; extra == 'develop' Requires-Dist: sphinx-notfound-page ; extra == 'develop' Provides-Extra: docs Requires-Dist: furo (==2021.8.*,>=2021.8.17b43) ; extra == 'docs' Requires-Dist: sphinx (>=3.5.0) ; extra == 'docs' Requires-Dist: sphinx-notfound-page ; extra == 'docs' Provides-Extra: testing Requires-Dist: coverage[toml] (>=5.0a4) ; extra == 'testing' Requires-Dist: pytest (>=4.6.11) ; extra == 'testing' ============== django-environ ============== ``django-environ`` is the Python package that allows you to use `Twelve-factor methodology `_ to configure your Django application with environment variables. .. -teaser-end- For that, it gives you an easy way to configure Django application using environment variables obtained from an environment file and provided by the OS: .. -code-begin- .. code-block:: python import environ import os env = environ.Env( # set casting, default value DEBUG=(bool, False) ) # Set the project base directory BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # Take environment variables from .env file environ.Env.read_env(os.path.join(BASE_DIR, '.env')) # False if not in os.environ because of casting above DEBUG = env('DEBUG') # Raises Django's ImproperlyConfigured # exception if SECRET_KEY not in os.environ SECRET_KEY = env('SECRET_KEY') # Parse database connection url strings # like psql://user:pass@127.0.0.1:8458/db DATABASES = { # read os.environ['DATABASE_URL'] and raises # ImproperlyConfigured exception if not found # # The db() method is an alias for db_url(). 'default': env.db(), # read os.environ['SQLITE_URL'] 'extra': env.db_url( 'SQLITE_URL', default='sqlite:////tmp/my-tmp-sqlite.db' ) } CACHES = { # Read os.environ['CACHE_URL'] and raises # ImproperlyConfigured exception if not found. # # The cache() method is an alias for cache_url(). 'default': env.cache(), # read os.environ['REDIS_URL'] 'redis': env.cache_url('REDIS_URL') } .. -overview- The idea of this package is to unify a lot of packages that make the same stuff: Take a string from ``os.environ``, parse and cast it to some of useful python typed variables. To do that and to use the `12factor `_ approach, some connection strings are expressed as url, so this package can parse it and return a ``urllib.parse.ParseResult``. These strings from ``os.environ`` are loaded from a ``.env`` file and filled in ``os.environ`` with ``setdefault`` method, to avoid to overwrite the real environ. A similar approach is used in `Two Scoops of Django `_ book and explained in `12factor-django `_ article. Using ``django-environ`` you can stop to make a lot of unversioned ``settings_*.py`` to configure your app. See `cookiecutter-django `_ for a concrete example on using with a django project. **Feature Support** - Fast and easy multi environment for deploy - Fill ``os.environ`` with .env file variables - Variables casting - Url variables exploded to django specific package settings - Optional support for Docker-style file based config variables (use ``environ.FileAwareEnv`` instead of ``environ.Env``) .. -project-information- Project Information =================== ``django-environ`` is released under the `MIT / X11 License `__, its documentation lives at `Read the Docs `_, the code on `GitHub `_, and the latest release on `PyPI `_. It’s rigorously tested on Python 3.5+, and officially supports Django 1.11, 2.2, 3.0, 3.1, 3.2 and 4.0. If you'd like to contribute to ``django-environ`` you're most welcome! .. -support- Support ======= Should you have any question, any remark, or if you find a bug, or if there is something you can't do with the ``django-environ``, please `open an issue `_. Contributing ============ If you would like to contribute to ``django-environ``, please take a look at the `current issues `_. If there is a bug or feature that you want but it isn't listed, make an issue and work on it. How to Contribute ----------------- 1. Check for open issues or open a fresh issue to start a discussion around a feature idea or a bug. 2. Fork `the repository `_ on GitHub to start making your changes to the **develop** branch (or branch off of it). 3. Write a test which shows that the bug was fixed or that the feature works as expected. 4. Send a pull request and bug the maintainer until it gets merged and published. Release Information =================== v0.9.0 - 15-June-2022 ------------------------------ Added +++++ - Added support for Postgresql cluster URI `#355 `_. - Added support for Django 4.0 `#371 `_. - Added support for prefixed variables `#362 `_. - Amended documentation. Deprecated ++++++++++ - ``Env.unicode()`` is deprecated and will be removed in the next major release. Use ``Env.str()`` instead. Changed +++++++ - Attach cause to ``ImproperlyConfigured`` exception `#360 `_. Fixed +++++ - Fixed ``_cast_urlstr`` unquoting `#357 `_. - Fixed documentation regarding unsafe characters in URLs `#220 `_. - Fixed ``environ.Path.__eq__()`` to compare paths correctly `#86 `_, `#197 `_. `Full changelog `_. Security Policy =============== Reporting a Vulnerability ------------------------- If you discover a security vulnerability within ``django-environ``, please send an e-mail to Serghei Iakovlev via egrep@protonmail.ch. All security vulnerabilities will be promptly addressed. Credits ======= ``django-environ`` was initially created by `Daniele Faraglia `_ and currently maintained by `Serghei Iakovlev `_. A full list of contributors can be found in `GitHub `__. Acknowledgments =============== The existence of ``django-environ`` would have been impossible without these projects: - `rconradharris/envparse `_ - `jazzband/dj-database-url `_ - `migonzalvar/dj-email-url `_ - `ghickman/django-cache-url `_ - `dstufft/dj-search-url `_ - `julianwachholz/dj-config-url `_ - `nickstenning/honcho `_ - `rconradharris/envparse `_