You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We will not contort the product to accommodate a test-only dependency like rocisa. It remains a known sharp edge.
rocisa (_rocisa.abi3.so, nanobind STABLE_ABI → CPython 3.12+ only) ships in rocm-sdk-libraries but is test/codegen-only; it is not a supported runtime import for SDK consumers.
Python 3.10/3.11 are a hard requirement for the product, and abi3 cannot cover them. Rather than per-version builds or packaging changes for a test-only dep, we accept that rocisa is not importable on 3.10/3.11 and leave it as-is.
The skip + sharp-edge is tolerable only because rocisa is test-only. The leniency must NOT be read as license to ship unimportable extensions generally:
A runtime-required Python extension shipped to SDK consumers must be importable on all supported Pythons (3.10–3.14). For nanobind that means per-version builds (abi3 alone is 3.12+).
A test/build-only extension may either remain a documented sharp edge (rocisa) or be excluded from the version-agnostic runtime wheel (the pattern origami uses).
Remaining (small) work
Document the sharp edge: note that rocisa is test/codegen-only and not importable on Python < 3.12; consumers must not depend on importing it at runtime on 3.10/3.11.
Record the policy above (runtime extensions → per-version / import-testable on all supported Pythons; test-only → sharp edge or excluded) somewhere durable (packaging docs).
The ctypes.CDLL skip in libraries_test.py stands; do not convert it into an importlib import for rocisa (that would force the declined product changes).
Context
Surfaced during the origami reland ([origami] add origami to mathlibs #5650), which keeps its (non-abi3) extension test-only / excluded from the SDK — the correct pattern given 3.10/3.11 are required.
Decision (recorded)
We will not contort the product to accommodate a test-only dependency like
rocisa. It remains a known sharp edge.rocisa(_rocisa.abi3.so, nanobindSTABLE_ABI→ CPython 3.12+ only) ships inrocm-sdk-librariesbut is test/codegen-only; it is not a supported runtime import for SDK consumers.rocisais not importable on 3.10/3.11 and leave it as-is.testSharedLibrariesLoadskipping.abi3.so/.cpython-*extensions — is the accepted accommodation. It stays.Why this is acceptable here (and the boundary)
The skip + sharp-edge is tolerable only because
rocisais test-only. The leniency must NOT be read as license to ship unimportable extensions generally:Remaining (small) work
rocisais test/codegen-only and not importable on Python < 3.12; consumers must not depend on importing it at runtime on 3.10/3.11.ctypes.CDLLskip inlibraries_test.pystands; do not convert it into animportlibimport forrocisa(that would force the declined product changes).Context
ctypes.CDLLskip + rocisa stable-ABI test), rocisaROCISA_USE_STABLE_ABI.