{ "info": { "author": "gmflanagan", "author_email": "gmflanagan@outlook.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", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Utilities" ], "description": "musette\n=======\n\n``musette`` enables application configuration by providing a proxy to\n``os.environ`` which allows:\n\n+ type-casting of environment values\n+ updating the environment via plaintext key-value properties files\n+ shell-style interpolation\n\n``musette`` is a direct fork of `django-environ`_ with significant changes.\nAlthough it is intended for Django settings configuration it does not actually\nrequire Django itself.\n\nThe original module (`django-environ`_) was 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\n.. _django-environ: https://pypi.python.org/pypi/django-environ\n.. _envparse: https://github.com/rconradharris/envparse\n.. _honcho: https://github.com/nickstenning/honcho\n.. _dj-database-url: https://github.com/kennethreitz/dj-database-url\n.. _dj-search-url: https://github.com/dstufft/dj-search-url\n.. _dj-config-url: https://github.com/julianwachholz/dj-config-url\n.. _django-cache-url: https://github.com/ghickman/django-cache-url\n\nBasic usage\n-----------\n\n::\n\n from musette import environ\n\n environ.read('env.properties')\n\n DEBUG = environ.bool(\"DEBUG\")\n\n\nDjango Settings\n---------------\n\nThis is your `settings.py` file before you have installed **musette**::\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': 'database.sqlite'\n }\n }\n\n SECRET_KEY = 'notsecret'\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': 'redis_cache.cache.RedisCache',\n 'LOCATION': '127.0.0.1:6379:1',\n 'OPTIONS': {\n 'CLIENT_CLASS': 'redis_cache.client.DefaultClient',\n 'PASSWORD': 'redis-githubbed-password',\n }\n }\n }\n\nAfter::\n\n from musette import Environment\n\n env = Environment(DEBUG=(bool, False),)\n env.read('env.properties')\n\n DEBUG = env('DEBUG') # False if not in os.environ\n TEMPLATE_DEBUG = DEBUG\n\n DATABASES = {\n 'default': env.db(),\n 'extra': env.db('SQLITE_URL', default='sqlite:////tmp/my-tmp-sqlite.db')\n }\n\n SECRET_KEY = env('SECRET_KEY')\n\n CACHES = {\n 'default': env.cache(),\n 'redis': env.cache('REDIS_URL')\n }\n\nProperties Files\n----------------\n\nA properties or \"env\" file is plain text file containing one or more\n**key := value** or **key = value** lines, where values may optionally\nrefer to other environment values via shell-style variables::\n\n that := something\n this := ${that}\n\n\nHow to install\n--------------\n\n::\n\n $ pip install musette\n\n\nHow to use\n----------\n\nThere is an ``Environment`` class and a convenient instance of that class\ncalled ``environ``::\n\n >>> from musette import Environment\n >>> env = Environment(\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')\n >>> env.read('.myenv')\n >>> env('DEBUG')\n True\n\n >>> open('.myenv', 'a').write('INT_VAR=1010\\n')\n >>> env.read('.myenv')\n >>> env.int('INT_VAR'), env.str('INT_VAR')\n 1010, '1010'\n\n >>> open('.myenv', 'a').write('DATABASE_URL=sqlite:///my-local-sqlite.db\\n')\n >>> env.read('.myenv')\n >>> env.db()\n {'ENGINE': 'django.db.backends.sqlite3', 'NAME': 'my-local-sqlite.db', 'HOST': '', 'USER': '', 'PASSWORD': '', 'PORT': ''}\n\n``Environment`` by default provides an effective proxy to the ``os.environ``\ndata dictionary, but you can pass in any other dict instead::\n\n >>> from musette import Environment\n >>> _environ = {}\n >>> env = Environment(_environ, DEBUG=True)\n >>> _environ['DEBUG']\n True\n\nIf you are neither passing in a configuration dict or any schema values then\nyou can just use the ``environ`` instance::\n\n >>> import os\n >>> from musette import environ\n >>> set(os.environ.keys()) == set(environ.keys())\n True\n\nSupported Types\n---------------\n\n+ str\n+ bool\n+ int\n+ float\n+ json\n+ list (FOO=a,b,c)\n+ dict (BAR=key=val;foo=bar)\n+ url\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 - 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 - Simple cache: ``simple://``\n+ email_url\n - SMTP: ``smtp://``\n - SMTPS: ``smtps://``\n - Console mail: ``consolemail://``\n - File mail: ``filemail://``\n - LocMem mail: ``memorymail://``\n - Dummy mail: ``dummymail://``\n\nTests\n-----\n\n::\n\n $ git clone git@github.com:averagehuman/musette.git\n $ cd musette\n $ python setup.py test", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/averagehuman/musette", "keywords": "django environment variables 12factor os.environ", "license": "MIT License", "maintainer": null, "maintainer_email": null, "name": "musette", "package_url": "https://pypi.org/project/musette/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/musette/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/averagehuman/musette" }, "release_url": "https://pypi.org/project/musette/0.5.10/", "requires_dist": null, "requires_python": null, "summary": "os.environ proxy based on django-environ", "version": "0.5.10" }, "last_serial": 1316942, "releases": { "0.0.0": [], "0.4.0": [ { "comment_text": "", "digests": { "md5": "21dc222b42cd5b67842dc06ca739942e", "sha256": "2c90cd76a8cc3fb07d84feb1057dbc87d751efdd57999d627192ccf7c3739a04" }, "downloads": -1, "filename": "musette-0.4.0.tar.gz", "has_sig": false, "md5_digest": "21dc222b42cd5b67842dc06ca739942e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17503, "upload_time": "2014-10-18T09:05:08", "url": "https://files.pythonhosted.org/packages/9d/2e/f90c28bc458adf10c56cb50551603f85e6d139368d4d5fd23d2663d01b57/musette-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "8fd30accad785d8726082139c459eb1c", "sha256": "bf3db666f00d95e3c0734a700426b89856019271e99163c319cff7fc8e5fb2a9" }, "downloads": -1, "filename": "musette-0.4.1.tar.gz", "has_sig": false, "md5_digest": "8fd30accad785d8726082139c459eb1c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17494, "upload_time": "2014-10-18T09:29:46", "url": "https://files.pythonhosted.org/packages/89/9f/685b96461b97dcc01a33a98afe7e19a351f81c219b312b32fcb2a0e35782/musette-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "699aca47e9e352af2c43e2345bdb3a91", "sha256": "06d5bdeb43201a4da7b680f709120f10b5754ed14d74cb630f571e0995ec80ad" }, "downloads": -1, "filename": "musette-0.4.2.tar.gz", "has_sig": false, "md5_digest": "699aca47e9e352af2c43e2345bdb3a91", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17575, "upload_time": "2014-10-18T09:42:16", "url": "https://files.pythonhosted.org/packages/4b/58/72791c6bb2a978da1830721f481180bfc3ba6688c1754a01e1269b5b28e7/musette-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "bc62af7a59d8f62ba74022f6e473bba1", "sha256": "b012dc52bd2b6825f4267ffbdbddde6dbb1b8a1fc27c1cee1e1fa343a438b431" }, "downloads": -1, "filename": "musette-0.4.3.tar.gz", "has_sig": false, "md5_digest": "bc62af7a59d8f62ba74022f6e473bba1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17590, "upload_time": "2014-10-18T10:40:48", "url": "https://files.pythonhosted.org/packages/ba/a2/64f1b270d2a6dd7572c3cd2628380ace75782aa9dcd780640aafbfc97497/musette-0.4.3.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "0a726be18050ebde91b42c44e88b3f4c", "sha256": "690c0b06c9e06da0561b4a2d39e6a12166d657712a4d525e80502e24473ce49c" }, "downloads": -1, "filename": "musette-0.5.0.tar.gz", "has_sig": false, "md5_digest": "0a726be18050ebde91b42c44e88b3f4c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17401, "upload_time": "2014-10-18T12:02:23", "url": "https://files.pythonhosted.org/packages/be/06/a6b664e6ce3fde1b5da2b02b2ef81e561594eaf361dbc8e2691cb7e4023e/musette-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "924ee335052f35ab75b4f0f19929bbcd", "sha256": "58f420b11b88cefd88a7b75c52e823db0e28f4953215f333d5ff22ee7c2af6e1" }, "downloads": -1, "filename": "musette-0.5.1.tar.gz", "has_sig": false, "md5_digest": "924ee335052f35ab75b4f0f19929bbcd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17770, "upload_time": "2014-10-19T11:35:58", "url": "https://files.pythonhosted.org/packages/0a/1d/4e2bba7490d3caa5e12d664763f098a097acd4d4adfa6efc5b203de03f1a/musette-0.5.1.tar.gz" } ], "0.5.10": [ { "comment_text": "", "digests": { "md5": "37c57f8805a7a123087d7441bdce4c47", "sha256": "daaa7c3ff773ab3427273ac1d03bc4ce2f8454caae59970a0653713c333b0a12" }, "downloads": -1, "filename": "musette-0.5.10.tar.gz", "has_sig": false, "md5_digest": "37c57f8805a7a123087d7441bdce4c47", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18264, "upload_time": "2014-11-22T09:21:08", "url": "https://files.pythonhosted.org/packages/57/9e/20e51469db65fa24170893e499c7d230ac7244f44fa3f0cc8df4eb148527/musette-0.5.10.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "0de7ece32a308a574aaf9d4f3109bdbf", "sha256": "c8f713f6731b60fe698c2ecb192f4cf594b368d71b64272b34867d13379ed212" }, "downloads": -1, "filename": "musette-0.5.2.tar.gz", "has_sig": false, "md5_digest": "0de7ece32a308a574aaf9d4f3109bdbf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17845, "upload_time": "2014-10-19T12:46:35", "url": "https://files.pythonhosted.org/packages/17/f6/7210ef6f15e504051353e8a759d96bd90e10c89de5aef858805e93a03876/musette-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "9302bd0c8dcf49018b1694a333211589", "sha256": "0b738d240b0318c46123ef290b1dc47a59dff861c75684175eb5e51224876fb2" }, "downloads": -1, "filename": "musette-0.5.3.tar.gz", "has_sig": false, "md5_digest": "9302bd0c8dcf49018b1694a333211589", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17883, "upload_time": "2014-10-19T14:19:22", "url": "https://files.pythonhosted.org/packages/7b/bc/5203cbb33b2a7b9550fbfa87f9e25051e040a30a731222db1e821113262b/musette-0.5.3.tar.gz" } ], "0.5.4": [ { "comment_text": "", "digests": { "md5": "5711f98925eb37f72095c391832b4056", "sha256": "4fe2190f5c917acd8dacc36eecd648da0ee7286d8f4bd14af60a8e7de3e6774b" }, "downloads": -1, "filename": "musette-0.5.4.tar.gz", "has_sig": false, "md5_digest": "5711f98925eb37f72095c391832b4056", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17905, "upload_time": "2014-10-19T17:58:21", "url": "https://files.pythonhosted.org/packages/80/59/d4c2de97ca0e4a0e9be2227ffba43c0dd03c4411db9fc62bd379e1ddd4d9/musette-0.5.4.tar.gz" } ], "0.5.5": [ { "comment_text": "", "digests": { "md5": "c5e6e22f03d90c15d0f922f54dba72ba", "sha256": "d606d110ed56c3b1d985565810d95ff5fd9613fdd52395fbe87f1c7e08faf21e" }, "downloads": -1, "filename": "musette-0.5.5.tar.gz", "has_sig": false, "md5_digest": "c5e6e22f03d90c15d0f922f54dba72ba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17905, "upload_time": "2014-10-19T18:12:01", "url": "https://files.pythonhosted.org/packages/49/04/1cd2f54b2127734fef53a5fe0f153eb15db7dcc8c72de9a14891555aa4b6/musette-0.5.5.tar.gz" } ], "0.5.6": [ { "comment_text": "", "digests": { "md5": "a4124e3d48084ccb05146e3908292a53", "sha256": "18defa195cd23f926bc04a79fdaa4eca4dbffb9ad7947546a8d8886ec2290780" }, "downloads": -1, "filename": "musette-0.5.6.tar.gz", "has_sig": false, "md5_digest": "a4124e3d48084ccb05146e3908292a53", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17903, "upload_time": "2014-10-19T18:14:26", "url": "https://files.pythonhosted.org/packages/37/a4/2348b85fbbd8a29ff82c5c926f01d8e2bba38263edadcceafcb1f96ebdfc/musette-0.5.6.tar.gz" } ], "0.5.7": [ { "comment_text": "", "digests": { "md5": "332674e6b7c71f4d14f72b253bf66860", "sha256": "028354e8574825da7d041721e1faa00891f131dfdd1bfc4d34809aa7b4c20aba" }, "downloads": -1, "filename": "musette-0.5.7.tar.gz", "has_sig": false, "md5_digest": "332674e6b7c71f4d14f72b253bf66860", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17926, "upload_time": "2014-10-20T08:17:16", "url": "https://files.pythonhosted.org/packages/5c/d6/013661b6a8a7c77945d42aba9ba97938be1c0f8cc9eea1fb872d7594cddd/musette-0.5.7.tar.gz" } ], "0.5.9": [ { "comment_text": "", "digests": { "md5": "71f9a36612809e834c2b7654df84d897", "sha256": "62be6d4169d145b4f9413a445dcf35d4d733958e6360d5c56354553fcc146e3f" }, "downloads": -1, "filename": "musette-0.5.9.tar.gz", "has_sig": false, "md5_digest": "71f9a36612809e834c2b7654df84d897", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18109, "upload_time": "2014-10-20T09:50:01", "url": "https://files.pythonhosted.org/packages/83/fb/f77026d0468b3c77febfda9e7abb3dd5a3ea030c82ce7bb8e5a7b1e2d844/musette-0.5.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "37c57f8805a7a123087d7441bdce4c47", "sha256": "daaa7c3ff773ab3427273ac1d03bc4ce2f8454caae59970a0653713c333b0a12" }, "downloads": -1, "filename": "musette-0.5.10.tar.gz", "has_sig": false, "md5_digest": "37c57f8805a7a123087d7441bdce4c47", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18264, "upload_time": "2014-11-22T09:21:08", "url": "https://files.pythonhosted.org/packages/57/9e/20e51469db65fa24170893e499c7d230ac7244f44fa3f0cc8df4eb148527/musette-0.5.10.tar.gz" } ] }