pytetwild 0.2.0__tar.gz → 0.2.2__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 (116) hide show
  1. {pytetwild-0.2.0 → pytetwild-0.2.2}/.github/workflows/build-and-deploy.yml +1 -0
  2. {pytetwild-0.2.0 → pytetwild-0.2.2}/PKG-INFO +2 -2
  3. {pytetwild-0.2.0 → pytetwild-0.2.2}/pyproject.toml +6 -6
  4. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/FTetWildWrapper.cpp +15 -19
  5. {pytetwild-0.2.0 → pytetwild-0.2.2}/tests/test_pytetwild.py +1 -1
  6. {pytetwild-0.2.0 → pytetwild-0.2.2}/.clang-format +0 -0
  7. {pytetwild-0.2.0 → pytetwild-0.2.2}/.gitignore +0 -0
  8. {pytetwild-0.2.0 → pytetwild-0.2.2}/.gitmodules +0 -0
  9. {pytetwild-0.2.0 → pytetwild-0.2.2}/.pre-commit-config.yaml +0 -0
  10. {pytetwild-0.2.0 → pytetwild-0.2.2}/CMakeLists.txt +0 -0
  11. {pytetwild-0.2.0 → pytetwild-0.2.2}/CONTRIBUTING.md +0 -0
  12. {pytetwild-0.2.0 → pytetwild-0.2.2}/LICENSE +0 -0
  13. {pytetwild-0.2.0 → pytetwild-0.2.2}/README.rst +0 -0
  14. {pytetwild-0.2.0 → pytetwild-0.2.2}/exploded-sphere.png +0 -0
  15. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/array_support.h +0 -0
  16. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/.clang-format +0 -0
  17. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/.github/workflows/continuous.yml +0 -0
  18. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/.gitignore +0 -0
  19. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/.travis.yml +0 -0
  20. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/CMakeLists.txt +0 -0
  21. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/LICENSE.MPL2 +0 -0
  22. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/README.md +0 -0
  23. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/cmake/DownloadProject.CMakeLists.cmake.in +0 -0
  24. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/cmake/DownloadProject.cmake +0 -0
  25. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/cmake/FindGMPfTetWild.cmake +0 -0
  26. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/cmake/FindMPFR.cmake +0 -0
  27. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/cmake/FloatTetwildDependencies.cmake +0 -0
  28. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/cmake/FloatTetwildUtils.cmake +0 -0
  29. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/cmake/PrependCurrentPath.cmake +0 -0
  30. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/cmake/UseColors.cmake +0 -0
  31. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/cmake/Warnings.cmake +0 -0
  32. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/cmake/geogram.cmake +0 -0
  33. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/figs/1k.jpg +0 -0
  34. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/python/generate-table-code.py +0 -0
  35. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/python/plot-tet.py +0 -0
  36. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/python/save_all_confs.py +0 -0
  37. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/replicability_instructions.htm +0 -0
  38. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/AABBWrapper.cpp +0 -0
  39. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/AABBWrapper.h +0 -0
  40. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/CMakeLists.txt +0 -0
  41. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/CSGTreeParser.cpp +0 -0
  42. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/CSGTreeParser.hpp +0 -0
  43. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/CutMesh.cpp +0 -0
  44. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/CutMesh.h +0 -0
  45. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/EdgeCollapsing.cpp +0 -0
  46. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/EdgeCollapsing.h +0 -0
  47. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/EdgeSplitting.cpp +0 -0
  48. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/EdgeSplitting.h +0 -0
  49. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/EdgeSwapping.cpp +0 -0
  50. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/EdgeSwapping.h +0 -0
  51. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/FloatTetDelaunay.cpp +0 -0
  52. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/FloatTetDelaunay.h +0 -0
  53. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/FloatTetwild.cpp +0 -0
  54. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/FloatTetwild.h +0 -0
  55. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/LocalOperations.cpp +0 -0
  56. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/LocalOperations.h +0 -0
  57. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/Logger.cpp +0 -0
  58. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/Logger.hpp +0 -0
  59. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/Mesh.cpp +0 -0
  60. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/Mesh.hpp +0 -0
  61. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/MeshIO.cpp +0 -0
  62. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/MeshIO.hpp +0 -0
  63. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/MeshImprovement.cpp +0 -0
  64. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/MeshImprovement.h +0 -0
  65. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/Parameters.h +0 -0
  66. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/Simplification.cpp +0 -0
  67. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/Simplification.h +0 -0
  68. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/Statistics.h +0 -0
  69. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/TriangleInsertion.cpp +0 -0
  70. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/TriangleInsertion.h +0 -0
  71. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/Types.hpp +0 -0
  72. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/VertexSmoothing.cpp +0 -0
  73. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/VertexSmoothing.h +0 -0
  74. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/auto_table.cpp +0 -0
  75. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/auto_table.hpp +0 -0
  76. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/external/CMakeLists.txt +0 -0
  77. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/external/Exception.h +0 -0
  78. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/external/MshLoader.cpp +0 -0
  79. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/external/MshLoader.h +0 -0
  80. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/external/MshSaver.cpp +0 -0
  81. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/external/MshSaver.h +0 -0
  82. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/external/Predicates.cpp +0 -0
  83. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/external/Predicates.hpp +0 -0
  84. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/external/Rational.h +0 -0
  85. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/external/bfs_orient.cpp +0 -0
  86. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/external/bfs_orient.h +0 -0
  87. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/external/getRSS.c +0 -0
  88. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/external/get_mem.cpp +0 -0
  89. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/external/get_mem.h +0 -0
  90. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/external/mesh_AABB.cpp +0 -0
  91. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/external/mesh_AABB.h +0 -0
  92. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/external/predicates.c +0 -0
  93. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/external/triangle_triangle_intersection.cpp +0 -0
  94. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/external/triangle_triangle_intersection_old.cpp +0 -0
  95. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/intersections.cpp +0 -0
  96. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/intersections.h +0 -0
  97. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/src/main.cpp +0 -0
  98. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/tests/CMakeLists.txt +0 -0
  99. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/tests/bunny.off +0 -0
  100. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/tests/main.cpp +0 -0
  101. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/tests/test_predicates.cpp +0 -0
  102. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/tests/test_subdivision.cpp +0 -0
  103. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/tests/test_table.cpp +0 -0
  104. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/tests/test_tree.cpp +0 -0
  105. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/fTetWild/tests/tests.cpp +0 -0
  106. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/pytetwild/PyfTetWildWrapper.pyi +0 -0
  107. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/pytetwild/__init__.py +0 -0
  108. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/pytetwild/_version.py +0 -0
  109. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/pytetwild/py.typed +0 -0
  110. {pytetwild-0.2.0 → pytetwild-0.2.2}/src/pytetwild/pytetwild.py +0 -0
  111. {pytetwild-0.2.0 → pytetwild-0.2.2}/tests/test_data/box.stl +0 -0
  112. {pytetwild-0.2.0 → pytetwild-0.2.2}/tests/test_data/sphere.stl +0 -0
  113. {pytetwild-0.2.0 → pytetwild-0.2.2}/tests/test_data/test_surf.ply +0 -0
  114. {pytetwild-0.2.0 → pytetwild-0.2.2}/tests/test_data/test_tets.msh +0 -0
  115. {pytetwild-0.2.0 → pytetwild-0.2.2}/tools/audit_wheel.sh +0 -0
  116. {pytetwild-0.2.0 → pytetwild-0.2.2}/tools/extract-deps.py +0 -0
