Package: django-confit
django-confiteases Django configuration management.As a Django  user, in order to configure a project:django-confithelps you load the settings wherever they are, whatever the
format: Python modules, environment variables, JSON, YAML…django-confitvalidates the settings, i.e. it tells you if some directive
is missing, has wrong format…As a Django library developer, in order to help your application’s users:you write configuration schemas for your application, usingdjango-confit’s
toolkit and conventions.django-confithelps you document your application’s specific
configuration.As a non Django user, in order to deploy and run a Django-powered project:you write the configuration as you like, depending on your workflow and your
provisioning toolkit. You know the project can load them usingdjango-confit.you expect applications to validate the configuration before they actually
use it, and report errors with a readable output.ExampleIn a project’ssettings.pyfile, let’s load configuration from various
locations:importosimportdjango_confit# Load settings.raw_settings={}raw_settings.update(django_confit.load_module('myproject.default_settings'))raw_settings.update(django_confit.load_file(open('/etc/myproject.json')))raw_settings.update(django_confit.load_mapping(os.environ,prefix='MYPROJECT_')# Update globals, because that's the way Django uses DJANGO_SETTINGS_MODULE.globals().update(raw_settings)Optionally, you can use builtin schemas to validate settings:# Validate and clean settings.cleaned_settings=django_confit.validate_settings(raw_settings)# Update globals, because that's the way Django uses DJANGO_SETTINGS_MODULE.globals().update(cleaned_settings)WarningAt the moment, there is no builtin schema for latest Django>=1.7.Project statusToday,django-confitis a proof of concept:loading settings is nice and easy.validating configuration is easy… provided you have the schemas.creating configuration schemas is verbose. It usescolanderwhich has nice
features, but may not be the definitive option.generating documentation from schemas is not implemented.The main limitation is that, when you use validation, schemas are
mandatory.If some configuration directive is not registered in a schema, it
will not be present in validation output. It means that, if you install a new
third-party Django application, you need the configuration schema for this
application, else its settings will not pass validation.So the most-wanted
contribution is submitting configuration schemas for third-party
applications.Notice that this behaviour is a wanted feature. Asdjango-confitauthor, I
thinklibraries should always provide a schema for the settings they use.
I do not pretenddjango-confitshould be THE answer. I just bet that, if
schemas were widely adopted by the Django community, configuration would be
easier to manage.django-confitdoes not pretend to be the ultimate configuration management
app for Django. Its goal is to show how some issues could be resolved, and to
highlight the benefits.django-confitis a proposal. If you like its
concepts, then you can:usedjango-confitof course!discuss, spread the word, send feedback.improve code. Help around configuration schemas of third-party apps would be
appreciated.RessourcesDocumentation:https://django-confit.readthedocs.orgPyPI page:https://pypi.python.org/pypi/django-confit/Code repository:https://github.com/benoitbryon/django-confitBugtracker:https://github.com/benoitbryon/django-confit/issuesContinuous integration:https://travis-ci.org/benoitbryon/django-confitRoadmap:https://github.com/benoitbryon/django-confit/milestones