Skip to main content

Settings Manager

Settings Manager is designed to handle settings in python projects.

It makes the assumption you are working with environments and building applications.

The API consists of 2 functions load() to load the application settings and settings() to get access to a dict of the application settings.

Usage

You can put environment variables in your yaml config files and they will be loaded from the environment when the file is loaded. Calls to get environment variables like os.getenv() also work in python config files. Only json config files cannot contain environment variables.

You can also have base files i.e. base.py or base.yml or base.json and these will get loaded first. Then the current environment file, for isntance test.py will be loaded and override any variables which have the same name in base.py.

Deep Merging : currently the library does not do deep merges i.e. if you have nested hashes in your config files, only top level keys will be merged, not at a fine-grained deep level.

Here are some examples.

app:
  secret_key: ${SECRET_KEY}
  google_client_id: ${GOOGLE_CLIENT_ID}
SECRET_KEY = os.getenv('SECRET_KEY')
GOOGLE_CLIENT_ID = os.getenv('GOOGLE_CLIENT_ID')

JSON Config Files

Imagine you are working on a project with the following structure:

myapp/
  app.py
config/
  settings/
    test.json
    dev.json
    prod.json
from settings_manager.manager import SettingsManager

sm = SettingsManager(
        environment = 'test', 
        filetype = 'json'
        settings_dir = '/path/to/project/root/config/settings'    
)

sm.load()

# view settings dictionary
sm.settings() # { 'secret-key' : 'h390h2g3', ... }

YAML Config Files

Imagine you are working on a project with the following structure:

myapp/
  app.py
config/
  settings/
    test.yaml
    dev.yaml
    prod.yaml

Your yaml files can have .yml or .yaml file extensions.

from settings_manager.manager import SettingsManager

sm = SettingsManager(
        environment = 'test', 
        filetype = 'yaml'
        settings_dir = '/path/to/project/root/config/settings'    
)

sm.load()

# view settings dictionary
sm.settings() # { 'secret-key' : 'h390h2g3', ... }

Python Config Files

Imagine you are working on a project with the following structure:

myapp/
  app.py
config/
  settings/
    test.py
    dev.py
    prod.py
from settings_manager.manager import SettingsManager

sm = SettingsManager(
        environment = 'test', 
        filetype = 'python'
        settings_dir = '/path/to/project/root/config/settings'
        python_settings_module = 'config.settings'    
)

sm.load()

# view settings dictionary
sm.settings() # { 'secret-key' : 'h390h2g3', ... }

Todos:

  1. Add deep merge ability

Metadata

Release files for settings-manager 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for settings-manager 0.1.3
File Size Uploaded Provenance
settings_manager-0.1.3.tar.gz 4.9 kB Without provenance Details

Release files / settings_manager-0.1.3.tar.gz

Download URL settings_manager-0.1.3.tar.gz
Size 4.9 kB
Tags Source
SHA-256 checksum
How to use checksums
804285de646bdd5d3318ad5222138be42fe12b3ccc8f93a324a395e9ebd413fe
BLAKE2b-256 checksum
How to use checksums
9c11aac1db8165dc662868280ca20fcd48e9b9b97576bb0b6a506bf0b7d0324d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.1

Security for settings-manager 0.1.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page