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 `_