Metadata-Version: 2.1
Name: django-classy-settings
Version: 3.0.6
Summary: Simple class-based settings for Django
Author-email: Curtis Maloney <curtis@tinbrain.net>
License: BSD-2-Clause
Project-URL: Source Code, https://github.com/funkybob/django-classy-settings
Project-URL: Documentation, https://django-classy-settings.readthedocs.io/en/latest/
Classifier: Development Status :: 5 - Production/Stable
Classifier: Framework :: Django
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Intended Audience :: Developers
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: django
Provides-Extra: dev
Requires-Dist: pytest ; extra == 'dev'
Requires-Dist: coverage ; extra == 'dev'
Requires-Dist: ruff ; extra == 'dev'
Requires-Dist: Sphinx ; extra == 'dev'
Requires-Dist: build ; extra == 'dev'

django-classy-settings
======================

Minimalist approach to class-based settings for Django

https://django-classy-settings.readthedocs.io/latest/


Quick Start
-----------

In your `settings.py`

    from cbs import BaseSettings, env


    ...
    # For env settings with a DJANGO_ prefix
    denv = env['DJANGO_']

    class Settings(BaseSettings):

        DEBUG = denv.bool(True)  # Controlled by DJANGO_DEBUG env var

        DEFAULT_DATABASE = denv.dburl('sqlite://db.sqlite')

        def DATABASES(self):
            return {
                'default': self.DEFAULT_DATABASE,
            }


    class ProdSettings(Settings):
        DEBUG = False

        @env
        def STATIC_ROOT(self):
            raise ValueError("Must set STATIC_ROOT!")

    __getattr__, __dir__ = BaseSettings.use()


Switch between ``Settings`` and ``ProdSettings`` using the ``DJANGO_MODE`` env var:

    # Run default Settings
    $ ./manage.py test

    # Run ProdSettings
    $ DJANGO_MODE=prod ./manage.py test
