Skip to content

Conversation

grden
Copy link
Contributor

@grden grden commented Aug 14, 2025

This PR fixes check_compatible() where some valid abi3 wheels were incorrectly rejected. Changes include:

  1. Implemented proper abi3 compatibility
    Added version comparison logic that respects abi3 forward compatibility rules. This should only raise ValueError when wheels are truly incompatible.

  2. Moved break statement inside the if condition to properly check all tags.

Also improved error message consistency by showing all interpreter versions, similar to how ABI errors are shown.

This closes #245.

@grden grden force-pushed the fix/check-compatible branch from 237003e to 47c4823 Compare August 14, 2025 06:38
@ryanking13
Copy link
Member

ryanking13 commented Aug 14, 2025

Hi @grden. Thanks for making the check_compatible function more robust. As you can see in the comment here:

micropip/micropip/_utils.py

Lines 153 to 154 in be08cfd

# Not compatible, now we need to figure out why.

is_package_compatible should be the main source to check the compatibility, and if it fails, check_compatible function should be always return error with the reason (sorry about the poor naming)

So the current change is not great, as it changes how check_compatible should behave.

Could you please list up add some concrete examples when is_package_compatible does not work as expected? I read your original issue, but I'm not sure about what each

System configuration issues in Pyodide environments
Custom Pyodide builds with different tag generation
Environment setup problems affecting sys_tags()

means, and when it can occur.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add safety net for abi3 wheel compatibility check in edge cases

2 participants