@@ -142,6 +142,7 @@ jobs:
142
142
  url: https://pypi.org/p/pytetwild
143
143
  permissions:
144
144
  id-token: write # this permission is mandatory for trusted publishing
145
+ contents: write # required to create a release
145
146
  steps:
146
147
  - uses: actions/download-artifact@v7
147
148
  - name: Flatten directory structure
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: pytetwild
3
- Version: 0.2.0
3
+ Version: 0.2.2
4
4
  Summary: Python wrapper of fTetWild
5
5
  Author-Email: Alex Kaszynski <akascap@gmail.com>
6
6
  Classifier: Development Status :: 3 - Alpha
@@ -22,7 +22,7 @@ Requires-Dist: pyvista; extra == "all"
22
22
  Provides-Extra: tests
23
23
  Requires-Dist: pytest; extra == "tests"
24
24
  Requires-Dist: pyvista; extra == "tests"
25
- Requires-Dist: scipy; extra == "tests"
25
+ Requires-Dist: scipy<1.17.0; extra == "tests"
26
26
  Requires-Dist: meshio; extra == "tests"
27
27
  Provides-Extra: dev
28
28
  Requires-Dist: pre-commit; extra == "dev"
@@ -4,7 +4,7 @@ requires = ["scikit-build-core >=0.4.3", "nanobind >=1.3.2"]
4
4
 
5
5
  [project]
6
6
  name = "pytetwild"
7
- version = "0.2.0"
7
+ version = "0.2.2"
8
8
  description = "Python wrapper of fTetWild"
9
9
  readme = { file = "README.rst", content-type = "text/x-rst" }
10
10
  authors = [{ name = "Alex Kaszynski", email = "akascap@gmail.com" }]
@@ -34,7 +34,7 @@ pytetwild = ["py.typed"]
34
34
 
35
35
  [project.optional-dependencies]
36
36
  all = ['pyvista']
