pytetwild 0.1.dev1__tar.gz → 0.2.0__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 (400) hide show
  1. pytetwild-0.2.0/.clang-format +13 -0
  2. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/.github/workflows/build-and-deploy.yml +50 -14
  3. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/.gitignore +21 -1
  4. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/.pre-commit-config.yaml +8 -10
  5. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/CMakeLists.txt +24 -13
  6. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/PKG-INFO +60 -25
  7. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/README.rst +48 -15
  8. pytetwild-0.2.0/exploded-sphere.png +0 -0
  9. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/pyproject.toml +46 -17
  10. pytetwild-0.2.0/src/FTetWildWrapper.cpp +473 -0
  11. pytetwild-0.2.0/src/array_support.h +75 -0
  12. pytetwild-0.2.0/src/fTetWild/.github/workflows/continuous.yml +116 -0
  13. pytetwild-0.2.0/src/fTetWild/CMakeLists.txt +184 -0
  14. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/README.md +3 -2
  15. pytetwild-0.2.0/src/fTetWild/cmake/DownloadProject.CMakeLists.cmake.in +17 -0
  16. pytetwild-0.2.0/src/fTetWild/cmake/FloatTetwildDependencies.cmake +186 -0
  17. pytetwild-0.2.0/src/fTetWild/cmake/Warnings.cmake +146 -0
  18. pytetwild-0.2.0/src/fTetWild/cmake/geogram.cmake +89 -0
  19. pytetwild-0.2.0/src/fTetWild/src/EdgeCollapsing.cpp +633 -0
  20. pytetwild-0.2.0/src/fTetWild/src/LocalOperations.cpp +1663 -0
  21. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/MeshImprovement.cpp +26 -68
  22. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/Parameters.h +10 -1
  23. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/Simplification.cpp +350 -290
  24. pytetwild-0.2.0/src/fTetWild/src/TriangleInsertion.cpp +3537 -0
  25. pytetwild-0.2.0/src/fTetWild/src/VertexSmoothing.cpp +352 -0
  26. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/external/CMakeLists.txt +0 -4
  27. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/main.cpp +40 -27
  28. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/tests/CMakeLists.txt +10 -5
  29. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/tests/test_predicates.cpp +2 -1
  30. pytetwild-0.2.0/src/pytetwild/PyfTetWildWrapper.pyi +29 -0
  31. pytetwild-0.2.0/src/pytetwild/__init__.py +4 -0
  32. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/pytetwild/_version.py +1 -0
  33. pytetwild-0.2.0/src/pytetwild/pytetwild.py +365 -0
  34. pytetwild-0.2.0/tests/test_data/box.stl +0 -0
  35. pytetwild-0.2.0/tests/test_data/sphere.stl +0 -0
  36. pytetwild-0.2.0/tests/test_pytetwild.py +156 -0
  37. pytetwild-0.2.0/tools/audit_wheel.sh +9 -0
  38. pytetwild-0.2.0/tools/extract-deps.py +8 -0
  39. pytetwild-0.1.dev1/exploded-sphere.png +0 -0
  40. pytetwild-0.1.dev1/src/FTetWildWrapper.cpp +0 -266
  41. pytetwild-0.1.dev1/src/fTetWild/.git +0 -1
  42. pytetwild-0.1.dev1/src/fTetWild/.github/workflows/continuous.yml +0 -167
  43. pytetwild-0.1.dev1/src/fTetWild/CMakeLists.txt +0 -188
  44. pytetwild-0.1.dev1/src/fTetWild/cmake/DownloadProject.CMakeLists.cmake.in +0 -17
  45. pytetwild-0.1.dev1/src/fTetWild/cmake/FloatTetwildDependencies.cmake +0 -122
  46. pytetwild-0.1.dev1/src/fTetWild/cmake/FloatTetwildDownloadExternal.cmake +0 -124
  47. pytetwild-0.1.dev1/src/fTetWild/cmake/Warnings.cmake +0 -160
  48. pytetwild-0.1.dev1/src/fTetWild/cmake/geogram.cmake +0 -93
  49. pytetwild-0.1.dev1/src/fTetWild/python/build_cut_table.py +0 -1165
  50. pytetwild-0.1.dev1/src/fTetWild/src/EdgeCollapsing.cpp +0 -595
  51. pytetwild-0.1.dev1/src/fTetWild/src/LocalOperations.cpp +0 -1455
  52. pytetwild-0.1.dev1/src/fTetWild/src/TriangleInsertion.cpp +0 -3145
  53. pytetwild-0.1.dev1/src/fTetWild/src/VertexSmoothing.cpp +0 -333
  54. pytetwild-0.1.dev1/src/fTetWild/src/external/FastWindingNumber.cpp +0 -39
  55. pytetwild-0.1.dev1/src/fTetWild/src/external/FastWindingNumber.hpp +0 -8
  56. pytetwild-0.1.dev1/src/fTetWild/src/external/WindingNumber.h +0 -7401
  57. pytetwild-0.1.dev1/src/pybind11/.appveyor.yml +0 -35
  58. pytetwild-0.1.dev1/src/pybind11/.clang-format +0 -38
  59. pytetwild-0.1.dev1/src/pybind11/.clang-tidy +0 -77
  60. pytetwild-0.1.dev1/src/pybind11/.cmake-format.yaml +0 -73
  61. pytetwild-0.1.dev1/src/pybind11/.codespell-ignore-lines +0 -24
  62. pytetwild-0.1.dev1/src/pybind11/.git +0 -1
  63. pytetwild-0.1.dev1/src/pybind11/.gitattributes +0 -1
  64. pytetwild-0.1.dev1/src/pybind11/.github/CODEOWNERS +0 -9
  65. pytetwild-0.1.dev1/src/pybind11/.github/CONTRIBUTING.md +0 -388
  66. pytetwild-0.1.dev1/src/pybind11/.github/ISSUE_TEMPLATE/bug-report.yml +0 -61
  67. pytetwild-0.1.dev1/src/pybind11/.github/ISSUE_TEMPLATE/config.yml +0 -8
  68. pytetwild-0.1.dev1/src/pybind11/.github/dependabot.yml +0 -15
  69. pytetwild-0.1.dev1/src/pybind11/.github/labeler.yml +0 -8
  70. pytetwild-0.1.dev1/src/pybind11/.github/labeler_merged.yml +0 -3
  71. pytetwild-0.1.dev1/src/pybind11/.github/matchers/pylint.json +0 -32
  72. pytetwild-0.1.dev1/src/pybind11/.github/pull_request_template.md +0 -19
  73. pytetwild-0.1.dev1/src/pybind11/.github/workflows/ci.yml +0 -1190
  74. pytetwild-0.1.dev1/src/pybind11/.github/workflows/configure.yml +0 -92
  75. pytetwild-0.1.dev1/src/pybind11/.github/workflows/format.yml +0 -60
  76. pytetwild-0.1.dev1/src/pybind11/.github/workflows/labeler.yml +0 -25
  77. pytetwild-0.1.dev1/src/pybind11/.github/workflows/pip.yml +0 -114
  78. pytetwild-0.1.dev1/src/pybind11/.github/workflows/upstream.yml +0 -116
  79. pytetwild-0.1.dev1/src/pybind11/.gitignore +0 -46
  80. pytetwild-0.1.dev1/src/pybind11/.pre-commit-config.yaml +0 -155
  81. pytetwild-0.1.dev1/src/pybind11/.readthedocs.yml +0 -20
  82. pytetwild-0.1.dev1/src/pybind11/CMakeLists.txt +0 -363
  83. pytetwild-0.1.dev1/src/pybind11/LICENSE +0 -29
  84. pytetwild-0.1.dev1/src/pybind11/MANIFEST.in +0 -6
  85. pytetwild-0.1.dev1/src/pybind11/README.rst +0 -180
  86. pytetwild-0.1.dev1/src/pybind11/SECURITY.md +0 -13
  87. pytetwild-0.1.dev1/src/pybind11/docs/Doxyfile +0 -21
  88. pytetwild-0.1.dev1/src/pybind11/docs/Makefile +0 -192
  89. pytetwild-0.1.dev1/src/pybind11/docs/_static/css/custom.css +0 -3
  90. pytetwild-0.1.dev1/src/pybind11/docs/advanced/cast/chrono.rst +0 -81
  91. pytetwild-0.1.dev1/src/pybind11/docs/advanced/cast/custom.rst +0 -93
  92. pytetwild-0.1.dev1/src/pybind11/docs/advanced/cast/eigen.rst +0 -310
  93. pytetwild-0.1.dev1/src/pybind11/docs/advanced/cast/functional.rst +0 -109
  94. pytetwild-0.1.dev1/src/pybind11/docs/advanced/cast/index.rst +0 -43
  95. pytetwild-0.1.dev1/src/pybind11/docs/advanced/cast/overview.rst +0 -170
  96. pytetwild-0.1.dev1/src/pybind11/docs/advanced/cast/stl.rst +0 -249
  97. pytetwild-0.1.dev1/src/pybind11/docs/advanced/cast/strings.rst +0 -296
  98. pytetwild-0.1.dev1/src/pybind11/docs/advanced/classes.rst +0 -1335
  99. pytetwild-0.1.dev1/src/pybind11/docs/advanced/embedding.rst +0 -262
  100. pytetwild-0.1.dev1/src/pybind11/docs/advanced/exceptions.rst +0 -401
  101. pytetwild-0.1.dev1/src/pybind11/docs/advanced/functions.rst +0 -614
  102. pytetwild-0.1.dev1/src/pybind11/docs/advanced/misc.rst +0 -429
  103. pytetwild-0.1.dev1/src/pybind11/docs/advanced/pycpp/index.rst +0 -13
  104. pytetwild-0.1.dev1/src/pybind11/docs/advanced/pycpp/numpy.rst +0 -455
  105. pytetwild-0.1.dev1/src/pybind11/docs/advanced/pycpp/object.rst +0 -286
  106. pytetwild-0.1.dev1/src/pybind11/docs/advanced/pycpp/utilities.rst +0 -155
  107. pytetwild-0.1.dev1/src/pybind11/docs/advanced/smart_ptrs.rst +0 -174
  108. pytetwild-0.1.dev1/src/pybind11/docs/basics.rst +0 -307
  109. pytetwild-0.1.dev1/src/pybind11/docs/benchmark.py +0 -87
  110. pytetwild-0.1.dev1/src/pybind11/docs/benchmark.rst +0 -95
  111. pytetwild-0.1.dev1/src/pybind11/docs/changelog.rst +0 -2832
  112. pytetwild-0.1.dev1/src/pybind11/docs/classes.rst +0 -555
  113. pytetwild-0.1.dev1/src/pybind11/docs/cmake/index.rst +0 -8
  114. pytetwild-0.1.dev1/src/pybind11/docs/compiling.rst +0 -649
  115. pytetwild-0.1.dev1/src/pybind11/docs/conf.py +0 -368
  116. pytetwild-0.1.dev1/src/pybind11/docs/faq.rst +0 -308
  117. pytetwild-0.1.dev1/src/pybind11/docs/index.rst +0 -48
  118. pytetwild-0.1.dev1/src/pybind11/docs/installing.rst +0 -105
  119. pytetwild-0.1.dev1/src/pybind11/docs/limitations.rst +0 -72
  120. pytetwild-0.1.dev1/src/pybind11/docs/pybind11-logo.png +0 -0
  121. pytetwild-0.1.dev1/src/pybind11/docs/pybind11_vs_boost_python1.png +0 -0
  122. pytetwild-0.1.dev1/src/pybind11/docs/pybind11_vs_boost_python1.svg +0 -427
  123. pytetwild-0.1.dev1/src/pybind11/docs/pybind11_vs_boost_python2.png +0 -0
  124. pytetwild-0.1.dev1/src/pybind11/docs/pybind11_vs_boost_python2.svg +0 -427
  125. pytetwild-0.1.dev1/src/pybind11/docs/reference.rst +0 -130
  126. pytetwild-0.1.dev1/src/pybind11/docs/release.rst +0 -143
  127. pytetwild-0.1.dev1/src/pybind11/docs/requirements.txt +0 -6
  128. pytetwild-0.1.dev1/src/pybind11/docs/upgrade.rst +0 -566
  129. pytetwild-0.1.dev1/src/pybind11/include/pybind11/attr.h +0 -690
  130. pytetwild-0.1.dev1/src/pybind11/include/pybind11/buffer_info.h +0 -208
  131. pytetwild-0.1.dev1/src/pybind11/include/pybind11/cast.h +0 -1730
  132. pytetwild-0.1.dev1/src/pybind11/include/pybind11/chrono.h +0 -225
  133. pytetwild-0.1.dev1/src/pybind11/include/pybind11/common.h +0 -2
  134. pytetwild-0.1.dev1/src/pybind11/include/pybind11/complex.h +0 -74
  135. pytetwild-0.1.dev1/src/pybind11/include/pybind11/detail/class.h +0 -748
  136. pytetwild-0.1.dev1/src/pybind11/include/pybind11/detail/common.h +0 -1263
  137. pytetwild-0.1.dev1/src/pybind11/include/pybind11/detail/descr.h +0 -171
  138. pytetwild-0.1.dev1/src/pybind11/include/pybind11/detail/init.h +0 -434
  139. pytetwild-0.1.dev1/src/pybind11/include/pybind11/detail/internals.h +0 -662
  140. pytetwild-0.1.dev1/src/pybind11/include/pybind11/detail/type_caster_base.h +0 -1214
  141. pytetwild-0.1.dev1/src/pybind11/include/pybind11/detail/typeid.h +0 -65
  142. pytetwild-0.1.dev1/src/pybind11/include/pybind11/eigen/common.h +0 -9
  143. pytetwild-0.1.dev1/src/pybind11/include/pybind11/eigen/matrix.h +0 -714
  144. pytetwild-0.1.dev1/src/pybind11/include/pybind11/eigen/tensor.h +0 -516
  145. pytetwild-0.1.dev1/src/pybind11/include/pybind11/eigen.h +0 -12
  146. pytetwild-0.1.dev1/src/pybind11/include/pybind11/embed.h +0 -316
  147. pytetwild-0.1.dev1/src/pybind11/include/pybind11/eval.h +0 -156
  148. pytetwild-0.1.dev1/src/pybind11/include/pybind11/functional.h +0 -137
  149. pytetwild-0.1.dev1/src/pybind11/include/pybind11/gil.h +0 -247
  150. pytetwild-0.1.dev1/src/pybind11/include/pybind11/gil_safe_call_once.h +0 -91
  151. pytetwild-0.1.dev1/src/pybind11/include/pybind11/iostream.h +0 -265
  152. pytetwild-0.1.dev1/src/pybind11/include/pybind11/numpy.h +0 -2020
  153. pytetwild-0.1.dev1/src/pybind11/include/pybind11/operators.h +0 -202
  154. pytetwild-0.1.dev1/src/pybind11/include/pybind11/options.h +0 -92
  155. pytetwild-0.1.dev1/src/pybind11/include/pybind11/pybind11.h +0 -2942
  156. pytetwild-0.1.dev1/src/pybind11/include/pybind11/pytypes.h +0 -2573
  157. pytetwild-0.1.dev1/src/pybind11/include/pybind11/stl/filesystem.h +0 -116
  158. pytetwild-0.1.dev1/src/pybind11/include/pybind11/stl.h +0 -447
  159. pytetwild-0.1.dev1/src/pybind11/include/pybind11/stl_bind.h +0 -823
  160. pytetwild-0.1.dev1/src/pybind11/include/pybind11/type_caster_pyobject_ptr.h +0 -61
  161. pytetwild-0.1.dev1/src/pybind11/include/pybind11/typing.h +0 -117
  162. pytetwild-0.1.dev1/src/pybind11/noxfile.py +0 -107
  163. pytetwild-0.1.dev1/src/pybind11/pybind11/__init__.py +0 -17
  164. pytetwild-0.1.dev1/src/pybind11/pybind11/__main__.py +0 -62
  165. pytetwild-0.1.dev1/src/pybind11/pybind11/_version.py +0 -12
  166. pytetwild-0.1.dev1/src/pybind11/pybind11/commands.py +0 -37
  167. pytetwild-0.1.dev1/src/pybind11/pybind11/py.typed +0 -0
  168. pytetwild-0.1.dev1/src/pybind11/pybind11/setup_helpers.py +0 -500
  169. pytetwild-0.1.dev1/src/pybind11/pyproject.toml +0 -95
  170. pytetwild-0.1.dev1/src/pybind11/setup.cfg +0 -43
  171. pytetwild-0.1.dev1/src/pybind11/setup.py +0 -150
  172. pytetwild-0.1.dev1/src/pybind11/tests/CMakeLists.txt +0 -585
  173. pytetwild-0.1.dev1/src/pybind11/tests/conftest.py +0 -221
  174. pytetwild-0.1.dev1/src/pybind11/tests/constructor_stats.h +0 -322
  175. pytetwild-0.1.dev1/src/pybind11/tests/cross_module_gil_utils.cpp +0 -108
  176. pytetwild-0.1.dev1/src/pybind11/tests/cross_module_interleaved_error_already_set.cpp +0 -51
  177. pytetwild-0.1.dev1/src/pybind11/tests/eigen_tensor_avoid_stl_array.cpp +0 -14
  178. pytetwild-0.1.dev1/src/pybind11/tests/env.py +0 -27
  179. pytetwild-0.1.dev1/src/pybind11/tests/extra_python_package/pytest.ini +0 -0
  180. pytetwild-0.1.dev1/src/pybind11/tests/extra_python_package/test_files.py +0 -293
  181. pytetwild-0.1.dev1/src/pybind11/tests/extra_setuptools/pytest.ini +0 -0
  182. pytetwild-0.1.dev1/src/pybind11/tests/extra_setuptools/test_setuphelper.py +0 -151
  183. pytetwild-0.1.dev1/src/pybind11/tests/local_bindings.h +0 -92
  184. pytetwild-0.1.dev1/src/pybind11/tests/object.h +0 -205
  185. pytetwild-0.1.dev1/src/pybind11/tests/pybind11_cross_module_tests.cpp +0 -149
  186. pytetwild-0.1.dev1/src/pybind11/tests/pybind11_tests.cpp +0 -123
  187. pytetwild-0.1.dev1/src/pybind11/tests/pybind11_tests.h +0 -85
  188. pytetwild-0.1.dev1/src/pybind11/tests/pytest.ini +0 -22
  189. pytetwild-0.1.dev1/src/pybind11/tests/requirements.txt +0 -15
  190. pytetwild-0.1.dev1/src/pybind11/tests/test_async.cpp +0 -25
  191. pytetwild-0.1.dev1/src/pybind11/tests/test_async.py +0 -24
  192. pytetwild-0.1.dev1/src/pybind11/tests/test_buffers.cpp +0 -259
  193. pytetwild-0.1.dev1/src/pybind11/tests/test_buffers.py +0 -228
  194. pytetwild-0.1.dev1/src/pybind11/tests/test_builtin_casters.cpp +0 -392
  195. pytetwild-0.1.dev1/src/pybind11/tests/test_builtin_casters.py +0 -528
  196. pytetwild-0.1.dev1/src/pybind11/tests/test_call_policies.cpp +0 -115
  197. pytetwild-0.1.dev1/src/pybind11/tests/test_call_policies.py +0 -247
  198. pytetwild-0.1.dev1/src/pybind11/tests/test_callbacks.cpp +0 -280
  199. pytetwild-0.1.dev1/src/pybind11/tests/test_callbacks.py +0 -225
  200. pytetwild-0.1.dev1/src/pybind11/tests/test_chrono.cpp +0 -81
  201. pytetwild-0.1.dev1/src/pybind11/tests/test_chrono.py +0 -205
  202. pytetwild-0.1.dev1/src/pybind11/tests/test_class.cpp +0 -657
  203. pytetwild-0.1.dev1/src/pybind11/tests/test_class.py +0 -499
  204. pytetwild-0.1.dev1/src/pybind11/tests/test_cmake_build/CMakeLists.txt +0 -80
  205. pytetwild-0.1.dev1/src/pybind11/tests/test_cmake_build/embed.cpp +0 -23
  206. pytetwild-0.1.dev1/src/pybind11/tests/test_cmake_build/installed_embed/CMakeLists.txt +0 -28
  207. pytetwild-0.1.dev1/src/pybind11/tests/test_cmake_build/installed_function/CMakeLists.txt +0 -39
  208. pytetwild-0.1.dev1/src/pybind11/tests/test_cmake_build/installed_target/CMakeLists.txt +0 -46
  209. pytetwild-0.1.dev1/src/pybind11/tests/test_cmake_build/main.cpp +0 -6
  210. pytetwild-0.1.dev1/src/pybind11/tests/test_cmake_build/subdirectory_embed/CMakeLists.txt +0 -47
  211. pytetwild-0.1.dev1/src/pybind11/tests/test_cmake_build/subdirectory_function/CMakeLists.txt +0 -41
  212. pytetwild-0.1.dev1/src/pybind11/tests/test_cmake_build/subdirectory_target/CMakeLists.txt +0 -47
  213. pytetwild-0.1.dev1/src/pybind11/tests/test_cmake_build/test.py +0 -8
  214. pytetwild-0.1.dev1/src/pybind11/tests/test_const_name.cpp +0 -55
  215. pytetwild-0.1.dev1/src/pybind11/tests/test_const_name.py +0 -29
  216. pytetwild-0.1.dev1/src/pybind11/tests/test_constants_and_functions.cpp +0 -154
  217. pytetwild-0.1.dev1/src/pybind11/tests/test_constants_and_functions.py +0 -56
  218. pytetwild-0.1.dev1/src/pybind11/tests/test_copy_move.cpp +0 -533
  219. pytetwild-0.1.dev1/src/pybind11/tests/test_copy_move.py +0 -132
  220. pytetwild-0.1.dev1/src/pybind11/tests/test_custom_type_casters.cpp +0 -209
  221. pytetwild-0.1.dev1/src/pybind11/tests/test_custom_type_casters.py +0 -122
  222. pytetwild-0.1.dev1/src/pybind11/tests/test_custom_type_setup.cpp +0 -41
  223. pytetwild-0.1.dev1/src/pybind11/tests/test_custom_type_setup.py +0 -48
  224. pytetwild-0.1.dev1/src/pybind11/tests/test_docstring_options.cpp +0 -141
  225. pytetwild-0.1.dev1/src/pybind11/tests/test_docstring_options.py +0 -64
  226. pytetwild-0.1.dev1/src/pybind11/tests/test_eigen_matrix.cpp +0 -445
  227. pytetwild-0.1.dev1/src/pybind11/tests/test_eigen_matrix.py +0 -812
  228. pytetwild-0.1.dev1/src/pybind11/tests/test_eigen_tensor.cpp +0 -18
  229. pytetwild-0.1.dev1/src/pybind11/tests/test_eigen_tensor.inl +0 -333
  230. pytetwild-0.1.dev1/src/pybind11/tests/test_eigen_tensor.py +0 -288
  231. pytetwild-0.1.dev1/src/pybind11/tests/test_embed/CMakeLists.txt +0 -47
  232. pytetwild-0.1.dev1/src/pybind11/tests/test_embed/catch.cpp +0 -43
  233. pytetwild-0.1.dev1/src/pybind11/tests/test_embed/external_module.cpp +0 -20
  234. pytetwild-0.1.dev1/src/pybind11/tests/test_embed/test_interpreter.cpp +0 -488
  235. pytetwild-0.1.dev1/src/pybind11/tests/test_embed/test_interpreter.py +0 -14
  236. pytetwild-0.1.dev1/src/pybind11/tests/test_embed/test_trampoline.py +0 -16
  237. pytetwild-0.1.dev1/src/pybind11/tests/test_enum.cpp +0 -133
  238. pytetwild-0.1.dev1/src/pybind11/tests/test_enum.py +0 -269
  239. pytetwild-0.1.dev1/src/pybind11/tests/test_eval.cpp +0 -118
  240. pytetwild-0.1.dev1/src/pybind11/tests/test_eval.py +0 -50
  241. pytetwild-0.1.dev1/src/pybind11/tests/test_eval_call.py +0 -4
  242. pytetwild-0.1.dev1/src/pybind11/tests/test_exceptions.cpp +0 -385
  243. pytetwild-0.1.dev1/src/pybind11/tests/test_exceptions.h +0 -13
  244. pytetwild-0.1.dev1/src/pybind11/tests/test_exceptions.py +0 -421
  245. pytetwild-0.1.dev1/src/pybind11/tests/test_factory_constructors.cpp +0 -430
  246. pytetwild-0.1.dev1/src/pybind11/tests/test_factory_constructors.py +0 -516
  247. pytetwild-0.1.dev1/src/pybind11/tests/test_gil_scoped.cpp +0 -144
  248. pytetwild-0.1.dev1/src/pybind11/tests/test_gil_scoped.py +0 -242
  249. pytetwild-0.1.dev1/src/pybind11/tests/test_iostream.cpp +0 -126
  250. pytetwild-0.1.dev1/src/pybind11/tests/test_iostream.py +0 -291
  251. pytetwild-0.1.dev1/src/pybind11/tests/test_kwargs_and_defaults.cpp +0 -327
  252. pytetwild-0.1.dev1/src/pybind11/tests/test_kwargs_and_defaults.py +0 -425
  253. pytetwild-0.1.dev1/src/pybind11/tests/test_local_bindings.cpp +0 -106
  254. pytetwild-0.1.dev1/src/pybind11/tests/test_local_bindings.py +0 -257
  255. pytetwild-0.1.dev1/src/pybind11/tests/test_methods_and_attributes.cpp +0 -493
  256. pytetwild-0.1.dev1/src/pybind11/tests/test_methods_and_attributes.py +0 -537
  257. pytetwild-0.1.dev1/src/pybind11/tests/test_modules.cpp +0 -125
  258. pytetwild-0.1.dev1/src/pybind11/tests/test_modules.py +0 -116
  259. pytetwild-0.1.dev1/src/pybind11/tests/test_multiple_inheritance.cpp +0 -341
  260. pytetwild-0.1.dev1/src/pybind11/tests/test_multiple_inheritance.py +0 -493
  261. pytetwild-0.1.dev1/src/pybind11/tests/test_numpy_array.cpp +0 -552
  262. pytetwild-0.1.dev1/src/pybind11/tests/test_numpy_array.py +0 -668
  263. pytetwild-0.1.dev1/src/pybind11/tests/test_numpy_dtypes.cpp +0 -614
  264. pytetwild-0.1.dev1/src/pybind11/tests/test_numpy_dtypes.py +0 -440
  265. pytetwild-0.1.dev1/src/pybind11/tests/test_numpy_vectorize.cpp +0 -107
  266. pytetwild-0.1.dev1/src/pybind11/tests/test_numpy_vectorize.py +0 -266
  267. pytetwild-0.1.dev1/src/pybind11/tests/test_opaque_types.cpp +0 -77
  268. pytetwild-0.1.dev1/src/pybind11/tests/test_opaque_types.py +0 -58
  269. pytetwild-0.1.dev1/src/pybind11/tests/test_operator_overloading.cpp +0 -281
  270. pytetwild-0.1.dev1/src/pybind11/tests/test_operator_overloading.py +0 -151
  271. pytetwild-0.1.dev1/src/pybind11/tests/test_pickling.cpp +0 -194
  272. pytetwild-0.1.dev1/src/pybind11/tests/test_pickling.py +0 -93
  273. pytetwild-0.1.dev1/src/pybind11/tests/test_python_multiple_inheritance.cpp +0 -45
  274. pytetwild-0.1.dev1/src/pybind11/tests/test_python_multiple_inheritance.py +0 -35
  275. pytetwild-0.1.dev1/src/pybind11/tests/test_pytypes.cpp +0 -835
  276. pytetwild-0.1.dev1/src/pybind11/tests/test_pytypes.py +0 -947
  277. pytetwild-0.1.dev1/src/pybind11/tests/test_sequences_and_iterators.cpp +0 -600
  278. pytetwild-0.1.dev1/src/pybind11/tests/test_sequences_and_iterators.py +0 -265
  279. pytetwild-0.1.dev1/src/pybind11/tests/test_smart_ptr.cpp +0 -473
  280. pytetwild-0.1.dev1/src/pybind11/tests/test_smart_ptr.py +0 -315
  281. pytetwild-0.1.dev1/src/pybind11/tests/test_stl.cpp +0 -551
  282. pytetwild-0.1.dev1/src/pybind11/tests/test_stl.py +0 -381
  283. pytetwild-0.1.dev1/src/pybind11/tests/test_stl_binders.cpp +0 -276
  284. pytetwild-0.1.dev1/src/pybind11/tests/test_stl_binders.py +0 -393
  285. pytetwild-0.1.dev1/src/pybind11/tests/test_tagbased_polymorphic.cpp +0 -147
  286. pytetwild-0.1.dev1/src/pybind11/tests/test_tagbased_polymorphic.py +0 -28
  287. pytetwild-0.1.dev1/src/pybind11/tests/test_thread.cpp +0 -66
  288. pytetwild-0.1.dev1/src/pybind11/tests/test_thread.py +0 -42
  289. pytetwild-0.1.dev1/src/pybind11/tests/test_type_caster_pyobject_ptr.cpp +0 -130
  290. pytetwild-0.1.dev1/src/pybind11/tests/test_type_caster_pyobject_ptr.py +0 -104
  291. pytetwild-0.1.dev1/src/pybind11/tests/test_union.cpp +0 -22
  292. pytetwild-0.1.dev1/src/pybind11/tests/test_union.py +0 -8
  293. pytetwild-0.1.dev1/src/pybind11/tests/test_unnamed_namespace_a.cpp +0 -38
  294. pytetwild-0.1.dev1/src/pybind11/tests/test_unnamed_namespace_a.py +0 -34
  295. pytetwild-0.1.dev1/src/pybind11/tests/test_unnamed_namespace_b.cpp +0 -13
  296. pytetwild-0.1.dev1/src/pybind11/tests/test_unnamed_namespace_b.py +0 -5
  297. pytetwild-0.1.dev1/src/pybind11/tests/test_vector_unique_ptr_member.cpp +0 -54
  298. pytetwild-0.1.dev1/src/pybind11/tests/test_vector_unique_ptr_member.py +0 -14
  299. pytetwild-0.1.dev1/src/pybind11/tests/test_virtual_functions.cpp +0 -592
  300. pytetwild-0.1.dev1/src/pybind11/tests/test_virtual_functions.py +0 -458
  301. pytetwild-0.1.dev1/src/pybind11/tests/valgrind-numpy-scipy.supp +0 -140
  302. pytetwild-0.1.dev1/src/pybind11/tests/valgrind-python.supp +0 -117
  303. pytetwild-0.1.dev1/src/pybind11/tools/FindCatch.cmake +0 -76
  304. pytetwild-0.1.dev1/src/pybind11/tools/FindEigen3.cmake +0 -86
  305. pytetwild-0.1.dev1/src/pybind11/tools/FindPythonLibsNew.cmake +0 -310
  306. pytetwild-0.1.dev1/src/pybind11/tools/JoinPaths.cmake +0 -23
  307. pytetwild-0.1.dev1/src/pybind11/tools/check-style.sh +0 -44
  308. pytetwild-0.1.dev1/src/pybind11/tools/cmake_uninstall.cmake.in +0 -23
  309. pytetwild-0.1.dev1/src/pybind11/tools/codespell_ignore_lines_from_errors.py +0 -39
  310. pytetwild-0.1.dev1/src/pybind11/tools/libsize.py +0 -36
  311. pytetwild-0.1.dev1/src/pybind11/tools/make_changelog.py +0 -88
  312. pytetwild-0.1.dev1/src/pybind11/tools/pybind11.pc.in +0 -7
  313. pytetwild-0.1.dev1/src/pybind11/tools/pybind11Common.cmake +0 -415
  314. pytetwild-0.1.dev1/src/pybind11/tools/pybind11Config.cmake.in +0 -233
  315. pytetwild-0.1.dev1/src/pybind11/tools/pybind11NewTools.cmake +0 -311
  316. pytetwild-0.1.dev1/src/pybind11/tools/pybind11Tools.cmake +0 -239
  317. pytetwild-0.1.dev1/src/pybind11/tools/pyproject.toml +0 -3
  318. pytetwild-0.1.dev1/src/pybind11/tools/setup_global.py.in +0 -63
  319. pytetwild-0.1.dev1/src/pybind11/tools/setup_main.py.in +0 -44
  320. pytetwild-0.1.dev1/src/pytetwild/__init__.py +0 -3
  321. pytetwild-0.1.dev1/src/pytetwild/pytetwild.py +0 -136
  322. pytetwild-0.1.dev1/tests/test_pytetwild.py +0 -108
  323. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/.gitmodules +0 -0
  324. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/CONTRIBUTING.md +0 -0
  325. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/LICENSE +0 -0
  326. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/.clang-format +0 -0
  327. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/.gitignore +0 -0
  328. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/.travis.yml +0 -0
  329. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/LICENSE.MPL2 +0 -0
  330. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/cmake/DownloadProject.cmake +0 -0
  331. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/cmake/FindGMPfTetWild.cmake +0 -0
  332. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/cmake/FindMPFR.cmake +0 -0
  333. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/cmake/FloatTetwildUtils.cmake +0 -0
  334. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/cmake/PrependCurrentPath.cmake +0 -0
  335. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/cmake/UseColors.cmake +0 -0
  336. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/figs/1k.jpg +0 -0
  337. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/python/generate-table-code.py +0 -0
  338. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/python/plot-tet.py +0 -0
  339. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/python/save_all_confs.py +0 -0
  340. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/replicability_instructions.htm +0 -0
  341. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/AABBWrapper.cpp +0 -0
  342. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/AABBWrapper.h +0 -0
  343. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/CMakeLists.txt +0 -0
  344. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/CSGTreeParser.cpp +0 -0
  345. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/CSGTreeParser.hpp +0 -0
  346. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/CutMesh.cpp +0 -0
  347. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/CutMesh.h +0 -0
  348. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/EdgeCollapsing.h +0 -0
  349. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/EdgeSplitting.cpp +0 -0
  350. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/EdgeSplitting.h +0 -0
  351. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/EdgeSwapping.cpp +0 -0
  352. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/EdgeSwapping.h +0 -0
  353. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/FloatTetDelaunay.cpp +0 -0
  354. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/FloatTetDelaunay.h +0 -0
  355. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/FloatTetwild.cpp +0 -0
  356. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/FloatTetwild.h +0 -0
  357. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/LocalOperations.h +0 -0
  358. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/Logger.cpp +0 -0
  359. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/Logger.hpp +0 -0
  360. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/Mesh.cpp +0 -0
  361. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/Mesh.hpp +0 -0
  362. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/MeshIO.cpp +0 -0
  363. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/MeshIO.hpp +0 -0
  364. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/MeshImprovement.h +0 -0
  365. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/Simplification.h +0 -0
  366. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/Statistics.h +0 -0
  367. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/TriangleInsertion.h +0 -0
  368. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/Types.hpp +0 -0
  369. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/VertexSmoothing.h +0 -0
  370. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/auto_table.cpp +0 -0
  371. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/auto_table.hpp +0 -0
  372. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/external/Exception.h +0 -0
  373. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/external/MshLoader.cpp +0 -0
  374. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/external/MshLoader.h +0 -0
  375. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/external/MshSaver.cpp +0 -0
  376. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/external/MshSaver.h +0 -0
  377. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/external/Predicates.cpp +0 -0
  378. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/external/Predicates.hpp +0 -0
  379. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/external/Rational.h +0 -0
  380. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/external/bfs_orient.cpp +0 -0
  381. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/external/bfs_orient.h +0 -0
  382. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/external/getRSS.c +0 -0
  383. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/external/get_mem.cpp +0 -0
  384. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/external/get_mem.h +0 -0
  385. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/external/mesh_AABB.cpp +0 -0
  386. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/external/mesh_AABB.h +0 -0
  387. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/external/predicates.c +0 -0
  388. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/external/triangle_triangle_intersection.cpp +0 -0
  389. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/external/triangle_triangle_intersection_old.cpp +0 -0
  390. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/intersections.cpp +0 -0
  391. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/src/intersections.h +0 -0
  392. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/tests/bunny.off +0 -0
  393. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/tests/main.cpp +0 -0
  394. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/tests/test_subdivision.cpp +0 -0
  395. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/tests/test_table.cpp +0 -0
  396. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/tests/test_tree.cpp +0 -0
  397. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/fTetWild/tests/tests.cpp +0 -0
  398. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/src/pytetwild/py.typed +0 -0
  399. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/tests/test_data/test_surf.ply +0 -0
  400. {pytetwild-0.1.dev1 → pytetwild-0.2.0}/tests/test_data/test_tets.msh +0 -0
@@ -0,0 +1,13 @@
1
+ ---
2
+ # We'll use defaults from the LLVM style, but with 4 columns indentation.
3
+ BasedOnStyle: LLVM
4
+ IndentWidth: 4
5
+ ---
6
+ Language: Cpp
7
+ # Force pointers to the type for C++.
8
+ DerivePointerAlignment: false
9
+ PointerAlignment: Right
10
+ ColumnLimit: 94
11
+ AlignAfterOpenBracket: AlwaysBreak
12
+ BinPackArguments: false
13
+ BinPackParameters: false
@@ -4,7 +4,7 @@ on:
4
4
  pull_request:
5
5
  push:
6
6
  tags:
7
- - "*"
7
+ - "v*"
8
8
  branches:
9
9
  - "main"
10
10
 
@@ -19,21 +19,21 @@ jobs:
19
19
  strategy:
20
20
  fail-fast: false
21
21
  matrix:
22
- os: [ubuntu-latest, windows-latest]
22
+ os: [ubuntu-24.04, windows-2025, macos-latest, macos-15-intel]
23
23
 
24
24
  steps:
25
- - uses: actions/checkout@v4
25
+ - uses: actions/checkout@v6
26
26
  with:
27
27
  submodules: true
28
28
 
29
29
  - name: Setup Miniconda (Windows)
30
30
  if: runner.os == 'Windows'
31
- uses: conda-incubator/setup-miniconda@v3.0.3
31
+ uses: conda-incubator/setup-miniconda@v3.3.0
32
32
 
33
33
  - name: Install Dependencies (Windows)
34
34
  if: runner.os == 'Windows'
35
35
  shell: powershell
36
- run: conda install -c conda-forge mpir -y
36
+ run: conda install -c conda-forge mpir zlib -y
37
37
 
38
38
  - name: Set env (Windows)
39
39
  if: runner.os == 'Windows'
@@ -43,21 +43,58 @@ jobs:
43
43
  echo "GMP_LIB=C:\Miniconda\envs\test\Library\lib" >> ${env:GITHUB_ENV}
44
44
 
45
45
  - name: Build wheels
46
- uses: pypa/cibuildwheel@v2.16.5
46
+ uses: pypa/cibuildwheel@v3.3.1
47
+ env:
48
+ CIBW_ENVIRONMENT_MACOS: 'MACOSX_DEPLOYMENT_TARGET="15.0"'
49
+ CIBW_ARCHS_MACOS: "auto"
47
50
 
48
51
  - name: List generated wheels
49
52
  run: ls ./wheelhouse/*
50
53
 
51
- - uses: actions/upload-artifact@v4
54
+ - uses: actions/upload-artifact@v6
52
55
  with:
53
56
  path: ./wheelhouse/*.whl
54
- name: pytetwild-wheel-${{ matrix.os }}
57
+ name: pytetwild-wheels-${{ matrix.os }}
58
+
59
+ test_abi3:
60
+ name: Test ABI3 wheels
61
+ needs: build_wheels
62
+ runs-on: ${{ matrix.os }}
63
+ strategy:
64
+ fail-fast: false
65
+ matrix:
66
+ python-version: ['3.13'] # , '3.14'] # skip 3.14 testing until vtk 9.6 is released
67
+ os: [ubuntu-24.04, windows-2025, macos-15-intel] # must match build_wheels os
68
+ steps:
69
+ - uses: actions/checkout@v6
70
+ - uses: actions/setup-python@v6
71
+ with:
72
+ python-version: ${{ matrix.python-version }}
73
+ - uses: actions/download-artifact@v7
74
+ with:
75
+ pattern: pytetwild-wheels-${{ matrix.os }}
76
+ path: wheels/
77
+ - name: Find ABI3 wheel
78
+ id: find_wheel
79
+ shell: bash
80
+ run: |
81
+ WHEEL=$(ls wheels/*abi3*.whl | head -n 1)
82
+ echo "wheel=$WHEEL" >> "$GITHUB_OUTPUT"
83
+ - name: Install wheel
84
+ run: pip install "${{ steps.find_wheel.outputs.wheel }}"
85
+ - name: Install test dependencies from source
86
+ run: |
87
+ pip install tomli
88
+ python tools/extract-deps.py
89
+ pip install -r requirements-tests.txt
90
+ - name: Run tests
91
+ run: pytest
55
92
 
56
93
  build_sdist:
57
94
  name: Build source distribution
58
95
  runs-on: ubuntu-latest
59
96
  steps:
60
- - uses: actions/checkout@v4
97
+ - uses: actions/checkout@v6
61
98
  with:
62
99
  submodules: true
63
100
 
@@ -71,7 +108,6 @@ jobs:
71
108
  libboost-thread-dev \
72
109
  libglu1-mesa-dev \
73
110
  libsuitesparse-dev \
74
- xorg-dev \
75
111
  ccache
76
112
 
77
113
  - name: Build source distribution
@@ -86,12 +122,12 @@ jobs:
86
122
  - name: Install from dist/
87
123
  run: |
88
124
  sdist_file=$(ls dist/*.tar.gz)
89
- pip install "$sdist_file[dev]"
125
+ pip install "$sdist_file[tests]"
90
126
 
91
127
  - name: Test
92
128
  run: pytest -vv
93
129
 
94
- - uses: actions/upload-artifact@v4
130
+ - uses: actions/upload-artifact@v6
95
131
  with:
96
132
  path: dist/*.tar.gz
97
133
  name: pytetwild-sdist
@@ -107,7 +143,7 @@ jobs:
107
143
  permissions:
108
144
  id-token: write # this permission is mandatory for trusted publishing
109
145
  steps:
110
- - uses: actions/download-artifact@v4
146
+ - uses: actions/download-artifact@v7
111
147
  - name: Flatten directory structure
112
148
  run: |
113
149
  mkdir -p dist/
@@ -116,7 +152,7 @@ jobs:
116
152
  - name: Publish package distributions to PyPI
117
153
  uses: pypa/gh-action-pypi-publish@release/v1
118
154
  - name: Create GitHub Release
119
- uses: softprops/action-gh-release@v1
155
+ uses: softprops/action-gh-release@v2
120
156
  with:
121
157
  generate_release_notes: true
122
158
  files: |
@@ -45,10 +45,13 @@ venv/
45
45
 
46
46
  # skbuild
47
47
  _skbuild/
48
+ .skbuild-info.json
49
+ compile_commands.json
48
50
 
49
51
  # cmake
50
52
  .ninja_deps
51
53
  .ninja_log
54
+ .cmake
52
55
  CMakeCache.txt
53
56
  CMakeFiles/
54
57
  CMakeInit.txt
@@ -72,6 +75,23 @@ fTetWildWrapper.sln
72
75
  x64/
73
76
  Release/
74
77
  mpir.dll
78
+ _deps
79
+ appleclang*
80
+ gnu_14.3_cxx17_64_release/
81
+ src/GPATH
82
+ src/GRTAGS
83
+ src/GTAGS
84
+ .clangd
85
+ libnanobind-static-abi3.a
75
86
 
76
87
  # cibuildwheel
77
- wheelhouse
88
+ wheelhouse
89
+
90
+ # test and temp files
91
+ tests/test_data/csgtree.json
92
+ __b_vs.xyz
93
+ __cutting.stl
94
+ __opt.stl
95
+
96
+ # nixos
97
+ shell.nix
@@ -1,6 +1,6 @@
1
1
  repos:
2
2
  - repo: https://github.com/astral-sh/ruff-pre-commit
3
- rev: v0.1.11
3
+ rev: v0.14.14
4
4
  hooks:
5
5
  - id: ruff
6
6
  args: [--fix, --exit-non-zero-on-fix]
@@ -8,19 +8,19 @@ repos:
8
8
  - id: ruff-format
9
9
 
10
10
  - repo: https://github.com/keewis/blackdoc
11
- rev: v0.3.9
11
+ rev: v0.4.6
12
12
  hooks:
13
13
  - id: blackdoc
14
14
  exclude: README.rst
15
15
 
16
16
  - repo: https://github.com/numpy/numpydoc
17
- rev: v1.6.0
17
+ rev: v1.10.0
18
18
  hooks:
19
19
  - id: numpydoc-validation
20
20
  files: ^src/pytetwild
21
21
 
22
22
  - repo: https://github.com/codespell-project/codespell
23
- rev: v2.2.6
23
+ rev: v2.4.1
24
24
  hooks:
25
25
  - id: codespell
26
26
  args: ["--skip=*.vt*"]
@@ -33,14 +33,14 @@ repos:
33
33
  files: ^src/pytetwild/.*\.py
34
34
 
35
35
  - repo: https://github.com/pre-commit/pre-commit-hooks
36
- rev: v4.5.0
36
+ rev: v6.0.0
37
37
  hooks:
38
38
  - id: check-merge-conflict
39
39
  - id: debug-statements
40
40
  - id: trailing-whitespace
41
41
 
42
42
  - repo: https://github.com/pre-commit/mirrors-clang-format
43
- rev: v17.0.6
43
+ rev: v21.1.8
44
44
  hooks:
45
45
  - id: clang-format
46
46
  files: |
@@ -49,18 +49,16 @@ repos:
49
49
  )$
50
50
 
51
51
  - repo: https://github.com/pre-commit/mirrors-mypy
52
- rev: v1.7.0
52
+ rev: v1.19.1
53
53
  hooks:
54
54
  - id: mypy
55
55
  exclude: ^(docs/|tests)
56
56
  additional_dependencies: [
57
- "mypy-extensions==1.0.0",
58
57
  "toml==0.10.2",
59
- "npt_promote",
60
58
  "numpy",
61
59
  ]
62
60
 
63
61
  - repo: https://github.com/python-jsonschema/check-jsonschema
64
- rev: 0.27.3
62
+ rev: 0.36.1
65
63
  hooks:
66
64
  - id: check-github-workflows
@@ -1,25 +1,35 @@
1
1
  cmake_minimum_required(VERSION 3.15...3.26)
2
- project(fTetWildWrapper)
3
- set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ./src/pytetwild)
2
+ project(fTetWildWrapper_project LANGUAGES CXX)
4
3
 
5
- if($ENV{USE_MAVX})
6
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mavx")
7
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx")
8
- endif()
4
+ find_package(Python 3.10
5
+ REQUIRED COMPONENTS Interpreter Development.Module
6
+ OPTIONAL_COMPONENTS Development.SABIModule)
7
+ find_package(nanobind CONFIG REQUIRED)
8
+
9
+ nanobind_add_module(
10
+ # name of the extension
11
+ PyfTetWildWrapper
12
+
13
+ # Target the stable ABI for Python 3.12+, which reduces
14
+ # the number of binary wheels that must be built. This
15
+ # does nothing on older Python versions
16
+ STABLE_ABI
17
+
18
+ src/FTetWildWrapper.cpp
19
+ )
20
+
21
+ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ./src/pytetwild)
9
22
 
10
23
  # Set the path to the fTetWild project
11
24
  set(fTetWild_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/fTetWild")
12
25
 
13
- # Add the pybind11 submodule
14
- set(PYBIND11_NEWPYTHON ON)
15
- set(pybind11_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/pybind11")
16
- add_subdirectory(${pybind11_DIR})
26
+ # Enable aggressive optimization
27
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
28
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3")
17
29
 
18
30
  # Include the fTetWild project as a subdirectory
19
31
  add_subdirectory(${fTetWild_DIR} EXCLUDE_FROM_ALL)
20
32
 
21
- pybind11_add_module(PyfTetWildWrapper MODULE "${CMAKE_CURRENT_SOURCE_DIR}/src/FTetWildWrapper.cpp")
22
-
23
33
  # Include directories from fTetWild required for the wrapper
24
34
  target_include_directories(PyfTetWildWrapper PUBLIC ${fTetWild_DIR}/src)
25
35
 
@@ -27,6 +37,7 @@ target_include_directories(PyfTetWildWrapper PUBLIC ${fTetWild_DIR}/src)
27
37
  target_link_libraries(PyfTetWildWrapper PRIVATE FloatTetwild)
28
38
  target_compile_features(PyfTetWildWrapper PUBLIC cxx_std_11)
29
39
 
40
+ # still necessary?
30
41
  if(WIN32)
31
42
  set_target_properties(PyfTetWildWrapper PROPERTIES SUFFIX ".pyd")
32
43
  foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES})
@@ -38,4 +49,4 @@ if(WIN32)
38
49
  endforeach()
39
50
  endif()
40
51
 
41
- install(TARGETS PyfTetWildWrapper LIBRARY DESTINATION ./pytetwild)
52
+ install(TARGETS PyfTetWildWrapper LIBRARY DESTINATION pytetwild)
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: pytetwild
3
- Version: 0.1.dev1
3
+ Version: 0.2.0
4
4
  Summary: Python wrapper of fTetWild
5
5
  Author-Email: Alex Kaszynski <akascap@gmail.com>
6
6
  Classifier: Development Status :: 3 - Alpha
@@ -10,20 +10,22 @@ Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
10
10
  Classifier: Operating System :: Microsoft :: Windows
11
11
  Classifier: Operating System :: POSIX
12
12
  Classifier: Operating System :: MacOS
13
- Classifier: Programming Language :: Python :: 3.8
14
- Classifier: Programming Language :: Python :: 3.9
15
13
  Classifier: Programming Language :: Python :: 3.10
16
14
  Classifier: Programming Language :: Python :: 3.11
17
15
  Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Classifier: Programming Language :: Python :: 3.14
18
+ Requires-Python: <3.15,>=3.10
18
19
  Requires-Dist: numpy
19
- Requires-Dist: pyvista; extra == "all"
20
- Requires-Dist: pytest; extra == "dev"
21
- Requires-Dist: pre-commit; extra == "dev"
22
- Requires-Dist: pyvista; extra == "dev"
23
- Requires-Dist: scipy; extra == "dev"
24
- Requires-Dist: meshio; extra == "dev"
25
20
  Provides-Extra: all
21
+ Requires-Dist: pyvista; extra == "all"
22
+ Provides-Extra: tests
23
+ Requires-Dist: pytest; extra == "tests"
24
+ Requires-Dist: pyvista; extra == "tests"
25
+ Requires-Dist: scipy; extra == "tests"
26
+ Requires-Dist: meshio; extra == "tests"
26
27
  Provides-Extra: dev
28
+ Requires-Dist: pre-commit; extra == "dev"
27
29
  Description-Content-Type: text/x-rst
28
30
 
29
31
  pytetwild
@@ -45,13 +47,17 @@ Python wrapper around the efficient C++ library for tetrahedral meshing provided
45
47
  Installation
46
48
  ************
47
49
 
48
- We have pre-built wheels for Python 3.8 - Python 3.12 for Windows and Linux x64.
50
+ We have pre-built wheels for Python 3.10 - Python 3.14 for Windows, Linux, and macOS.
49
51
 
50
52
  The recommended way to install ``pytetwild`` is via PyPI:
51
53
 
52
54
  .. code:: sh
53
55
 
54
- pip install pytetwild
56
+ pip install pytetwild[all]
57
+
58
+ This installs ``pyvista`` by default, which you can use to tetrahedralize
59
+ sufrace meshes from PyVista. Alternatively you can just install with ``pip
60
+ install pytetwild`` for a lighter install.
55
61
 
56
62
  You can also clone the repository and install it from source, but since there's
57
63
  C++ involved, the build is a bit more complicated. See ``CONTRIBUTING.md`` for
@@ -61,7 +67,8 @@ more details.
61
67
  Usage
62
68
  *****
63
69
 
64
- To tetrahedralize a surface mesh from `PyVista <https://docs.pyvista.org>`_:
70
+ To tetrahedralize a surface mesh from `PyVista <https://docs.pyvista.org>`_,
71
+ you'll need to first install ``pyvista`` as it's not a dependency and then run:
65
72
 
66
73
  .. code:: py
67
74
 
@@ -74,18 +81,22 @@ To tetrahedralize a surface mesh from `PyVista <https://docs.pyvista.org>`_:
74
81
 
75
82
  # Convert the surface mesh to a tetrahedral mesh. For this example let's
76
83
  # use a coarse mesh
77
- tetrahedral_mesh = pytetwild.tetrahedralize_pv(surface_mesh, edge_length_fac=1))
84
+ tetrahedral_mesh = pytetwild.tetrahedralize_pv(surface_mesh, edge_length_fac=1)
78
85
 
79
86
  # Visualize the tetrahedral mesh in an "exploded" view
80
- tetrahedral_mesh.explode(1).plot(show_edges=True)
87
+ tetrahedral_mesh.explode(0.5).plot(
88
+ show_edges=True, zoom=1.6, ssao=True, anti_aliasing="ssaa"
89
+ )
90
+
81
91
 
82
92
  .. image:: https://github.com/pyvista/pytetwild/raw/main/exploded-sphere.png
83
93
 
84
94
  You can also work with raw arrays. Here's a simple cube that we turn into tetrahedra.
85
95
 
86
- .. code:: pycon
96
+ .. code:: py
87
97
 
88
98
  import numpy as np
99
+ import pytetwild
89
100
 
90
101
  # Define vertices of the cube
91
102
  vertices = np.array([
@@ -114,25 +125,49 @@ You can also work with raw arrays. Here's a simple cube that we turn into tetrah
114
125
 
115
126
  Usage - Options
116
127
  ---------------
117
- We've surfaced a handful of parameters to each of our interfaces
118
- ``tetrahedralize`` and ``tetrahedralize_pv``. Here are the optional parameters.
128
+ We've surfaced a several parameters to each of our interfaces
129
+ ``tetrahedralize`` and ``tetrahedralize_pv``:
119
130
 
120
131
  .. code::
121
132
 
122
- Additional Parameters
123
- ---------------------
133
+ Parameters
134
+ ----------
124
135
  edge_length_fac : float, default: 0.05
125
- Tetrahedral edge length as a function of bounding box diagional. The
126
- default ideal edge length is bb/20 (bounding box divided by 20).
127
- optimize : bool
136
+ Tetrahedral edge length as a function of bounding box diagonal. The
137
+ default ideal edge length is ``bb/20`` (bounding box divided by
138
+ 20). Ignored when ``edge_length_abs`` is input.
139
+ edge_length_abs : float, optional
140
+ Absolute ideal edge length. When input ``edge_length_fac`` is ignored.
141
+ optimize : bool, default: True
128
142
  Improve the minimum scaled Jacobean for each cell. This leads to higher
129
- cell quality at the expense of computation time.
143
+ cell quality at the expense of computation time. Optimization level is
144
+ dependent on ``stop_energy`` and ``num_opt_iter``.
145
+ simplify : bool, default: True
146
+ Simplfiy the input mesh surface before tetrahedralization.
147
+ epsilon : float, default 1e-3
148
+ Envelop size, specifying the maximum distance of the output surface
149
+ from the input surface, relative to the bounding box size.
150
+ stop_energy : float, default: 10.0
151
+ The mesh optimization stops when the conformal AMIPS energy reaches
152
+ ``stop_energy``.
153
+ coarsen : bool, default: False
154
+ Coarsen the output as much as possible, while maintaining the mesh
155
+ quality.
156
+ num_threads : int, default: 0
157
+ Set number of threads used. 0 (default) uses all available cores.
158
+ num_opt_iter : int, default: 80
159
+ Maximum number of optimization iterations if ``optimize=True``.
160
+ loglevel : int, default: 6
161
+ Set log level (0 = most verbose, 6 = minimal output).
162
+ quiet : bool, default: False
163
+ Disable all output. Overrides ``loglevel``.
164
+
130
165
 
131
166
 
132
167
  License and Acknowledgments
133
168
  ***************************
134
169
 
135
- This project relies on ``fTetWild`` and credits go to the original authors for
170
+ This project relies on ``fTetWild`` and credit goes to the original authors for
136
171
  their efficient C++ library for tetrahedral meshing. That work is licensed
137
172
  under the Mozilla Public License v2.0.
138
173
 
@@ -17,13 +17,17 @@ Python wrapper around the efficient C++ library for tetrahedral meshing provided
17
17
  Installation
18
18
  ************
19
19
 
20
- We have pre-built wheels for Python 3.8 - Python 3.12 for Windows and Linux x64.
20
+ We have pre-built wheels for Python 3.10 - Python 3.14 for Windows, Linux, and macOS.
21
21
 
22
22
  The recommended way to install ``pytetwild`` is via PyPI:
23
23
 
24
24
  .. code:: sh
25
25
 
26
- pip install pytetwild
26
+ pip install pytetwild[all]
27
+
28
+ This installs ``pyvista`` by default, which you can use to tetrahedralize
29
+ sufrace meshes from PyVista. Alternatively you can just install with ``pip
30
+ install pytetwild`` for a lighter install.
27
31
 
28
32
  You can also clone the repository and install it from source, but since there's
29
33
  C++ involved, the build is a bit more complicated. See ``CONTRIBUTING.md`` for
@@ -33,7 +37,8 @@ more details.
33
37
  Usage
34
38
  *****
35
39
 
36
- To tetrahedralize a surface mesh from `PyVista <https://docs.pyvista.org>`_:
40
+ To tetrahedralize a surface mesh from `PyVista <https://docs.pyvista.org>`_,
41
+ you'll need to first install ``pyvista`` as it's not a dependency and then run:
37
42
 
38
43
  .. code:: py
39
44
 
@@ -46,18 +51,22 @@ To tetrahedralize a surface mesh from `PyVista <https://docs.pyvista.org>`_:
46
51
 
47
52
  # Convert the surface mesh to a tetrahedral mesh. For this example let's
48
53
  # use a coarse mesh
49
- tetrahedral_mesh = pytetwild.tetrahedralize_pv(surface_mesh, edge_length_fac=1))
54
+ tetrahedral_mesh = pytetwild.tetrahedralize_pv(surface_mesh, edge_length_fac=1)
50
55
 
51
56
  # Visualize the tetrahedral mesh in an "exploded" view
52
- tetrahedral_mesh.explode(1).plot(show_edges=True)
57
+ tetrahedral_mesh.explode(0.5).plot(
58
+ show_edges=True, zoom=1.6, ssao=True, anti_aliasing="ssaa"
59
+ )
60
+
53
61
 
54
62
  .. image:: https://github.com/pyvista/pytetwild/raw/main/exploded-sphere.png
55
63
 
56
64
  You can also work with raw arrays. Here's a simple cube that we turn into tetrahedra.
57
65
 
58
- .. code:: pycon
66
+ .. code:: py
59
67
 
60
68
  import numpy as np
69
+ import pytetwild
61
70
 
62
71
  # Define vertices of the cube
63
72
  vertices = np.array([
@@ -86,25 +95,49 @@ You can also work with raw arrays. Here's a simple cube that we turn into tetrah
86
95
 
87
96
  Usage - Options
88
97
  ---------------
89
- We've surfaced a handful of parameters to each of our interfaces
90
- ``tetrahedralize`` and ``tetrahedralize_pv``. Here are the optional parameters.
98
+ We've surfaced a several parameters to each of our interfaces
99
+ ``tetrahedralize`` and ``tetrahedralize_pv``:
91
100
 
92
101
  .. code::
93
102
 
94
- Additional Parameters
95
- ---------------------
103
+ Parameters
104
+ ----------
96
105
  edge_length_fac : float, default: 0.05
97
- Tetrahedral edge length as a function of bounding box diagional. The
98
- default ideal edge length is bb/20 (bounding box divided by 20).
99
- optimize : bool
106
+ Tetrahedral edge length as a function of bounding box diagonal. The
107
+ default ideal edge length is ``bb/20`` (bounding box divided by
108
+ 20). Ignored when ``edge_length_abs`` is input.
109
+ edge_length_abs : float, optional
110
+ Absolute ideal edge length. When input ``edge_length_fac`` is ignored.
111
+ optimize : bool, default: True
100
112
  Improve the minimum scaled Jacobean for each cell. This leads to higher
101
- cell quality at the expense of computation time.
113
+ cell quality at the expense of computation time. Optimization level is
114
+ dependent on ``stop_energy`` and ``num_opt_iter``.
115
+ simplify : bool, default: True
116
+ Simplfiy the input mesh surface before tetrahedralization.
117
+ epsilon : float, default 1e-3
118
+ Envelop size, specifying the maximum distance of the output surface
119
+ from the input surface, relative to the bounding box size.
120
+ stop_energy : float, default: 10.0
121
+ The mesh optimization stops when the conformal AMIPS energy reaches
122
+ ``stop_energy``.
123
+ coarsen : bool, default: False
124
+ Coarsen the output as much as possible, while maintaining the mesh
125
+ quality.
126
+ num_threads : int, default: 0
127
+ Set number of threads used. 0 (default) uses all available cores.
128
+ num_opt_iter : int, default: 80
129
+ Maximum number of optimization iterations if ``optimize=True``.
130
+ loglevel : int, default: 6
131
+ Set log level (0 = most verbose, 6 = minimal output).
132
+ quiet : bool, default: False
133
+ Disable all output. Overrides ``loglevel``.
134
+
102
135
 
103
136
 
104
137
  License and Acknowledgments
105
138
  ***************************
106
139
 
107
- This project relies on ``fTetWild`` and credits go to the original authors for
140
+ This project relies on ``fTetWild`` and credit goes to the original authors for
108
141
  their efficient C++ library for tetrahedral meshing. That work is licensed
109
142
  under the Mozilla Public License v2.0.
110
143
 
Binary file