Skip to main content

Configuration ORM for Python applications

Test Status

A python library which provides ORM like semantics to application configuration. At present, it provides the expected functionality but requires some more work in terms of error handling.

The library works on the concept of configuration sources. Currently following sources are supported,

User defines a application settings schema by subclassing from ConfigSchema class. User can choose one or more configuration sources to create a Pydantic object based on application configuration schema.

Library will then try to read from all provided configuration sources and merge them to build the pydantic application configuration object.

Important Note

Name of keys in configuration sources and confguration schema MUST match. It would have been nice to decouple two, but for the intended functionality, it's a minor enhancement.

Configuration sources are provided as a list of objects and precedence and priority of sources is determined by ordering of the sources in the list, e.g. first source in the list has lowest precendence, last one has the highest.

Read-Write Capability

If the configuration supports, library provides ability to save functionality for the application configuration object. By default, write capability is disabled.

Configuration Source Read Read-Write
TOML Yes Yes
JSON Yes Yes
YAML Yes Yes
DotEnv Yes No
Environment Variable Yes Yes

Example

Using JSON

{
    "Service": {
        "Host": "localhost",
        "Port": 18080
    },
}

Using TOML

[Service]
Host = "localhost",
Port = 18080

Using YAML

Service:
    Host: "localhost"
    Port: 18080

Using DotEnv files / Environment variables

CFGORM_SERVICE__HOST=localhost
CFGORM_SERVICE__PORT=8080
class TestServiceConfig(BaseModel):
    Host: str = Field(..., description="Host running the service")
    Port: int = Field(..., description="Port bound to the service")


class TestConfig(ConfigSchema):
    Service: TestServiceConfig = Field(..., description="Service configuration")

json_source = JSONSource(file_path=Path(config_file_json))

cfg_orm = ConfigORM(schema=TestConfig, sources=[json_source])

cfg: TestConfig = cfg_orm.load_config()

print(cfg)

Metadata

Release files for py_configorm 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 py_configorm 0.1.1
File Size Uploaded
py_configorm-0.1.1.tar.gz 6.4 kB Details

Built distribution (wheel)

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

Total release size: 16.6 kB

Release files / py_configorm-0.1.1.tar.gz

Download URL py_configorm-0.1.1.tar.gz
Size 6.4 kB
Tags Source
SHA-256 checksum
How to use checksums
3c31bc2a95dc006f635fb1984a2585c7f052c117c12016d8d63f6177d08a8101
BLAKE2b-256 checksum
How to use checksums
26256e060ef854caa3153d053b9ca0ceae566c06502a6350c20e0db1d8caf6fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.3 CPython/3.12.4 Darwin/24.0.0

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

Download URL py_configorm-0.1.1-py3-none-any.whl
Size 10.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
66f58f4d80aac79214a143a87d1d4f7985c374664b80b375a79e88633992379a
BLAKE2b-256 checksum
How to use checksums
0dead8786ec8ab63c1ad2149d0604d11ba127c3574545c2437d5c0eb230ae581
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.3 CPython/3.12.4 Darwin/24.0.0

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

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