Skip to content

fix get_supported_tags in cases where the target env has a different platform #10361

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

Merged
merged 1 commit into from
May 4, 2025

Conversation

radoering
Copy link
Member

@radoering radoering commented Apr 25, 2025

Pull Request Check List

#9304 introduced a regression where wheels for the wrong platform were installed in rare cases. This includes:

  • using a 32 Bit Python on Windows (and having Poetry installed with a normal 64 Bit Python)
  • using an emulated aarch64 Python on an x86_64 Linux (and having Poetry installed "normally")

This fix basically falls back to determine the platform tags inside the target venv if sysconfig.get_platform() of the target venv is different from the value from Poetry's own venv.

  • Added tests for changed code.
  • Updated documentation for changed code.

Summary by Sourcery

Ensure correct platform tags are detected for target environments with different platforms or architectures than the host.

Bug Fixes:

  • Fix incorrect platform tag detection when the target environment's platform differs from Poetry's host environment (e.g., 32-bit vs 64-bit Windows, x86_64 vs aarch64 Linux), preventing incorrect wheel installations by querying the target environment directly for its platform information when necessary.
  • Include the target environment's sysconfig.get_platform() value in its markers for comparison.

Tests:

  • Add tests to verify correct tag generation in cross-platform and cross-architecture scenarios.

Copy link

sourcery-ai bot commented Apr 25, 2025

Reviewer's Guide by Sourcery

This pull request fixes a regression where wheels for the wrong platform could be installed when the target environment's reported platform (sysconfig.get_platform()) differs from Poetry's own environment. The fix involves checking if the platforms differ and, if so, running a script inside the target environment to accurately determine the supported platform tags.

No diagrams generated as the changes look simple and do not need a visual representation.

File-Level Changes

Change Details Files
Determine platform tags within the target environment if its sysconfig.get_platform() differs from Poetry's environment.
  • Read the target environment's sysconfig_platform from the marker environment.
  • Compare the target environment's sysconfig_platform with Poetry's sysconfig.get_platform().
  • If they differ, run a script in the target environment to get supported platforms/tags.
  • Pass the obtained platform information to tag generation functions.
src/poetry/utils/env/virtual_env.py
Include the target environment's sysconfig.get_platform() in the marker environment data.
  • Add sysconfig.get_platform() to the data collected by the marker script.
src/poetry/utils/env/script_strings.py
Add a test case to specifically cover scenarios where the target environment's platform differs from Poetry's.
  • Parameterize the test for differing platforms.
  • Mock sysconfig.get_platform() in Poetry's environment to simulate a difference.
  • Verify that the correct tags are generated.
  • Verify that the script to get platforms inside the environment is run when platforms differ.
tests/utils/env/test_env.py

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on 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 issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on 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 dismiss on 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 review to trigger a new review!

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

Copy link

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @radoering - I've reviewed your changes and they look great!

Here's what I looked at during the review
  • 🟢 General issues: all looks good
  • 🟢 Security: all looks good
  • 🟢 Testing: all looks good
  • 🟢 Complexity: all looks good
  • 🟢 Documentation: all looks good

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@radoering radoering requested a review from a team April 26, 2025 14:50
@radoering radoering force-pushed the fix-get-supported-tags branch from e07aeb9 to 6e648c6 Compare May 1, 2025 08:57
@radoering radoering force-pushed the fix-get-supported-tags branch from 6e648c6 to 97367d8 Compare May 2, 2025 17:55
@radoering radoering force-pushed the fix-get-supported-tags branch from 97367d8 to 5c50e70 Compare May 4, 2025 04:42
@radoering radoering merged commit 14221f5 into python-poetry:main May 4, 2025
53 checks passed
Copy link

github-actions bot commented Jun 4, 2025

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.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Jun 4, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants