Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
[0.6.0] - 2026-02-24
Added
parse_dep_string()public helper ingeneratorsmodule for parsing PEP 621 dependency strings intoDependencySpecobjects.DependencyGroup.include_groupsfield for PEP 735include-groupsupport. Dependency groups can now reference other groups (e.g., dev includes test).- Full PEP 735
include-groupround-trip: loading, generating, and writing{include-group = "..."}entries in[dependency-groups]. test_generators.pywith 23 tests covering TOML generation, PEP 639 license handling, PEP 735 include-group support, file I/O, backup creation, config loading, and round-trip integrity.
Changed
- PEP 639 license format: License is now emitted as a simple SPDX string (
license = "MIT") instead of the legacy table format ([project.license] text = "MIT"). Old-format files are normalized on load. - Default Python version: Changed from
>=3.8/>=3.11to>=3.12across models, CLI, and generated output. Python 3.11 and earlier are EOL. - Removed
tomlidependency: Since Python >=3.12 is required, the stdlibtomllibis always available for TOML reading. Onlytomli-wis needed for writing. - Classifiers updated: Removed Python 3.11 classifier (not supported), added Python 3.14.
_load_existing_config()renamed toload_config(): Now a public method onPyProjectUpdaterinstead of a private one.to_pep621_string()now differs fromto_string(): PEP 621 output omits editable flags (-e) and local paths which are not valid in pyproject.toml dependency specifiers.- Logging replaces
print(): Parsers and generators now useloggingmodule instead of bareprint()calls. - Makefile modernized:
lintusesruff check+ruff format --check(was black).formatusesruff format(was black).type-checkusesty check(was mypy). All commands useuv runanduv sync. - Pre-commit config rewritten: Removed black, isort, mypy, flake8, django-upgrade, pyupgrade, yesqa, prettier, commitizen, bandit, safety, and broken local hooks. Now uses only pre-commit-hooks v5, ruff v0.14, and codespell v2.4.
- Authors format: Changed from
[[project.authors]]table to inlineauthors = [{...}]syntax.
Removed
- Dead TOML library fallback chains in generators (tried
tomli_w->toml-> manual writer, andtomllib->tomli->toml). Since Python >=3.12,tomllibis always available. _write_toml_manually()method (~85 lines of dead code) fromPyProjectGenerator.- Automatic empty
[tool.uv]table generation (uv reads[dependency-groups]natively). - Automatic
[tool.hatch.build]with hardcodedpackages = ["src"](wrong for non-src layouts).
[0.5.0] - 2026-01-24
Added
- MkDocs-based documentation (mkdocs, mkdocs-material, mkdocstrings). API reference via mkdocstrings.
- Doc pages: code_of_conduct, contributors, development, workflows (reference for
.github/workflows/). Content from rootCODE_OF_CONDUCT.md,CONTRIBUTORS.md, andDEVELOPMENT.mdmerged into docs; those files removed. [tool.uv]default-groups = ["dev", "test", "docs"]inpyproject.toml.
Changed
- Version: single source of truth in pyproject.toml — Version is read only from
pyproject.toml._version.pyusesimportlib.metadatawhen installed, or readspyproject.tomlfrom source. Removed hardcoded__version__from__init__.py. CLI anddepcon.__version__both derive from this. - Documentation: Sphinx -> MkDocs — All docs converted from RST to Markdown.
docsdependency group: Sphinx deps replaced with mkdocs, mkdocs-material, mkdocstrings, pymdown-extensions.[tool.rumdl]flavor set tomkdocs. Makefile:docs/docs-serve/docs-cleanuse mkdocs andsite/. GitHub docs workflow:mkdocs build, publishsite/to GitHub Pages. - Docs trimmed: redundancy, novice-oriented content, and marketing removed; Code of Conduct shortened. Release/contributing docs: version only in
pyproject.toml.
Fixed
- Ruff lint: B007, N806, SIM102, W293, N805 (Pydantic
@field_validatorcls), B904 (raise ... fromin parsers).
[0.4.1] - 2025-12-08
Fixed
- Fixed broken LICENSE link in documentation
- Fixed GitHub Actions workflows to use dependency-groups correctly
- Improved dependency group nesting using PEP 735
include-groupsyntax
[0.4.0] - 2025-12-08
Added
- New
listcommand to list all dependency groups in pyproject.toml - New
checkcommand to check for common issues (duplicates, missing dependencies) - Enhanced
convertcommand with--use-optional-depsflag to choose between dependency-groups (PEP 735) and optional-dependencies (PEP 621 extras) - Enhanced
convertcommand with--remove-duplicatesflag to automatically remove duplicate dependencies - Enhanced
convertcommand with--strictflag for strict error handling - Enhanced
showcommand with--groupoption to filter by specific dependency group - Enhanced
validatecommand with--check-pypiflag to verify packages exist on PyPI - Improved duplicate dependency detection and removal
- Better error messages and validation output
- Default Python version requirement updated to >=3.11
Changed
- Default Python version requirement changed from >=3.8 to >=3.11 to align with modern standards
- Improved handling of dependency-groups vs optional-dependencies
- Enhanced CLI help text and error messages
- Better integration with uv and modern Python packaging tools
Fixed
- Fixed duplicate dependency handling across groups
- Improved error handling in various commands
- Better validation of dependency specifications
[0.3.0] - 2025-12-08
Added
- Full PEP 735 support for dependency-groups
- New
exportcommand to export dependencies to requirements.txt format - New
diffcommand to compare dependencies between pyproject.toml and requirements files - New
synccommand to sync dependencies from pyproject.toml to requirements files - Enhanced
showcommand to display both dependency-groups and optional-dependencies - Support for distinguishing between dependency-groups (PEP 735) and optional-dependencies (PEP 621 extras)
- Improved validation for both dependency types
- Comprehensive tests for new CLI features
Changed
- Properly distinguish between dependency-groups (PEP 735) and optional-dependencies (PEP 621)
- Development dependencies now use dependency-groups by default for better uv compatibility
- Updated documentation to reflect latest PEP standards
- Improved error messages and validation output
- Enhanced CLI help text and examples
Fixed
- Fixed handling of dependency-groups vs optional-dependencies in pyproject.toml
- Improved parsing of both dependency types from existing pyproject.toml files
[0.2.1] - 2025-10-15
Added
- Initial release of depcon
- Full PEP 621 support
- Intelligent dependency grouping
- Rich CLI interface
- Multiple build backend support
- Tool integration (uv, hatch, poetry)
- Advanced validation
- Comprehensive test suite
[0.2.0] - 2025-10-15
Added
- Complete rewrite with modern architecture
- Full PEP 621 support
- Intelligent dependency grouping
- Rich CLI interface
- Advanced validation
- Multiple build backend support
- Tool integration (uv, hatch, poetry)
Changed
- Modernized codebase
- Improved error handling
- Enhanced user experience
[0.1.x] - 2024-12-12
Added
- Basic requirements.txt to pyproject.toml conversion
- Limited feature set
Changed
- Initial implementation