template-id: T-PKG-RME template-version: 1.0 applies-to: README.md registry: package
platform-config
Package: cloud_dog_config
Standard: PS-80 (Configuration Management)
Version: 0.2.0
Status: Implemented
Purpose
Drop-in Python library implementing the PS-80 configuration management standard. Provides deterministic config loading, Vault secret resolution, safe expression evaluation, and an immutable GlobalConfig runtime object.
Key Features
- Canonical precedence chain:
os.environ → env-file(s) → config.yaml → defaults.yaml - Config compile phase:
${vault.*}lookups,${ENV_VAR}references,||fallbacks,?:ternaries,+string concatenation,==/!=equality,!negation - Escaped-placeholder compatibility for env/shell/docker:
$${...}and\${...}are treated as${...} - Vault object/bundle assignment (deep-merge entire secret groups)
- Immutable
GlobalConfigsnapshot with version tracking - Safe expression evaluator (no arbitrary code execution)
- Secret redaction utilities
- Hot reload pipeline with audit events
- Post-compile transform hook chain (
transforms=[...]) - Environment metadata accessor (
get_env_metadata()) - Legacy migration adapter (
LegacyConfigAdapter) - Multi-profile resolver (
resolve_profile) - Typed model binding (
bind_model) - Structured config diff + redacted export utilities
- Reload timeout protection (
reload_config(timeout_s=...)) - Pytest plugin with
--envenforcement - Zero framework dependency (works with FastAPI, Flask, CLI, etc.)
Dependencies
- Required:
pyyaml - Optional:
hvac(Vault client),pydantic(schema validation)
Expression Language
Config values support ${...} expressions with operators for URL composition and conditional logic:
# URL from parts with fallback defaults
api_url: ${SCHEME || 'https'}://${API_HOST}:${API_PORT || '8080'}/api/v1
# Conditional SSL
verify_ssl: ${ENV == 'production' ? true : false}
# Vault secret with env override
db_password: ${MY_DB_PASS || vault.dev.db.password || 'changeme'}
# String concatenation inside ternary
url: ${SSL ? 'https://' + HOST : 'http://' + HOST}
See Expression Language Reference for full documentation.
Documents
- EXPRESSION-LANGUAGE.md — Expression syntax, operators, URL patterns
- REQUIREMENTS.md — Functional and non-functional requirements
- ARCHITECTURE.md — Module layout, component design, integration pattern
- TESTS.md — Test plan, directory structure, coverage map
Quick Start
from cloud_dog_config import load_config, get_config
config = load_config(env_files=["private/env-test"])
model = get_config("llm.model")
Installation
pip install cloud-dog-config
API Overview
load_config(...)loads and compiles layered configuration input.get_config(...)reads values from the active config snapshot.bind_model(...)validates config into typed consumer models.
Examples
- Load layered config from
tests/env-UT,config.yaml, anddefaults.yaml. - Resolve Vault-backed values through
${vault.*}expressions at runtime. - Bind compiled config into a typed model for service startup.
Validation Status (2026-02-18)
- Package implemented and built:
cloud_dog_config-0.2.0 - Quality gates run in this uplift:
pytest tests --env tests/env-IT -q->103 passed, 3 skippedpytest tests --env tests/env-UT -q->103 passed, 3 skippedruff check cloud_dog_config tests-> passruff format --check cloud_dog_config tests-> passpython -m build --no-isolation-> pass (sdist + wheel)
Licence
Apache-2.0 — Copyright (c) 2026 Cloud-Dog, Viewdeck Engineering Limited
Metadata
Release files for cloud-dog-config 0.3.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| cloud_dog_config-0.3.5.tar.gz | 80.4 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cloud_dog_config-0.3.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 150.0 kB
Release files / cloud_dog_config-0.3.5.tar.gz
| Download URL | cloud_dog_config-0.3.5.tar.gz |
|---|---|
| Size | 80.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c27c63200018b29881f86a8d82f9102317205ab55338f3a8a4e76ac61b7dd955
|
|
BLAKE2b-256 checksum How to use checksums |
b8e18d3771761254a1851625f7d3a9d5050a7799e504e8b547bfc97f54b2a720
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.12
|
Release files / cloud_dog_config-0.3.5-py3-none-any.whl
| Download URL | cloud_dog_config-0.3.5-py3-none-any.whl |
|---|---|
| Size | 69.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1769fc34fa03e1a55b315b88eec51fc21ff4e87ed06dfb89651515c4d0869c1f
|
|
BLAKE2b-256 checksum How to use checksums |
fe63b1d01946a20197a61252a7abae415a6811c26bcc22442ac9bd7ecbc33766
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.12
|
Security for cloud-dog-config 0.3.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.