Configuration ORM for Python applications
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)
| File | Size | Uploaded | |
|---|---|---|---|
| py_configorm-0.1.1.tar.gz | 6.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|