DotSetup is a versatile Python package designed for streamlined management of multiple configurations. It simplifies the storage and retrieval of settings from .env and .json files, offering a seamless solution for your project's setup needs.
MIT License
DotSetup is a Python package designed for flexible configuration management, supporting .ini
, .json
, .env
, and custom file types. Simplify the storage and retrieval of settings in your projects effortlessly.
.ini
, .json
, .env
, and custom file types..ini
and .json
files.pip install dotsetup
To get started with DotSetup, follow these steps:
Import the DotSetup class in your Python script or project to get started.
from dotsetup import DotSetup
# Initialize DotSetup
ds = DotSetup()
# Load from env file
value_env = ds.load('version', file_type='env')
print(f"Value from JSON File: {value_env}")
the above example loads the value of the variable version
from the .env
file in the root folder of the project.
from dotsetup import DotSetup, DotSetupException, FileNotFoundError, VariableNotFoundError, JSONDecodeError
def main():
# Initialize DotSetup
ds = DotSetup()
try:
# Load from JSON file
value_json = ds.load('database', file_type='json')
print(f"Value from JSON File: {value_json}")
except (FileNotFoundError, VariableNotFoundError, JSONDecodeError) as e:
print(f"Error: {e}")
try:
# Load from ENV file with default path
value_env = ds.load('DATABASE_URL', file_type='env')
print(f"Value from ENV (default path): {value_env}")
except (FileNotFoundError, VariableNotFoundError) as e:
print(f"Error: {e}")
try:
# Load from custom file
value_custom = ds.load('num2', file_type='custom', file_path='config.con')
print(f"Value from Custom File: {value_custom}")
except (FileNotFoundError, VariableNotFoundError, JSONDecodeError) as e:
print(f"Error: {e}")
try:
# Load from INI file
value_ini = ds.load('section1.option1', file_type='ini')
print(f"Value from INI File: {value_ini}")
except (FileNotFoundError, VariableNotFoundError) as e:
print(f"Error: {e}")
if __name__ == "__main__":
main()
here you can also see how to handle errors that may occur when loading configurations.
To load configurations from a custom path for different file types:
from dotsetup import DotSetup
ds = DotSetup()
# Load configuration from the specified custom path
value = ds.load('key_name', file_type='type', file_path='path/to/config.con')
The default path for the env file is .env
in the root folder. The default path for the ini file is config.ini
in the root folder, and the default path for the json file is config.json
in the root folder. For the custom file, the default path is config.con
in the root folder. Alternatively, you can specify your own path using the file_path parameter
you can also load the nested configuration from the json and ini files by using the dot notation for example
json Example:
{
"database": {
"host": "localhost",
"port": 5432,
"username": "user",
"password": "password"
},
"api_key": "your_api_key"
}
from dotsetup import DotSetup
ds = DotSetup()
# Load value from nested JSON file
value_json = ds.load('database.host', file_type='json', file_path='config.json')
print(f"Value from JSON File: {value_json}")
DotSetup supports custom file types. To use a custom file type, you must define a custom file syntax. The custom file syntax is a dictionary that maps variable names to their values.
USERNAME="johndoe"
PASSWORD="mysecretpassword"
API_KEY="abc123"
NUMBER=1
Numbers={1,2,3,4,5}
num2=(1,2)
num3=[1,2,3]
num4=1.2
str="Hello World"
str2=("Hello World","Hello World")
str3=["Hello World","Hello World"]
LINKS=["https://www.google.com","https://www.facebook.com","https://www.twitter.com"]
LINKS2={"KEY":"https://www.google.com","KEY2":"https://www.facebook.com"}
In this example, variables and values are defined using the format key=value. You can define your own syntax for custom files with custom file extension(filename.custom_extension) based on your project's requirements. Make sure to follow this syntax when defining your custom file syntax.
Contributions are welcome! Before contributing, please read our Contributing Guidelines to ensure a smooth and collaborative development process.
Please review our Code of Conduct to understand the standards of behavior we expect from contributors and users of this project.
This project is licensed under the MIT License. See LICENSE for more details.