InPlat config adapters
Project description
Config adapters with pydantic behavior
- json
- yaml
- toml
- hcl2
- environ
- .env
- TODO: multiline PEM keys load with cryptography
Examples
.env
APP_VERSION=v0.0.1a1
APP_HTTP_HOST=myname.lan
HTTP_2=true
APP_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg8M4vd2AmKTW0/nqc
YQBi/bRZjkVezdGHi+zH5kYvm/2hRANCAATxEs1e8hqwpYCTk3amfq/UnGyvViPZ
Midz4nFzQvcq7A9Ju/wvEfLDjA131kh2Sk+x3dgLxhTf7yKJXZC0jg3d
-----END PRIVATE KEY-----"
config.yaml
http:
port: 10001
transport:
timeout: 60.0
buffer_size: 65535
interfaces:
- 127.0.0.1
- 192.168.0.1
version: 1
yaml with env, dotenv and args overrides
from datetime import datetime
from ipaddress import IPv4Address
from os import environ
from pathlib import Path
from typing import Dict, Union
from pydantic import BaseModel, Field
from ipl_config import BaseSettings
class TcpTransport(BaseModel):
timeout: float # from config file
buffer_size: int = Field(0.01, env='BUFF_SIZE') # from env
class Http(BaseModel):
host: str # from dotenv
bind: str # from env
port: int # from config file
interfaces: list[IPv4Address] # from config file
transport: TcpTransport
http2: bool = Field(env='HTTP_2') # from dotenv
class IplConfig(BaseSettings):
version: str # from kwargs
created: datetime # from env
http: Http # env also works for complex objects
private_key: str # from dotenv
group_by_id: Union[Dict[int, str], None]
if __name__ == "__main__":
environ['app_http_bind'] = '1.1.1.1'
environ['buff_size'] = '-1'
environ['app_created'] = '2000-01-01T00:00:00Z'
environ['app_group_by_id_0'] = 'root'
root = Path('.')
cfg = IplConfig(
version='v0.0.1a1',
env_file=root / '.env',
config_file=root / 'config.yaml',
)
cfg.write_json(indent=4)
print()
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
ipl-config-0.1.9.tar.gz
(9.5 kB
view hashes)
Built Distribution
Close
Hashes for ipl_config-0.1.9-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9222fe1c957a0d8c785887f9de90d56c25338cd204434ed052c6c77285af9e95 |
|
MD5 | 39269a0e958fe91cf5166b514dbba39f |
|
BLAKE2b-256 | 8230bc19db95d0f49fec669eebae897152b1b5d62eecc8daa37aa1e9ab204a97 |