A simple setup tool for Python projects to manage environment variables and configurations ands settings.
Project description
DotSetup
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.
Table of Contents
- DotSetup
- Features
- Installation
- Getting Started
- Custom File Syntax
- Contributing
- Code of Conduct
- License
- Support the Project
Features
- 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.
Installation
pip install dotsetup
Getting Started
To get started with DotSetup, follow these steps:
Import the DotSetup class in your Python script or project to get started.
Simple Example:
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.
Breaking down Example:
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.
Custom Path for File Types
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
Nested Configurations
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}")
Custom File Syntax
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.
Contributing
Contributions are welcome! Before contributing, please read our Contributing Guidelines to ensure a smooth and collaborative development process.
Code of Conduct
Please review our Code of Conduct to understand the standards of behavior we expect from contributors and users of this project.
License
This project is licensed under the MIT License. See LICENSE for more details.
Support the Project
Happy Coding ❤️
Project details
Release history Release notifications | RSS feed
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 dotsetup-0.0.2.tar.gz
.
File metadata
- Download URL: dotsetup-0.0.2.tar.gz
- Upload date:
- Size: 10.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4b8ae87ea738e773155c05d42ca38f4290c2531382d020af2b1df8bdcc9696a9 |
|
MD5 | 9a805d86c3725b073313723c0a05ab72 |
|
BLAKE2b-256 | 22478bfcb562c805dc8b36063bba478c671ce1be374e0f4600b3dc5b645318fa |