Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jsdc_loader-0.0.12.tar.gz (4.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jsdc_loader-0.0.12-py3-none-any.whl (4.8 kB view details)

Uploaded Python 3

File details

Details for the file jsdc_loader-0.0.12.tar.gz.

File metadata

  • Download URL: jsdc_loader-0.0.12.tar.gz
  • Upload date:
  • Size: 4.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.4

File hashes

Hashes for jsdc_loader-0.0.12.tar.gz
Algorithm Hash digest
SHA256 bacb8d3af2bcb10a70d5c3a7cf797723945306e9d1c9d1fbc8abe7d0d8b3af3b
MD5 4e6a9041333498d010361f981fb85908
BLAKE2b-256 f72df5c7ad7743dc75bf91cfb3a8682020188866bae29e0069f8c07a145f8e8c

See more details on using hashes here.

File details

Details for the file jsdc_loader-0.0.12-py3-none-any.whl.

File metadata

  • Download URL: jsdc_loader-0.0.12-py3-none-any.whl
  • Upload date:
  • Size: 4.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.4

File hashes

Hashes for jsdc_loader-0.0.12-py3-none-any.whl
Algorithm Hash digest
SHA256 ec2ceb46ce44cc6f037fd0ef25b5e6fa79ff5d1b72dbd1448ba2ba204cb5c361
MD5 d9aa988838371ec49e5e8ae5ec3726fb
BLAKE2b-256 bc2d110773578517e6f0d0ae5176d0e204ad0d68c9021afc7474b68f9ab010f5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page