Own bulk-API ndarray buffers with std::vector, pin nanobind below 3

face_grid leaked both buffers when the kernel threw mid-grid, and tess copied
every mesh array a second time. Also drop the stale S5 references.
This commit is contained in:
2026-10-29 14:37:36 +01:00
parent 5a1b0fdeb1
commit 407ef262ba
8 changed files with 69 additions and 71 deletions
+6 -7
View File
@@ -4,10 +4,9 @@ Round-trips rather than digests: STEP and IGES payloads carry timestamps and a
generator banner, so byte comparison is meaningless — what has to survive is
the geometry, which these check by measuring the shape that comes back.
This file also settles open question **S5** from docs/design.md: whether the
wheel has to ship OCCT's share/ resources for the XSTEP layer to resolve units
when no CSF_* variable is set. These tests run in exactly that situation — a
container with the wheel and nothing else — so a pass means the answer is no.
It also pins that the wheel needs none of OCCT's share/ resources for the
XSTEP layer to resolve units when no CSF_* variable is set. These tests run in
exactly that situation, a container with the wheel and nothing else.
"""
from __future__ import annotations
@@ -36,13 +35,13 @@ BOX = (10.0, 20.0, 30.0)
@pytest.fixture(scope="module")
def initialized():
"""The app's own import bootstrap, and the S5 check in one.
"""The app's own import bootstrap, and the resource-free check in one.
If the controllers could not initialise without OCCT's resource files, this
is where it would fail — there is no CSF_* in this environment.
"""
assert not any(k.startswith("CSF_") for k in os.environ), (
"a CSF_* variable is set, so this run cannot answer S5"
"a CSF_* variable is set, so this run cannot prove the wheel needs none"
)
assert STEPControl_Controller.Init_s()
assert IGESControl_Controller.Init_s()
@@ -112,7 +111,7 @@ def test_step_reports_its_file_units(initialized, tmp_path):
TColStd_SequenceOfAsciiString(),
)
reader.FileUnits(length, angle, solid_angle)
assert length.Length() >= 1, "no length unit reported — S5 would be live"
assert length.Length() >= 1, "no length unit reported — the wheel would need OCCT's share/ resources"
names = [length.Value(i).ToCString() for i in range(1, length.Length() + 1)]
assert any("MM" in n.upper() or "MILLI" in n.upper() for n in names), names