fix: installer.no-binary/installer.only-binary :all: to lower priority
Pull Request Check List
Resolves: #10231
- [x] Added tests for changed code.
- [x] Updated documentation for changed code.
Summary by Sourcery
Tests:
- Adds tests to verify that
installer.no-binarytakes precedence overinstaller.only-binarywhen both are specified for a package.
Reviewer's Guide by Sourcery
This pull request fixes an issue where the installer.only-binary configuration was taking precedence over the installer.no-binary configuration. The changes ensure that installer.no-binary always takes precedence when both configurations match a package. This was achieved by modifying the distribution selection logic and adding new test cases.
No diagrams generated as the changes look simple and do not need a visual representation.
File-Level Changes
| Change | Details | Files |
|---|---|---|
Ensured that the installer.no-binary configuration takes precedence over the installer.only-binary configuration when both match a package. |
|
src/poetry/installation/chooser.pytests/installation/test_chooser.pydocs/configuration.md |
Possibly linked issues
- #10231: The PR implements the functionality requested in the issue.
Tips and commands
Interacting with Sourcery
- Trigger a new review: Comment
@sourcery-ai reviewon the pull request. - Continue discussions: Reply directly to Sourcery's review comments.
- Generate a GitHub issue from a review comment: Ask Sourcery to create an
issue from a review comment by replying to it. You can also reply to a
review comment with
@sourcery-ai issueto create an issue from it. - Generate a pull request title: Write
@sourcery-aianywhere in the pull request title to generate a title at any time. You can also comment@sourcery-ai titleon the pull request to (re-)generate the title at any time. - Generate a pull request summary: Write
@sourcery-ai summaryanywhere in the pull request body to generate a PR summary at any time exactly where you want it. You can also comment@sourcery-ai summaryon the pull request to (re-)generate the summary at any time. - Generate reviewer's guide: Comment
@sourcery-ai guideon the pull request to (re-)generate the reviewer's guide at any time. - Resolve all Sourcery comments: Comment
@sourcery-ai resolveon the pull request to resolve all Sourcery comments. Useful if you've already addressed all the comments and don't want to see them anymore. - Dismiss all Sourcery reviews: Comment
@sourcery-ai dismisson the pull request to dismiss all existing Sourcery reviews. Especially useful if you want to start fresh with a new review - don't forget to comment@sourcery-ai reviewto trigger a new review! - Generate a plan of action for an issue: Comment
@sourcery-ai planon an issue to generate a plan of action for it.
Customizing Your Experience
Access your dashboard to:
- Enable or disable review features such as the Sourcery-generated pull request summary, the reviewer's guide, and others.
- Change the review language.
- Add, remove or edit custom review instructions.
- Adjust other review settings.
Getting Help
- Contact our support team for questions or feedback.
- Visit our documentation for detailed guides and information.
- Keep in touch with the Sourcery team by following us on X/Twitter, LinkedIn or GitHub.
And what if someone wants NO_BINARY=:all: ONLY_BINARY=some_package? Why is the proposed order of precedence better?
And what if someone wants NO_BINARY=:all: ONLY_BINARY=some_package? Why is the proposed order of precedence better?
pip seems to have same precedence
$ pip install --dry-run --no-cache-dir --only-binary=requests --no-binary=:all: requests
Collecting requests
Downloading requests-2.32.3.tar.gz (131 kB)
.......
Would install requests-2.32.3
pip seems to have same precedence
poetry is not pip, pip is not a standard. Perhaps if you reported that example to pip, they'd treat it as a bug.
The question is: why is the proposed precedence better?
I see.
The reason for this precedence is to achieve ONLY_BINARY=:all: NO_BINARY=some_package as described in #10231. We can use NO_BINARY as an exclusion of ONLY_BINARY=:all:.
I'm not sure of the motivation or use case of NO_BINARY=:all: ONLY_BINARY=some_package.
So, I think this precedence is more useful and better.
On the other hand, I agree that it's a bit weird that ONLY_BINARY=some_package NO_BINARY=some_package results in NO_BINARY=some_package.
If we don't care about pip, I think another option is to "lower the priority of :all:".
Then both ONLY_BINARY=:all: NO_BINARY=some_package and NO_BINARY=:all: ONLY_BINARY=some_package can work as exclusions, and obviously conflicted options like ONLY_BINARY=some_package NO_BINARY=some_package, ONLY_BINARY=:all: NO_BINARY=:all: keep the current behavior (failed to install).
What do you think?
That sounds preferable to me, I would expect the treatment to be as near as possible symmetrical.
But I will say that this is not a feature I expect ever to use, so I am not personally especially invested either way
@dimbleby changed to lower :all: precedence
Deploy preview for website ready!
✅ Preview https://website-i6gqktb57-python-poetry.vercel.app
Built with commit 16bd8b31106c20f04d58af6f53d02c78d68fc84e. This pull request is being automatically deployed with vercel-action
This pull request has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.