Skip to main content

TyConf

TyConf ≡ Typed Config - a type-safe configuration management library for Python with runtime validation.

What is TyConf?

TyConf is a modern Python 3.13+ library that makes managing application configuration simple, safe, and intuitive. It provides runtime type validation, value validation, read-only properties, and freeze/unfreeze capabilities to help you build robust applications.

Quick Start

from tyconf import TyConf
from tyconf.validators import range

# Create configuration with type-safe properties and validators
config = TyConf(
    host=(str, "localhost"),               # Mutable string
    debug=(bool, True),                    # Mutable boolean
    port=(int, 8080, range(1024, 65535)),  # Validated mutable range
    users=(list, ["admin", "root"], True)  # Immutable list
)

# Access values easily
print(config.host)       # 'localhost'
config.port = 3000       # Type-checked and range-validated automatically
config.port = "3000"     # Rises TypeError: Property 'port': expected int, got str
config.users = ["guest"] # Rises AttributeError: Property 'users' is read-only

Serialization

TyConf supports exporting and importing configurations in multiple formats:

from tyconf import TyConf

config = TyConf(
    host=(str, "localhost"),
    port=(int, 8080),
    debug=(bool, True)
)

# Export to JSON (with full metadata)
config.to_json('config.json')

# Export to JSON (values only)
config.to_json('values.json', values_only=True)

# Export to TOML (requires: pip install tyconf[toml])
config.to_toml('config.toml')

# Import from JSON
config = TyConf.from_json('config.json')

# Import from TOML (built-in via tomllib)
config = TyConf.from_toml('config.toml')

# Load from environment variables
config = TyConf.from_env(prefix='APP_', schema={
    'host': str,
    'port': int,
    'debug': bool
})

# Merge configurations
config.load_json('overrides.json')  # Merge JSON into existing config
config.load_env(prefix='APP_')      # Merge environment variables

Key Features

✅ Type Safety - Runtime type validation with support for Optional and Union types
✅ Value Validation - Built-in validators (range, length, regex, etc.) and custom validation functions
✅ Read-Only Properties - Protect critical configuration from accidental changes
✅ Freeze/Unfreeze - Lock entire configuration to prevent modifications
✅ Serialization - Export/import configurations to JSON, TOML, and environment variables
✅ Intuitive API - Both attribute (config.host) and dict-style (config['host']) access
✅ Copy & Reset - Easily duplicate or restore default configurations
✅ Zero Dependencies - Pure Python with no external requirements (TOML write requires optional dependency)

Installation

pip install tyconf

Requirements: Python 3.13+

Optional Dependencies:

# For TOML export support (TOML import is built-in via tomllib)
pip install tyconf[toml]

Documentation

Examples

See the examples/ directory for complete examples:

License

MIT License - see LICENSE for details.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Links

Metadata

Release files for tyconf 1.2.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 tyconf 1.2.1
File Size Uploaded
tyconf-1.2.1.tar.gz 31.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tyconf 1.2.1
File Interpreter ABI Platform
tyconf-1.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 51.2 kB

Release files / tyconf-1.2.1.tar.gz

Download URL tyconf-1.2.1.tar.gz
Size 31.7 kB
Tags Source
SHA-256 checksum
How to use checksums
2f9dd415bff32a4878259ed196e5b6d6a9f329930387dcba04abdfda3379c519
BLAKE2b-256 checksum
How to use checksums
c22375184c171707da1a5b178f41bc438454eb97af5de154574007c07081f989
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release files / tyconf-1.2.1-py3-none-any.whl

Download URL tyconf-1.2.1-py3-none-any.whl
Size 19.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
48e156e7e5e96f58a508bae3245c8d5acceff1158e67ec23d3dc0989d2ae766b
BLAKE2b-256 checksum
How to use checksums
e30306ad3e2955ca5315354d2ee951714f5fc37a70328506e663266f65326c98
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release history Release notifications | RSS feed

This release

1.2.1 This release

2 release files

1.2.0

2 release files

1.1.2

2 release files

1.1.0

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.9.5

2 release files

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