pytetwild 0.1.1__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 (383) hide show
  1. pytetwild-0.2.0/.clang-format +13 -0
  2. {pytetwild-0.1.1 → pytetwild-0.2.0}/.github/workflows/build-and-deploy.yml +46 -12
  3. {pytetwild-0.1.1 → pytetwild-0.2.0}/.gitignore +16 -1
  4. {pytetwild-0.1.1 → pytetwild-0.2.0}/.pre-commit-config.yaml +6 -8
  5. {pytetwild-0.1.1 → pytetwild-0.2.0}/CMakeLists.txt +24 -13
  6. {pytetwild-0.1.1 → pytetwild-0.2.0}/PKG-INFO +53 -17
  7. {pytetwild-0.1.1 → pytetwild-0.2.0}/README.rst +45 -12
  8. pytetwild-0.2.0/exploded-sphere.png +0 -0
  9. {pytetwild-0.1.1 → pytetwild-0.2.0}/pyproject.toml +27 -13
  10. pytetwild-0.2.0/src/FTetWildWrapper.cpp +473 -0
  11. pytetwild-0.2.0/src/array_support.h +75 -0
  12. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/MeshImprovement.cpp +10 -10
  13. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/external/CMakeLists.txt +0 -3
  14. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/main.cpp +5 -0
  15. pytetwild-0.2.0/src/pytetwild/PyfTetWildWrapper.pyi +29 -0
  16. pytetwild-0.2.0/src/pytetwild/pytetwild.py +365 -0
  17. {pytetwild-0.1.1 → pytetwild-0.2.0}/tests/test_pytetwild.py +40 -19
  18. pytetwild-0.2.0/tools/audit_wheel.sh +9 -0
  19. pytetwild-0.2.0/tools/extract-deps.py +8 -0
  20. pytetwild-0.1.1/exploded-sphere.png +0 -0
  21. pytetwild-0.1.1/src/FTetWildWrapper.cpp +0 -452
  22. pytetwild-0.1.1/src/fTetWild/src/external/FastWindingNumber.cpp +0 -39
  23. pytetwild-0.1.1/src/fTetWild/src/external/FastWindingNumber.hpp +0 -8
  24. pytetwild-0.1.1/src/pybind11/.appveyor.yml +0 -35
  25. pytetwild-0.1.1/src/pybind11/.clang-format +0 -38
  26. pytetwild-0.1.1/src/pybind11/.clang-tidy +0 -77
  27. pytetwild-0.1.1/src/pybind11/.cmake-format.yaml +0 -73
  28. pytetwild-0.1.1/src/pybind11/.codespell-ignore-lines +0 -24
  29. pytetwild-0.1.1/src/pybind11/.gitattributes +0 -1
  30. pytetwild-0.1.1/src/pybind11/.github/CODEOWNERS +0 -9
  31. pytetwild-0.1.1/src/pybind11/.github/CONTRIBUTING.md +0 -388
  32. pytetwild-0.1.1/src/pybind11/.github/ISSUE_TEMPLATE/bug-report.yml +0 -61
  33. pytetwild-0.1.1/src/pybind11/.github/ISSUE_TEMPLATE/config.yml +0 -8
  34. pytetwild-0.1.1/src/pybind11/.github/dependabot.yml +0 -15
  35. pytetwild-0.1.1/src/pybind11/.github/labeler.yml +0 -8
  36. pytetwild-0.1.1/src/pybind11/.github/labeler_merged.yml +0 -3
  37. pytetwild-0.1.1/src/pybind11/.github/matchers/pylint.json +0 -32
  38. pytetwild-0.1.1/src/pybind11/.github/pull_request_template.md +0 -19
  39. pytetwild-0.1.1/src/pybind11/.github/workflows/ci.yml +0 -1190
  40. pytetwild-0.1.1/src/pybind11/.github/workflows/configure.yml +0 -92
  41. pytetwild-0.1.1/src/pybind11/.github/workflows/format.yml +0 -60
  42. pytetwild-0.1.1/src/pybind11/.github/workflows/labeler.yml +0 -25
  43. pytetwild-0.1.1/src/pybind11/.github/workflows/pip.yml +0 -114
  44. pytetwild-0.1.1/src/pybind11/.github/workflows/upstream.yml +0 -116
  45. pytetwild-0.1.1/src/pybind11/.gitignore +0 -46
  46. pytetwild-0.1.1/src/pybind11/.pre-commit-config.yaml +0 -155
  47. pytetwild-0.1.1/src/pybind11/.readthedocs.yml +0 -20
  48. pytetwild-0.1.1/src/pybind11/CMakeLists.txt +0 -363
  49. pytetwild-0.1.1/src/pybind11/LICENSE +0 -29
  50. pytetwild-0.1.1/src/pybind11/MANIFEST.in +0 -6
  51. pytetwild-0.1.1/src/pybind11/README.rst +0 -180
  52. pytetwild-0.1.1/src/pybind11/SECURITY.md +0 -13
  53. pytetwild-0.1.1/src/pybind11/docs/Doxyfile +0 -21
  54. pytetwild-0.1.1/src/pybind11/docs/_static/css/custom.css +0 -3
  55. pytetwild-0.1.1/src/pybind11/docs/advanced/cast/chrono.rst +0 -81
  56. pytetwild-0.1.1/src/pybind11/docs/advanced/cast/custom.rst +0 -93
  57. pytetwild-0.1.1/src/pybind11/docs/advanced/cast/eigen.rst +0 -310
  58. pytetwild-0.1.1/src/pybind11/docs/advanced/cast/functional.rst +0 -109
  59. pytetwild-0.1.1/src/pybind11/docs/advanced/cast/index.rst +0 -43
  60. pytetwild-0.1.1/src/pybind11/docs/advanced/cast/overview.rst +0 -170
  61. pytetwild-0.1.1/src/pybind11/docs/advanced/cast/stl.rst +0 -249
  62. pytetwild-0.1.1/src/pybind11/docs/advanced/cast/strings.rst +0 -296
  63. pytetwild-0.1.1/src/pybind11/docs/advanced/classes.rst +0 -1335
  64. pytetwild-0.1.1/src/pybind11/docs/advanced/embedding.rst +0 -262
  65. pytetwild-0.1.1/src/pybind11/docs/advanced/exceptions.rst +0 -401
  66. pytetwild-0.1.1/src/pybind11/docs/advanced/functions.rst +0 -614
  67. pytetwild-0.1.1/src/pybind11/docs/advanced/misc.rst +0 -429
  68. pytetwild-0.1.1/src/pybind11/docs/advanced/pycpp/index.rst +0 -13
  69. pytetwild-0.1.1/src/pybind11/docs/advanced/pycpp/numpy.rst +0 -455
  70. pytetwild-0.1.1/src/pybind11/docs/advanced/pycpp/object.rst +0 -286
  71. pytetwild-0.1.1/src/pybind11/docs/advanced/pycpp/utilities.rst +0 -155
  72. pytetwild-0.1.1/src/pybind11/docs/advanced/smart_ptrs.rst +0 -174
  73. pytetwild-0.1.1/src/pybind11/docs/basics.rst +0 -307
  74. pytetwild-0.1.1/src/pybind11/docs/benchmark.py +0 -87
  75. pytetwild-0.1.1/src/pybind11/docs/benchmark.rst +0 -95
  76. pytetwild-0.1.1/src/pybind11/docs/changelog.rst +0 -2832
  77. pytetwild-0.1.1/src/pybind11/docs/classes.rst +0 -555
  78. pytetwild-0.1.1/src/pybind11/docs/cmake/index.rst +0 -8
  79. pytetwild-0.1.1/src/pybind11/docs/compiling.rst +0 -649
  80. pytetwild-0.1.1/src/pybind11/docs/conf.py +0 -368
  81. pytetwild-0.1.1/src/pybind11/docs/faq.rst +0 -308
  82. pytetwild-0.1.1/src/pybind11/docs/index.rst +0 -48
  83. pytetwild-0.1.1/src/pybind11/docs/installing.rst +0 -105
  84. pytetwild-0.1.1/src/pybind11/docs/limitations.rst +0 -72
  85. pytetwild-0.1.1/src/pybind11/docs/pybind11-logo.png +0 -0
  86. pytetwild-0.1.1/src/pybind11/docs/pybind11_vs_boost_python1.png +0 -0
  87. pytetwild-0.1.1/src/pybind11/docs/pybind11_vs_boost_python1.svg +0 -427
  88. pytetwild-0.1.1/src/pybind11/docs/pybind11_vs_boost_python2.png +0 -0
  89. pytetwild-0.1.1/src/pybind11/docs/pybind11_vs_boost_python2.svg +0 -427
  90. pytetwild-0.1.1/src/pybind11/docs/reference.rst +0 -130
  91. pytetwild-0.1.1/src/pybind11/docs/release.rst +0 -143
  92. pytetwild-0.1.1/src/pybind11/docs/requirements.txt +0 -6
  93. pytetwild-0.1.1/src/pybind11/docs/upgrade.rst +0 -566
  94. pytetwild-0.1.1/src/pybind11/include/pybind11/attr.h +0 -690
  95. pytetwild-0.1.1/src/pybind11/include/pybind11/buffer_info.h +0 -208
  96. pytetwild-0.1.1/src/pybind11/include/pybind11/cast.h +0 -1730
  97. pytetwild-0.1.1/src/pybind11/include/pybind11/chrono.h +0 -225
  98. pytetwild-0.1.1/src/pybind11/include/pybind11/common.h +0 -2
  99. pytetwild-0.1.1/src/pybind11/include/pybind11/complex.h +0 -74
  100. pytetwild-0.1.1/src/pybind11/include/pybind11/detail/class.h +0 -748
  101. pytetwild-0.1.1/src/pybind11/include/pybind11/detail/common.h +0 -1263
  102. pytetwild-0.1.1/src/pybind11/include/pybind11/detail/descr.h +0 -171
  103. pytetwild-0.1.1/src/pybind11/include/pybind11/detail/init.h +0 -434
  104. pytetwild-0.1.1/src/pybind11/include/pybind11/detail/internals.h +0 -662
  105. pytetwild-0.1.1/src/pybind11/include/pybind11/detail/type_caster_base.h +0 -1214
  106. pytetwild-0.1.1/src/pybind11/include/pybind11/detail/typeid.h +0 -65
  107. pytetwild-0.1.1/src/pybind11/include/pybind11/eigen/common.h +0 -9
  108. pytetwild-0.1.1/src/pybind11/include/pybind11/eigen/matrix.h +0 -714
  109. pytetwild-0.1.1/src/pybind11/include/pybind11/eigen/tensor.h +0 -516
  110. pytetwild-0.1.1/src/pybind11/include/pybind11/eigen.h +0 -12
  111. pytetwild-0.1.1/src/pybind11/include/pybind11/embed.h +0 -316
  112. pytetwild-0.1.1/src/pybind11/include/pybind11/eval.h +0 -156
  113. pytetwild-0.1.1/src/pybind11/include/pybind11/functional.h +0 -137
  114. pytetwild-0.1.1/src/pybind11/include/pybind11/gil.h +0 -247
  115. pytetwild-0.1.1/src/pybind11/include/pybind11/gil_safe_call_once.h +0 -91
  116. pytetwild-0.1.1/src/pybind11/include/pybind11/iostream.h +0 -265
  117. pytetwild-0.1.1/src/pybind11/include/pybind11/numpy.h +0 -2020
  118. pytetwild-0.1.1/src/pybind11/include/pybind11/operators.h +0 -202
  119. pytetwild-0.1.1/src/pybind11/include/pybind11/options.h +0 -92
  120. pytetwild-0.1.1/src/pybind11/include/pybind11/pybind11.h +0 -2942
  121. pytetwild-0.1.1/src/pybind11/include/pybind11/pytypes.h +0 -2573
  122. pytetwild-0.1.1/src/pybind11/include/pybind11/stl/filesystem.h +0 -116
  123. pytetwild-0.1.1/src/pybind11/include/pybind11/stl.h +0 -447
  124. pytetwild-0.1.1/src/pybind11/include/pybind11/stl_bind.h +0 -823
  125. pytetwild-0.1.1/src/pybind11/include/pybind11/type_caster_pyobject_ptr.h +0 -61
  126. pytetwild-0.1.1/src/pybind11/include/pybind11/typing.h +0 -117
  127. pytetwild-0.1.1/src/pybind11/noxfile.py +0 -107
  128. pytetwild-0.1.1/src/pybind11/pybind11/__init__.py +0 -17
  129. pytetwild-0.1.1/src/pybind11/pybind11/__main__.py +0 -62
  130. pytetwild-0.1.1/src/pybind11/pybind11/_version.py +0 -12
  131. pytetwild-0.1.1/src/pybind11/pybind11/commands.py +0 -37
  132. pytetwild-0.1.1/src/pybind11/pybind11/py.typed +0 -0
  133. pytetwild-0.1.1/src/pybind11/pybind11/setup_helpers.py +0 -500
  134. pytetwild-0.1.1/src/pybind11/pyproject.toml +0 -95
  135. pytetwild-0.1.1/src/pybind11/setup.cfg +0 -43
  136. pytetwild-0.1.1/src/pybind11/setup.py +0 -150
  137. pytetwild-0.1.1/src/pybind11/tests/CMakeLists.txt +0 -585
  138. pytetwild-0.1.1/src/pybind11/tests/conftest.py +0 -221
  139. pytetwild-0.1.1/src/pybind11/tests/constructor_stats.h +0 -322
  140. pytetwild-0.1.1/src/pybind11/tests/cross_module_gil_utils.cpp +0 -108
  141. pytetwild-0.1.1/src/pybind11/tests/cross_module_interleaved_error_already_set.cpp +0 -51
  142. pytetwild-0.1.1/src/pybind11/tests/eigen_tensor_avoid_stl_array.cpp +0 -14
  143. pytetwild-0.1.1/src/pybind11/tests/env.py +0 -27
  144. pytetwild-0.1.1/src/pybind11/tests/extra_python_package/pytest.ini +0 -0
  145. pytetwild-0.1.1/src/pybind11/tests/extra_python_package/test_files.py +0 -293
  146. pytetwild-0.1.1/src/pybind11/tests/extra_setuptools/pytest.ini +0 -0
  147. pytetwild-0.1.1/src/pybind11/tests/extra_setuptools/test_setuphelper.py +0 -151
  148. pytetwild-0.1.1/src/pybind11/tests/local_bindings.h +0 -92
  149. pytetwild-0.1.1/src/pybind11/tests/object.h +0 -205
  150. pytetwild-0.1.1/src/pybind11/tests/pybind11_cross_module_tests.cpp +0 -149
  151. pytetwild-0.1.1/src/pybind11/tests/pybind11_tests.cpp +0 -123
  152. pytetwild-0.1.1/src/pybind11/tests/pybind11_tests.h +0 -85
  153. pytetwild-0.1.1/src/pybind11/tests/pytest.ini +0 -22
  154. pytetwild-0.1.1/src/pybind11/tests/requirements.txt +0 -15
  155. pytetwild-0.1.1/src/pybind11/tests/test_async.cpp +0 -25
  156. pytetwild-0.1.1/src/pybind11/tests/test_async.py +0 -24
  157. pytetwild-0.1.1/src/pybind11/tests/test_buffers.cpp +0 -259
  158. pytetwild-0.1.1/src/pybind11/tests/test_buffers.py +0 -228
  159. pytetwild-0.1.1/src/pybind11/tests/test_builtin_casters.cpp +0 -392
  160. pytetwild-0.1.1/src/pybind11/tests/test_builtin_casters.py +0 -528
  161. pytetwild-0.1.1/src/pybind11/tests/test_call_policies.cpp +0 -115
  162. pytetwild-0.1.1/src/pybind11/tests/test_call_policies.py +0 -247
  163. pytetwild-0.1.1/src/pybind11/tests/test_callbacks.cpp +0 -280
  164. pytetwild-0.1.1/src/pybind11/tests/test_callbacks.py +0 -225
  165. pytetwild-0.1.1/src/pybind11/tests/test_chrono.cpp +0 -81
  166. pytetwild-0.1.1/src/pybind11/tests/test_chrono.py +0 -205
  167. pytetwild-0.1.1/src/pybind11/tests/test_class.cpp +0 -657
  168. pytetwild-0.1.1/src/pybind11/tests/test_class.py +0 -499
  169. pytetwild-0.1.1/src/pybind11/tests/test_cmake_build/CMakeLists.txt +0 -80
  170. pytetwild-0.1.1/src/pybind11/tests/test_cmake_build/embed.cpp +0 -23
  171. pytetwild-0.1.1/src/pybind11/tests/test_cmake_build/installed_embed/CMakeLists.txt +0 -28
  172. pytetwild-0.1.1/src/pybind11/tests/test_cmake_build/installed_function/CMakeLists.txt +0 -39
  173. pytetwild-0.1.1/src/pybind11/tests/test_cmake_build/installed_target/CMakeLists.txt +0 -46
  174. pytetwild-0.1.1/src/pybind11/tests/test_cmake_build/main.cpp +0 -6
  175. pytetwild-0.1.1/src/pybind11/tests/test_cmake_build/subdirectory_embed/CMakeLists.txt +0 -47
  176. pytetwild-0.1.1/src/pybind11/tests/test_cmake_build/subdirectory_function/CMakeLists.txt +0 -41
  177. pytetwild-0.1.1/src/pybind11/tests/test_cmake_build/subdirectory_target/CMakeLists.txt +0 -47
  178. pytetwild-0.1.1/src/pybind11/tests/test_cmake_build/test.py +0 -8
  179. pytetwild-0.1.1/src/pybind11/tests/test_const_name.cpp +0 -55
  180. pytetwild-0.1.1/src/pybind11/tests/test_const_name.py +0 -29
  181. pytetwild-0.1.1/src/pybind11/tests/test_constants_and_functions.cpp +0 -154
  182. pytetwild-0.1.1/src/pybind11/tests/test_constants_and_functions.py +0 -56
  183. pytetwild-0.1.1/src/pybind11/tests/test_copy_move.cpp +0 -533
  184. pytetwild-0.1.1/src/pybind11/tests/test_copy_move.py +0 -132
  185. pytetwild-0.1.1/src/pybind11/tests/test_custom_type_casters.cpp +0 -209
  186. pytetwild-0.1.1/src/pybind11/tests/test_custom_type_casters.py +0 -122
  187. pytetwild-0.1.1/src/pybind11/tests/test_custom_type_setup.cpp +0 -41
  188. pytetwild-0.1.1/src/pybind11/tests/test_custom_type_setup.py +0 -48
  189. pytetwild-0.1.1/src/pybind11/tests/test_docstring_options.cpp +0 -141
  190. pytetwild-0.1.1/src/pybind11/tests/test_docstring_options.py +0 -64
  191. pytetwild-0.1.1/src/pybind11/tests/test_eigen_matrix.cpp +0 -445
  192. pytetwild-0.1.1/src/pybind11/tests/test_eigen_matrix.py +0 -812
  193. pytetwild-0.1.1/src/pybind11/tests/test_eigen_tensor.cpp +0 -18
  194. pytetwild-0.1.1/src/pybind11/tests/test_eigen_tensor.inl +0 -333
  195. pytetwild-0.1.1/src/pybind11/tests/test_eigen_tensor.py +0 -288
  196. pytetwild-0.1.1/src/pybind11/tests/test_embed/CMakeLists.txt +0 -47
  197. pytetwild-0.1.1/src/pybind11/tests/test_embed/catch.cpp +0 -43
  198. pytetwild-0.1.1/src/pybind11/tests/test_embed/external_module.cpp +0 -20
  199. pytetwild-0.1.1/src/pybind11/tests/test_embed/test_interpreter.cpp +0 -488
  200. pytetwild-0.1.1/src/pybind11/tests/test_embed/test_interpreter.py +0 -14
  201. pytetwild-0.1.1/src/pybind11/tests/test_embed/test_trampoline.py +0 -16
  202. pytetwild-0.1.1/src/pybind11/tests/test_enum.cpp +0 -133
  203. pytetwild-0.1.1/src/pybind11/tests/test_enum.py +0 -269
  204. pytetwild-0.1.1/src/pybind11/tests/test_eval.cpp +0 -118
  205. pytetwild-0.1.1/src/pybind11/tests/test_eval.py +0 -50
  206. pytetwild-0.1.1/src/pybind11/tests/test_eval_call.py +0 -4
  207. pytetwild-0.1.1/src/pybind11/tests/test_exceptions.cpp +0 -385
  208. pytetwild-0.1.1/src/pybind11/tests/test_exceptions.h +0 -13
  209. pytetwild-0.1.1/src/pybind11/tests/test_exceptions.py +0 -421
  210. pytetwild-0.1.1/src/pybind11/tests/test_factory_constructors.cpp +0 -430
  211. pytetwild-0.1.1/src/pybind11/tests/test_factory_constructors.py +0 -516
  212. pytetwild-0.1.1/src/pybind11/tests/test_gil_scoped.cpp +0 -144
  213. pytetwild-0.1.1/src/pybind11/tests/test_gil_scoped.py +0 -242
  214. pytetwild-0.1.1/src/pybind11/tests/test_iostream.cpp +0 -126
  215. pytetwild-0.1.1/src/pybind11/tests/test_iostream.py +0 -291
  216. pytetwild-0.1.1/src/pybind11/tests/test_kwargs_and_defaults.cpp +0 -327
  217. pytetwild-0.1.1/src/pybind11/tests/test_kwargs_and_defaults.py +0 -425
  218. pytetwild-0.1.1/src/pybind11/tests/test_local_bindings.cpp +0 -106
  219. pytetwild-0.1.1/src/pybind11/tests/test_local_bindings.py +0 -257
  220. pytetwild-0.1.1/src/pybind11/tests/test_methods_and_attributes.cpp +0 -493
  221. pytetwild-0.1.1/src/pybind11/tests/test_methods_and_attributes.py +0 -537
  222. pytetwild-0.1.1/src/pybind11/tests/test_modules.cpp +0 -125
  223. pytetwild-0.1.1/src/pybind11/tests/test_modules.py +0 -116
  224. pytetwild-0.1.1/src/pybind11/tests/test_multiple_inheritance.cpp +0 -341
  225. pytetwild-0.1.1/src/pybind11/tests/test_multiple_inheritance.py +0 -493
  226. pytetwild-0.1.1/src/pybind11/tests/test_numpy_array.cpp +0 -552
  227. pytetwild-0.1.1/src/pybind11/tests/test_numpy_array.py +0 -668
  228. pytetwild-0.1.1/src/pybind11/tests/test_numpy_dtypes.cpp +0 -614
  229. pytetwild-0.1.1/src/pybind11/tests/test_numpy_dtypes.py +0 -440
  230. pytetwild-0.1.1/src/pybind11/tests/test_numpy_vectorize.cpp +0 -107
  231. pytetwild-0.1.1/src/pybind11/tests/test_numpy_vectorize.py +0 -266
  232. pytetwild-0.1.1/src/pybind11/tests/test_opaque_types.cpp +0 -77
  233. pytetwild-0.1.1/src/pybind11/tests/test_opaque_types.py +0 -58
  234. pytetwild-0.1.1/src/pybind11/tests/test_operator_overloading.cpp +0 -281
  235. pytetwild-0.1.1/src/pybind11/tests/test_operator_overloading.py +0 -151
  236. pytetwild-0.1.1/src/pybind11/tests/test_pickling.cpp +0 -194
  237. pytetwild-0.1.1/src/pybind11/tests/test_pickling.py +0 -93
  238. pytetwild-0.1.1/src/pybind11/tests/test_python_multiple_inheritance.cpp +0 -45
  239. pytetwild-0.1.1/src/pybind11/tests/test_python_multiple_inheritance.py +0 -35
  240. pytetwild-0.1.1/src/pybind11/tests/test_pytypes.cpp +0 -835
  241. pytetwild-0.1.1/src/pybind11/tests/test_pytypes.py +0 -947
  242. pytetwild-0.1.1/src/pybind11/tests/test_sequences_and_iterators.cpp +0 -600
  243. pytetwild-0.1.1/src/pybind11/tests/test_sequences_and_iterators.py +0 -265
  244. pytetwild-0.1.1/src/pybind11/tests/test_smart_ptr.cpp +0 -473
  245. pytetwild-0.1.1/src/pybind11/tests/test_smart_ptr.py +0 -315
  246. pytetwild-0.1.1/src/pybind11/tests/test_stl.cpp +0 -551
  247. pytetwild-0.1.1/src/pybind11/tests/test_stl.py +0 -381
  248. pytetwild-0.1.1/src/pybind11/tests/test_stl_binders.cpp +0 -276
  249. pytetwild-0.1.1/src/pybind11/tests/test_stl_binders.py +0 -393
  250. pytetwild-0.1.1/src/pybind11/tests/test_tagbased_polymorphic.cpp +0 -147
  251. pytetwild-0.1.1/src/pybind11/tests/test_tagbased_polymorphic.py +0 -28
  252. pytetwild-0.1.1/src/pybind11/tests/test_thread.cpp +0 -66
  253. pytetwild-0.1.1/src/pybind11/tests/test_thread.py +0 -42
  254. pytetwild-0.1.1/src/pybind11/tests/test_type_caster_pyobject_ptr.cpp +0 -130
  255. pytetwild-0.1.1/src/pybind11/tests/test_type_caster_pyobject_ptr.py +0 -104
  256. pytetwild-0.1.1/src/pybind11/tests/test_union.cpp +0 -22
  257. pytetwild-0.1.1/src/pybind11/tests/test_union.py +0 -8
  258. pytetwild-0.1.1/src/pybind11/tests/test_unnamed_namespace_a.cpp +0 -38
  259. pytetwild-0.1.1/src/pybind11/tests/test_unnamed_namespace_a.py +0 -34
  260. pytetwild-0.1.1/src/pybind11/tests/test_unnamed_namespace_b.cpp +0 -13
  261. pytetwild-0.1.1/src/pybind11/tests/test_unnamed_namespace_b.py +0 -5
  262. pytetwild-0.1.1/src/pybind11/tests/test_vector_unique_ptr_member.cpp +0 -54
  263. pytetwild-0.1.1/src/pybind11/tests/test_vector_unique_ptr_member.py +0 -14
  264. pytetwild-0.1.1/src/pybind11/tests/test_virtual_functions.cpp +0 -592
  265. pytetwild-0.1.1/src/pybind11/tests/test_virtual_functions.py +0 -458
  266. pytetwild-0.1.1/src/pybind11/tests/valgrind-numpy-scipy.supp +0 -140
  267. pytetwild-0.1.1/src/pybind11/tests/valgrind-python.supp +0 -117
  268. pytetwild-0.1.1/src/pybind11/tools/FindCatch.cmake +0 -76
  269. pytetwild-0.1.1/src/pybind11/tools/FindEigen3.cmake +0 -86
  270. pytetwild-0.1.1/src/pybind11/tools/FindPythonLibsNew.cmake +0 -310
  271. pytetwild-0.1.1/src/pybind11/tools/JoinPaths.cmake +0 -23
  272. pytetwild-0.1.1/src/pybind11/tools/check-style.sh +0 -44
  273. pytetwild-0.1.1/src/pybind11/tools/cmake_uninstall.cmake.in +0 -23
  274. pytetwild-0.1.1/src/pybind11/tools/codespell_ignore_lines_from_errors.py +0 -39
  275. pytetwild-0.1.1/src/pybind11/tools/libsize.py +0 -36
  276. pytetwild-0.1.1/src/pybind11/tools/make_changelog.py +0 -88
  277. pytetwild-0.1.1/src/pybind11/tools/pybind11.pc.in +0 -7
  278. pytetwild-0.1.1/src/pybind11/tools/pybind11Common.cmake +0 -415
  279. pytetwild-0.1.1/src/pybind11/tools/pybind11Config.cmake.in +0 -233
  280. pytetwild-0.1.1/src/pybind11/tools/pybind11NewTools.cmake +0 -311
  281. pytetwild-0.1.1/src/pybind11/tools/pybind11Tools.cmake +0 -239
  282. pytetwild-0.1.1/src/pybind11/tools/pyproject.toml +0 -3
  283. pytetwild-0.1.1/src/pybind11/tools/setup_global.py.in +0 -63
  284. pytetwild-0.1.1/src/pybind11/tools/setup_main.py.in +0 -44
  285. pytetwild-0.1.1/src/pytetwild/pytetwild.py +0 -198
  286. pytetwild-0.1.1/tests/test_data/csgtree.json +0 -1
  287. {pytetwild-0.1.1 → pytetwild-0.2.0}/.gitmodules +0 -0
  288. {pytetwild-0.1.1 → pytetwild-0.2.0}/CONTRIBUTING.md +0 -0
  289. {pytetwild-0.1.1 → pytetwild-0.2.0}/LICENSE +0 -0
  290. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/.clang-format +0 -0
  291. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/.github/workflows/continuous.yml +0 -0
  292. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/.gitignore +0 -0
  293. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/.travis.yml +0 -0
  294. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/CMakeLists.txt +0 -0
  295. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/LICENSE.MPL2 +0 -0
  296. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/README.md +0 -0
  297. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/cmake/DownloadProject.CMakeLists.cmake.in +0 -0
  298. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/cmake/DownloadProject.cmake +0 -0
  299. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/cmake/FindGMPfTetWild.cmake +0 -0
  300. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/cmake/FindMPFR.cmake +0 -0
  301. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/cmake/FloatTetwildDependencies.cmake +0 -0
  302. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/cmake/FloatTetwildUtils.cmake +0 -0
  303. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/cmake/PrependCurrentPath.cmake +0 -0
  304. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/cmake/UseColors.cmake +0 -0
  305. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/cmake/Warnings.cmake +0 -0
  306. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/cmake/geogram.cmake +0 -0
  307. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/figs/1k.jpg +0 -0
  308. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/python/generate-table-code.py +0 -0
  309. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/python/plot-tet.py +0 -0
  310. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/python/save_all_confs.py +0 -0
  311. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/replicability_instructions.htm +0 -0
  312. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/AABBWrapper.cpp +0 -0
  313. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/AABBWrapper.h +0 -0
  314. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/CMakeLists.txt +0 -0
  315. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/CSGTreeParser.cpp +0 -0
  316. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/CSGTreeParser.hpp +0 -0
  317. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/CutMesh.cpp +0 -0
  318. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/CutMesh.h +0 -0
  319. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/EdgeCollapsing.cpp +0 -0
  320. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/EdgeCollapsing.h +0 -0
  321. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/EdgeSplitting.cpp +0 -0
  322. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/EdgeSplitting.h +0 -0
  323. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/EdgeSwapping.cpp +0 -0
  324. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/EdgeSwapping.h +0 -0
  325. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/FloatTetDelaunay.cpp +0 -0
  326. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/FloatTetDelaunay.h +0 -0
  327. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/FloatTetwild.cpp +0 -0
  328. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/FloatTetwild.h +0 -0
  329. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/LocalOperations.cpp +0 -0
  330. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/LocalOperations.h +0 -0
  331. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/Logger.cpp +0 -0
  332. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/Logger.hpp +0 -0
  333. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/Mesh.cpp +0 -0
  334. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/Mesh.hpp +0 -0
  335. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/MeshIO.cpp +0 -0
  336. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/MeshIO.hpp +0 -0
  337. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/MeshImprovement.h +0 -0
  338. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/Parameters.h +0 -0
  339. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/Simplification.cpp +0 -0
  340. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/Simplification.h +0 -0
  341. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/Statistics.h +0 -0
  342. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/TriangleInsertion.cpp +0 -0
  343. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/TriangleInsertion.h +0 -0
  344. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/Types.hpp +0 -0
  345. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/VertexSmoothing.cpp +0 -0
  346. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/VertexSmoothing.h +0 -0
  347. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/auto_table.cpp +0 -0
  348. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/auto_table.hpp +0 -0
  349. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/external/Exception.h +0 -0
  350. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/external/MshLoader.cpp +0 -0
  351. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/external/MshLoader.h +0 -0
  352. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/external/MshSaver.cpp +0 -0
  353. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/external/MshSaver.h +0 -0
  354. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/external/Predicates.cpp +0 -0
  355. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/external/Predicates.hpp +0 -0
  356. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/external/Rational.h +0 -0
  357. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/external/bfs_orient.cpp +0 -0
  358. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/external/bfs_orient.h +0 -0
  359. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/external/getRSS.c +0 -0
  360. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/external/get_mem.cpp +0 -0
  361. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/external/get_mem.h +0 -0
  362. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/external/mesh_AABB.cpp +0 -0
  363. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/external/mesh_AABB.h +0 -0
  364. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/external/predicates.c +0 -0
  365. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/external/triangle_triangle_intersection.cpp +0 -0
  366. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/external/triangle_triangle_intersection_old.cpp +0 -0
  367. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/intersections.cpp +0 -0
  368. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/src/intersections.h +0 -0
  369. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/tests/CMakeLists.txt +0 -0
  370. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/tests/bunny.off +0 -0
  371. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/tests/main.cpp +0 -0
  372. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/tests/test_predicates.cpp +0 -0
  373. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/tests/test_subdivision.cpp +0 -0
  374. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/tests/test_table.cpp +0 -0
  375. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/tests/test_tree.cpp +0 -0
  376. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/fTetWild/tests/tests.cpp +0 -0
  377. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/pytetwild/__init__.py +0 -0
  378. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/pytetwild/_version.py +0 -0
  379. {pytetwild-0.1.1 → pytetwild-0.2.0}/src/pytetwild/py.typed +0 -0
  380. {pytetwild-0.1.1 → pytetwild-0.2.0}/tests/test_data/box.stl +0 -0
  381. {pytetwild-0.1.1 → pytetwild-0.2.0}/tests/test_data/sphere.stl +0 -0
  382. {pytetwild-0.1.1 → pytetwild-0.2.0}/tests/test_data/test_surf.ply +0 -0
  383. {pytetwild-0.1.1 → 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,16 +19,16 @@ jobs:
19
19
  strategy:
20
20
  fail-fast: false
21
21
  matrix:
22
- os: [ubuntu-latest, windows-latest, macos-15-intel, macos-15]
22
+ os: [ubuntu-24.04, windows-2025, macos-latest, macos-15-intel]
23
23
 
24
24
  steps:
25
- - uses: actions/checkout@v5
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.2.0
31
+ uses: conda-incubator/setup-miniconda@v3.3.0
32
32
 
33
33
  - name: Install Dependencies (Windows)
34
34
  if: runner.os == 'Windows'
@@ -43,7 +43,7 @@ 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@v3.3.0
46
+ uses: pypa/cibuildwheel@v3.3.1
47
47
  env:
48
48
  CIBW_ENVIRONMENT_MACOS: 'MACOSX_DEPLOYMENT_TARGET="15.0"'
49
49
  CIBW_ARCHS_MACOS: "auto"
@@ -51,16 +51,50 @@ jobs:
51
51
  - name: List generated wheels
52
52
  run: ls ./wheelhouse/*
53
53
 
54
- - uses: actions/upload-artifact@v5
54
+ - uses: actions/upload-artifact@v6
55
55
  with:
56
56
  path: ./wheelhouse/*.whl
57
- 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
58
92
 
59
93
  build_sdist:
60
94
  name: Build source distribution
61
95
  runs-on: ubuntu-latest
62
96
  steps:
63
- - uses: actions/checkout@v5
97
+ - uses: actions/checkout@v6
64
98
  with:
65
99
  submodules: true
66
100
 
@@ -88,12 +122,12 @@ jobs:
88
122
  - name: Install from dist/
89
123
  run: |
90
124
  sdist_file=$(ls dist/*.tar.gz)
91
- pip install "$sdist_file[dev]"
125
+ pip install "$sdist_file[tests]"
92
126
 
93
127
  - name: Test
94
128
  run: pytest -vv
95
129
 
96
- - uses: actions/upload-artifact@v4
130
+ - uses: actions/upload-artifact@v6
97
131
  with:
98
132
  path: dist/*.tar.gz
99
133
  name: pytetwild-sdist
@@ -109,7 +143,7 @@ jobs:
109
143
  permissions:
110
144
  id-token: write # this permission is mandatory for trusted publishing
111
145
  steps:
112
- - uses: actions/download-artifact@v6
146
+ - uses: actions/download-artifact@v7
113
147
  - name: Flatten directory structure
114
148
  run: |
115
149
  mkdir -p dist/
@@ -118,7 +152,7 @@ jobs:
118
152
  - name: Publish package distributions to PyPI
119
153
  uses: pypa/gh-action-pypi-publish@release/v1
120
154
  - name: Create GitHub Release
121
- uses: softprops/action-gh-release@v1
155
+ uses: softprops/action-gh-release@v2
122
156
  with:
123
157
  generate_release_notes: true
124
158
  files: |
@@ -77,6 +77,21 @@ Release/
77
77
  mpir.dll
78
78
  _deps
79
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
80
86
 
81
87
  # cibuildwheel
82
- 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.14.4
3
+ rev: v0.14.14
4
4
  hooks:
5
5
  - id: ruff
6
6
  args: [--fix, --exit-non-zero-on-fix]
@@ -8,13 +8,13 @@ repos:
8
8
  - id: ruff-format
9
9
 
10
10
  - repo: https://github.com/keewis/blackdoc
11
- rev: v0.4.5
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.9.0
17
+ rev: v1.10.0
18
18
  hooks:
19
19
  - id: numpydoc-validation
20
20
  files: ^src/pytetwild
@@ -40,7 +40,7 @@ repos:
40
40
  - id: trailing-whitespace
41
41
 
42
42
  - repo: https://github.com/pre-commit/mirrors-clang-format
43
- rev: v21.1.5
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.18.2
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.34.1
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
1
  Metadata-Version: 2.2
2
2
  Name: pytetwild
3
- Version: 0.1.1
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
@@ -14,15 +14,18 @@ Classifier: Programming Language :: Python :: 3.10
14
14
  Classifier: Programming Language :: Python :: 3.11
15
15
  Classifier: Programming Language :: Python :: 3.12
16
16
  Classifier: Programming Language :: Python :: 3.13
17
+ Classifier: Programming Language :: Python :: 3.14
18
+ Requires-Python: <3.15,>=3.10
17
19
  Requires-Dist: numpy
18
20
  Provides-Extra: all
19
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"
20
27
  Provides-Extra: dev
21
- Requires-Dist: pytest; extra == "dev"
22
28
  Requires-Dist: pre-commit; extra == "dev"
23
- Requires-Dist: pyvista; extra == "dev"
24
- Requires-Dist: scipy; extra == "dev"
25
- Requires-Dist: meshio; extra == "dev"
26
29
  Description-Content-Type: text/x-rst
27
30
 
28
31
  pytetwild
@@ -44,13 +47,17 @@ Python wrapper around the efficient C++ library for tetrahedral meshing provided
44
47
  Installation
45
48
  ************
46
49
 
47
- 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.
48
51
 
49
52
  The recommended way to install ``pytetwild`` is via PyPI:
50
53
 
51
54
  .. code:: sh
52
55
 
53
- 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.
54
61
 
55
62
  You can also clone the repository and install it from source, but since there's
56
63
  C++ involved, the build is a bit more complicated. See ``CONTRIBUTING.md`` for
@@ -60,7 +67,8 @@ more details.
60
67
  Usage
61
68
  *****
62
69
 
63
- 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:
64
72
 
65
73
  .. code:: py
66
74
 
@@ -76,7 +84,10 @@ To tetrahedralize a surface mesh from `PyVista <https://docs.pyvista.org>`_:
76
84
  tetrahedral_mesh = pytetwild.tetrahedralize_pv(surface_mesh, edge_length_fac=1)
77
85
 
78
86
  # Visualize the tetrahedral mesh in an "exploded" view
79
- 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
+
80
91
 
81
92
  .. image:: https://github.com/pyvista/pytetwild/raw/main/exploded-sphere.png
82
93
 
@@ -85,6 +96,7 @@ You can also work with raw arrays. Here's a simple cube that we turn into tetrah
85
96
  .. code:: py
86
97
 
87
98
  import numpy as np
99
+ import pytetwild
88
100
 
89
101
  # Define vertices of the cube
90
102
  vertices = np.array([
@@ -113,25 +125,49 @@ You can also work with raw arrays. Here's a simple cube that we turn into tetrah
113
125
 
114
126
  Usage - Options
115
127
  ---------------
116
- We've surfaced a handful of parameters to each of our interfaces
117
- ``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``:
118
130
 
119
131
  .. code::
120
132
 
121
- Additional Parameters
122
- ---------------------
133
+ Parameters
134
+ ----------
123
135
  edge_length_fac : float, default: 0.05
124
136
  Tetrahedral edge length as a function of bounding box diagonal. The
125
- default ideal edge length is bb/20 (bounding box divided by 20).
126
- optimize : bool
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
127
142
  Improve the minimum scaled Jacobean for each cell. This leads to higher
128
- 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
+
129
165
 
130
166
 
131
167
  License and Acknowledgments
132
168
  ***************************
133
169
 
134
- 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
135
171
  their efficient C++ library for tetrahedral meshing. That work is licensed
136
172
  under the Mozilla Public License v2.0.
137
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
 
@@ -49,7 +54,10 @@ To tetrahedralize a surface mesh from `PyVista <https://docs.pyvista.org>`_:
49
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
 
@@ -58,6 +66,7 @@ You can also work with raw arrays. Here's a simple cube that we turn into tetrah
58
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
106
  Tetrahedral edge length as a function of bounding box diagonal. The
98
- default ideal edge length is bb/20 (bounding box divided by 20).
99
- optimize : bool
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
@@ -1,10 +1,10 @@
1
1
  [build-system]
2
- requires = ["scikit-build-core"]
3
2
  build-backend = "scikit_build_core.build"
3
+ requires = ["scikit-build-core >=0.4.3", "nanobind >=1.3.2"]
4
4
 
5
5
  [project]
6
6
  name = "pytetwild"
7
- version = "0.1.1"
7
+ version = "0.2.0"
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" }]
@@ -21,7 +21,9 @@ classifiers = [
21
21
  'Programming Language :: Python :: 3.11',
22
22
  'Programming Language :: Python :: 3.12',
23
23
  'Programming Language :: Python :: 3.13',
24
+ 'Programming Language :: Python :: 3.14',
24
25
  ]
26
+ requires-python = ">=3.10,<3.15"
25
27
 
26
28
  [tool.setuptools.packages.find]
27
29
  where = ["src"]
@@ -32,11 +34,13 @@ pytetwild = ["py.typed"]
32
34
 
33
35
  [project.optional-dependencies]
34
36
  all = ['pyvista']
35
- dev = ["pytest", "pre-commit", "pyvista", "scipy", "meshio"]
37
+ tests = ["pytest", "pyvista", "scipy", "meshio"]
38
+ dev = ["pre-commit"]
36
39
 
37
40
  [tool.scikit-build]
38
41
  build-dir = "./build"
39
42
  editable.mode = "inplace"
43
+ wheel.py-api = "cp312"
40
44
 
41
45
  [tool.scikit-build.cmake]
42
46
  args = [
@@ -50,25 +54,36 @@ testpaths = 'tests'
50
54
 
51
55
  [tool.cibuildwheel]
52
56
  archs = ["auto64"] # 64-bit only
53
- build = "cp310-* cp311-* cp312-* cp313-*" # Only build Python 3.10-3.14 wheels
54
- skip = ["*musllinux*"] # disable PyPy and musl-based wheels
57
+ before-build = "pip install abi3audit"
58
+ build = "cp310-* cp311-* cp312-*" # 3.12+ are abi3 wheels
59
+ skip = ["*musllinux*"] # disable musl-based wheels
55
60
  test-requires = "pytest pyvista scipy meshio"
56
61
  test-command = "pytest {project}/tests -v"
57
62
 
58
63
  [tool.cibuildwheel.linux]
59
64
  manylinux-x86_64-image = "manylinux_2_28"
60
65
  before-all = "dnf install -y gmp-devel"
61
- before-build = "pip install cmake==3.29.0"
62
- environment = "USE_MAVX='true'"
63
- environment-pass = ["USE_MAVX"]
66
+ before-build = "pip install abi3audit cmake==3.29.0"
67
+ repair-wheel-command = [
68
+ "auditwheel repair -w {dest_dir} {wheel}",
69
+ "bash tools/audit_wheel.sh {wheel}"
70
+ ]
64
71
 
65
72
  [tool.cibuildwheel.macos]
66
- before-build = "pip install cmake==3.29.0"
73
+ archs = ["native"]
74
+ before-build = "pip install cmake==3.29.0 abi3audit"
75
+ repair-wheel-command = [
76
+ "delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v {wheel}",
77
+ "bash tools/audit_wheel.sh {wheel}"
78
+ ]
79
+ test-command = ""
67
80
 
68
- # pip install delvewheel &&
69
81
  [tool.cibuildwheel.windows]
70
- before-build = "pip install cmake==3.29.0 delvewheel && python -c \"import os; file_path = 'build/CMakeCache.txt'; os.remove(file_path) if os.path.exists(file_path) else None\""
71
- repair-wheel-command = "python -c \"import shutil, os; shutil.copy(os.path.join(os.getenv('GMP_LIB'), '..', 'bin', 'mpir.dll'), '.')\" && delvewheel repair -w {dest_dir} {wheel} --add-path ."
82
+ before-build = "pip install cmake==3.29.0 delvewheel abi3audit && python -c \"import os; file_path = 'build/CMakeCache.txt'; os.remove(file_path) if os.path.exists(file_path) else None\""
83
+ repair-wheel-command = [
84
+ "python -c \"import shutil, os; shutil.copy(os.path.join(os.getenv('GMP_LIB'), '..', 'bin', 'mpir.dll'), '.')\" && delvewheel repair -w {dest_dir} {wheel} --add-path .",
85
+ "bash tools/audit_wheel.sh {wheel}"
86
+ ]
72
87
 
73
88
 
74
89
  [tool.blackdoc]
@@ -89,7 +104,6 @@ disallow_any_generics = true
89
104
  pretty = true
90
105
  show_error_context = true
91
106
  warn_unused_ignores = true
92
- plugins = ['numpy.typing.mypy_plugin','npt_promote']
93
107
 
94
108
  [tool.numpydoc_validation]
95
109
  checks = [