geometrykit 0.6.0__tar.gz → 0.6.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 (47) hide show
  1. {geometrykit-0.6.0/python/geometrykit.egg-info → geometrykit-0.6.1}/PKG-INFO +10 -1
  2. {geometrykit-0.6.0 → geometrykit-0.6.1}/README.md +7 -0
  3. {geometrykit-0.6.0 → geometrykit-0.6.1}/pyproject.toml +7 -1
  4. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/__init__.py +1 -1
  5. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/geometry/frames.py +3 -4
  6. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/geometry/path.py +25 -10
  7. {geometrykit-0.6.0 → geometrykit-0.6.1/python/geometrykit.egg-info}/PKG-INFO +10 -1
  8. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit.egg-info/requires.txt +3 -0
  9. {geometrykit-0.6.0 → geometrykit-0.6.1}/COPYING +0 -0
  10. {geometrykit-0.6.0 → geometrykit-0.6.1}/COPYING.LESSER +0 -0
  11. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/cage.py +0 -0
  12. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/contract.py +0 -0
  13. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/engine.py +0 -0
  14. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/export.py +0 -0
  15. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/geometry/__init__.py +0 -0
  16. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/geometry/_bridge.py +0 -0
  17. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/geometry/biarc.py +0 -0
  18. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/geometry/curve.py +0 -0
  19. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/geometry/field.py +0 -0
  20. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/geometry/intersection.py +0 -0
  21. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/geometry/panel.py +0 -0
  22. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/geometry/patterns.py +0 -0
  23. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/geometry/primitives.py +0 -0
  24. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/geometry/spiral.py +0 -0
  25. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/geometry/subdivision.py +0 -0
  26. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/geometry/surface.py +0 -0
  27. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/geometry/transform.py +0 -0
  28. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/runtimes/__init__.py +0 -0
  29. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/runtimes/_npu/__init__.py +0 -0
  30. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/runtimes/_npu/curve_np.py +0 -0
  31. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/runtimes/_npu/fit_np.py +0 -0
  32. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/runtimes/_npu/linalg_np.py +0 -0
  33. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/runtimes/_npu/patch_g1.py +0 -0
  34. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/runtimes/_npu/patch_np.py +0 -0
  35. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/runtimes/_npu/section_np.py +0 -0
  36. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/runtimes/_npu/surface_np.py +0 -0
  37. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/runtimes/_npu/tessellate_np.py +0 -0
  38. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit/runtimes/dispatch.py +0 -0
  39. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit.egg-info/SOURCES.txt +0 -0
  40. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit.egg-info/dependency_links.txt +0 -0
  41. {geometrykit-0.6.0 → geometrykit-0.6.1}/python/geometrykit.egg-info/top_level.txt +0 -0
  42. {geometrykit-0.6.0 → geometrykit-0.6.1}/setup.cfg +0 -0
  43. {geometrykit-0.6.0 → geometrykit-0.6.1}/tests/test_cage.py +0 -0
  44. {geometrykit-0.6.0 → geometrykit-0.6.1}/tests/test_contract.py +0 -0
  45. {geometrykit-0.6.0 → geometrykit-0.6.1}/tests/test_engine_parity.py +0 -0
  46. {geometrykit-0.6.0 → geometrykit-0.6.1}/tests/test_engine_probe.py +0 -0
  47. {geometrykit-0.6.0 → geometrykit-0.6.1}/tests/test_repo_boundary.py +0 -0
@@ -1,11 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: geometrykit
3
- Version: 0.6.0
3
+ Version: 0.6.1
4
4
  Summary: Geometry primitives and NURBS data model — the geometry substrate for the ifckit family
5
5
  Author: Sander Boer
6
6
  License-Expression: LGPL-3.0-or-later
7
7
  Project-URL: Homepage, https://github.com/maucworks/geometrykit
8
8
  Project-URL: Changelog, https://github.com/maucworks/geometrykit/blob/master/CHANGELOG.md
9
+ Project-URL: Documentation, https://maucworks.github.io/geometrykit/
9
10
  Keywords: geometry,nurbs,vector,curve,surface,splines
10
11
  Classifier: Development Status :: 3 - Alpha
11
12
  Classifier: Intended Audience :: Developers
@@ -25,6 +26,7 @@ Provides-Extra: dev
25
26
  Requires-Dist: pytest<10,>=7; extra == "dev"
26
27
  Requires-Dist: pytest-cov<8,>=7; extra == "dev"
