Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Here we go again... there's been a lot of confusion here so I want to double-check everything and make sure we get it done right, so nothing has to be fixed again for a long time.
This PR seeks to eliminate deprecated parts of the build system and clean up the build instructions.
Recent pushes in the Python ecosystem have led to the standardization of different build systems (setuptools, poetry, flit, whatever else) to share a common metadata format, a pyproject.toml file, in order to make installing dependencies more robust (for build dependencies) and less dependent on setuptools (and on its predecessor distutils, which was removed from the standard library in Python 3.12). As part of this, setuptools has been trying to eliminate most places that directly run
setup.py
from the shell, in favor of using the standard tools. They've also deprecated and attempted to remove many features that are non-standard, including running test suites.Having a setup.py file itself isn't deprecated. In fact, as of creating this PR in August, CoilSnake couldn't delete setup.py, because pyproject.toml only supported configuring extension modules in setup.py until a few weeks later (when v74.1.0 released). Only certain uses and fields in the file are deprecated. Despite that, in the current version of this PR, I moved everything I could to the new standardized format (except the extension modules, since the syntax is experimental). I'm not aware of any plans for most of those things to be deprecated, so I'm fine with moving things like the package name back to setup.py to keep the PR minimal.
This PR's a draft for now. Some scattered ideas for what might come next, or might not:
.
in it. What's the pattern?)PyList_Check
andPyLong_Check
aren't part of the stable ABI, and various ergonomics issues around type names in error messages exist that aren't solved until Python 3.13.Research ways to cross-compile extension modules for other platforms?Test building wheels for other platforms using crossenv?