Skip to main content

A Django util for managing app settings.

Project description

Django Zero Settings

a Django util for managing app settings.

when u create a package for Django, usually if your app can be configured, needs to use Django settings. so you will have some defaults which can be overridden by the user.

this package helps you to specify defaults, and the key that users must use for configuring settings, then it will load user settings, update defaults, and import string notations.

this is actually how django-rest-framework configures its settings, but with a few more features.

Install

pip install django-zero-settings

Usages

create a settings object like this:

from zero_settings import ZeroSettings

app_settings = ZeroSettings(
    key="APP",
    defaults={
        "TOKEN": "token"
    },
)

then you can import app_settings and use it:

from app.settings import app_settings

print(app_settings.TOKEN)

Args

ZeroSettings can get following args:

arg desc
key the settings key which users will define settings with, is required and must be a string.
defaults default settings for the app, required and must be a dict.
user_settings you can also set user settings manually, in this case, user settings with key will not be loaded. is optional and can be a dict.
import_strings a list of setting keys that must be imported, import strings is lazy checked and will raise ImportError on exceptions like: "Could not import 'app.utils.Token' for setting 'APP.TOKEN_CLASS'. ImportError: path does not exist."
removed_settings a dict of settings which had been removed, in {"KEY": "msg"} format. it will raise RuntimeError if a setting is in removed_settings. note that these keys must be also on defaults too, otherwise, it will raise AttributeError instead. the msg part of dict is the error message. on None or empty strings, it generates the default message which is "The 'APP.KEY' setting has been removed."
settings_doc a string that locates the settings document path, the value will be used to generate removed_settings error with a message like: "Please refer to 'https://app.com/doc/settings' for available settings."
use_cache a boolean that defines whether to use cache or not
strict_defaults a boolean that defines whether to be strict on defaults or not, if true, only default keys are valid in user settings
pre_check_defaults a boolean that defines whether to pre check defaults or not
pre_check_imports a boolean that defines whether to pre check imports or not
pre_check_removed a boolean that defines whether to pre check removed or not

Import Strings

with following class and methods at app.utils:

class Token:
    @staticmethod
    def get_token():
        return "token"

def validate_value(token):
    return token == "token"

def validate_length(token):
    return len(token) == 5

you can create an app_settings like this:

from zero_settings import ZeroSettings

app_settings = ZeroSettings(
    key="APP",
    defaults={
        "TOKEN_CLASS": "app.utils.Token",
        "TOKEN_VALIDATORS": [
            "app.utils.validate_value",
            "app.utils.validate_length",
        ]
    },
    import_strings=[
        "TOKEN_CLASS",
        "TOKEN_VALIDATORS",
    ]
)

then you can import app_settings and use it:

from app.settings import app_settings

token = app_setting.TOKEN_CLASS.get_token()
for validator in app_settings.TOKEN_VALIDATORS:
    validator(token)

Removed Settings

removed settings can be configured like:

from zero_settings import ZeroSettings

app_settings = ZeroSettings(
    key="APP",
    defaults={
        "TOKEN": "token",
        "URL": None, # you need to include the key in defaults too.
    },
    removed_settings={
        "URL": None, # or ""
        # or
        "URL": "URL had been removed from settings."
    }
)

then if user tries to get the URL key, a RuntimeError will be raised.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-zero-settings-0.1.6.tar.gz (17.8 kB view details)

Uploaded Source

Built Distribution

django_zero_settings-0.1.6-py3-none-any.whl (18.1 kB view details)

Uploaded Python 3

File details

Details for the file django-zero-settings-0.1.6.tar.gz.

File metadata

  • Download URL: django-zero-settings-0.1.6.tar.gz
  • Upload date:
  • Size: 17.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.6

File hashes

Hashes for django-zero-settings-0.1.6.tar.gz
Algorithm Hash digest
SHA256 03867b6625cb5494cca55f3c962924107e3b5475a8a489bbdc22f2b55c244599
MD5 b6b755849b7d511f74985232f71adbf2
BLAKE2b-256 de55db9a34c66b933a824840179d5e38e98beaba4e1c4055d904827245829e56

See more details on using hashes here.

File details

Details for the file django_zero_settings-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: django_zero_settings-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 18.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.6

File hashes

Hashes for django_zero_settings-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 5c7326db129acf9b14d96c7d3a34a291f9c3888c2103f631f494382070aa016a
MD5 a761d217d4881efe165032c9a464e8c4
BLAKE2b-256 3bdd2df1a0535b74ff4ba52805d5dded3f507061759241c3182f032662e53c82

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page