37
- tests = ["pytest", "pyvista", "scipy", "meshio"]
37
+ tests = ["pytest", "pyvista", "scipy<1.17.0", "meshio"]
38
38
  dev = ["pre-commit"]
39
39
 
40
40
  [tool.scikit-build]
@@ -57,13 +57,13 @@ archs = ["auto64"] # 64-bit only
57
57
  before-build = "pip install abi3audit"
58
58
  build = "cp310-* cp311-* cp312-*" # 3.12+ are abi3 wheels
59
59
  skip = ["*musllinux*"] # disable musl-based wheels
60
- test-requires = "pytest pyvista scipy meshio"
60
+ test-extras = ["tests"]
61
61
  test-command = "pytest {project}/tests -v"
62
62
 
63
63
  [tool.cibuildwheel.linux]
64
- manylinux-x86_64-image = "manylinux_2_28"
65
- before-all = "dnf install -y gmp-devel"
66
- before-build = "pip install abi3audit cmake==3.29.0"
64
+ manylinux-x86_64-image = "manylinux2014"
65
+ before-all = "yum install -y gmp-devel"
66
+ before-build = "pip install abi3audit cmake"
67
67
  repair-wheel-command = [
68
68
  "auditwheel repair -w {dest_dir} {wheel}",
69
69
  "bash tools/audit_wheel.sh {wheel}"
@@ -41,6 +41,20 @@ using floatTetWild::json;
41
41
  using floatTetWild::Vector3;
42
42
  using floatTetWild::Vector3i;
43
43
 
44
+ struct CoutRedirect {
45
+ std::streambuf *old = nullptr;
46
+ explicit CoutRedirect(bool enable) {
47
+ if (enable) {
48
+ old = std::cout.rdbuf();
49
+ std::cout.rdbuf(nullptr);
50
+ }
51
+ }
52
+ ~CoutRedirect() {
53
+ if (old)
54
+ std::cout.rdbuf(old);
55
+ }
56
+ };
57
+
44
58
  // Convert a tetwild mesh to numpy vertex and int arrays
45
59
  nb::tuple extractMeshDataNumpy(const floatTetWild::Mesh &mesh, bool vtk_ordering) {
46
60
  std::map<int, int> old2new;
@@ -107,13 +121,6 @@ template <typename T> GEO::vector<T> array_to_geo_vector(NDArray<T, 2> array) {
107
121
  // numpy arrays are contiguous
108
122
  std::memcpy(geo_vec.data(), array.data(), sz * sizeof(T));
109
123
 
110
- // if above unstable, simply loop
111
- // T *data = array.data();
112
- // // Populate the GEO::vector<T> with elements from the array.
113
- // for (size_t i = 0; i < sz; ++i) {
114
- // geo_vec.data()[i] = data[i];
115
- // }
116
-
117
124
  return geo_vec;
118
125
  }
119
126
 
@@ -135,13 +142,7 @@ nb::tuple Tetrahedralize(
135
142
  using namespace floatTetWild;
136
143
  using namespace Eigen;
137
144
  GEO::initialize();
138
-
139
- // There's some std::cout used in floatTetWild that needs to be redirected
140
- std::streambuf *orig_cout_buf;
141
- if (quiet) {
142
- orig_cout_buf = std::cout.rdbuf();
143
- std::cout.rdbuf(NULL);
144
- }
145
+ CoutRedirect cout_guard(quiet);
145
146
 
146
147
  if (!quiet) {
147
148
  std::cout << "Starting tetrahedralization..." << std::endl;
@@ -284,11 +285,6 @@ nb::tuple Tetrahedralize(
284
285
  std::cout << "Tetrahedralization completed. Extracting mesh data..." << std::endl;
285
286
  }
286
287
 
287
- // return stdout
288
- if (orig_cout_buf) {
289
- std::cout.rdbuf(orig_cout_buf);
290
- }
291
-
292
288
  return extractMeshDataNumpy(mesh, vtk_ordering);
293
289
  }
294
290
 
@@ -48,7 +48,7 @@ def test_tetrahedralize_abs_edge_len() -> None:
48
48
  def test_tetrahedralize_edge_length_fac() -> None:
49
49
  mesh = pv.Cube().triangulate()
50
50
  result = tetrahedralize_pv(mesh, num_opt_iter=5) # default is 0.05
51
- result_very_coarse = tetrahedralize_pv(mesh, edge_length_fac=0.1, num_opt_iter=5)
51
+ result_very_coarse = tetrahedralize_pv(mesh, edge_length_fac=0.1, num_opt_iter=5, quiet=True)
52
52
  assert result_very_coarse.n_cells < result.n_cells
53
53
 
54
54
  # invalid edge length
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes