Skip to content

build: Move package metadata to pyproject.toml and manage dev deps with uv - #84

Open
kylebarron wants to merge 1 commit into
mainfrom
modernize/pyproject
Open

kylebarron wants to merge 1 commit into
mainfrom
modernize/pyproject

Conversation

@kylebarron

@kylebarron kylebarron commented Oct 5, 2026 •

Copy link
Copy Markdown
Owner

Note

This PR was written by Claude (Claude Code), not by @kylebarron.

First PR in the modernization stack, following pydelatin. Moves package metadata into pyproject.toml and manages development dependencies with uv.

Changes

  • Package metadata is now in a PEP 621 [project] table. setup.py only declares the Cython extension and the numpy include path.
  • The classifiers were for Python 3.6–3.8, and now cover 3.9–3.14 to match requires-python. Adds Typing :: Typed, an SPDX license, and [project.urls].
  • setup.cfg is removed, and __version__ is read from installed metadata.
  • Build requirements: setuptools>=77, cython>=3, and numpy>=2.0 for its headers. wheel and build are removed; the build backend doesn't need them.
  • The test extra is replaced by a dev dependency group (pytest, quantized-mesh-tile), and uv.lock is committed. pytest-benchmark and imageio were never imported. quantized-mesh-tile 0.7 supports numpy 2 and installs on Python 3.9–3.14.
  • The CI test job installs the group with pip install --group dev until test: Move tests to tests/, add coverage, and run them across Python versions #90 moves it to uv.
  • Adds DEVELOP.md. README links now use main, and the dead Travis badge is replaced with the GitHub Actions one.

Testing

uv build succeeds in an isolated environment. The sdist and wheel include .pyx, .pyi and py.typed, and leave out site/. The wheel still includes util_cy.c, as the published 0.5.0 wheels do.

🤖 Written by Claude Code

…th uv

Declare project metadata in a PEP 621 `[project]` table so tools can read it
without executing setup.py. setup.py now only declares the Cython extension
and the numpy include directory, which setuptools can't configure from
pyproject.toml alone.

- Fix the classifiers, which still listed Python 3.6-3.8, to list 3.9-3.14,
  and add `Typing :: Typed`. Use an SPDX `license` expression with
  `license-files` (PEP 639), which needs setuptools>=77.
- Drop setup.cfg: bumpversion, flake8, isort and pycodestyle config for
  tools no longer in use.
- Read `__version__` from installed metadata so the version lives in one
  place.
- Drop `wheel` and `build` from build requirements; neither is needed by the
  build backend. Keep cython and numpy>=2.0, which provides the C headers.
- Replace the `test` extra with a `dev` dependency group and commit uv.lock.
  The group only holds what the tests import: pytest-benchmark and imageio
  were unused, and quantized-mesh-tile 0.7 supports numpy 2 and Python
  3.9-3.14.
- Install the `dev` group in the CI test job with `pip install --group
  dev`, since the `test` extra it used is gone.
- Point README links at the renamed `main` branch and replace the dead
  Travis CI badge with the GitHub Actions one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant