geometrykit 0.5.0__tar.gz → 0.5.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. geometrykit-0.5.1/PKG-INFO +107 -0
  2. geometrykit-0.5.1/README.md +78 -0
  3. {geometrykit-0.5.0 → geometrykit-0.5.1}/pyproject.toml +1 -1
  4. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit/__init__.py +1 -1
  5. geometrykit-0.5.1/python/geometrykit.egg-info/PKG-INFO +107 -0
  6. geometrykit-0.5.0/PKG-INFO +0 -94
  7. geometrykit-0.5.0/README.md +0 -65
  8. geometrykit-0.5.0/python/geometrykit.egg-info/PKG-INFO +0 -94
  9. {geometrykit-0.5.0 → geometrykit-0.5.1}/COPYING +0 -0
  10. {geometrykit-0.5.0 → geometrykit-0.5.1}/COPYING.LESSER +0 -0
  11. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit/cage.py +0 -0
  12. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit/contract.py +0 -0
  13. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit/engine.py +0 -0
  14. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit/export.py +0 -0
  15. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit/geometry/__init__.py +0 -0
  16. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit/geometry/_bridge.py +0 -0
  17. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit/geometry/biarc.py +0 -0
  18. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit/geometry/curve.py +0 -0
  19. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit/geometry/field.py +0 -0
  20. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit/geometry/frames.py +0 -0
  21. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit/geometry/intersection.py +0 -0
  22. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit/geometry/path.py +0 -0
  23. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit/geometry/patterns.py +0 -0
  24. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit/geometry/primitives.py +0 -0
  25. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit/geometry/spiral.py +0 -0
  26. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit/geometry/subdivision.py +0 -0
  27. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit/geometry/surface.py +0 -0
  28. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit/geometry/transform.py +0 -0
  29. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit/runtimes/__init__.py +0 -0
  30. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit/runtimes/_npu/__init__.py +0 -0
  31. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit/runtimes/_npu/curve_np.py +0 -0
  32. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit/runtimes/_npu/fit_np.py +0 -0
  33. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit/runtimes/_npu/linalg_np.py +0 -0
  34. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit/runtimes/_npu/patch_g1.py +0 -0
  35. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit/runtimes/_npu/patch_np.py +0 -0
  36. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit/runtimes/_npu/section_np.py +0 -0
  37. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit/runtimes/_npu/surface_np.py +0 -0
  38. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit/runtimes/dispatch.py +0 -0
  39. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit.egg-info/SOURCES.txt +0 -0
  40. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit.egg-info/dependency_links.txt +0 -0
  41. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit.egg-info/requires.txt +0 -0
  42. {geometrykit-0.5.0 → geometrykit-0.5.1}/python/geometrykit.egg-info/top_level.txt +0 -0
  43. {geometrykit-0.5.0 → geometrykit-0.5.1}/setup.cfg +0 -0
  44. {geometrykit-0.5.0 → geometrykit-0.5.1}/tests/test_cage.py +0 -0
  45. {geometrykit-0.5.0 → geometrykit-0.5.1}/tests/test_contract.py +0 -0
  46. {geometrykit-0.5.0 → geometrykit-0.5.1}/tests/test_engine_parity.py +0 -0
  47. {geometrykit-0.5.0 → geometrykit-0.5.1}/tests/test_engine_probe.py +0 -0
  48. {geometrykit-0.5.0 → geometrykit-0.5.1}/tests/test_repo_boundary.py +0 -0
@@ -0,0 +1,107 @@
1
+ Metadata-Version: 2.4
2
+ Name: geometrykit
3
+ Version: 0.5.1
4
+ Summary: Geometry primitives and NURBS data model — the geometry substrate for the ifckit family
5
+ Author: Sander Boer
6
+ License-Expression: LGPL-3.0-or-later
7
+ Project-URL: Homepage, https://github.com/maucworks/geometrykit
8
+ Project-URL: Changelog, https://github.com/maucworks/geometrykit/blob/master/CHANGELOG.md
9
+ Keywords: geometry,nurbs,vector,curve,surface,splines
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.9
14
+ Classifier: Programming Language :: Python :: 3.10
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Topic :: Scientific/Engineering :: Mathematics
19
+ Classifier: Topic :: Multimedia :: Graphics :: 3D Modeling
20
+ Requires-Python: >=3.9
21
+ Description-Content-Type: text/markdown
22
+ License-File: COPYING.LESSER
23
+ License-File: COPYING
24
+ Provides-Extra: dev
25
+ Requires-Dist: pytest<10,>=7; extra == "dev"
26
+ Requires-Dist: pytest-cov<8,>=7; extra == "dev"
27
+ Requires-Dist: hypothesis<8,>=6; extra == "dev"
28
+ Dynamic: license-file
29
+
30
+ # geometrykit
31
+
32
+ OCC-free NURBS geometry for the ifckit family: value types (`Vec`,
33
+ `Plane`, `Line`, `Arc`, `Polyline`, `Path`, `Curve`, `Surface`), NURBS
34
+ evaluation / tangents / normals / projection, energy-minimising patch
35
+ fills with G1/G2 continuity options, plane × surface sections with
36
+ pcurve tracks, and STEP/OBJ/STL writers. No OCCT, no compiled
37
+ toolchain required to install.
38
+
39
+ ## Install
40
+
41
+ ```bash
42
+ pip install geometrykit # Python >= 3.9, incl. Rhino 8's CPython 3.9
43
+ ```
44
+
45
+ Binary wheels (`cp39-abi3`) carry the compiled Rust core
46
+ (`geometrykit._rust`) where a platform build exists, and the public
47
+ API routes to it automatically. Platforms without a matching wheel get
48
+ the pure-Python/numpy mirror instead: same API, same results, slower.
49
+ `GEOMETRYKIT_ENGINE=npu` forces the mirror; the default prefers the
50
+ accelerator when importable.
51
+
52
+ ## Quickstart
53
+
54
+ ```python
55
+ from geometrykit import engine
56
+ from geometrykit.geometry import Curve, Surface
57
+ from geometrykit.geometry.primitives import Vec
58
+
59
+ curves = [
60
+ Curve.from_tangents(start=Vec(0, 0, 2.4), tan_start=Vec(1, 0, 0),
61
+ end=Vec(8, 0, 2.8), tan_end=Vec(1, 0, 0), scale=3.0),
62
+ Curve.from_tangents(start=Vec(8, 0, 2.8), tan_start=Vec(0, 1, 0),
63
+ end=Vec(8, 6, 2.9), tan_end=Vec(0, 1, 0), scale=3.0),
64
+ Curve.from_tangents(start=Vec(0, 6, 3.2), tan_start=Vec(1, 0, 0),
65
+ end=Vec(8, 6, 2.9), tan_end=Vec(1, 0, 0), scale=3.0),
66
+ Curve.from_tangents(start=Vec(0, 6, 3.2), tan_start=Vec(0, -1, 0),
67
+ end=Vec(0, 0, 2.4), tan_end=Vec(0, -1, 0), scale=3.0),
68
+ ]
69
+ surface = Surface.patch(curves, fill="energy", nu=16, nv=16, tangency=0.75)
70
+ proj, (u, v) = surface.project(Vec(-1.0, -1.0, 3.0))
71
+ print(engine.engine(), proj, (u, v))
72
+ ```
73
+
74
+ ## What is in here
75
+
76
+ - NURBS evaluation, analytic tangents and normals, closest-point
77
+ projection (kernel Newton, no OCC).
78
+ - Energy-minimising patch fill over a boundary ring
79
+ (`Surface.patch(..., fill="energy")`), with tangency strength and
80
+ optional G2 and adaptive re-fit.
81
+ - Plane × surface sections with parameter tracks, batch level sets,
82
+ and node-exact diagrid weaving.
83
+ - Writers: STEP (AP214 B-rep), OBJ, STL.
84
+ - `geometrykit-core` on crates.io: the same kernels as a pure-Rust
85
+ dependency (no bindings, no unsafe code).
86
+
87
+ Out of scope by design: B-rep booleans and tolerant topology (volumes
88
+ are OCCT's domain); IFC serialisation lives in ifckit.
89
+
90
+ ## Development
91
+
92
+ ```bash
93
+ python3 -m venv .venv && .venv/bin/pip install -e ".[dev]"
94
+ .venv/bin/python -m pytest tests/ -q
95
+ GEOMETRYKIT_ENGINE=npu .venv/bin/python -m pytest tests/ -q
96
+ GEOMETRYKIT_ENGINE=rust .venv/bin/python -m pytest tests/ -q
97
+ ```
98
+
99
+ The oracle tier checks the kernel against OCCT and stays local
100
+ (`pythonocc-core` is conda-only; see AGENTS.md). Every suite train
101
+ runs in both engine configurations before a commit lands.
102
+
103
+ ## Licensing
104
+
105
+ LGPL-3.0-or-later (`COPYING.LESSER`, `COPYING`). Kernel code promoted
106
+ from ifckit's geometry package carries a provenance header recording
107
+ its origin.
@@ -0,0 +1,78 @@
1
+ # geometrykit
2
+
3
+ OCC-free NURBS geometry for the ifckit family: value types (`Vec`,
4
+ `Plane`, `Line`, `Arc`, `Polyline`, `Path`, `Curve`, `Surface`), NURBS
5
+ evaluation / tangents / normals / projection, energy-minimising patch
6
+ fills with G1/G2 continuity options, plane × surface sections with
7
+ pcurve tracks, and STEP/OBJ/STL writers. No OCCT, no compiled
8
+ toolchain required to install.
9
+
10
+ ## Install
11
+
12
+ ```bash
13
+ pip install geometrykit # Python >= 3.9, incl. Rhino 8's CPython 3.9
14
+ ```
15
+
16
+ Binary wheels (`cp39-abi3`) carry the compiled Rust core
17
+ (`geometrykit._rust`) where a platform build exists, and the public
18
+ API routes to it automatically. Platforms without a matching wheel get
19
+ the pure-Python/numpy mirror instead: same API, same results, slower.
20
+ `GEOMETRYKIT_ENGINE=npu` forces the mirror; the default prefers the
21
+ accelerator when importable.
22
+
23
+ ## Quickstart
24
+
25
+ ```python
26
+ from geometrykit import engine
27
+ from geometrykit.geometry import Curve, Surface
28
+ from geometrykit.geometry.primitives import Vec
29
+
30
+ curves = [
31
+ Curve.from_tangents(start=Vec(0, 0, 2.4), tan_start=Vec(1, 0, 0),
32
+ end=Vec(8, 0, 2.8), tan_end=Vec(1, 0, 0), scale=3.0),
33
+ Curve.from_tangents(start=Vec(8, 0, 2.8), tan_start=Vec(0, 1, 0),
34
+ end=Vec(8, 6, 2.9), tan_end=Vec(0, 1, 0), scale=3.0),
35
+ Curve.from_tangents(start=Vec(0, 6, 3.2), tan_start=Vec(1, 0, 0),
36
+ end=Vec(8, 6, 2.9), tan_end=Vec(1, 0, 0), scale=3.0),
37
+ Curve.from_tangents(start=Vec(0, 6, 3.2), tan_start=Vec(0, -1, 0),
38
+ end=Vec(0, 0, 2.4), tan_end=Vec(0, -1, 0), scale=3.0),
39
+ ]
40
+ surface = Surface.patch(curves, fill="energy", nu=16, nv=16, tangency=0.75)
41
+ proj, (u, v) = surface.project(Vec(-1.0, -1.0, 3.0))
42
+ print(engine.engine(), proj, (u, v))
43
+ ```
44
+
45
+ ## What is in here
46
+
47
+ - NURBS evaluation, analytic tangents and normals, closest-point
48
+ projection (kernel Newton, no OCC).
49
+ - Energy-minimising patch fill over a boundary ring
50
+ (`Surface.patch(..., fill="energy")`), with tangency strength and
51
+ optional G2 and adaptive re-fit.
52
+ - Plane × surface sections with parameter tracks, batch level sets,
53
+ and node-exact diagrid weaving.
54
+ - Writers: STEP (AP214 B-rep), OBJ, STL.
55
+ - `geometrykit-core` on crates.io: the same kernels as a pure-Rust
56
+ dependency (no bindings, no unsafe code).
57
+
58
+ Out of scope by design: B-rep booleans and tolerant topology (volumes
59
+ are OCCT's domain); IFC serialisation lives in ifckit.
60
+
61
+ ## Development
62
+
63
+ ```bash
64
+ python3 -m venv .venv && .venv/bin/pip install -e ".[dev]"
65
+ .venv/bin/python -m pytest tests/ -q
66
+ GEOMETRYKIT_ENGINE=npu .venv/bin/python -m pytest tests/ -q
67
+ GEOMETRYKIT_ENGINE=rust .venv/bin/python -m pytest tests/ -q
68
+ ```
69
+
70
+ The oracle tier checks the kernel against OCCT and stays local
71
+ (`pythonocc-core` is conda-only; see AGENTS.md). Every suite train
72
+ runs in both engine configurations before a commit lands.
73
+
74
+ ## Licensing
75
+
76
+ LGPL-3.0-or-later (`COPYING.LESSER`, `COPYING`). Kernel code promoted
77
+ from ifckit's geometry package carries a provenance header recording
78
+ its origin.
@@ -12,7 +12,7 @@ build-backend = "setuptools.build_meta"
12
12
 
13
13
  [project]
14
14
  name = "geometrykit"
15
- version = "0.5.0"
15
+ version = "0.5.1"
16
16
  description = "Geometry primitives and NURBS data model — the geometry substrate for the ifckit family"
17
17
  readme = "README.md"
18
18
  requires-python = ">=3.9"
@@ -21,7 +21,7 @@ from geometrykit.geometry import (
21
21
  Vec,
22
22
  )
23
23
 
24
- __version__ = "0.5.0"
24
+ __version__ = "0.5.1"
25
25
 
26
26
  __all__ = [
27
27
  "__version__",
@@ -0,0 +1,107 @@
1
+ Metadata-Version: 2.4
2
+ Name: geometrykit
3
+ Version: 0.5.1
4
+ Summary: Geometry primitives and NURBS data model — the geometry substrate for the ifckit family
5
+ Author: Sander Boer
6
+ License-Expression: LGPL-3.0-or-later
7
+ Project-URL: Homepage, https://github.com/maucworks/geometrykit
8
+ Project-URL: Changelog, https://github.com/maucworks/geometrykit/blob/master/CHANGELOG.md
9
+ Keywords: geometry,nurbs,vector,curve,surface,splines
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.9
14
+ Classifier: Programming Language :: Python :: 3.10
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Topic :: Scientific/Engineering :: Mathematics
19
+ Classifier: Topic :: Multimedia :: Graphics :: 3D Modeling
20
+ Requires-Python: >=3.9
21
+ Description-Content-Type: text/markdown
22
+ License-File: COPYING.LESSER
23
+ License-File: COPYING
24
+ Provides-Extra: dev
25
+ Requires-Dist: pytest<10,>=7; extra == "dev"
26
+ Requires-Dist: pytest-cov<8,>=7; extra == "dev"
27
+ Requires-Dist: hypothesis<8,>=6; extra == "dev"
28
+ Dynamic: license-file
29
+
30
+ # geometrykit
31
+
32
+ OCC-free NURBS geometry for the ifckit family: value types (`Vec`,
33
+ `Plane`, `Line`, `Arc`, `Polyline`, `Path`, `Curve`, `Surface`), NURBS
34
+ evaluation / tangents / normals / projection, energy-minimising patch
35
+ fills with G1/G2 continuity options, plane × surface sections with
36
+ pcurve tracks, and STEP/OBJ/STL writers. No OCCT, no compiled
37
+ toolchain required to install.
38
+
39
+ ## Install
40
+
41
+ ```bash
42
+ pip install geometrykit # Python >= 3.9, incl. Rhino 8's CPython 3.9
43
+ ```
44
+
45
+ Binary wheels (`cp39-abi3`) carry the compiled Rust core
46
+ (`geometrykit._rust`) where a platform build exists, and the public
47
+ API routes to it automatically. Platforms without a matching wheel get
48
+ the pure-Python/numpy mirror instead: same API, same results, slower.
49
+ `GEOMETRYKIT_ENGINE=npu` forces the mirror; the default prefers the
50
+ accelerator when importable.
51
+
52
+ ## Quickstart
53
+
54
+ ```python
55
+ from geometrykit import engine
56
+ from geometrykit.geometry import Curve, Surface
57
+ from geometrykit.geometry.primitives import Vec
58
+
59
+ curves = [
60
+ Curve.from_tangents(start=Vec(0, 0, 2.4), tan_start=Vec(1, 0, 0),
61
+ end=Vec(8, 0, 2.8), tan_end=Vec(1, 0, 0), scale=3.0),
62
+ Curve.from_tangents(start=Vec(8, 0, 2.8), tan_start=Vec(0, 1, 0),
63
+ end=Vec(8, 6, 2.9), tan_end=Vec(0, 1, 0), scale=3.0),
64
+ Curve.from_tangents(start=Vec(0, 6, 3.2), tan_start=Vec(1, 0, 0),
65
+ end=Vec(8, 6, 2.9), tan_end=Vec(1, 0, 0), scale=3.0),
66
+ Curve.from_tangents(start=Vec(0, 6, 3.2), tan_start=Vec(0, -1, 0),
67
+ end=Vec(0, 0, 2.4), tan_end=Vec(0, -1, 0), scale=3.0),
68
+ ]
69
+ surface = Surface.patch(curves, fill="energy", nu=16, nv=16, tangency=0.75)
70
+ proj, (u, v) = surface.project(Vec(-1.0, -1.0, 3.0))
71
+ print(engine.engine(), proj, (u, v))
72
+ ```
73
+
74
+ ## What is in here
75
+
76
+ - NURBS evaluation, analytic tangents and normals, closest-point
77
+ projection (kernel Newton, no OCC).
78
+ - Energy-minimising patch fill over a boundary ring
79
+ (`Surface.patch(..., fill="energy")`), with tangency strength and
80
+ optional G2 and adaptive re-fit.
81
+ - Plane × surface sections with parameter tracks, batch level sets,
82
+ and node-exact diagrid weaving.
83
+ - Writers: STEP (AP214 B-rep), OBJ, STL.
84
+ - `geometrykit-core` on crates.io: the same kernels as a pure-Rust
85
+ dependency (no bindings, no unsafe code).
86
+
87
+ Out of scope by design: B-rep booleans and tolerant topology (volumes
88
+ are OCCT's domain); IFC serialisation lives in ifckit.
89
+
90
+ ## Development
91
+
92
+ ```bash
93
+ python3 -m venv .venv && .venv/bin/pip install -e ".[dev]"
94
+ .venv/bin/python -m pytest tests/ -q
95
+ GEOMETRYKIT_ENGINE=npu .venv/bin/python -m pytest tests/ -q
96
+ GEOMETRYKIT_ENGINE=rust .venv/bin/python -m pytest tests/ -q
97
+ ```
98
+
99
+ The oracle tier checks the kernel against OCCT and stays local
100
+ (`pythonocc-core` is conda-only; see AGENTS.md). Every suite train
101
+ runs in both engine configurations before a commit lands.
102
+
103
+ ## Licensing
104
+
105
+ LGPL-3.0-or-later (`COPYING.LESSER`, `COPYING`). Kernel code promoted
106
+ from ifckit's geometry package carries a provenance header recording
107
+ its origin.
@@ -1,94 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: geometrykit
3
- Version: 0.5.0
4
- Summary: Geometry primitives and NURBS data model — the geometry substrate for the ifckit family
5
- Author: Sander Boer
6
- License-Expression: LGPL-3.0-or-later
7
- Project-URL: Homepage, https://github.com/maucworks/geometrykit
8
- Project-URL: Changelog, https://github.com/maucworks/geometrykit/blob/master/CHANGELOG.md
9
- Keywords: geometry,nurbs,vector,curve,surface,splines
10
- Classifier: Development Status :: 3 - Alpha
11
- Classifier: Intended Audience :: Developers
12
- Classifier: Programming Language :: Python :: 3
13
- Classifier: Programming Language :: Python :: 3.9
14
- Classifier: Programming Language :: Python :: 3.10
15
- Classifier: Programming Language :: Python :: 3.11
16
- Classifier: Programming Language :: Python :: 3.12
17
- Classifier: Programming Language :: Python :: 3.13
18
- Classifier: Topic :: Scientific/Engineering :: Mathematics
19
- Classifier: Topic :: Multimedia :: Graphics :: 3D Modeling
20
- Requires-Python: >=3.9
21
- Description-Content-Type: text/markdown
22
- License-File: COPYING.LESSER
23
- License-File: COPYING
24
- Provides-Extra: dev
25
- Requires-Dist: pytest<10,>=7; extra == "dev"
26
- Requires-Dist: pytest-cov<8,>=7; extra == "dev"
27
- Requires-Dist: hypothesis<8,>=6; extra == "dev"
28
- Dynamic: license-file
29
-
30
- # geometrykit
31
-
32
- Geometry primitives and NURBS data model: `Vec`, `Plane`, `Curve`, `Surface`,
33
- `Path`, and (planned) G1 constrained patches, curve/surface clipping, trim
34
- pcurves, and a tessellator — the geometry substrate for the ifckit family.
35
-
36
- ## Status
37
-
38
- Source of truth: `github.com/maucworks/geometrykit` — check it out anywhere;
39
- wheels are built from a checkout root (`python -m build`, `packages.find`
40
- over this layout). The package itself is unaware of check-out locations.
41
-
42
- Releases so far (0.0.1/0.0.2) are a **name claim + placeholder**: the API is not yet
43
- published, and the package intentionally exports nothing beyond
44
- `geometrykit.__version__`. Version bumps arrive with the first real
45
- API (planned v0.1: primitives promoted from `ifckit.geometry`, extracted
46
- from the A320 configurator corpus with its existing test coverage as oracle
47
- spec).
48
-
49
- ## Development
50
-
51
- ```bash
52
- python3 -m venv .venv && .venv/bin/pip install -e ".[dev]"
53
- .venv/bin/pytest tests/ -q # full suite (plain env)
54
-
55
- # oracle tier: the tests that check the kernel against OCCT
56
- conda env create -f environment.yml # once
57
- conda run -n geometrykit-oracle python -m pytest tests/ -q
58
- # with coverage + the staged ladder:
59
- conda run -n geometrykit-oracle python -m pytest tests/ --cov -q
60
- conda run -n geometrykit-oracle python -m coverage json -o /tmp/geometrykit-cov.json
61
- python scripts/coverage_ladder.py /tmp/geometrykit-cov.json
62
- # corpus refresh (A320 demos → tests/fixtures/corpus/):
63
- # where ifckit is importable (its own environment, not the oracle one):
64
- python scripts/capture_corpus.py
65
- ```
66
-
67
- Layers: `tests/geometry/` (ported ifckit geometry suite), `tests/test_contract.py`
68
- (contract v0), `tests/test_engine_probe.py` + `tests/test_engine_parity.py`
69
- (runtime split), `tests/oracle/` (OCCT goldens, skipif), `tests/panel/`
70
- (panelization acceptance, M2 tripwire).
71
-
72
- ## Roadmap (contract-first, per the kernel plan)
73
-
74
- - v0.1 — value-type primitives (`Vec`, `Plane`, `Arc`, `Line`, `Path`,
75
- `Curve`, `Surface`); `ifckit.geometry` becomes a re-export facade.
76
- Data contract: id + plain arrays (`{kind, degrees, knots, cps}(m,4)`,
77
- homogeneous `[w-mu, w-nu, w-rho, w]`).
78
- - v0.2+ — G1 constrained filling (Gregory corners) over polygonal charts;
79
- Bezier-column clipping (plane-surface, closest-point); trims (pcurves);
80
- tessellator (curvature-driven).
81
- - Out of scope by design: B-rep booleans, tolerant topology (the kernel is
82
- B-rep-free on purpose; volumes are ifcopenshell/OCCT's domain).
83
-
84
- ## Licensing
85
-
86
- geometrykit is LGPL-3.0-or-later, aligned with ifckit. The kernel carries code
87
- promoted from ifckit's geometry package; the provenance of every carried
88
- module is documented in its file header.
89
-
90
- ## Sibling projects
91
-
92
- - `ifckit` — elements/builders/model that bind `geometrykit` to IFC.
93
- - The associativity engine (name TBD: `modelkit`/`stageskit`) — identity,
94
- stage signatures, dirty propagation; geometry-agnostic, stdlib-only.
@@ -1,65 +0,0 @@
1
- # geometrykit
2
-
3
- Geometry primitives and NURBS data model: `Vec`, `Plane`, `Curve`, `Surface`,
4
- `Path`, and (planned) G1 constrained patches, curve/surface clipping, trim
5
- pcurves, and a tessellator — the geometry substrate for the ifckit family.
6
-
7
- ## Status
8
-
9
- Source of truth: `github.com/maucworks/geometrykit` — check it out anywhere;
10
- wheels are built from a checkout root (`python -m build`, `packages.find`
11
- over this layout). The package itself is unaware of check-out locations.
12
-
13
- Releases so far (0.0.1/0.0.2) are a **name claim + placeholder**: the API is not yet
14
- published, and the package intentionally exports nothing beyond
15
- `geometrykit.__version__`. Version bumps arrive with the first real
16
- API (planned v0.1: primitives promoted from `ifckit.geometry`, extracted
17
- from the A320 configurator corpus with its existing test coverage as oracle
18
- spec).
19
-
20
- ## Development
21
-
22
- ```bash
23
- python3 -m venv .venv && .venv/bin/pip install -e ".[dev]"
24
- .venv/bin/pytest tests/ -q # full suite (plain env)
25
-
26
- # oracle tier: the tests that check the kernel against OCCT
27
- conda env create -f environment.yml # once
28
- conda run -n geometrykit-oracle python -m pytest tests/ -q
29
- # with coverage + the staged ladder:
30
- conda run -n geometrykit-oracle python -m pytest tests/ --cov -q
31
- conda run -n geometrykit-oracle python -m coverage json -o /tmp/geometrykit-cov.json
32
- python scripts/coverage_ladder.py /tmp/geometrykit-cov.json
33
- # corpus refresh (A320 demos → tests/fixtures/corpus/):
34
- # where ifckit is importable (its own environment, not the oracle one):
35
- python scripts/capture_corpus.py
36
- ```
37
-
38
- Layers: `tests/geometry/` (ported ifckit geometry suite), `tests/test_contract.py`
39
- (contract v0), `tests/test_engine_probe.py` + `tests/test_engine_parity.py`
40
- (runtime split), `tests/oracle/` (OCCT goldens, skipif), `tests/panel/`
41
- (panelization acceptance, M2 tripwire).
42
-
43
- ## Roadmap (contract-first, per the kernel plan)
44
-
45
- - v0.1 — value-type primitives (`Vec`, `Plane`, `Arc`, `Line`, `Path`,
46
- `Curve`, `Surface`); `ifckit.geometry` becomes a re-export facade.
47
- Data contract: id + plain arrays (`{kind, degrees, knots, cps}(m,4)`,
48
- homogeneous `[w-mu, w-nu, w-rho, w]`).
49
- - v0.2+ — G1 constrained filling (Gregory corners) over polygonal charts;
50
- Bezier-column clipping (plane-surface, closest-point); trims (pcurves);
51
- tessellator (curvature-driven).
52
- - Out of scope by design: B-rep booleans, tolerant topology (the kernel is
53
- B-rep-free on purpose; volumes are ifcopenshell/OCCT's domain).
54
-
55
- ## Licensing
56
-
57
- geometrykit is LGPL-3.0-or-later, aligned with ifckit. The kernel carries code
58
- promoted from ifckit's geometry package; the provenance of every carried
59
- module is documented in its file header.
60
-
61
- ## Sibling projects
62
-
63
- - `ifckit` — elements/builders/model that bind `geometrykit` to IFC.
64
- - The associativity engine (name TBD: `modelkit`/`stageskit`) — identity,
65
- stage signatures, dirty propagation; geometry-agnostic, stdlib-only.
@@ -1,94 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: geometrykit
3
- Version: 0.5.0
4
- Summary: Geometry primitives and NURBS data model — the geometry substrate for the ifckit family
5
- Author: Sander Boer
6
- License-Expression: LGPL-3.0-or-later
7
- Project-URL: Homepage, https://github.com/maucworks/geometrykit
8
- Project-URL: Changelog, https://github.com/maucworks/geometrykit/blob/master/CHANGELOG.md
9
- Keywords: geometry,nurbs,vector,curve,surface,splines
10
- Classifier: Development Status :: 3 - Alpha
11
- Classifier: Intended Audience :: Developers
12
- Classifier: Programming Language :: Python :: 3
13
- Classifier: Programming Language :: Python :: 3.9
14
- Classifier: Programming Language :: Python :: 3.10
15
- Classifier: Programming Language :: Python :: 3.11
16
- Classifier: Programming Language :: Python :: 3.12
17
- Classifier: Programming Language :: Python :: 3.13
18
- Classifier: Topic :: Scientific/Engineering :: Mathematics
19
- Classifier: Topic :: Multimedia :: Graphics :: 3D Modeling
20
- Requires-Python: >=3.9
21
- Description-Content-Type: text/markdown
22
- License-File: COPYING.LESSER
23
- License-File: COPYING
24
- Provides-Extra: dev
25
- Requires-Dist: pytest<10,>=7; extra == "dev"
26
- Requires-Dist: pytest-cov<8,>=7; extra == "dev"
27
- Requires-Dist: hypothesis<8,>=6; extra == "dev"
28
- Dynamic: license-file
29
-
30
- # geometrykit
31
-
32
- Geometry primitives and NURBS data model: `Vec`, `Plane`, `Curve`, `Surface`,
33
- `Path`, and (planned) G1 constrained patches, curve/surface clipping, trim
34
- pcurves, and a tessellator — the geometry substrate for the ifckit family.
35
-
36
- ## Status
37
-
38
- Source of truth: `github.com/maucworks/geometrykit` — check it out anywhere;
39
- wheels are built from a checkout root (`python -m build`, `packages.find`
40
- over this layout). The package itself is unaware of check-out locations.
41
-
42
- Releases so far (0.0.1/0.0.2) are a **name claim + placeholder**: the API is not yet
43
- published, and the package intentionally exports nothing beyond
44
- `geometrykit.__version__`. Version bumps arrive with the first real
45
- API (planned v0.1: primitives promoted from `ifckit.geometry`, extracted
46
- from the A320 configurator corpus with its existing test coverage as oracle
47
- spec).
48
-
49
- ## Development
50
-
51
- ```bash
52
- python3 -m venv .venv && .venv/bin/pip install -e ".[dev]"
53
- .venv/bin/pytest tests/ -q # full suite (plain env)
54
-
55
- # oracle tier: the tests that check the kernel against OCCT
56
- conda env create -f environment.yml # once
57
- conda run -n geometrykit-oracle python -m pytest tests/ -q
58
- # with coverage + the staged ladder:
59
- conda run -n geometrykit-oracle python -m pytest tests/ --cov -q
60
- conda run -n geometrykit-oracle python -m coverage json -o /tmp/geometrykit-cov.json
61
- python scripts/coverage_ladder.py /tmp/geometrykit-cov.json
62
- # corpus refresh (A320 demos → tests/fixtures/corpus/):
63
- # where ifckit is importable (its own environment, not the oracle one):
64
- python scripts/capture_corpus.py
65
- ```
66
-
67
- Layers: `tests/geometry/` (ported ifckit geometry suite), `tests/test_contract.py`
68
- (contract v0), `tests/test_engine_probe.py` + `tests/test_engine_parity.py`
69
- (runtime split), `tests/oracle/` (OCCT goldens, skipif), `tests/panel/`
70
- (panelization acceptance, M2 tripwire).
71
-
72
- ## Roadmap (contract-first, per the kernel plan)
73
-
74
- - v0.1 — value-type primitives (`Vec`, `Plane`, `Arc`, `Line`, `Path`,
75
- `Curve`, `Surface`); `ifckit.geometry` becomes a re-export facade.
76
- Data contract: id + plain arrays (`{kind, degrees, knots, cps}(m,4)`,
77
- homogeneous `[w-mu, w-nu, w-rho, w]`).
78
- - v0.2+ — G1 constrained filling (Gregory corners) over polygonal charts;
79
- Bezier-column clipping (plane-surface, closest-point); trims (pcurves);
80
- tessellator (curvature-driven).
81
- - Out of scope by design: B-rep booleans, tolerant topology (the kernel is
82
- B-rep-free on purpose; volumes are ifcopenshell/OCCT's domain).
83
-
84
- ## Licensing
85
-
86
- geometrykit is LGPL-3.0-or-later, aligned with ifckit. The kernel carries code
87
- promoted from ifckit's geometry package; the provenance of every carried
88
- module is documented in its file header.
89
-
90
- ## Sibling projects
91
-
92
- - `ifckit` — elements/builders/model that bind `geometrykit` to IFC.
93
- - The associativity engine (name TBD: `modelkit`/`stageskit`) — identity,
94
- stage signatures, dirty propagation; geometry-agnostic, stdlib-only.
File without changes
File without changes
File without changes