Skip to content

Conversation

@WebReflection
Copy link
Contributor

@WebReflection WebReflection commented Nov 4, 2025

The goal of this MR is to fix #161 however I think it's optimistic to believe Pyodide and its micropip related to that pyodide could do anything about packages not compatible/available for a specific Pyodide version.

The thing is, if I force version 0.28.0 which is not compatible with pygame-ce there's apparently no way to force loading a previous version of pygame-ce even if it used to be compatible.

This makes our discussion around pinned versions mostly irrelevant, although the logic to warn instead of always throwing is in place, I really would like to have a concrete example of when that warning should be read but the older package should still work (this is in particular for @mchilvers and @fpliger)

/cc @ntoll as it looks that we cannot control much of this dance, I might ping Hood around this topic too (he is not watching this space, it'll happen on discord).


for history sake I'll keep the previous idea, but now it's definitively easier for everyone


Current Previous State

  • if a package is pinned and its version is available somewhere, a warning is shown that such version might not work
  • if a package is pinned and its name is unknown, we throw an error as previously discussed and agreed on
  • in every other case we let Pyodide and micropip sort everything out ... we don't get to decide how Pyodide or micropip work in there, also there are limitations with pinned version and the cache used internally, so basically we're always better off without pinned versions as each Pyodide version already guarantees that pinned version so this whole dance might be overkill in general (still fast right now, not a perf issue, rather a maintenance one).

@WebReflection WebReflection force-pushed the issue-161 branch 4 times, most recently from 664a369 to e25020b Compare November 7, 2025 14:14
@WebReflection
Copy link
Contributor Author

amend after discussing this with the team we decided to never throw errors because while Pyodide provides a list of packages built to target Pyodide itself, we don't get to know AOT (ahead of time) if a package might just work because it's a pure Python wheel directly fetched from pypi ... this MR simplifies a lot the warning dance + it optimizes the "graph" in a way that's lighter and easier to reason about (everything is just an in operation away via proxies).

/cc @ntoll

Copy link
Member

@ntoll ntoll left a comment

Choose a reason for hiding this comment

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

:shipit:

@WebReflection WebReflection merged commit 0fd6a4b into main Nov 7, 2025
2 checks passed
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.

Pinned packages possible issue

3 participants