typed-settings
Typed settings based on attrs classes
Decision gist · record as of 2026-08-14
Yes, with conditions. Typed Settings is stable and permissively licensed, with low install friction and no mandatory dependencies. It's well-suited for applications that need structured, validated configuration from multiple sources. However, the aging maintenance status (258 days since last release) means you should verify that the project remains actively supported for your use case before adopting it in a critical system.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python 3.10 or later; optional features require additional dependencies (attrs, Pydantic, Click, etc.).
- Low friction: pure Python wheel with only exceptiongroup and tomli as runtime dependencies.
- Marked as aging but stable—last release 258 days ago.
License · maintenance · safety
MIT (permissive) — MIT license (permissive): you can use this in commercial and proprietary projects with minimal restrictions, provided you include the license notice.
last release 2025-11-29 (258 days)
0 known vulnerabilities (OSV.dev, 2026-08-14) · 2,012,006 downloads/mo, #3,364 on PyPI
Alternatives
Verify before relying
import typed_settings as ts
settings = ts.load(cls=Settings, appname="myapp")
print(settings)- Whether the aging maintenance status (258 days since last release) affects active security response.
- Performance characteristics when loading from many sources or with large nested settings structures.
- How well custom loaders and processors integrate with third-party type converters beyond cattrs.
What it is and what it does
Typed Settings is a configuration framework that unifies loading settings from multiple sources—environment variables, config files, secret vaults, and custom sources—into a single typed Python object. You define your settings as a class with type annotations, and the library loads and merges values from all configured sources, converting them to the correct types and validating them. It handles nested structures, provides optional CLI integration, and supports value post-processing. The library has no mandatory dependencies beyond tomli on older Python versions; optional features like support for various class frameworks, templating, and file format readers are available via extras.
Typed Settings is designed for any Python application that needs structured configuration: server processes, containerized apps, command-line tools, and data-analysis scripts. It aims to solve the fragmentation of config libraries by offering a single, extensible interface that works with multiple file formats and sources, with full type safety and validation built in.
Use it for
- Load server configuration from environment variables and a config file, merging both with environment taking precedence.
- Build a CLI tool where users can override settings via command-line flags while defaults come from a config file.
- Retrieve secrets from a vault and interpolate them into settings using templates.
- Define nested settings structures and validate all values on load.
- Extend the loader system to support a custom config source not built into the library.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, with conditions.
Typed Settings is stable and permissively licensed, with low install friction and no mandatory dependencies. It's well-suited for applications that need structured, validated configuration from multiple sources. However, the aging maintenance status (258 days since last release) means you should verify that the project remains actively supported for your use case before adopting it in a critical system.
Install
typed-settings on PyPI
Before you install
Low friction: pure Python wheel with only exceptiongroup and tomli as runtime dependencies. Marked as aging but stable—last release 258 days ago.
Requires Python 3.10 or later; optional features require additional dependencies (attrs, Pydantic, Click, etc.).
License in practice
MIT license (permissive): you can use this in commercial and proprietary projects with minimal restrictions, provided you include the license notice.
Quickstart
import typed_settings as ts
settings = ts.load(cls=Settings, appname="myapp")
print(settings)
Verify before relying
- Whether the aging maintenance status (258 days since last release) affects active security response.
- Performance characteristics when loading from many sources or with large nested settings structures.
- How well custom loaders and processors integrate with third-party type converters beyond cattrs.
Package facts
| License | MIT permissive |
| Python support | Supports the current Python release >=3.10 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 2 packagesexceptiongrouptomli |
| Maintenance | Aging 258 days since the last release |
| First released | |
| Downloads | 2,012,006 / month, #3,364 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 5 - Production/StableEnvironment :: ConsoleIntended Audience :: DevelopersLicense :: OSI Approved :: MIT LicenseNatural Language :: EnglishOperating System :: OS IndependentProgramming Language :: PythonProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Programming Language :: Python :: Implementation :: CPythonProgramming Language :: Python :: Implementation :: PyPyTopic :: Software Development :: Libraries :: Python ModulesTyping :: Typed |
Evidence: typed_settings-25.3.0-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “configuration management typed”
- typed-settingsLoads and merges settings from multiple sources (environment…
- cabinaCabina provides class-based configuration management with automatic…
- typed-configReads typed configuration from multiple sources (environment…
Give your agent the search over MCP, or paste the wish link into any chat.
More Python Modules packages
Converts domain names between Unicode and ASCII-compatible encoding (Punycode) according to IDNA 2008 and Unicode Technical Standard 46, with security validation and broader script coverage than the standard library.
Install it if you work with internationalized domain names, need to validate domains, or use HTTP clients that depend on it transitively.
Setuptools is a Python build backend and package management tool that handles building, distributing, and installing Python packages, including support for C/C++ extension modules.
PyYAML parses and emits YAML 1.1 data format, enabling serialization and deserialization of configuration files and Python objects to and from human-readable YAML text.
Pydantic validates Python data structures against type hints, coercing and checking input at runtime to ensure it matches a declared schema.
Provides reusable metadata objects for use with PEP-593 `typing.Annotated` to express common constraints like bounds, collection sizes, and predicates on types.
Install it if you use or build libraries that need to express type constraints in a standardized, inspectable way—or if you want to annotate your own types with…
Provides runtime tools to inspect and introspect Python type annotations, enabling programmatic examination of type hints at execution time.
See also environ-config · pydantic-settings · dynaconf · dotenv · config-parser · load-dotenv · pytest-dotenv · cattrs · plaster · python-dotenv