fix: pin setuptools<81 so runner works on a fresh install - #11
Merged
Merged
Conversation
`pip install oswatcher-plugins` followed by `runner --help` crashed with ModuleNotFoundError: No module named 'pkg_resources' on any clean Python 3.12 environment. pypeln pulls in stopit, which imports pkg_resources at module load purely to populate __version__. setuptools 81 removed pkg_resources, and the existing `setuptools = "*"` constraint resolved to 84, so the dependency that was added to prevent this exact failure had gone stale. stopit 1.1.2 is the latest release and still carries the import, so pinning is the available fix. This is the first command a new contributor runs: CONTRIBUTING.md names writing a plugin as the lowest-friction way to contribute and routes here. Also corrects the README usage line, which documented the arguments in the wrong order and against a branch name. The real signature is `runner COMMIT_HASH PLUGIN_TYPE_STR`. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FNgjQ6o613ULuMRGhLnyUU
Wenzel
added a commit
that referenced
this pull request
Aug 24, 2026
Releases the setuptools<81 pin from #11. PyPI still serves 0.14.1, which resolves setuptools 84 and crashes on `runner --help` with ModuleNotFoundError: No module named 'pkg_resources' via pypeln -> stopit. That is the first command a new plugin author runs. Verified against a fresh venv install of the built wheel: setuptools 80.10.2, `runner --help` exits 0. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FNgjQ6o613ULuMRGhLnyUU
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
A cold-start audit found that the first command a new contributor runs crashes.
The bug
Reproduced on a clean Python 3.12 venv.
pypelnpulls instopit, which importspkg_resourcesat module load purely to populate__version__. setuptools 81 removedpkg_resources, and the existingsetuptools = "*"constraint resolved to 84, so the dependency added to prevent this exact failure had gone stale.This matters more than a normal packaging nit: CONTRIBUTING.md names writing a plugin as "the lowest-friction way in" and routes newcomers straight here.
The fix
setuptools = "<81", which is what setuptools' own deprecation warning recommends.Considered and rejected: upgrading stopit (1.1.2 is the latest release and still carries the import; upstream looks abandoned), and dropping pypeln (used in
symbols.pyforpl.process.mapparallelism, so removing it is a behaviour-changing refactor of the highest-value plugin and does not belong in an install fix).Also in this PR
The README documented
runner <plugin_name> <branch_name>. The real signature isrunner COMMIT_HASH PLUGIN_TYPE_STR, so the arguments were in the wrong order and it takes a commit hash, not a branch. Corrected, with the available plugin names and a pointer to--force.Verification
Built the wheel, installed it into a fresh venv, and ran the command that previously crashed:
Known remaining issue
stopitstill emits aUserWarningaboutpkg_resourceson every invocation. Cosmetic and out of scope here; the real resolution is droppingpypeln, which deserves its own PR.🤖 Generated with Claude Code
https://claude.ai/code/session_01FNgjQ6o613ULuMRGhLnyUU