Four mechanical binding edits; the bound Python surface is unchanged (sigdiff compared the 7.9.3.1 dump against 8.0.1.1's in both directions and found no class, member or constructor arity moved), so the app needs no change. - NCollection_Utf8String is gone; NCollection_String is the same UTF-8 type. Python name kept, since the app imports it. - Standard_Failure lost its Standard_Transient RTTI when it moved to deriving std::exception; ExceptionType() replaced DynamicType()->Name() and returns the same class names the exception dispatch keys on. - FindKey gained a size_t overload beside the int one, so the plain member pointer is ambiguous; overload_cast picks the int form, which keeps the negative-index guard. - StdPrs moved from TKService to TKV3d, so CMakeLists links both. The byte-identity fixtures did NOT retire, contrary to the watchlist: all six round-trip to the same digests under the new kernel, as do the measurement, history and mesh-count blocks, so tests/data is untouched and the app's content-addressed BREP payloads stay valid. Gates: binding suite 83 passed, 138/138 symbols, sigdiff clean both directions, ASAN clean, app suite 1798 passed / 1 skipped (unchanged), sweep over 4486 parts with anchors_digest and every status unchanged, -m perf 16% faster on the 32-feature chain.
48 lines
2.0 KiB
TOML
48 lines
2.0 KiB
TOML
[build-system]
|
|
requires = ["scikit-build-core>=0.11", "nanobind>=2.7"]
|
|
build-backend = "scikit_build_core.build"
|
|
|
|
[project]
|
|
name = "n3xd-ocp"
|
|
# <occt-version>.N, so the kernel a wheel wraps is readable from its version
|
|
# alone and occt_version() keeps reporting the truth. Iteration builds carry a
|
|
# .devN suffix: the registry never allows republishing a version, and its
|
|
# cleanup rule collects only the dev ones. CMake asserts the prefix matches
|
|
# the OCCT it found.
|
|
version = "8.0.1.1"
|
|
description = "nanobind bindings for the OpenCASCADE geometry kernel (drop-in OCP)"
|
|
readme = "README.md"
|
|
requires-python = ">=3.12"
|
|
license = { text = "LGPL-2.1-only" }
|
|
authors = [{ name = "N3XD" }]
|
|
classifiers = [
|
|
"Private :: Do Not Upload",
|
|
"Programming Language :: Python :: 3.12",
|
|
"Programming Language :: Python :: 3.13",
|
|
"Programming Language :: C++",
|
|
]
|
|
|
|
[project.urls]
|
|
Repository = "https://git.stroblme.de/N3XD/ocp"
|
|
|
|
[tool.scikit-build]
|
|
minimum-version = "0.11"
|
|
build-dir = "build/{wheel_tag}"
|
|
wheel.packages = ["python/OCP", "python/n3xd_ocp"]
|
|
# Stubs are generated during the build and gitignored, and file selection is
|
|
# git-based by default — so they must be re-included by hand or the wheel ships
|
|
# without the typing surface that retires the backend's ty suppression.
|
|
sdist.include = ["python/OCP/*.pyi", "python/n3xd_ocp/*.pyi"]
|
|
# abi3 from day one, matching the forge/assay convention: one wheel spans 3.12
|
|
# and 3.13, so the interpreter bump (roadmap 10D) needs no rebuild here.
|
|
wheel.py-api = "cp312"
|
|
# No sdist is ever published — it could not build without the OCCT builder
|
|
# image, and offering one would invite the production host (4 cores) to try.
|
|
# That is enforced by only ever building wheels (scripts/build_wheel.sh) rather
|
|
# than by an exclude rule here: scikit-build-core feeds sdist.exclude into the
|
|
# wheel's package-file mapping too, so excluding "*" silently ships a wheel
|
|
# with the compiled extension and none of the Python package.
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|