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")
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")
For Environment variables
my_directory.enable_environment_vars(prefix="CATILO_")
value = my_directory.get("CATILO_my_variable")
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