{ "info": { "author": "Ratson", "author_email": "contact@ratson.name", "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": "==========\nDj-environ\n==========\n\nDj-environ allows you to utilize 12factor inspired environment variables to configure your Django application.\n\n|pypi| |downloads| |license|\n\n\nThis is your `settings.py` file before you have installed **dj-environ**\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 dj-environ\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 https://github.com/ratson/dj-environ.git\n $ cd dj-environ/\n $ python setup.py test\n\n\nCredits\n=======\n\nThis is a fork of `django-environ `_,\nwhich has the following differences,\n\n* Support PostgreSQL URL using unix domain socket paths, e.g. postgres:////var/run/postgresql/db\n\n\n.. |pypi| image:: https://img.shields.io/pypi/v/dj-environ.svg?style=flat-square&label=version\n :target: https://pypi.python.org/pypi/dj-environ\n :alt: Latest version released on PyPi\n\n.. |downloads| image:: https://img.shields.io/pypi/dm/dj-environ.svg?style=flat-square\n :target: https://pypi.python.org/pypi/dj-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/ratson/dj-environ/master/LICENSE.txt\n :alt: Package license", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ratson/dj-environ", "keywords": "django environment variables 12factor", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "dj-environ", "package_url": "https://pypi.org/project/dj-environ/", "platform": "any", "project_url": "https://pypi.org/project/dj-environ/", "project_urls": { "Homepage": "https://github.com/ratson/dj-environ" }, "release_url": "https://pypi.org/project/dj-environ/0.0.1/", "requires_dist": [ "django", "six" ], "requires_python": "", "summary": "Dj-environ allows you to utilize 12factor inspired environment variables to configure your Django application.", "version": "0.0.1" }, "last_serial": 2741080, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "7f5387bb8ace912c698221a6f96c3402", "sha256": "8dd332a3fa23707c678d4f5bc5c2fef139d50048c687f8af62006cd74ee19039" }, "downloads": -1, "filename": "dj_environ-0.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7f5387bb8ace912c698221a6f96c3402", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20633, "upload_time": "2017-03-30T12:01:23", "url": "https://files.pythonhosted.org/packages/0b/79/2e0624f45fce568d8c2709314b75a79d09149fd627c327ec4621dd3c9abb/dj_environ-0.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "74a48dbce5ef66bd447de0bb2d5ef327", "sha256": "8eb67bd86bb9743d1923b6dbad385af0a38b968c65398401ccba53428125e9d5" }, "downloads": -1, "filename": "dj-environ-0.0.1.tar.gz", "has_sig": false, "md5_digest": "74a48dbce5ef66bd447de0bb2d5ef327", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20195, "upload_time": "2017-03-30T12:01:25", "url": "https://files.pythonhosted.org/packages/1e/45/5998fa8c82713dfa1d324c5168b16378ef8b7541a66566e51d2d880d758c/dj-environ-0.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7f5387bb8ace912c698221a6f96c3402", "sha256": "8dd332a3fa23707c678d4f5bc5c2fef139d50048c687f8af62006cd74ee19039" }, "downloads": -1, "filename": "dj_environ-0.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7f5387bb8ace912c698221a6f96c3402", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20633, "upload_time": "2017-03-30T12:01:23", "url": "https://files.pythonhosted.org/packages/0b/79/2e0624f45fce568d8c2709314b75a79d09149fd627c327ec4621dd3c9abb/dj_environ-0.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "74a48dbce5ef66bd447de0bb2d5ef327", "sha256": "8eb67bd86bb9743d1923b6dbad385af0a38b968c65398401ccba53428125e9d5" }, "downloads": -1, "filename": "dj-environ-0.0.1.tar.gz", "has_sig": false, "md5_digest": "74a48dbce5ef66bd447de0bb2d5ef327", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20195, "upload_time": "2017-03-30T12:01:25", "url": "https://files.pythonhosted.org/packages/1e/45/5998fa8c82713dfa1d324c5168b16378ef8b7541a66566e51d2d880d758c/dj-environ-0.0.1.tar.gz" } ] }