Update setuptools requirement from >=42 to >=82.0.1#349
Update setuptools requirement from >=42 to >=82.0.1#349dependabot[bot] wants to merge 1 commit intomainfrom
Conversation
Updates the requirements on [setuptools](https://github.com/pypa/setuptools) to permit the latest version. - [Release notes](https://github.com/pypa/setuptools/releases) - [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst) - [Commits](pypa/setuptools@v42.0.0...v82.0.1) --- updated-dependencies: - dependency-name: setuptools dependency-version: 82.0.1 dependency-type: direct:development ... Signed-off-by: dependabot[bot] <support@github.com>
🤖 Cursor Dependency AnalysisSupply-Chain Malware ReviewVerifying how the project uses setuptools and scanning for Verdict: benign Why this is not malware
Actionable follow-up (compatibility, not security): Setuptools 82 removes Compatibility AnalysisSearching the repo for setuptools usage and compatibility with setuptools 82 changes. 1) Where
|
| Location | Role |
|---|---|
pyproject.toml |
build-system.requires pins setuptools>=82.0.1; backend setuptools.build_meta; [tool.setuptools_scm] for versions |
setup.py |
from setuptools import Command, Extension, setup; setuptools.command.build / build_ext; custom Command / build_ext subclass; setup(...) with ext_modules and cmdclass |
.github/workflows/build.yml |
Comment about setuptools/cibuildwheel on Windows; lint/typecheck runs on setup.py |
.github/workflows/codeql-analysis.yml, README.md |
pip install lists that include build helpers (not a direct API surface) |
Not used in project code: tests/ and src/ have no setuptools, pkg_resources, or distutils imports.
The .upstream-dependency/ tree is vendored upstream (setuptools itself) and is not part of chiavdf’s runtime/build logic for this analysis.
2) Overlap with setuptools 81–82 breaking changes
From the PR notes:
pkg_resourcesremoved from setuptools (v82) — No overlap: chiavdf does not importpkg_resources.setup.py --dry-runremoved (v81) — No overlap in this repo’s workflows: nosetup.py --dry-run; Rust workflow usescargo publish --dry-run, which is unrelated.
setup.py uses stable, still-supported pieces: Extension, setup, Command, build / build_ext, and distribution.get_version() inside a custom build_ext. None of these are the pkg_resources removal.
3) Risks / unknowns
- Build isolation / pins: CI uses cibuildwheel and PEP 517 builds; they will install whatever satisfies
pyproject.toml. Ensure pip / cibuildwheel /buildcan resolvesetuptools>=82.0.1withsetuptools_scm[toml]>=3.5.0andpybind11(usually fine; any failure would show up as CI, not as silent runtime breakage). - Downstream environments that still rely on
import pkg_resourceswithout declaringsetuptoolsorsetuptools’s old bundle are a general ecosystem issue, not something chiavdf’s sources do. - Edge regression in setuptools itself is always possible; there is no project-specific API usage that flags a known incompatibility.
4) Recommendation
Merge (treat green CI on the PR as the main gate).
If CI fails, investigate resolver/build-backend issues first (versions of setuptools_scm, wheel, pip in the isolated build env) rather than chiavdf’s setup.py patterns, which do not hit the documented removals.
Malware Scan Summary
- Status: warn
- Warn only mode:
true - Changed upstream files scanned:
8 - Resolution strategy:
commit_list - Changed node/vendor paths:
0 - Changed lockfiles:
0 - Resolved refs: from=
n/ato=n/a - Unicode findings (post-allowlist):
0 - Confusable findings (post-allowlist):
0 - IOC findings (post-allowlist):
0 - Heuristic findings (post-allowlist):
18
Top findings
setuptools/tests/test_setuptools.py:124dynamic_require_import ::req = Require('Tests', None, 'tests', homepage="http://example.com")docs/conf.py:189shell_process_spawn ::('py:func', 'distutils.spawn.find_executable'), # undocumenteddocs/conf.py:190shell_process_spawn ::('py:func', 'distutils.spawn.spawn'), # undocumentedpyproject.toml:62shell_process_spawn ::"pytest-subprocess",NEWS.rst:1988shell_process_spawn ::to :func:compile the setup script code before :func:exec-ing it.NEWS.rst:3559shell_process_spawn ::* #2368: In distutils, restore support for monkeypatched CCompiler.spawn per pypa/distutils#15.NEWS.rst:3613shell_process_spawn ::* #2357: Restored Python 3.5 support in distutils.util for missing subprocess._optim_args_from_interpreter_flags.NEWS.rst:3707shell_process_spawn ::* #2257: Fixed two flaws in distutils._msvccompiler.MSVCCompiler.spawn.NEWS.rst:3727shell_process_spawn ::* #2212: (Distutils) Allow spawn to accept environment. Avoid monkey-patching global state.NEWS.rst:3758shell_process_spawn ::* #2228: Applied fix for pypa/distutils#3, restoring expectation that spawn will raise a DistutilsExecError when attempting to execute a missing file.NEWS.rst:3798shell_process_spawn ::To avoid getting any legacy behavior from the standard library, projects are advised to always "import setuptools" prior to importing anything from distutils. This behavior happens by default when using pip install or pep517.build. Workflows that rely on setup.py (anything) will need to first ensure setuptools is imported. One way to achieve this behavior without modifying code is to invoke Python thus: python -c "import setuptools; exec(open('setup.py').read())" (anything).NEWS.rst:5120shell_process_spawn ::a subprocess.NEWS.rst:6891shell_process_spawn ::for legacy SVN releases and support for SVN without the subprocess commandNEWS.rst:7510shell_process_spawn ::* Distribute #70: exec bit on non-exec filesNEWS.rst:8087shell_process_spawn ::* Added exhaustive testing of the install directory, including a spawn testNEWS.rst:3051network_c2_indicator ::* #917: setup.py install and easy_install commands are now officially deprecated. Use other standards-based installers (like pip) and builders (like build). Workloads reliant on this behavior should pin to this major version of Setuptools. See Why you shouldn't invoke setup.py directly <https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html>_ for more background.setuptools:0ghost_version_or_missing_tag ::>=82.0.1setuptools:0maintainer_drift ::>=42->>=82.0.1
Updates the requirements on setuptools to permit the latest version.
Changelog
Sourced from setuptools's changelog.
... (truncated)
Commits
5a13876Bump version: 82.0.0 → 82.0.151ab8f1Avoid using (deprecated) 'json.version' in tests (#5194)f9c37b2Docs/CI: Fix intersphinx references (#5195)8173db2Docs: Fix intersphinx references09bafbcFix past tense on newsfragment461ea56Add news fragmentc4ffe53Avoid using (deprecated) 'json.version' in tests749258bCleanuppkg_resourcesdependencies and configuration (#5175)2019c16Parseext-module.define-macrosfrompyproject.tomlas list of tuples (#5169)b809c86Sync setuptools schema with validate-pyproject (#5157)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)Note
Medium Risk
Build tooling now requires a much newer
setuptools, which could break builds/environments that relied on older versions orpkg_resourcesbehavior.Overview
Updates
pyproject.tomlbuild-system requirements to raise the minimumsetuptoolsversion from>=42to>=82.0.1, ensuring builds use the newer packaging toolchain.Reviewed by Cursor Bugbot for commit 11d3846. Bugbot is set up for automated code reviews on this repo. Configure here.