Metadata-Version: 2.1
Name: django-composed-configuration
Version: 0.19.2
Summary: Turnkey Django settings for data management applications.
Home-page: https://github.com/girder/django-composed-configuration
Author: Kitware, Inc.
Author-email: kitware@kitware.com
License: Apache 2.0
Project-URL: Bug Reports, https://github.com/girder/django-composed-configuration/issues
Project-URL: Source, https://github.com/girder/django-composed-configuration
Keywords: django girder configuration configurations setting settings
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Web Environment
Classifier: Framework :: Django :: 3.0
Classifier: Framework :: Django
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: django-configurations[database,email]
Provides-Extra: dev
Requires-Dist: django (>=3) ; extra == 'dev'
Requires-Dist: django-allauth ; extra == 'dev'
Requires-Dist: django-cors-headers ; extra == 'dev'
Requires-Dist: django-extensions ; extra == 'dev'
Requires-Dist: django-filter ; extra == 'dev'
Requires-Dist: django-girder-style ; extra == 'dev'
Requires-Dist: django-girder-utils (>=0.9.0) ; extra == 'dev'
Requires-Dist: django-oauth-toolkit (>=1.4.0) ; extra == 'dev'
Requires-Dist: drf-yasg ; extra == 'dev'
Requires-Dist: psycopg2 ; extra == 'dev'
Requires-Dist: rich ; extra == 'dev'
Requires-Dist: whitenoise[brotli] ; extra == 'dev'
Requires-Dist: django-debug-toolbar ; extra == 'dev'
Requires-Dist: django-minio-storage ; extra == 'dev'
Provides-Extra: prod
Requires-Dist: django (>=3) ; extra == 'prod'
Requires-Dist: django-allauth ; extra == 'prod'
Requires-Dist: django-cors-headers ; extra == 'prod'
Requires-Dist: django-extensions ; extra == 'prod'
Requires-Dist: django-filter ; extra == 'prod'
Requires-Dist: django-girder-style ; extra == 'prod'
Requires-Dist: django-girder-utils (>=0.9.0) ; extra == 'prod'
Requires-Dist: django-oauth-toolkit (>=1.4.0) ; extra == 'prod'
Requires-Dist: drf-yasg ; extra == 'prod'
Requires-Dist: psycopg2 ; extra == 'prod'
Requires-Dist: rich ; extra == 'prod'
Requires-Dist: whitenoise[brotli] ; extra == 'prod'
Requires-Dist: django-storages[boto3] ; extra == 'prod'
Requires-Dist: sentry-sdk ; extra == 'prod'

# django-composed-configuration
[![PyPI](https://img.shields.io/pypi/v/django-composed-configuration)](https://pypi.org/project/django-composed-configuration/)

Turnkey Django settings for data management applications.

## Installation
Add to your project's requirements:
```
django-composed-configuration[dev,prod]
```

In your project's `settings.py`:
```python
from composed_configuration import (
    ComposedConfiguration,
    ConfigMixin,
    DevelopmentBaseConfiguration,
    ProductionBaseConfiguration,
)


class _ProjectMixin(ConfigMixin):
    # Define additional project-specific settings or overrides here
    pass

    @staticmethod
    def mutate_configuration(configuration: ComposedConfiguration) -> None:
        # Perform any non-overriding mutation of existing settings here
        # The "configuration" variable contains the flattened settings
        # For example:
        #   configuration.INSTALLED_APPS += ['my_extra_app']
        pass


class DevelopmentConfiguration(_ProjectMixin, DevelopmentBaseConfiguration):
    pass


class ProductionConfiguration(_ProjectMixin, ProductionBaseConfiguration):
    pass
```

At runtime:
* continue to set the `DJANGO_SETTINGS_MODULE` environment variable (pointing to `settings.py`)
* also set `DJANGO_CONFIGURATION`, with a value of
  either `DevelopmentConfiguration` or `ProductionConfiguration`


