JSON Data Class Loader
Project description
JSDC Loader (JSON Data Class Loader)
JSDC Loader is a Python utility for loading JSON configuration files into dataclass objects. It provides a simple and type-safe way to manage configuration data in your Python applications by forcing the use of dataclass and type hinting.
Features
- Load JSON configuration files into dataclass objects
- Support for nested dataclass structures
- Type checking and conversion for configuration values
- Easy updating of configuration from different files
- Ability to dump modified configurations back to JSON
Installation
To install JSDC Loader, you can use pip:
pip install jsdc_loader
Usage
Here's an example of how to use JSDC Loader:
Example 1
from dataclasses import dataclass
from jsdc_loader import jsdc_load, jsdc_dump
@dataclass
class DatabaseConfig:
host: str = 'localhost' # default value must be provided
port: int = 3306
user: str = 'root'
password: str = 'password'
# Dump configuration to 'config.json'
db_config = DatabaseConfig()
jsdc_dump(db_config, 'config.json')
# Load configuration from 'config.json'
loaded_db_config = jsdc_load('config.json', DatabaseConfig)
print(loaded_db_config.host) # Accessing the host attribute from the loaded data
Example 2
from dataclasses import dataclass, field
from jsdc_loader import jsdc_load, jsdc_dump
@dataclass
class UserConfig:
name: str = 'John Doe'
age: int = 30
@dataclass
class AppConfig:
user: UserConfig = field(default_factory=lambda: UserConfig())
database: DatabaseConfig = field(default_factory=lambda: DatabaseConfig())
# Dump configuration to 'config.json'
app_config = AppConfig()
jsdc_dump(app_config, 'config.json')
# Load configuration from 'config.json'
loaded_app_config = jsdc_load('config.json', AppConfig)
print(loaded_app_config.user.name) # Accessing the name attribute from the loaded data
Example 3
from dataclasses import dataclass, field
from enum import Enum, auto
from jsdc_loader import jsdc_load, jsdc_dump
class UserType(Enum):
ADMIN = auto()
USER = auto()
@dataclass
class UserConfig:
name: str = 'John Doe'
age: int = 30
married: bool = False
user_type: UserType = field(default_factory=lambda: UserType.USER)
@dataclass
class AppConfig:
user: UserConfig = field(default_factory=lambda: UserConfig())
database: DatabaseConfig = field(default_factory=lambda: DatabaseConfig())
# Dump configuration to 'config.json'
app_config = AppConfig()
jsdc_dump(app_config, 'config.json')
# Load configuration from 'config.json'
loaded_app_config = jsdc_load('config.json', AppConfig)
print(loaded_app_config.user.user_type) # Accessing the user type attribute from the loaded data
Example 4
from dataclasses import dataclass, field
from jsdc_loader import jsdc_load, jsdc_dump
@dataclass
class ControllerConfig:
controller_id: str = 'controller_01'
controller_type: str = 'controller_type_01'
controller_version: str = 'controller_version_01'
utc_offset: float = 0.0
app: AppConfig = field(default_factory=lambda: AppConfig())
# Dump configuration to 'config.json'
controller_config = ControllerConfig()
jsdc_dump(controller_config, 'config.json')
# Load configuration from 'config.json'
loaded_controller_config = jsdc_load('config.json', ControllerConfig)
print(loaded_controller_config.controller_id) # Accessing the controller_id attribute from the loaded data
License
This project is licensed under the MIT License. See the LICENSE file for more details.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jsdc_loader-0.0.19.tar.gz.
File metadata
- Download URL: jsdc_loader-0.0.19.tar.gz
- Upload date:
- Size: 11.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
108952b783ee17a10a4656c1b27f2e45d576cc356238d2ac87cda896a038dafe
|
|
| MD5 |
09f1f26f751dffe7dc9220d9d6484c5e
|
|
| BLAKE2b-256 |
f3251059cb292048b39887404dd2cbb721c0cfe416b92c3e15408a86a42f98e5
|
File details
Details for the file jsdc_loader-0.0.19-py3-none-any.whl.
File metadata
- Download URL: jsdc_loader-0.0.19-py3-none-any.whl
- Upload date:
- Size: 13.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bca187a065b269b0304e0f320673b7b9a910898d9f8b37611a03a9c3957f1b03
|
|
| MD5 |
2037a781a9b71672e4dc4cb25957e29c
|
|
| BLAKE2b-256 |
587e3a26ba4a6a14c213ac3f733a2457904ad9f948e0b2a9cde148990ed22cc6
|