{ "info": { "author": "Beno\u00eet Bryon", "author_email": "benoit@marmelune.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Framework :: Django", "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.3" ], "description": "#############\ndjango-confit\n#############\n\n`django-confit` eases Django configuration management.\n\n**As a Django user**, in order to configure a project:\n\n* `django-confit` helps you load the settings wherever they are, whatever the\n format: Python modules, environment variables, JSON, YAML...\n\n* `django-confit` validates the settings, i.e. it tells you if some directive\n is missing, has wrong format...\n\n**As a Django library developer**, in order to help your application's users:\n\n* you write configuration schemas for your application, using `django-confit`'s\n toolkit and conventions.\n\n* `django-confit` helps you document your application's specific\n configuration.\n\n**As a non Django user**, in order to deploy and run a Django-powered project:\n\n* you write the configuration as you like, depending on your workflow and your\n provisioning toolkit. You know the project can load them using\n `django-confit`.\n\n* you expect applications to validate the configuration before they actually\n use it, and report errors with a readable output.\n\n\n*******\nExample\n*******\n\nIn a project's ``settings.py`` file, let's load configuration from various\nlocations:\n\n.. code-block:: python\n\n import os\n\n import django_confit\n\n # Load settings.\n raw_settings = {}\n raw_settings.update(django_confit.load_module('myproject.default_settings'))\n raw_settings.update(django_confit.load_file(open('/etc/myproject.json')))\n raw_settings.update(django_confit.load_mapping(os.environ, prefix='MYPROJECT_')\n\n # Update globals, because that's the way Django uses DJANGO_SETTINGS_MODULE.\n globals().update(raw_settings)\n\nOptionally, you can use builtin schemas to validate settings:\n\n.. code-block:: python\n\n # Validate and clean settings.\n cleaned_settings = django_confit.validate_settings(raw_settings)\n\n # Update globals, because that's the way Django uses DJANGO_SETTINGS_MODULE.\n globals().update(cleaned_settings)\n\n.. warning:: At the moment, there is no builtin schema for latest Django>=1.7.\n\n\n**************\nProject status\n**************\n\nToday, `django-confit` is a proof of concept:\n\n* loading settings is nice and easy.\n\n* validating configuration is easy... provided you have the schemas.\n\n* creating configuration schemas is verbose. It uses `colander`_ which has nice\n features, but may not be the definitive option.\n\n* generating documentation from schemas is not implemented.\n\n**The main limitation is that, when you use validation, schemas are\nmandatory.** If some configuration directive is not registered in a schema, it\nwill not be present in validation output. It means that, if you install a new\nthird-party Django application, you need the configuration schema for this\napplication, else its settings will not pass validation. **So the most-wanted\ncontribution is submitting configuration schemas for third-party\napplications.**\n\nNotice that this behaviour is a wanted feature. As `django-confit` author, I\nthink **libraries should always provide a schema for the settings they use**.\nI do not pretend `django-confit` should be THE answer. I just bet that, if\nschemas were widely adopted by the Django community, configuration would be\neasier to manage.\n\n`django-confit` does not pretend to be the ultimate configuration management\napp for Django. Its goal is to show how some issues could be resolved, and to\nhighlight the benefits. `django-confit` is a proposal. If you like its\nconcepts, then you can:\n\n* use `django-confit` of course!\n\n* discuss, spread the word, send feedback.\n\n* improve code. Help around configuration schemas of third-party apps would be\n appreciated.\n\n\n**********\nRessources\n**********\n\n* Documentation: https://django-confit.readthedocs.org\n* PyPI page: https://pypi.python.org/pypi/django-confit/\n* Code repository: https://github.com/benoitbryon/django-confit\n* Bugtracker: https://github.com/benoitbryon/django-confit/issues\n* Continuous integration: https://travis-ci.org/benoitbryon/django-confit\n* Roadmap: https://github.com/benoitbryon/django-confit/milestones\n\n\n.. _`colander`: https://pypi.python.org/pypi/colander/", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://django-confit.readthedocs.org", "keywords": "configuration settings schema validation yaml json", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "django-confit", "package_url": "https://pypi.org/project/django-confit/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/django-confit/", "project_urls": { "Homepage": "https://django-confit.readthedocs.org" }, "release_url": "https://pypi.org/project/django-confit/0.6/", "requires_dist": null, "requires_python": "", "summary": "Django settings loaders and validators, with local flavour.", "version": "0.6" }, "last_serial": 2164873, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "15a1349821212d13fe34ad993eae0182", "sha256": "fd1dc51adffaf96c2296550e0703fca186a179666328cdfd2faf179a544a791e" }, "downloads": -1, "filename": "django-confit-0.1.zip", "has_sig": false, "md5_digest": "15a1349821212d13fe34ad993eae0182", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29508, "upload_time": "2014-04-21T18:05:59", "url": "https://files.pythonhosted.org/packages/2c/e4/06940e08e1158df76ee36016b4c879a4d5c5de5a8bc0ba18c55d6c39951e/django-confit-0.1.zip" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "35fcce9afc0e2503dfbb2686a991c9e0", "sha256": "f7989caefa025a1b3f3fbb1c159bce490ee19e7dd417ff7e952bd4fcc626f051" }, "downloads": -1, "filename": "django-confit-0.2.zip", "has_sig": false, "md5_digest": "35fcce9afc0e2503dfbb2686a991c9e0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27864, "upload_time": "2014-06-30T13:42:27", "url": "https://files.pythonhosted.org/packages/1d/44/64e4f15a1b830350552a2208972605a382a8aefcadf949e342b740b14713/django-confit-0.2.zip" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "e479890e79002c9142fde403606cc04c", "sha256": "3aa3fc9afcd6d1482ec2b2b4a141057ce8d5410043de3f0e68a493759a05e40b" }, "downloads": -1, "filename": "django-confit-0.3.tar.gz", "has_sig": false, "md5_digest": "e479890e79002c9142fde403606cc04c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16646, "upload_time": "2015-03-23T15:42:08", "url": "https://files.pythonhosted.org/packages/dd/fb/f9352b86eede78acb831dd7489799ea673e38360f4eb69b5260fe1ba4e98/django-confit-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "b24faa48b79c902d70f2f83293cc1a77", "sha256": "04484f496b525246b6df98e29d4f0a6c9d40b68875c80c9d22298e3c619b739d" }, "downloads": -1, "filename": "django-confit-0.4.tar.gz", "has_sig": false, "md5_digest": "b24faa48b79c902d70f2f83293cc1a77", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18473, "upload_time": "2015-12-11T17:01:23", "url": "https://files.pythonhosted.org/packages/0a/ae/d93badb675f7a758e12e97f00071fd2a7c0de2d4715b87c6991209ccdd83/django-confit-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "31f97880fc25a262cb61f83ffe8b8d99", "sha256": "26fd06170ec44c19ec37cef86327a5912e1edeb7e376a379c1ee13334a7e400c" }, "downloads": -1, "filename": "django-confit-0.5.tar.gz", "has_sig": false, "md5_digest": "31f97880fc25a262cb61f83ffe8b8d99", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31014, "upload_time": "2015-12-15T14:43:50", "url": "https://files.pythonhosted.org/packages/7e/6c/02c512d1d7ca433b245514197fb6f3ee2af63a2df1d7dbd2dbe4281c00c0/django-confit-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "aeb040047e1076acaa789f3bc454b48c", "sha256": "67aae98f18875ee06567e88515973874d2ce73dfe149a07a585366127315000c" }, "downloads": -1, "filename": "django-confit-0.6.tar.gz", "has_sig": false, "md5_digest": "aeb040047e1076acaa789f3bc454b48c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31300, "upload_time": "2016-06-13T15:55:20", "url": "https://files.pythonhosted.org/packages/ed/a9/e39d5aa20b7df58659e4fea79af0ca1bfe7e4820a44baeac9e0450f0b814/django-confit-0.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "aeb040047e1076acaa789f3bc454b48c", "sha256": "67aae98f18875ee06567e88515973874d2ce73dfe149a07a585366127315000c" }, "downloads": -1, "filename": "django-confit-0.6.tar.gz", "has_sig": false, "md5_digest": "aeb040047e1076acaa789f3bc454b48c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31300, "upload_time": "2016-06-13T15:55:20", "url": "https://files.pythonhosted.org/packages/ed/a9/e39d5aa20b7df58659e4fea79af0ca1bfe7e4820a44baeac9e0450f0b814/django-confit-0.6.tar.gz" } ] }