27
28
  Requires-Dist: hypothesis<8,>=6; extra == "dev"
29
+ Requires-Dist: pdoc<17,>=15; python_version >= "3.10" and extra == "dev"
28
30
  Dynamic: license-file
29
31
 
30
32
  # geometrykit
@@ -36,6 +38,13 @@ fills with G1/G2 continuity options, plane × surface sections with
36
38
  pcurve tracks, and STEP/OBJ/STL writers. No OCCT, no compiled
37
39
  toolchain required to install.
38
40
 
41
+ ![Tests](https://github.com/maucworks/geometrykit/actions/workflows/tests.yml/badge.svg)
42
+ ![PyPI](https://img.shields.io/pypi/v/geometrykit)
43
+ [![Docs](https://img.shields.io/badge/docs-pdoc-blue)](https://maucworks.github.io/geometrykit/)
44
+
45
+ API reference: **[maucworks.github.io/geometrykit](https://maucworks.github.io/geometrykit/)**
46
+ (pdoc, generated from the docstrings)
47
+
39
48
  ## Install
40
49
 
41
50
  ```bash
@@ -7,6 +7,13 @@ fills with G1/G2 continuity options, plane × surface sections with
7
7
  pcurve tracks, and STEP/OBJ/STL writers. No OCCT, no compiled
8
8
  toolchain required to install.
9
9
 
10
+ ![Tests](https://github.com/maucworks/geometrykit/actions/workflows/tests.yml/badge.svg)
11
+ ![PyPI](https://img.shields.io/pypi/v/geometrykit)
12
+ [![Docs](https://img.shields.io/badge/docs-pdoc-blue)](https://maucworks.github.io/geometrykit/)
13
+
14
+ API reference: **[maucworks.github.io/geometrykit](https://maucworks.github.io/geometrykit/)**
15
+ (pdoc, generated from the docstrings)
16
+
10
17
  ## Install
11
18
 
12
19
  ```bash
@@ -12,7 +12,7 @@ build-backend = "setuptools.build_meta"
12
12
 
13
13
  [project]
14
14
  name = "geometrykit"
15
- version = "0.6.0"
15
+ version = "0.6.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"
@@ -40,11 +40,17 @@ dev = [
40
40
  "pytest>=7,<10",
41
41
  "pytest-cov>=7,<8",
42
42
  "hypothesis>=6,<8",
43
+ "pdoc>=15,<17; python_version >= '3.10'",
43
44
  ]
44
45
 
45
46
  [project.urls]
46
47
  Homepage = "https://github.com/maucworks/geometrykit"
47
48
  Changelog = "https://github.com/maucworks/geometrykit/blob/master/CHANGELOG.md"
49
+ Documentation = "https://maucworks.github.io/geometrykit/"
50
+
51
+ [tool.pdoc]
52
+ search = true
53
+ template_directory = "docs/pdoc_templates"
48
54
 
49
55
  [tool.setuptools.packages.find]
50
56
  where = ["python"]
@@ -21,7 +21,7 @@ from geometrykit.geometry import (
21
21
  Vec,
22
22
  )
23
23
 
24
- __version__ = "0.6.0"
24
+ __version__ = "0.6.1"
25
25
 
26
26
  __all__ = [
27
27
  "__version__",
@@ -1,9 +1,8 @@
1
- # This file was generated with the assistance of an AI coding tool.
2
- # Ported from ifckit/ifckit/geometry/frames.py (LGPL-3.0-or-later heritage;
1
+ # Promoted from ifckit/ifckit/geometry/frames.py (LGPL-3.0-or-later heritage;
3
2
  # ifckit is authored by the same copyright holder as geometrykit).
4
3
  """
5
- ifckit.geometry.frames
6
- ======================
4
+ geometrykit.geometry.frames
5
+ ===========================
7
6
 
8
7
  Transport frames, reference frames, and miter-scale computation for
9
8
  sweeping profiles along 3D spine paths.
@@ -994,18 +994,29 @@ class Path:
994
994
  if isinstance(seg, Arc): # safe: Arc never reloaded independently
995
995
  return seg.normal
996
996
 
997
- # For Lines only: use first segment direction and derive a perpendicular.
998
- # isinstance is safe here — Line is a module-internal primitive,
999
- # not a reloadable user class.
997
+ # For Lines only: normal from the first two non-parallel segments
998
+ # (the true path-plane normal). Collinear paths have no unique
999
+ # normal: fall back to an arbitrary perpendicular, against which
1000
+ # a single straight line frames fine.
1000
1001
  if len(self._segments) > 0 and isinstance(
1001
1002
  self._segments[0], Line
1002
1003
  ): # safe: Line never reloaded
1003
- first_dir = self._segments[0].direction.normalized()
1004
- # Return an arbitrary perpendicular to the line direction
1005
- if abs(first_dir.z) < 0.9:
1006
- return (Vec(0, 0, 1) ** first_dir).normalized()
1007
- else:
1008
- return (Vec(0, 1, 0) ** first_dir).normalized()
1004
+ dirs = []
1005
+ for seg in self._segments:
1006
+ if isinstance(seg, Line): # safe: Line never reloaded
1007
+ try:
1008
+ dirs.append(seg.direction.normalized())
1009
+ except ValueError:
1010
+ continue # degenerate segment: no direction
1011
+ if dirs:
1012
+ ref = dirs[0]
1013
+ for d in dirs[1:]:
1014
+ n = ref**d
1015
+ if n.length() > 1e-9:
1016
+ return n.normalized()
1017
+ if abs(ref.z) < 0.9:
1018
+ return (Vec(0, 0, 1) ** ref).normalized()
1019
+ return (Vec(0, 1, 0) ** ref).normalized()
1009
1020
 
1010
1021
  return None
1011
1022
 
@@ -1032,7 +1043,11 @@ class Path:
1032
1043
  # Ensure x_axis is perfectly orthogonal to normal (floating point safety).
1033
1044
  x_axis = x_axis - normal * (normal @ x_axis)
1034
1045
  x_axis = x_axis.normalized()
1035
- return Plane(origin, x_axis, normal)
1046
+ # y_axis completes the right-handed frame so the plane normal
1047
+ # (z_axis = x_axis x y_axis) equals the path normal. Passing
1048
+ # `normal` as y_axis here would stand the plane edge-on to the path.
1049
+ y_axis = normal**x_axis
1050
+ return Plane(origin, x_axis, y_axis)
1036
1051
 
1037
1052
  @classmethod
1038
1053
  def assemble(
@@ -1,11 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: geometrykit
3
- Version: 0.6.0
3
+ Version: 0.6.1
4
4
  Summary: Geometry primitives and NURBS data model — the geometry substrate for the ifckit family
5
5
  Author: Sander Boer
6
6
  License-Expression: LGPL-3.0-or-later
7
7
  Project-URL: Homepage, https://github.com/maucworks/geometrykit
8
8
  Project-URL: Changelog, https://github.com/maucworks/geometrykit/blob/master/CHANGELOG.md
9
+ Project-URL: Documentation, https://maucworks.github.io/geometrykit/
9
10
  Keywords: geometry,nurbs,vector,curve,surface,splines
10
11
  Classifier: Development Status :: 3 - Alpha
11
12
  Classifier: Intended Audience :: Developers
@@ -25,6 +26,7 @@ Provides-Extra: dev
25
26
  Requires-Dist: pytest<10,>=7; extra == "dev"
26
27
  Requires-Dist: pytest-cov<8,>=7; extra == "dev"
27
28
  Requires-Dist: hypothesis<8,>=6; extra == "dev"
29
+ Requires-Dist: pdoc<17,>=15; python_version >= "3.10" and extra == "dev"
28
30
  Dynamic: license-file
29
31
 
30
32
  # geometrykit
@@ -36,6 +38,13 @@ fills with G1/G2 continuity options, plane × surface sections with
36
38
  pcurve tracks, and STEP/OBJ/STL writers. No OCCT, no compiled
37
39
  toolchain required to install.
38
40
 
41
+ ![Tests](https://github.com/maucworks/geometrykit/actions/workflows/tests.yml/badge.svg)
42
+ ![PyPI](https://img.shields.io/pypi/v/geometrykit)
43
+ [![Docs](https://img.shields.io/badge/docs-pdoc-blue)](https://maucworks.github.io/geometrykit/)
44
+
45
+ API reference: **[maucworks.github.io/geometrykit](https://maucworks.github.io/geometrykit/)**
46
+ (pdoc, generated from the docstrings)
47
+
39
48
  ## Install
40
49
 
41
50
  ```bash
@@ -3,3 +3,6 @@
3
3
  pytest<10,>=7
4
4
  pytest-cov<8,>=7
5
5
  hypothesis<8,>=6
6
+
7
+ [dev:python_version >= "3.10"]
8
+ pdoc<17,>=15
File without changes
File without changes
File without changes