--- id: yacman version: "1.0.0" license: BSD-2-Clause license_treatment: permissive maintenance: active --- # yacman — A YAML configuration manager License: permissive · Maintenance: active · Downloads: 213.4K/mo ## What it is and what it does Yacman is a YAML configuration manager that wraps pyyaml and ubiquerg to provide a higher-level interface for loading, modifying, and persisting YAML configuration files. It exposes configuration data as a dictionary-like object with support for nested access, environment variable expansion via the `.exp` attribute, and conversion to/from Python objects and YAML strings. The package's main feature is file-safe concurrent access through separate read and write locks, allowing multiple processes to read a configuration simultaneously while ensuring writes are serialized and can rebase against disk changes. Version 1.0.0 introduced explicit constructor functions (from_yaml_file, from_yaml_data, from_obj) and separated locking into read_lock and write_lock context managers, replacing the earlier unified lock pattern. It targets Python 3.10+ and is actively maintained. Use it for: - Load and access nested YAML configuration files in a Python application with dictionary-like syntax. - Safely update YAML config files from multiple processes using write_lock to prevent concurrent writes and data loss. - Expand environment variables in YAML values using the `.exp` accessor for dynamic configuration. - Convert between YAML files, Python dictionaries, and YAML strings for configuration serialization. - Rebase in-memory configuration against disk changes when other processes may have modified the file. ## Worth the install? AI-flagged interpretation of the facts above — verify before relying. Yacman provides a Python interface for reading, writing, and managing YAML configuration files with support for file locking, environment variable expansion, and multi-process safe updates. Yes. Yacman is a lightweight, actively maintained configuration manager with low install friction, permissive licensing, and no known vulnerabilities. Install it if you need file-safe concurrent YAML access with environment variable expansion; skip it if you only need basic YAML parsing without multi-process locking. ## Install pip install yacman uv add yacman poetry add yacman ## Installing yacman Before you install: Low install friction with only two runtime dependencies (pyyaml and ubiquerg). Actively maintained with a recent release (161 days ago) and ongoing repository activity. License in practice: BSD-2-Clause is a permissive license allowing commercial and private use with minimal restrictions; you may use this package freely in most projects. Quickstart: from yacman import YAMLConfigManager, write_lock, read_lock data = {"my_list": [1,2,3], "my_int": 8} ym = YAMLConfigManager.from_obj(data) print(ym["my_int"]) with write_lock(ym) as locked_ym: locked_ym.rebase_and_write() Requires Python 3.10 or later. File-based locking is not re-entrant; do not nest lock contexts on the same file or deadlock will occur. Verify before relying: - Whether ubiquerg dependency is a utility library or introduces significant transitive dependencies. - Performance characteristics when handling large YAML files or frequent concurrent access patterns. ## Package facts - License: BSD-2-Clause (permissive) - Python support: supports_current - Install friction: low - Maintenance: active - Downloads: 213.4K/month (top 15,000 on PyPI) - Known vulnerabilities: none known ## Tags yaml configuration manager, yaml config file handling, yaml file locking, configuration management python, yaml environment variable expansion, yaml read write lock, yaml config updates, yaml-config, file-locking, multi-process [View on SkillFed](https://skillfed.io/packages/yacman) · [View on PyPI](https://pypi.org/project/yacman/)