Skip to main content

Priority Config

Universal configuration resolver with clean precedence hierarchy: direct → config → env → default

Python 3.8+ PyPI License: MIT

Installation

pip install priority-config

Quick Start

from priority_config import PriorityConfig

# Create config resolver
config = PriorityConfig(
    config_dict={"port": 3000, "debug": True},
    env_prefix="MYAPP_"
)

# Resolve with precedence
port = config.resolve("port", None, default=8000, type=int)
# Returns: 3000 (from config_dict)

debug = config.resolve("debug", False, default=True, type=bool)
# Returns: False (direct_value takes precedence)

# Environment variables (MYAPP_HOST) override config
host = config.resolve("host", default="localhost")
# Returns: value from MYAPP_HOST env var, or "localhost"

# See resolution log
config.print_resolutions()
# Configuration Resolution Log:
# --------------------------------------------------
# port                 = 3000                 (config)
# debug                = 0                    (direct)
# host                 = localhost            (default)

How It Works

The configuration resolution follows a clean precedence hierarchy:

graph TD
    A[resolve] --> B{direct_val?}
    B -->|Yes| C[Use direct_val]
    B -->|No| D{Key in config_dict?}
    D -->|Yes| E[Use config_dict value]
    D -->|No| F{Environment variable exists?}
    F -->|Yes| G[Use env var + type conversion]
    F -->|No| H[Use default value]
    
    C --> I[Apply masking if sensitive]
    E --> I
    G --> I
    H --> I
    
    I --> J[Log resolution source]
    J --> K[Return final value]
    
    style C fill:#e1f5fe
    style E fill:#f3e5f5
    style G fill:#e8f5e8
    style H fill:#fff3e0
    style I fill:#fce4ec

Precedence Order:

  1. Direct value - Passed directly to resolve()
  2. Config dictionary - From config_dict parameter
  3. Environment variable - With env_prefix + key
  4. Default value - Fallback if nothing else found

Features

  • Clean Precedence: direct → config → env → default
  • Automatic Type Conversion: str, int, float, bool, list
  • Sensitive Data Masking: Auto-detects and masks passwords, keys, tokens
  • Resolution Logging: Track where each value came from
  • Zero Dependencies: Pure Python, works with 3.8+

API Reference

PriorityConfig(config_dict=None, env_prefix="", auto_uppercase=True)

  • config_dict: Dictionary with configuration values
  • env_prefix: Prefix for environment variables (e.g., "MYAPP_")
  • auto_uppercase: Whether to uppercase keys for env lookup

resolve(key, direct_val=None, default=None, type=str, mask=None)

  • key: Configuration key to resolve
  • direct_val: Direct value (highest precedence)
  • default: Default value if not found elsewhere
  • type: Type conversion (str, int, float, bool, list)
  • mask: Override automatic masking of sensitive values

print_resolutions()

Print resolution log showing where each value came from.

clear_log()

Clear the resolution log.

License

MIT

Contact

Yusuke.Watanabe@scitex.ai

Metadata

Release files for priority-config 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 priority-config 0.1.1
File Size Uploaded Provenance
priority_config-0.1.1.tar.gz 5.6 kB Without provenance Details

Built distribution (wheel)

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

Total release size: 11.3 kB

Release files / priority_config-0.1.1.tar.gz

Download URL priority_config-0.1.1.tar.gz
Size 5.6 kB
Tags Source
SHA-256 checksum
How to use checksums
57d5d4082661f90595fac589814c2d268776ad679c131e4ab21545112fb5bd02
BLAKE2b-256 checksum
How to use checksums
edd5d19e8fc4294139ea511cd321fb0be7e0715426e5182b35d18d81e25d9fae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.0rc1

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

Download URL priority_config-0.1.1-py3-none-any.whl
Size 5.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
394b5a7b26d28a0ee714ba25853888596c64cdb2d86bbb59b57d7905d433604c
BLAKE2b-256 checksum
How to use checksums
04d57665a61921aa14adbe67ea6dfe9ceaa178bde8381e9ae2cd3ed43c3648b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.0rc1

Security for priority-config 0.1.1

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.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files No provenance

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