Skip to main content

dotmagic

A Python library consists of a set of utilities for managing configuration files.

Installation

pip install dotmagic

Usage of Config Class

The Config class is designed to simplify the management of configuration values from various sources, such as .env files or dictionaries. It also provides the option to override environment variables with the loaded configuration.

Importing Config

First, import the Config class into your Python script:

from dotmagic.config import Config

Creating a Config Instance

To use the Config class, create an instance of it. You can specify the configuration source (.env file or dictionary), default values, and whether to override environment variables.

# Example 1: Load from a .env file
config = Config(".env")

# Example 2: Load from a dictionary
config_data = {
    "PORT": "8080",
    "DEBUG": "True",
}
config = Config(config_data)

# Example 3: Load from a .env file and override environment variables
config = Config(".env", override=True)

Accessing Configuration Values

You can access configuration values using dot notation or dictionary-style indexing.

# Accessing values using dot notation
port = config.PORT
debug = config.DEBUG

# Accessing values using dictionary-style indexing
port = config["PORT"]
debug = config["DEBUG"]

Handling Missing Values

The Config class provides a way to handle missing values. If a value is not found and is marked as required, it will raise a KeyError. If it's not required, it will return None.

try:
    missing_value = config.required.MISSING_KEY  # Raises KeyError
except KeyError:
    print("MISSING_KEY is required but missing.")

missing_value = config.MISSING_KEY  # None

Examples

Here are some examples of using the Config class:

# Example 1: Loading from a .env file
config = Config(".env")
port = config.PORT  # Access the PORT value from the .env file

# Example 2: Loading from a dictionary
config_data = {
    "PORT": "8080",
    "DEBUG": "True",
}
config = Config(config_data)
port = config.PORT  # Access the PORT value as an integer (parsed from a string)

# Example 3: Using ConfigParse for parsing configuration values from a dictionary
config_data = {
    "PORT": "8080",
    "DEBUG": "True",
}
config = ConfigParse(config_data)
port = config.PORT  # Access the PORT value as an integer (parsed from a string)

The Config class simplifies the management of configuration values, making it easy to work with environment variables and configuration files.

Usage of dotdict

dotdict is a custom dictionary class that allows you to access its values using dot notation. Here's how you can use it:

# Import the dotdict class
from dotdict import dotdict

# Create a dotdict from a dictionary
my_dict = {"key1": "value1", "key2": "value2"}
dot_dict = dotdict(my_dict)

# Access values using dot notation
value1 = dot_dict.key1  # "value1"
value2 = dot_dict.key2  # "value2"

# You can also access values using dictionary-style indexing
value1 = dot_dict["key1"]  # "value1"
value2 = dot_dict["key2"]  # "value2"

Usage of seconds

seconds is a function that converts a time string into seconds. Here's how you can use it:

# Import the seconds function
from dotdict import seconds

# Convert time strings to seconds
seconds_in_a_day = seconds("1d")          # 86400
seconds_in_a_day_and_an_hour = seconds("1d1h")     # 90000
seconds_in_a_day_hour_and_minute = seconds("1d1h1m")   # 90060
seconds_in_a_day_hour_minute_and_second = seconds("1d1h1m1s")  # 90061

The seconds function takes a time string as input and returns the equivalent time duration in seconds. It supports various formats, such as "1d" (1 day), "1d1h" (1 day and 1 hour), "1d1h1m" (1 day, 1 hour, and 1 minute), and "1d1h1m1s" (1 day, 1 hour, 1 minute, and 1 second). If the input time string is invalid, it raises a ValueError.

License

This project is licensed under the terms of the GNU General Public License v3.0.

Release files for dotmagic 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dotmagic 0.1.1
File Size Uploaded
dotmagic-0.1.1.tar.gz 16.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dotmagic 0.1.1
File Interpreter ABI Platform
dotmagic-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 34.0 kB

Release files / dotmagic-0.1.1.tar.gz

Download URL dotmagic-0.1.1.tar.gz
Size 16.8 kB
Tags Source
SHA-256 checksum
How to use checksums
cd28123d559129764b9f418875480d2abec2870e9f6152830b84e2db6a35c6bd
BLAKE2b-256 checksum
How to use checksums
b0f075d90050d50fa923290cc97b0664e4f130f925db652d1f0057e4398c0b86
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.4

Release files / dotmagic-0.1.1-py3-none-any.whl

Download URL dotmagic-0.1.1-py3-none-any.whl
Size 17.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
25523271d64e13093949d62f6d9f098ed85aa37f7e50eba1ce0170c29ab53672
BLAKE2b-256 checksum
How to use checksums
3735b686ccbacb5931fb038eb0ed0717082b25886532f4823b99b87f6c85b746
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.4

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page