{ "info": { "author": "joke2k", "author_email": "joke2k@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Framework :: Django", "Intended Audience :: Information Technology", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Utilities" ], "description": "Django-environ-plus\n===================\n\nDjango-environ-plus allows you to utilize 12factor inspired environment variables to configure your Django application.\n\n|pypi| |unix_build| |windows_build| |coverage| |downloads| |license|\n\n\nThis module is a merge of:\n\n* `envparse`_\n* `honcho`_\n* `dj-database-url`_\n* `dj-search-url`_\n* `dj-config-url`_\n* `django-cache-url`_\n\nand inspired by:\n\n* `12factor`_\n* `12factor-django`_\n* `Two Scoops of Django`_\n\nThis is your `settings.py` file before you have installed **django-environ-plus**\n\n.. code-block:: python\n\n import os\n SITE_ROOT = os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))\n\n DEBUG = True\n TEMPLATE_DEBUG = DEBUG\n\n DATABASES = {\n 'default': {\n 'ENGINE': 'django.db.backends.postgresql_psycopg2',\n 'NAME': 'database',\n 'USER': 'user',\n 'PASSWORD': 'githubbedpassword',\n 'HOST': '127.0.0.1',\n 'PORT': '8458',\n }\n 'extra': {\n 'ENGINE': 'django.db.backends.sqlite3',\n 'NAME': os.path.join(SITE_ROOT, 'database.sqlite')\n }\n }\n\n MEDIA_ROOT = os.path.join(SITE_ROOT, 'assets')\n MEDIA_URL = 'media/'\n STATIC_ROOT = os.path.join(SITE_ROOT, 'static')\n STATIC_URL = 'static/'\n\n SECRET_KEY = '...im incredibly still here...'\n\n CACHES = {\n 'default': {\n 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',\n 'LOCATION': [\n '127.0.0.1:11211', '127.0.0.1:11212', '127.0.0.1:11213',\n ]\n },\n 'redis': {\n 'BACKEND': 'django_redis.cache.RedisCache',\n 'LOCATION': '127.0.0.1:6379:1',\n 'OPTIONS': {\n 'CLIENT_CLASS': 'django_redis.client.DefaultClient',\n 'PASSWORD': 'redis-githubbed-password',\n }\n }\n }\n\nAfter:\n\n.. code-block:: python\n\n import environ\n root = environ.Path(__file__) - 3 # three folder back (/a/b/c/ - 3 = /)\n env = environ.Env(DEBUG=(bool, False),) # set default values and casting\n environ.Env.read_env() # reading .env file\n\n SITE_ROOT = root()\n\n DEBUG = env('DEBUG') # False if not in os.environ\n TEMPLATE_DEBUG = DEBUG\n\n DATABASES = {\n 'default': env.db(), # Raises ImproperlyConfigured exception if DATABASE_URL not in os.environ\n 'extra': env.db('SQLITE_URL', default='sqlite:////tmp/my-tmp-sqlite.db')\n }\n\n public_root = root.path('public/')\n\n MEDIA_ROOT = public_root('media')\n MEDIA_URL = 'media/'\n STATIC_ROOT = public_root('static')\n STATIC_URL = 'static/'\n\n SECRET_KEY = env('SECRET_KEY') # Raises ImproperlyConfigured exception if SECRET_KEY not in os.environ\n\n CACHES = {\n 'default': env.cache(),\n 'redis': env.cache('REDIS_URL')\n }\n\nYou can also pass ``read_env()`` an explicit path to the ``.env`` file.\n\nCreate a ``.env`` file:\n\n.. code-block:: bash\n\n DEBUG=on\n # DJANGO_SETTINGS_MODULE=myapp.settings.dev\n SECRET_KEY=your-secret-key\n DATABASE_URL=psql://urser:un-githubbedpassword@127.0.0.1:8458/database\n # SQLITE_URL=sqlite:///my-local-sqlite.db\n CACHE_URL=memcache://127.0.0.1:11211,127.0.0.1:11212,127.0.0.1:11213\n REDIS_URL=rediscache://127.0.0.1:6379:1?client_class=django_redis.client.DefaultClient&password=redis-un-githubbed-password\n\n\nHow to install\n==============\n\n::\n\n $ pip install django-environ-plus\n\n\nHow to use\n==========\n\nThere are only two classes, ``environ.Env`` and ``environ.Path``\n\n.. code-block:: python\n\n >>> import environ\n >>> env = environ.Env(\n DEBUG=(bool, False),\n )\n >>> env('DEBUG')\n False\n >>> env('DEBUG', default=True)\n True\n\n >>> open('.myenv', 'a').write('DEBUG=on')\n >>> environ.Env.read_env('.myenv') # or env.read_env('.myenv')\n >>> env('DEBUG')\n True\n\n >>> open('.myenv', 'a').write('\\nINT_VAR=1010')\n >>> env.int('INT_VAR'), env.str('INT_VAR')\n 1010, '1010'\n\n >>> open('.myenv', 'a').write('\\nDATABASE_URL=sqlite:///my-local-sqlite.db')\n >>> env.read_env('.myenv')\n >>> env.db()\n {'ENGINE': 'django.db.backends.sqlite3', 'NAME': 'my-local-sqlite.db', 'HOST': '', 'USER': '', 'PASSWORD': '', 'PORT': ''}\n\n >>> root = env.path('/home/myproject/')\n >>> root('static')\n '/home/myproject/static'\n\n\nSupported Types\n===============\n\n- str\n- bool\n- int\n- float\n- json\n- list (FOO=a,b,c)\n- tuple (FOO=(a,b,c))\n- dict (BAR=key=val,foo=bar) #environ.Env(BAR=(dict, {}))\n- dict (BAR=key=val;foo=1.1;baz=True) #environ.Env(BAR=(dict(value=unicode, cast=dict(foo=float,baz=bool)), {}))\n- url\n- path (environ.Path)\n- db_url\n - PostgreSQL: postgres://, pgsql://, psql:// or postgresql://\n - PostGIS: postgis://\n - MySQL: mysql:// or mysql2://\n - MySQL for GeoDjango: mysqlgis://\n - SQLITE: sqlite://\n - SQLITE with SPATIALITE for GeoDjango: spatialite://\n - Oracle: oracle://\n - LDAP: ldap://\n- cache_url\n - Database: dbcache://\n - Dummy: dummycache://\n - File: filecache://\n - Memory: locmemcache://\n - Memcached: memcache://\n - Python memory: pymemcache://\n - Redis: rediscache://\n- search_url\n - ElasticSearch: elasticsearch://\n - Solr: solr://\n - Whoosh: whoosh://\n - Xapian: xapian://\n - Simple cache: simple://\n- email_url\n - SMTP: smtp://\n - SMTP+SSL: smtp+ssl://\n - SMTP+TLS: smtp+tls://\n - Console mail: consolemail://\n - File mail: filemail://\n - LocMem mail: memorymail://\n - Dummy mail: dummymail://\n\nTips\n====\n\nUsing unsafe characters in URLs\n-------------------------------\n\nIn order to use unsafe characters you have to encode with ``urllib.parse.encode`` before you set into ``.env`` file.\n\n.. code-block::\n\n DATABASE_URL=mysql://user:%23password@127.0.0.1:3306/dbname\n\n\nSee https://perishablepress.com/stop-using-unsafe-characters-in-urls/ for reference.\n\nEmail settings\n--------------\n\nIn order to set email configuration for django you can use this code:\n\n.. code-block:: python\n\n EMAIL_CONFIG = env.email_url(\n 'EMAIL_URL', default='smtp://user@:password@localhost:25')\n\n vars().update(EMAIL_CONFIG)\n\n\nTests\n=====\n\n::\n\n $ git clone git@github.com:joke2k/django-environ.git\n $ cd django-environ/\n $ python setup.py test\n\n\nLicense\n=======\n\nDjango-environ-plus is licensed under the MIT License - see the `LICENSE`_ file for details\n\nChangelog\n=========\n\n`0.0.3` - 12-September-2019`\n------------------------------\n - Updated environ\n\n\n`0.0.2` - 18-February-2019`\n------------------------------\n - Support for cache django 2.1\n\n\n`0.0.1` - 18-February-2019`\n------------------------------\n - Fixes of fedt and prepare the pypi package\n - Moved to gitlab\n\n\n`0.4.1 - 13-November-2016 `__\n-------------------------------------------------------------------------------------------\n - Fix for unsafe characters into URLs\n - Clarifying warning on missing or unreadable file. Thanks to @nickcatal\n - Add support for Django 1.10.\n - Fix support for Oracle urls\n - Fix support for django-redis\n\n\n`0.4.0 - 23-September-2015 `__\n-------------------------------------------------------------------------------------------\n - Fix non-ascii values (broken in Python 2.x)\n - New email schemes - smtp+ssl and smtp+tls (smtps would be deprecated)\n - redis_cache replaced by django_redis\n - Add tuple support. Thanks to @anonymouzz\n - Add LDAP url support for database (django-ldapdb)\n - Fix psql/pgsql url\n\n`0.3 - 03-June-2014 `__\n--------------------------------------------------------------------------------------\n - Add cache url support\n - Add email url support\n - Add search url support\n - Rewriting README.rst\n\n0.2.1 19-April-2013\n-------------------\n - environ/environ.py: Env.__call__ now uses Env.get_value instance method\n\n0.2 16-April-2013\n-----------------\n - environ/environ.py, environ/test.py, environ/test_env.txt: add advanced\n float parsing (comma and dot symbols to separate thousands and decimals)\n - README.rst, docs/index.rst: fix TYPO in documentation\n\n0.1 02-April-2013\n-----------------\n - initial release\n\nCredits\n=======\n\n- `12factor`_\n- `12factor-django`_\n- `Two Scoops of Django`_\n- `rconradharris`_ / `envparse`_\n- `kennethreitz`_ / `dj-database-url`_\n- `migonzalvar`_ / `dj-email-url`_\n- `ghickman`_ / `django-cache-url`_\n- `dstufft`_ / `dj-search-url`_\n- `julianwachholz`_ / `dj-config-url`_\n- `nickstenning`_ / `honcho`_\n- `envparse`_\n- `Distribute`_\n- `modern-package-template`_\n\n.. _rconradharris: https://github.com/rconradharris\n.. _envparse: https://github.com/rconradharris/envparse\n\n.. _kennethreitz: https://github.com/kennethreitz\n.. _dj-database-url: https://github.com/kennethreitz/dj-database-url\n\n.. _migonzalvar: https://github.com/migonzalvar\n.. _dj-email-url: https://github.com/migonzalvar/dj-email-url\n\n.. _ghickman: https://github.com/ghickman\n.. _django-cache-url: https://github.com/ghickman/django-cache-url\n\n.. _julianwachholz: https://github.com/julianwachholz\n.. _dj-config-url: https://github.com/julianwachholz/dj-config-url\n\n.. _dstufft: https://github.com/dstufft\n.. _dj-search-url: https://github.com/dstufft/dj-search-url\n\n.. _nickstenning: https://github.com/nickstenning\n.. _honcho: https://github.com/nickstenning/honcho\n\n.. _12factor: http://www.12factor.net/\n.. _12factor-django: http://www.wellfireinteractive.com/blog/easier-12-factor-django/\n.. _`Two Scoops of Django`: http://twoscoopspress.org/\n\n.. _Distribute: http://pypi.python.org/pypi/distribute\n.. _`modern-package-template`: http://pypi.python.org/pypi/modern-package-template\n\n.. |pypi| image:: https://img.shields.io/pypi/v/django-environ.svg?style=flat-square&label=version\n :target: https://pypi.python.org/pypi/django-environ\n :alt: Latest version released on PyPi\n\n.. |coverage| image:: https://img.shields.io/coveralls/joke2k/django-environ/master.svg?style=flat-square\n :target: https://coveralls.io/r/joke2k/django-environ?branch=master\n :alt: Test coverage\n\n.. |unix_build| image:: https://img.shields.io/travis/joke2k/django-environ/master.svg?style=flat-square&label=unix%20build\n :target: http://travis-ci.org/joke2k/django-environ\n :alt: Build status of the master branch on Mac/Linux\n\n.. |windows_build| image:: https://img.shields.io/appveyor/ci/joke2k/django-environ.svg?style=flat-square&label=windows%20build\n :target: https://ci.appveyor.com/project/joke2k/django-environ\n :alt: Build status of the master branch on Windows\n\n.. |downloads| image:: https://img.shields.io/pypi/dm/django-environ.svg?style=flat-square\n :target: https://pypi.python.org/pypi/django-environ\n :alt: Monthly downloads\n\n.. |license| image:: https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square\n :target: https://raw.githubusercontent.com/joke2k/django-environ/master/LICENSE.txt\n :alt: Package license\n\n.. _LICENSE: https://github.com/joke2k/django-environ/blob/master/LICENSE.txt\n\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/joke2k/django-environ", "keywords": "django environment variables 12factor", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "django-environ-plus", "package_url": "https://pypi.org/project/django-environ-plus/", "platform": "any", "project_url": "https://pypi.org/project/django-environ-plus/", "project_urls": { "Homepage": "https://github.com/joke2k/django-environ" }, "release_url": "https://pypi.org/project/django-environ-plus/0.0.3/", "requires_dist": [ "django", "six" ], "requires_python": "", "summary": "Django-environ-plus allows you to utilize 12factor inspired environment variables to configure your Django application.", "version": "0.0.3" }, "last_serial": 5819170, "releases": { "0.0.2": [ { "comment_text": "", "digests": { "md5": "66d146bc5fe3828011faa02bafb9c5e4", "sha256": "35e404c4e30b4f4c3075b0bdfac2b939a289d9c72c0b14e45af5be78dbe5ea6c" }, "downloads": -1, "filename": "django-environ-plus-0.0.2.tar.gz", "has_sig": false, "md5_digest": "66d146bc5fe3828011faa02bafb9c5e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20944, "upload_time": "2019-02-18T17:02:18", "url": "https://files.pythonhosted.org/packages/6b/5f/a9707e828141eeb568e919e855eacfef141820177a6596459e91729d78b6/django-environ-plus-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "93d739f64de87d7bbc5ffc638a17b141", "sha256": "0ec2452d6299e28892277503a555801523e43e833356f7a42ac77f40de9bc0d1" }, "downloads": -1, "filename": "django_environ_plus-0.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "93d739f64de87d7bbc5ffc638a17b141", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19265, "upload_time": "2019-09-12T09:19:48", "url": "https://files.pythonhosted.org/packages/0f/f7/2741327c0622d71e42a130c544e1a02551f1a7a32a55c77b425590fb4dd0/django_environ_plus-0.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "11b3f4d1590ea3b681e544c724578bf7", "sha256": "0248e8df030c46c0a96e34645fdf4412d5ba1c5c3a5ca921cc0b2beea59b5ce7" }, "downloads": -1, "filename": "django-environ-plus-0.0.3.tar.gz", "has_sig": false, "md5_digest": "11b3f4d1590ea3b681e544c724578bf7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18920, "upload_time": "2019-09-12T09:19:50", "url": "https://files.pythonhosted.org/packages/26/25/22fc94e9e8bba3a2e0b53a1fc77e20caf03dc2461fb5e9dde297522e932c/django-environ-plus-0.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "93d739f64de87d7bbc5ffc638a17b141", "sha256": "0ec2452d6299e28892277503a555801523e43e833356f7a42ac77f40de9bc0d1" }, "downloads": -1, "filename": "django_environ_plus-0.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "93d739f64de87d7bbc5ffc638a17b141", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19265, "upload_time": "2019-09-12T09:19:48", "url": "https://files.pythonhosted.org/packages/0f/f7/2741327c0622d71e42a130c544e1a02551f1a7a32a55c77b425590fb4dd0/django_environ_plus-0.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "11b3f4d1590ea3b681e544c724578bf7", "sha256": "0248e8df030c46c0a96e34645fdf4412d5ba1c5c3a5ca921cc0b2beea59b5ce7" }, "downloads": -1, "filename": "django-environ-plus-0.0.3.tar.gz", "has_sig": false, "md5_digest": "11b3f4d1590ea3b681e544c724578bf7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18920, "upload_time": "2019-09-12T09:19:50", "url": "https://files.pythonhosted.org/packages/26/25/22fc94e9e8bba3a2e0b53a1fc77e20caf03dc2461fb5e9dde297522e932c/django-environ-plus-0.0.3.tar.gz" } ] }