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.6
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.6.tar.gz | 81.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cloud_dog_config-0.3.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 150.6 kB
Release files / cloud_dog_config-0.3.6.tar.gz
| Download URL | cloud_dog_config-0.3.6.tar.gz |
|---|---|
| Size | 81.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ea28a6939c4230cb64d53fd30304d996cb26fda51af7486a384f2761b0bdf2ee
|
|
BLAKE2b-256 checksum How to use checksums |
7f65cc8552c662a4b87b6f8cf116930d8f00d6e41d4de1388a1a5156c96e39a2
|
| 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.6-py3-none-any.whl
| Download URL | cloud_dog_config-0.3.6-py3-none-any.whl |
|---|---|
| Size | 69.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
187b3da0ffe0ff6f44f3acd3bb5b4c580b8617c5c639e030b46d4bea11b63590
|
|
BLAKE2b-256 checksum How to use checksums |
5ec79c30bda38a4da7b2e42110c21d5e444635d3c5608dae2ec1618faf4cad3b
|
| 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.6
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.