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.
- DotSetup
- Features
- Installation
- Getting Started
- Custom File Syntax
- Contributing
- Code of Conduct
- License
- Support the Project
- Multi-format Support: Seamlessly handle configurations from files like
.ini
,.json
,.env
, and custom file types. - Intuitive API: Easy-to-use methods for 🔄 loading, accessing, and saving configurations.
- File Type Extension: Customize DotSetup to support additional file types beyond the included formats.
- Nested Configurations: Load nested configurations from files like
.ini
and.json
files. - Custom File Syntax: Define your own syntax for custom file types.
- Custom File Path: Load configurations from a custom path for different file types.
- Error Handling: Handle errors that may occur when loading configurations.
- Lightweight: DotSetup is a lightweight package with no external dependencies.
- Cross-Platform: DotSetup is compatible with Windows, macOS, and Linux.
- Open-Source: DotSetup is an open-source project licensed under the MIT License.
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.