feat: Migrate to PEP 621 compliant pyproject.toml format
This commit migrates the pyproject.toml file to be fully compliant with PEP 621, enabling interoperability with tools like uv, pip, and other standard Python packaging tools, while maintaining full compatibility with Poetry.
Key changes:
-
Added
[project]table: Moved core project metadata (name, version, description, authors, license, classifiers, dependencies, optional dependencies, and requires-python) to the standardized[project]table as specified by PEP 621. This includes using PEP 508 strings for dependencies. -
Maintained
[build-system]: Kept the[build-system]table pointing to Poetry's build backend, ensuring thatpip(and thusuv) can correctly build the package from source. -
Moved
[tool.ruff]: Moved the[tool.ruff]configuration higher in the file for better organization. -
Refactored project urls: Correctly use the
[project.urls]table, as specified by PEP 621.
This change allows developers to choose between using Poetry or other dependency management and installation tools. Poetry can still be used for building and publishing, leveraging its existing tooling.
Please review the following checklist.
- [x] Docstrings on all new or modified functions / classes
- [x] Updated documentation
- [x] Updated CHANGELOG.md
This will have to be a "taking your word for it" change. Thanks!
I appreciate your trust, but I'd strongly encourage testing this change thoroughly first. While it works in my local environment with both Poetry and uv, PEP 621 changes can have subtle implications. Since this affects the project's core configuration, it would be best to verify it works as expected in your environment and CI pipelines before merging. I opened this PR to potentially benefit the wider community, but I value project stability over speed of adoption. Happy to help with testing or make adjustments if needed.