A settings manager for python applications
Project description
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:
Add deep merge ability
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
File details
Details for the file settings_manager-0.1.3.tar.gz
.
File metadata
- Download URL: settings_manager-0.1.3.tar.gz
- Upload date:
- Size: 4.9 kB
- Tags: Source
- Uploaded using 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
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 804285de646bdd5d3318ad5222138be42fe12b3ccc8f93a324a395e9ebd413fe |
|
MD5 | 874899b452c1c8019476a7f45de82d18 |
|
BLAKE2b-256 | 9c11aac1db8165dc662868280ca20fcd48e9b9b97576bb0b6a506bf0b7d0324d |