+ notes: 'PR #2168 open (branch pytype), CI green. Build-from-checkout with cibuildwheel, mirroring the manylinux_wheels job of upstream build.yml (which is just `pip wheel . --no-deps` + `auditwheel repair` inside the manylinux image); setup.py builds one pybind11 extension, pytype.typegraph.cfg, from six .cc files at cxx_std=20, no arch-specific code anywhere and no CMake/ninja involvement in the wheel build (ninja is only a runtime dep and has riscv64 wheels on PyPI). No patches needed. Matrix is cp312 only: pytype refuses to run under an interpreter past 3.12 (validate_version: "Python versions > 3.12 are not yet supported"), which is why upstream ships cp310-cp312; the extension itself compiles and imports fine on cp313, so this only shows up when the tool actually runs (new gotcha 514). Dependency closure resolves binary-only for riscv64 at cp312 with our registry in play - libcst 1.8.6 and msgspec 0.21.1 come from pypi.riseproject.dev, the rest from PyPI. First CI run failed in the test phase only: pip picked libcst 1.9.0, whose riscv64 form is an sdist needing Rust, over our registry''s 1.8.6 wheel; fixed with CIBW_TEST_ENVIRONMENT PIP_ONLY_BINARY=:all: (gotchas 12/67). Testing runs the wheel''s own 96 *_test.py modules via `pytest --pyargs pytype -n auto` plus a one-file `pytype` CLI run; the pytype.tests helpers those modules import are excluded from the wheel, so three of them are staged with CIBW_TEST_SOURCES and copied into the installed package (new gotcha 513), and nine nodeids are deselected - source-tree-only tests (main_test.py, test_error_doc, two typeshed ones), a root-only one (test_die), two serialize_ast tests that fail identically on a pristine x86 checkout of the same tag, and the two staged helpers themselves. --ignore-glob turned out to be a no-op under --pyargs, which cost the first CI cycle''s triage (new gotcha 512). Rehearsed end to end on x86_64 before pushing (same 1746 passed / 22 skipped as CI). riscv64 CI: wheel built and auditwheel-repaired to manylinux_2_39_riscv64 in ~7 min, 1746 passed / 22 skipped in 8 min, publish job dry-ran cleanly. PR is open (not a draft - the create call''s draft flag did not take, and flipping draft status is not ours to do); not merged, not published.'
0 commit comments