Skip to main content

Typed application settings on top of didactic Models.

Project description

didactic-settings

Typed application settings on top of dx.Model.

PyPI Python License CI Docs

Contributes didactic.settings to the namespace package.

Install

pip install didactic-settings
pip install 'didactic-settings[yaml]'   # adds YAML support

The package depends on didactic. The optional yaml extra adds PyYAML for .yaml / .yml config files.

Quickstart

import didactic.api as dx
from didactic.settings import Settings, EnvSource, FileSource


class AppSettings(Settings):
    debug: bool = False
    db_url: str
    port: int = 8080

    __sources__ = (
        FileSource(path="config.toml"),
        EnvSource(prefix="APP_"),
    )


cfg = AppSettings.load()
cfg.port                      # the resolved value
cfg.__provenance__["port"]    # 'env' / 'file' / 'default' / 'override'

Settings inherits from dx.Model, so every Model feature works: type checks, axioms, validators, JSON Schema export.

Sources

source reads from
EnvSource(prefix="APP_") environment variables
DotEnvSource(path=".env", prefix="APP_") dotenv file
FileSource(path="config.toml") JSON, TOML, or YAML by suffix
CliSource(args=ns) parsed argparse.Namespace or dict

Sources are walked in declaration order; later sources override earlier ones. Keyword overrides at Settings.load(...) win over every source.

Documentation

See Guides > Settings for the full source documentation, coercion rules, and provenance reporting.

License

Released under the MIT License.

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

didactic_settings-0.5.2.tar.gz (5.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

didactic_settings-0.5.2-py3-none-any.whl (6.7 kB view details)

Uploaded Python 3

File details

Details for the file didactic_settings-0.5.2.tar.gz.

File metadata

  • Download URL: didactic_settings-0.5.2.tar.gz
  • Upload date:
  • Size: 5.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for didactic_settings-0.5.2.tar.gz
Algorithm Hash digest
SHA256 49dea089c8b7bebd582ae3dcaeae2a6f44ce05870d99200828fcbd590a6e9eed
MD5 1153651e395356e7f466fbebd0b6ed63
BLAKE2b-256 461b4ed5acf8d13b7779dccc3bc8c8d326983567ba37fc8be73ddb65f7c3c859

See more details on using hashes here.

Provenance

The following attestation bundles were made for didactic_settings-0.5.2.tar.gz:

Publisher: release.yml on panproto/didactic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file didactic_settings-0.5.2-py3-none-any.whl.

File metadata

File hashes

Hashes for didactic_settings-0.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 52bdfc1f4312d3853d37bd122278676e0e47f11c8e83e894b6efa74ff9900740
MD5 9c6cddaac80c80788e5db14e16ef15ed
BLAKE2b-256 71e7d882ade309394271dd4adb3e38b9c8d92ced45b722523a37f6c710795725

See more details on using hashes here.

Provenance

The following attestation bundles were made for didactic_settings-0.5.2-py3-none-any.whl:

Publisher: release.yml on panproto/didactic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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