Manage configuration files from multiple source in python
Project description
catilo
Manage configuration files from multiple source in python. Create a variable directory for your configuration sources.
Directories contain sources and each source has a priority. The lower the priority value, higher is the priority. When you retrieve a variables, it looks into all the sources and retrieve the one with the highest priority. For eg, you have added two source -
- source1 : json config file - contain default values - priority = 10
- source2 : url - contains overrides - priority = 5
It will look into source 2 first, if not found will search in source1 , if then not found will raise "UndefinedVariableException"
Quickstart
Use pip install catilo
to install Catilo
Import the module at the start and define a variable directory.
from catilo.catilo import VariableDirectory
my_directory = VariableDirectory()
For simple dictionaries:
my_directory.add_source("fruitdetails",priority=5,dictionary={
"fruit": "Apple",
"size": "Large",
"color": "Red"
})
value = my_directory.get("fruit") ## returns "Apple"
For yaml/json based files
my_directory.add_file_source("configfile",priority=6,file="path/to/config.yaml")
my_directory.get("variable")
For URL's
my_directory.add_url_source("sampleurl",3,"https://raw.githubusercontent.com/jptalukdar/catilo/master/tests/tests_data/json/sample1.json")
value = my_directory.get("fruit") ## returns "Apple"
For Environment variables
my_directory.enable_environment_vars(prefix="CATILO_")
value = my_directory.get("CATILO_my_variable")
## If you don't want to strip the prefix during get, use `strip_prefix=True`
my_directory.enable_environment_vars(prefix="CATILO_",strip_prefix=True)
value = my_directory.get("my_variable")
Features
- Allows you to store multiple configuration files with priority value.
- Support for the following sources
- python dictionaries
- yaml files
- json files
- url (get method, json format)
- Environment variables
- Ability to add custom sources
- Stores config in flat_dictionary (can be overriden) for '.' notation access
- Ability to add variables in runtime
- Add as default variable
- Add as normal variable
- Output multiple sources into a single json or yaml file
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.