-
-
Notifications
You must be signed in to change notification settings - Fork 54
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Move to a pure PEP621 project configuration. #387
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This seems like a good move to me 👍
"setuptools==69.0.0", | ||
"setuptools_scm==8.0.4", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why the pins here instead of minimum versions like before? Surely we support more than just these exact versions.
(The setuptools pyproject.toml docs say that at least setuptools 61.0.0 is required for pyproject.toml support.)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reproducibility. For example, the dynamic
argument in pyproject.toml wasn't required on setuptools 68.0, but it is required on 69.0. If you use an open ended pin, a project configuration that works on the day of release can break in the future.
With a hard pin, we know the configuration works with this specific set of versions, and that won't change. Those versions might not be compatible with future versions of pip, Python etc - but then, we can't make any guarantees about what might happen in future regardless.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To clarify further: build-requires specify the environment that will be created specifically for the purpose of wheel creation. It's guaranteed to be an isolated environment (unless you specifically disable isolation, in which case you're on your own), so we don't need to maintain maximum compatibility with the end-user's environment. You're specifying the exact environment that you want to be present to build the wheel; an open ended pin undermines that, because we can't guarantee that the build environment will match a configuration that we know works.
Inspired by beeware/toga#2229, a full PEP621 configuration update.
There's no functional difference; the one technical benefit (aside from keeping up with modern standards) is that because we're using
setuptools_scm
, we don't need to maintain MANIFEST.in any more. The source discovery process is also much simpler - it requiring no explicit setuptools configuration, as we're entirely relying on one of the "default" project layout patterns.I've audited the generated tarballs, and they have identical content, except for:
not-zip-safe
file in the egg-info. This file was needed in the days of eggs andeasy-install
, but is now considered deprecated.platform: any
declaration. This has been subsumed by wheel tagging.Also removes the Travis CI configuration, since that's long dead.
PR Checklist: