Skip to content

fix(schema): default is fine for pyodide too - #2951

Open
henryiii wants to merge 6 commits into
pypa:mainfrom
henryiii:main
Open

fix(schema): default is fine for pyodide too#2951
henryiii wants to merge 6 commits into
pypa:mainfrom
henryiii:main

Conversation

@henryiii

@henryiii henryiii commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

The schema claims pyodide-build is required, but default is fine too.

Also adding .claude, so users can symlink .claude/skills to .agent/skills.

Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
@henryiii

henryiii commented Jul 27, 2026

Copy link
Copy Markdown
Contributor Author

This should work too, but doesn't:

[[tool.cibuildwheel.overrides]]
select = ["*pyodide*"]
build-frontend = "pyodide-build"

henryiii added 2 commits July 27, 2026 00:17
Override properties reference the global build-frontend schema, which does
not list pyodide-build. An override that selects the pyodide platform could
not set the frontend, although cibuildwheel accepts it at runtime.

The overrides schema now has its own build-frontend definition that adds the
pyodide-build forms. The per-OS tables stay unchanged, so pyodide-build is
still rejected for the other platforms.

Assisted-by: ClaudeCode:claude-opus-5
Setting build-frontend to pyodide-build is not an error at the top level,
as a configuration can build for pyodide only. Adding it to the global
build-frontend definition also covers the overrides and the platform
tables, which reference it, so the special case for overrides is removed.

Assisted-by: ClaudeCode:claude-opus-5
@henryiii
henryiii marked this pull request as draft July 27, 2026 04:24
henryiii added 3 commits July 27, 2026 00:40
The platform tables referenced the global build-frontend definition, which
now includes pyodide-build. Each table gets a filtered copy instead: the
pyodide table keeps only pyodide-build, and the other platforms share a new
build-frontend-no-pyodide definition, which drops it.

Assisted-by: ClaudeCode:claude-opus-5
The description was one level too high, so it became a stray key next to
the definitions instead of a part of "enable".

Assisted-by: ClaudeCode:claude-opus-5
The pyodide and non-pyodide variants were made by filtering a copy of the
global schema, which had to recover each frontend name from its regex. A
function that makes the schema from a list of names replaces the filter and
the YAML block. The generated schema does not change.

Assisted-by: ClaudeCode:claude-opus-5
@henryiii
henryiii marked this pull request as ready for review July 27, 2026 04:52
@henryiii

Copy link
Copy Markdown
Contributor Author

Okay, should be more accurate now. "pyodide-build" is accepted at top level, in overrides, and in the "pyodide" platform, but not other platforms. Kept it fairly clean, I think.

Also fixes a dangling description that Claude noticed while working on it.

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.

2 participants