{"categories":[{"label":"Build Tools","url":"https://skillfed.io/packages/category/software-development-build-tools/2"}],"enrichment":{"capability":"Parses and edits configparser-compatible INI files while preserving whitespace, comments, and formatting, operating as a concrete syntax tree (CST) rather than a lossy key-value store.","skillfed_tags":["config-management","cst-parser"],"use_cases":["Programmatically update setup.cfg while preserving developer comments and formatting","Build configuration management tools that need to edit INI files without destroying readability","Automated code generation or build-system integration that modifies config files in place","Testing frameworks that need to verify or modify configuration files while keeping diffs human-readable"],"what_it_does":"imperfect is a CST-based configuration file editor designed to work with files that follow the configparser format (INI-style). Unlike standard configparser, which reads and discards formatting, imperfect parses the file into a tree of nodes that preserves every detail\u2014whitespace, comments, line breaks\u2014so you can make surgical edits and write the file back without losing its original structure and readability.\n\nYou parse a file with `parse_string()`, then manipulate sections and entries directly. For simple cases, you can use `set_value()` to add or change a key-value pair. For precise control over placement and formatting, you construct `ConfigEntry` and `ValueLine` objects with explicit whitespace control, then insert them into the tree. The package follows configparser's quirks for compatibility, including lenient section name parsing and specific whitespace handling conventions. It requires Python 3.8 or later and depends only on moreorless for diff utilities.","worth_installing":"Yes, if you need to edit INI-format config files programmatically and preserving formatting matters. The package is stable, low-friction to install, and solves a real problem that standard configparser cannot. The aging maintenance status (477 days since last release) is not a blocker for a mature tool, but verify it handles your specific INI dialect before relying on it in production."},"id":"imperfect","links":{"html":"https://skillfed.io/packages/imperfect","md":"https://skillfed.io/packages/imperfect.md","pypi":"https://pypi.org/project/imperfect/"},"maintenance":{"status":"aging"},"meta":{"latest_release":"2025-04-24","license_spdx":null,"license_treatment":"permissive","name":"imperfect","python_support":"supports_current","summary":"A CST-based config editor for configparser"},"popularity":{"monthly_downloads":745667,"position":5171,"tier":"top_15000"},"security":{"n_vulnerabilities":0},"version":"0.4.0"}
