sconf
Simple config supporting CLI modification
What it is and what it does
sconf is a lightweight YAML-based configuration system designed to simplify config management in Python applications, particularly in machine learning and research projects. It loads YAML files, merges multiple configs hierarchically, and allows runtime modification through command-line arguments using an argparse-like syntax. The library supports both dictionary-style and attribute-style access to nested configuration values, with special features like coloring modified keys in output and global config registration for convenient access across modules.
The package targets scenarios where you want to avoid boilerplate argument parsing while maintaining a clean separation between default configs, experiment-specific overrides, and runtime CLI tweaks. It depends on ruamel.yaml for YAML parsing and munch for attribute-style dictionary access. However, the project has not been maintained since September 2021, so it carries the risk of incompatibility with future Python versions or dependency updates.
Use it for:
- Machine learning experiments: manage model hyperparameters across default, experiment, and CLI-provided configs in a single Config object.
- Multi-environment deployments: merge environment-specific YAML files (dev, staging, prod) with CLI overrides for runtime customization.
- Research reproducibility: store experiment configs in YAML, apply CLI modifications, and dump the final config with visual markers of what changed.
- Nested parameter access: access deeply nested config values via dot notation or CLI with dot-separated keys.
- Global config sharing: register a config globally and retrieve it from any module without passing it through function arguments.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
sconf is a YAML-based configuration library that merges multiple config files and applies command-line modifications through an argparse-like interface, with support for nested key access and global config registration.
Yes, if you need a lightweight YAML config system for a stable project and can tolerate no future maintenance. The library is simple, low-friction to install, and has no known vulnerabilities. However, do not use it for new projects requiring long-term support—the package has been abandoned since 2021 and will not receive updates for Python or dependency incompatibilities. Consider it suitable only for internal tools, research code, or projects where you can fork and maintain it yourself if needed.
Install
sconf on PyPI
pip
pip install sconfuv
uv add sconfpoetry
poetry add sconfInstalling sconf
Before you install
Low friction to install; however, the package has been abandoned since September 2021 with no commits or updates in over three years, so expect no maintenance or bug fixes going forward.
License in practice
MIT license permits free use, modification, and distribution with minimal restrictions, making it suitable for both open-source and proprietary projects.
Quickstart
from sconf import Config
cfg = Config(default="configs/defaults.yaml")
cfg.argv_update() # apply CLI modifications
print(cfg['key'])
print(cfg.key)
Requires Python >= 3.6; YAML config files must exist at specified paths for Config initialization.
Verify before relying
- Whether ruamel.yaml and munch dependencies are actively maintained and compatible with modern Python versions.
- Performance characteristics when merging large numbers of config files or deeply nested structures.
- Compatibility with Python versions beyond 3.9, given the package's abandoned status.
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (>=3.6) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 2 — ruamel.yaml, munch |
| Maintenance | abandoned — 1,789 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 173,395/month — #10,310 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: sconf-0.2.5-py3-none-any.whl
Tags
More Software Development packages
Provides backported and experimental type hints…
permissive · top 100 on PyPI
numpyNumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
fastapiFastAPI is a Python web framework for building…
permissive · top 100 on PyPI
annotated-docProvides a way to document function parameters,…
permissive · top 100 on PyPI
typerTyper builds command-line applications from…
permissive · top 1,000 on PyPI
distlibDistlib provides low-level packaging utilities…
permissive · top 1,000 on PyPI
yacsYACS is a lightweight configuration management…
permissive · top 5,000 on PyPI
config-parserMerges configuration from YAML/JSON files,…
agpl · top 5,000 on PyPI
confuseConfuse is a YAML configuration library that…
permissive · top 5,000 on PyPI
condor-git-configProvides an executable hook that fetches…
permissive · top 15,000 on PyPI
dynamic-yamlAdds dynamic string interpolation to YAML…
permissive · top 15,000 on PyPI
draccusDraccus parses command-line arguments and…
permissive · top 5,000 on PyPI
yacmanYacman provides a Python interface for reading,…
permissive · top 15,000 on PyPI
bestconfigLoads configuration from multiple file formats…
permissive · top 15,000 on PyPI
configuratorBuilds a configuration store by layering…
permissive · top 15,000 on PyPI
jsonargparsejsonargparse creates command-line interfaces…
permissive · top 5,000 on PyPI