pytetwild 0.1.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 (375) hide show
  1. pytetwild-0.1.0/.github/workflows/build-and-deploy.yml +135 -0
  2. pytetwild-0.1.0/.gitignore +78 -0
  3. pytetwild-0.1.0/.gitmodules +6 -0
  4. pytetwild-0.1.0/.pre-commit-config.yaml +66 -0
  5. pytetwild-0.1.0/CMakeLists.txt +41 -0
  6. pytetwild-0.1.0/CONTRIBUTING.md +84 -0
  7. pytetwild-0.1.0/LICENSE +373 -0
  8. pytetwild-0.1.0/PKG-INFO +145 -0
  9. pytetwild-0.1.0/README.rst +117 -0
  10. pytetwild-0.1.0/exploded-sphere.png +0 -0
  11. pytetwild-0.1.0/pyproject.toml +166 -0
  12. pytetwild-0.1.0/src/FTetWildWrapper.cpp +440 -0
  13. pytetwild-0.1.0/src/fTetWild/.clang-format +148 -0
  14. pytetwild-0.1.0/src/fTetWild/.github/workflows/continuous.yml +103 -0
  15. pytetwild-0.1.0/src/fTetWild/.gitignore +14 -0
  16. pytetwild-0.1.0/src/fTetWild/.travis.yml +54 -0
  17. pytetwild-0.1.0/src/fTetWild/CMakeLists.txt +184 -0
  18. pytetwild-0.1.0/src/fTetWild/LICENSE.MPL2 +373 -0
  19. pytetwild-0.1.0/src/fTetWild/README.md +179 -0
  20. pytetwild-0.1.0/src/fTetWild/cmake/DownloadProject.CMakeLists.cmake.in +17 -0
  21. pytetwild-0.1.0/src/fTetWild/cmake/DownloadProject.cmake +182 -0
  22. pytetwild-0.1.0/src/fTetWild/cmake/FindGMPfTetWild.cmake +35 -0
  23. pytetwild-0.1.0/src/fTetWild/cmake/FindMPFR.cmake +72 -0
  24. pytetwild-0.1.0/src/fTetWild/cmake/FloatTetwildDependencies.cmake +186 -0
  25. pytetwild-0.1.0/src/fTetWild/cmake/FloatTetwildUtils.cmake +36 -0
  26. pytetwild-0.1.0/src/fTetWild/cmake/PrependCurrentPath.cmake +8 -0
  27. pytetwild-0.1.0/src/fTetWild/cmake/UseColors.cmake +47 -0
  28. pytetwild-0.1.0/src/fTetWild/cmake/Warnings.cmake +146 -0
  29. pytetwild-0.1.0/src/fTetWild/cmake/geogram.cmake +89 -0
  30. pytetwild-0.1.0/src/fTetWild/figs/1k.jpg +0 -0
  31. pytetwild-0.1.0/src/fTetWild/python/generate-table-code.py +220 -0
  32. pytetwild-0.1.0/src/fTetWild/python/plot-tet.py +366 -0
  33. pytetwild-0.1.0/src/fTetWild/python/save_all_confs.py +26 -0
  34. pytetwild-0.1.0/src/fTetWild/replicability_instructions.htm +16 -0
  35. pytetwild-0.1.0/src/fTetWild/src/AABBWrapper.cpp +160 -0
  36. pytetwild-0.1.0/src/fTetWild/src/AABBWrapper.h +288 -0
  37. pytetwild-0.1.0/src/fTetWild/src/CMakeLists.txt +69 -0
  38. pytetwild-0.1.0/src/fTetWild/src/CSGTreeParser.cpp +174 -0
  39. pytetwild-0.1.0/src/fTetWild/src/CSGTreeParser.hpp +52 -0
  40. pytetwild-0.1.0/src/fTetWild/src/CutMesh.cpp +702 -0
  41. pytetwild-0.1.0/src/fTetWild/src/CutMesh.h +73 -0
  42. pytetwild-0.1.0/src/fTetWild/src/EdgeCollapsing.cpp +633 -0
  43. pytetwild-0.1.0/src/fTetWild/src/EdgeCollapsing.h +27 -0
  44. pytetwild-0.1.0/src/fTetWild/src/EdgeSplitting.cpp +272 -0
  45. pytetwild-0.1.0/src/fTetWild/src/EdgeSplitting.h +22 -0
  46. pytetwild-0.1.0/src/fTetWild/src/EdgeSwapping.cpp +700 -0
  47. pytetwild-0.1.0/src/fTetWild/src/EdgeSwapping.h +23 -0
  48. pytetwild-0.1.0/src/fTetWild/src/FloatTetDelaunay.cpp +338 -0
  49. pytetwild-0.1.0/src/fTetWild/src/FloatTetDelaunay.h +28 -0
  50. pytetwild-0.1.0/src/fTetWild/src/FloatTetwild.cpp +196 -0
  51. pytetwild-0.1.0/src/fTetWild/src/FloatTetwild.h +23 -0
  52. pytetwild-0.1.0/src/fTetWild/src/LocalOperations.cpp +1663 -0
  53. pytetwild-0.1.0/src/fTetWild/src/LocalOperations.h +173 -0
  54. pytetwild-0.1.0/src/fTetWild/src/Logger.cpp +46 -0
  55. pytetwild-0.1.0/src/fTetWild/src/Logger.hpp +38 -0
  56. pytetwild-0.1.0/src/fTetWild/src/Mesh.cpp +340 -0
  57. pytetwild-0.1.0/src/fTetWild/src/Mesh.hpp +279 -0
  58. pytetwild-0.1.0/src/fTetWild/src/MeshIO.cpp +584 -0
  59. pytetwild-0.1.0/src/fTetWild/src/MeshIO.hpp +33 -0
  60. pytetwild-0.1.0/src/fTetWild/src/MeshImprovement.cpp +2732 -0
  61. pytetwild-0.1.0/src/fTetWild/src/MeshImprovement.h +56 -0
  62. pytetwild-0.1.0/src/fTetWild/src/Parameters.h +164 -0
  63. pytetwild-0.1.0/src/fTetWild/src/Simplification.cpp +1031 -0
  64. pytetwild-0.1.0/src/fTetWild/src/Simplification.h +34 -0
  65. pytetwild-0.1.0/src/fTetWild/src/Statistics.h +111 -0
  66. pytetwild-0.1.0/src/fTetWild/src/TriangleInsertion.cpp +3537 -0
  67. pytetwild-0.1.0/src/fTetWild/src/TriangleInsertion.h +132 -0
  68. pytetwild-0.1.0/src/fTetWild/src/Types.hpp +45 -0
  69. pytetwild-0.1.0/src/fTetWild/src/VertexSmoothing.cpp +352 -0
  70. pytetwild-0.1.0/src/fTetWild/src/VertexSmoothing.h +22 -0
  71. pytetwild-0.1.0/src/fTetWild/src/auto_table.cpp +3158 -0
  72. pytetwild-0.1.0/src/fTetWild/src/auto_table.hpp +27 -0
  73. pytetwild-0.1.0/src/fTetWild/src/external/CMakeLists.txt +67 -0
  74. pytetwild-0.1.0/src/fTetWild/src/external/Exception.h +43 -0
  75. pytetwild-0.1.0/src/fTetWild/src/external/FastWindingNumber.cpp +39 -0
  76. pytetwild-0.1.0/src/fTetWild/src/external/FastWindingNumber.hpp +8 -0
  77. pytetwild-0.1.0/src/fTetWild/src/external/MshLoader.cpp +454 -0
  78. pytetwild-0.1.0/src/fTetWild/src/external/MshLoader.h +86 -0
  79. pytetwild-0.1.0/src/fTetWild/src/external/MshSaver.cpp +383 -0
  80. pytetwild-0.1.0/src/fTetWild/src/external/MshSaver.h +59 -0
  81. pytetwild-0.1.0/src/fTetWild/src/external/Predicates.cpp +120 -0
  82. pytetwild-0.1.0/src/fTetWild/src/external/Predicates.hpp +22 -0
  83. pytetwild-0.1.0/src/fTetWild/src/external/Rational.h +175 -0
  84. pytetwild-0.1.0/src/fTetWild/src/external/bfs_orient.cpp +93 -0
  85. pytetwild-0.1.0/src/fTetWild/src/external/bfs_orient.h +29 -0
  86. pytetwild-0.1.0/src/fTetWild/src/external/getRSS.c +122 -0
  87. pytetwild-0.1.0/src/fTetWild/src/external/get_mem.cpp +12 -0
  88. pytetwild-0.1.0/src/fTetWild/src/external/get_mem.h +12 -0
  89. pytetwild-0.1.0/src/fTetWild/src/external/mesh_AABB.cpp +571 -0
  90. pytetwild-0.1.0/src/fTetWild/src/external/mesh_AABB.h +449 -0
  91. pytetwild-0.1.0/src/fTetWild/src/external/predicates.c +4273 -0
  92. pytetwild-0.1.0/src/fTetWild/src/external/triangle_triangle_intersection.cpp +290 -0
  93. pytetwild-0.1.0/src/fTetWild/src/external/triangle_triangle_intersection_old.cpp +590 -0
  94. pytetwild-0.1.0/src/fTetWild/src/intersections.cpp +720 -0
  95. pytetwild-0.1.0/src/fTetWild/src/intersections.h +61 -0
  96. pytetwild-0.1.0/src/fTetWild/src/main.cpp +683 -0
  97. pytetwild-0.1.0/src/fTetWild/tests/CMakeLists.txt +41 -0
  98. pytetwild-0.1.0/src/fTetWild/tests/bunny.off +10453 -0
  99. pytetwild-0.1.0/src/fTetWild/tests/main.cpp +6 -0
  100. pytetwild-0.1.0/src/fTetWild/tests/test_predicates.cpp +78 -0
  101. pytetwild-0.1.0/src/fTetWild/tests/test_subdivision.cpp +31 -0
  102. pytetwild-0.1.0/src/fTetWild/tests/test_table.cpp +60 -0
  103. pytetwild-0.1.0/src/fTetWild/tests/test_tree.cpp +162 -0
  104. pytetwild-0.1.0/src/fTetWild/tests/tests.cpp +12 -0
  105. pytetwild-0.1.0/src/pybind11/.appveyor.yml +35 -0
  106. pytetwild-0.1.0/src/pybind11/.clang-format +38 -0
  107. pytetwild-0.1.0/src/pybind11/.clang-tidy +77 -0
  108. pytetwild-0.1.0/src/pybind11/.cmake-format.yaml +73 -0
  109. pytetwild-0.1.0/src/pybind11/.codespell-ignore-lines +24 -0
  110. pytetwild-0.1.0/src/pybind11/.gitattributes +1 -0
  111. pytetwild-0.1.0/src/pybind11/.github/CODEOWNERS +9 -0
  112. pytetwild-0.1.0/src/pybind11/.github/CONTRIBUTING.md +388 -0
  113. pytetwild-0.1.0/src/pybind11/.github/ISSUE_TEMPLATE/bug-report.yml +61 -0
  114. pytetwild-0.1.0/src/pybind11/.github/ISSUE_TEMPLATE/config.yml +8 -0
  115. pytetwild-0.1.0/src/pybind11/.github/dependabot.yml +15 -0
  116. pytetwild-0.1.0/src/pybind11/.github/labeler.yml +8 -0
  117. pytetwild-0.1.0/src/pybind11/.github/labeler_merged.yml +3 -0
  118. pytetwild-0.1.0/src/pybind11/.github/matchers/pylint.json +32 -0
  119. pytetwild-0.1.0/src/pybind11/.github/pull_request_template.md +19 -0
  120. pytetwild-0.1.0/src/pybind11/.github/workflows/ci.yml +1190 -0
  121. pytetwild-0.1.0/src/pybind11/.github/workflows/configure.yml +92 -0
  122. pytetwild-0.1.0/src/pybind11/.github/workflows/format.yml +60 -0
  123. pytetwild-0.1.0/src/pybind11/.github/workflows/labeler.yml +25 -0
  124. pytetwild-0.1.0/src/pybind11/.github/workflows/pip.yml +114 -0
  125. pytetwild-0.1.0/src/pybind11/.github/workflows/upstream.yml +116 -0
  126. pytetwild-0.1.0/src/pybind11/.gitignore +46 -0
  127. pytetwild-0.1.0/src/pybind11/.pre-commit-config.yaml +155 -0
  128. pytetwild-0.1.0/src/pybind11/.readthedocs.yml +20 -0
  129. pytetwild-0.1.0/src/pybind11/CMakeLists.txt +363 -0
  130. pytetwild-0.1.0/src/pybind11/LICENSE +29 -0
  131. pytetwild-0.1.0/src/pybind11/MANIFEST.in +6 -0
  132. pytetwild-0.1.0/src/pybind11/README.rst +180 -0
  133. pytetwild-0.1.0/src/pybind11/SECURITY.md +13 -0
  134. pytetwild-0.1.0/src/pybind11/docs/Doxyfile +21 -0
  135. pytetwild-0.1.0/src/pybind11/docs/_static/css/custom.css +3 -0
  136. pytetwild-0.1.0/src/pybind11/docs/advanced/cast/chrono.rst +81 -0
  137. pytetwild-0.1.0/src/pybind11/docs/advanced/cast/custom.rst +93 -0
  138. pytetwild-0.1.0/src/pybind11/docs/advanced/cast/eigen.rst +310 -0
  139. pytetwild-0.1.0/src/pybind11/docs/advanced/cast/functional.rst +109 -0
  140. pytetwild-0.1.0/src/pybind11/docs/advanced/cast/index.rst +43 -0
  141. pytetwild-0.1.0/src/pybind11/docs/advanced/cast/overview.rst +170 -0
  142. pytetwild-0.1.0/src/pybind11/docs/advanced/cast/stl.rst +249 -0
  143. pytetwild-0.1.0/src/pybind11/docs/advanced/cast/strings.rst +296 -0
  144. pytetwild-0.1.0/src/pybind11/docs/advanced/classes.rst +1335 -0
  145. pytetwild-0.1.0/src/pybind11/docs/advanced/embedding.rst +262 -0
  146. pytetwild-0.1.0/src/pybind11/docs/advanced/exceptions.rst +401 -0
  147. pytetwild-0.1.0/src/pybind11/docs/advanced/functions.rst +614 -0
  148. pytetwild-0.1.0/src/pybind11/docs/advanced/misc.rst +429 -0
  149. pytetwild-0.1.0/src/pybind11/docs/advanced/pycpp/index.rst +13 -0
  150. pytetwild-0.1.0/src/pybind11/docs/advanced/pycpp/numpy.rst +455 -0
  151. pytetwild-0.1.0/src/pybind11/docs/advanced/pycpp/object.rst +286 -0
  152. pytetwild-0.1.0/src/pybind11/docs/advanced/pycpp/utilities.rst +155 -0
  153. pytetwild-0.1.0/src/pybind11/docs/advanced/smart_ptrs.rst +174 -0
  154. pytetwild-0.1.0/src/pybind11/docs/basics.rst +307 -0
  155. pytetwild-0.1.0/src/pybind11/docs/benchmark.py +87 -0
  156. pytetwild-0.1.0/src/pybind11/docs/benchmark.rst +95 -0
  157. pytetwild-0.1.0/src/pybind11/docs/changelog.rst +2832 -0
  158. pytetwild-0.1.0/src/pybind11/docs/classes.rst +555 -0
  159. pytetwild-0.1.0/src/pybind11/docs/cmake/index.rst +8 -0
  160. pytetwild-0.1.0/src/pybind11/docs/compiling.rst +649 -0
  161. pytetwild-0.1.0/src/pybind11/docs/conf.py +368 -0
  162. pytetwild-0.1.0/src/pybind11/docs/faq.rst +308 -0
  163. pytetwild-0.1.0/src/pybind11/docs/index.rst +48 -0
  164. pytetwild-0.1.0/src/pybind11/docs/installing.rst +105 -0
  165. pytetwild-0.1.0/src/pybind11/docs/limitations.rst +72 -0
  166. pytetwild-0.1.0/src/pybind11/docs/pybind11-logo.png +0 -0
  167. pytetwild-0.1.0/src/pybind11/docs/pybind11_vs_boost_python1.png +0 -0
  168. pytetwild-0.1.0/src/pybind11/docs/pybind11_vs_boost_python1.svg +427 -0
  169. pytetwild-0.1.0/src/pybind11/docs/pybind11_vs_boost_python2.png +0 -0
  170. pytetwild-0.1.0/src/pybind11/docs/pybind11_vs_boost_python2.svg +427 -0
  171. pytetwild-0.1.0/src/pybind11/docs/reference.rst +130 -0
  172. pytetwild-0.1.0/src/pybind11/docs/release.rst +143 -0
  173. pytetwild-0.1.0/src/pybind11/docs/requirements.txt +6 -0
  174. pytetwild-0.1.0/src/pybind11/docs/upgrade.rst +566 -0
  175. pytetwild-0.1.0/src/pybind11/include/pybind11/attr.h +690 -0
  176. pytetwild-0.1.0/src/pybind11/include/pybind11/buffer_info.h +208 -0
  177. pytetwild-0.1.0/src/pybind11/include/pybind11/cast.h +1730 -0
  178. pytetwild-0.1.0/src/pybind11/include/pybind11/chrono.h +225 -0
  179. pytetwild-0.1.0/src/pybind11/include/pybind11/common.h +2 -0
  180. pytetwild-0.1.0/src/pybind11/include/pybind11/complex.h +74 -0
  181. pytetwild-0.1.0/src/pybind11/include/pybind11/detail/class.h +748 -0
  182. pytetwild-0.1.0/src/pybind11/include/pybind11/detail/common.h +1263 -0
  183. pytetwild-0.1.0/src/pybind11/include/pybind11/detail/descr.h +171 -0
  184. pytetwild-0.1.0/src/pybind11/include/pybind11/detail/init.h +434 -0
  185. pytetwild-0.1.0/src/pybind11/include/pybind11/detail/internals.h +662 -0
  186. pytetwild-0.1.0/src/pybind11/include/pybind11/detail/type_caster_base.h +1214 -0
  187. pytetwild-0.1.0/src/pybind11/include/pybind11/detail/typeid.h +65 -0
  188. pytetwild-0.1.0/src/pybind11/include/pybind11/eigen/common.h +9 -0
  189. pytetwild-0.1.0/src/pybind11/include/pybind11/eigen/matrix.h +714 -0
  190. pytetwild-0.1.0/src/pybind11/include/pybind11/eigen/tensor.h +516 -0
  191. pytetwild-0.1.0/src/pybind11/include/pybind11/eigen.h +12 -0
  192. pytetwild-0.1.0/src/pybind11/include/pybind11/embed.h +316 -0
  193. pytetwild-0.1.0/src/pybind11/include/pybind11/eval.h +156 -0
  194. pytetwild-0.1.0/src/pybind11/include/pybind11/functional.h +137 -0
  195. pytetwild-0.1.0/src/pybind11/include/pybind11/gil.h +247 -0
  196. pytetwild-0.1.0/src/pybind11/include/pybind11/gil_safe_call_once.h +91 -0
  197. pytetwild-0.1.0/src/pybind11/include/pybind11/iostream.h +265 -0
  198. pytetwild-0.1.0/src/pybind11/include/pybind11/numpy.h +2020 -0
  199. pytetwild-0.1.0/src/pybind11/include/pybind11/operators.h +202 -0
  200. pytetwild-0.1.0/src/pybind11/include/pybind11/options.h +92 -0
  201. pytetwild-0.1.0/src/pybind11/include/pybind11/pybind11.h +2942 -0
  202. pytetwild-0.1.0/src/pybind11/include/pybind11/pytypes.h +2573 -0
  203. pytetwild-0.1.0/src/pybind11/include/pybind11/stl/filesystem.h +116 -0
  204. pytetwild-0.1.0/src/pybind11/include/pybind11/stl.h +447 -0
  205. pytetwild-0.1.0/src/pybind11/include/pybind11/stl_bind.h +823 -0
  206. pytetwild-0.1.0/src/pybind11/include/pybind11/type_caster_pyobject_ptr.h +61 -0
  207. pytetwild-0.1.0/src/pybind11/include/pybind11/typing.h +117 -0
  208. pytetwild-0.1.0/src/pybind11/noxfile.py +107 -0
  209. pytetwild-0.1.0/src/pybind11/pybind11/__init__.py +17 -0
  210. pytetwild-0.1.0/src/pybind11/pybind11/__main__.py +62 -0
  211. pytetwild-0.1.0/src/pybind11/pybind11/_version.py +12 -0
  212. pytetwild-0.1.0/src/pybind11/pybind11/commands.py +37 -0
  213. pytetwild-0.1.0/src/pybind11/pybind11/py.typed +0 -0
  214. pytetwild-0.1.0/src/pybind11/pybind11/setup_helpers.py +500 -0
  215. pytetwild-0.1.0/src/pybind11/pyproject.toml +95 -0
  216. pytetwild-0.1.0/src/pybind11/setup.cfg +43 -0
  217. pytetwild-0.1.0/src/pybind11/setup.py +150 -0
  218. pytetwild-0.1.0/src/pybind11/tests/CMakeLists.txt +585 -0
  219. pytetwild-0.1.0/src/pybind11/tests/conftest.py +221 -0
  220. pytetwild-0.1.0/src/pybind11/tests/constructor_stats.h +322 -0
  221. pytetwild-0.1.0/src/pybind11/tests/cross_module_gil_utils.cpp +108 -0
  222. pytetwild-0.1.0/src/pybind11/tests/cross_module_interleaved_error_already_set.cpp +51 -0
  223. pytetwild-0.1.0/src/pybind11/tests/eigen_tensor_avoid_stl_array.cpp +14 -0
  224. pytetwild-0.1.0/src/pybind11/tests/env.py +27 -0
  225. pytetwild-0.1.0/src/pybind11/tests/extra_python_package/pytest.ini +0 -0
  226. pytetwild-0.1.0/src/pybind11/tests/extra_python_package/test_files.py +293 -0
  227. pytetwild-0.1.0/src/pybind11/tests/extra_setuptools/pytest.ini +0 -0
  228. pytetwild-0.1.0/src/pybind11/tests/extra_setuptools/test_setuphelper.py +151 -0
  229. pytetwild-0.1.0/src/pybind11/tests/local_bindings.h +92 -0
  230. pytetwild-0.1.0/src/pybind11/tests/object.h +205 -0
  231. pytetwild-0.1.0/src/pybind11/tests/pybind11_cross_module_tests.cpp +149 -0
  232. pytetwild-0.1.0/src/pybind11/tests/pybind11_tests.cpp +123 -0
  233. pytetwild-0.1.0/src/pybind11/tests/pybind11_tests.h +85 -0
  234. pytetwild-0.1.0/src/pybind11/tests/pytest.ini +22 -0
  235. pytetwild-0.1.0/src/pybind11/tests/requirements.txt +15 -0
  236. pytetwild-0.1.0/src/pybind11/tests/test_async.cpp +25 -0
  237. pytetwild-0.1.0/src/pybind11/tests/test_async.py +24 -0
  238. pytetwild-0.1.0/src/pybind11/tests/test_buffers.cpp +259 -0
  239. pytetwild-0.1.0/src/pybind11/tests/test_buffers.py +228 -0
  240. pytetwild-0.1.0/src/pybind11/tests/test_builtin_casters.cpp +392 -0
  241. pytetwild-0.1.0/src/pybind11/tests/test_builtin_casters.py +528 -0
  242. pytetwild-0.1.0/src/pybind11/tests/test_call_policies.cpp +115 -0
  243. pytetwild-0.1.0/src/pybind11/tests/test_call_policies.py +247 -0
  244. pytetwild-0.1.0/src/pybind11/tests/test_callbacks.cpp +280 -0
  245. pytetwild-0.1.0/src/pybind11/tests/test_callbacks.py +225 -0
  246. pytetwild-0.1.0/src/pybind11/tests/test_chrono.cpp +81 -0
  247. pytetwild-0.1.0/src/pybind11/tests/test_chrono.py +205 -0
  248. pytetwild-0.1.0/src/pybind11/tests/test_class.cpp +657 -0
  249. pytetwild-0.1.0/src/pybind11/tests/test_class.py +499 -0
  250. pytetwild-0.1.0/src/pybind11/tests/test_cmake_build/CMakeLists.txt +80 -0
  251. pytetwild-0.1.0/src/pybind11/tests/test_cmake_build/embed.cpp +23 -0
  252. pytetwild-0.1.0/src/pybind11/tests/test_cmake_build/installed_embed/CMakeLists.txt +28 -0
  253. pytetwild-0.1.0/src/pybind11/tests/test_cmake_build/installed_function/CMakeLists.txt +39 -0
  254. pytetwild-0.1.0/src/pybind11/tests/test_cmake_build/installed_target/CMakeLists.txt +46 -0
  255. pytetwild-0.1.0/src/pybind11/tests/test_cmake_build/main.cpp +6 -0
  256. pytetwild-0.1.0/src/pybind11/tests/test_cmake_build/subdirectory_embed/CMakeLists.txt +47 -0
  257. pytetwild-0.1.0/src/pybind11/tests/test_cmake_build/subdirectory_function/CMakeLists.txt +41 -0
  258. pytetwild-0.1.0/src/pybind11/tests/test_cmake_build/subdirectory_target/CMakeLists.txt +47 -0
  259. pytetwild-0.1.0/src/pybind11/tests/test_cmake_build/test.py +8 -0
  260. pytetwild-0.1.0/src/pybind11/tests/test_const_name.cpp +55 -0
  261. pytetwild-0.1.0/src/pybind11/tests/test_const_name.py +29 -0
  262. pytetwild-0.1.0/src/pybind11/tests/test_constants_and_functions.cpp +154 -0
  263. pytetwild-0.1.0/src/pybind11/tests/test_constants_and_functions.py +56 -0
  264. pytetwild-0.1.0/src/pybind11/tests/test_copy_move.cpp +533 -0
  265. pytetwild-0.1.0/src/pybind11/tests/test_copy_move.py +132 -0
  266. pytetwild-0.1.0/src/pybind11/tests/test_custom_type_casters.cpp +209 -0
  267. pytetwild-0.1.0/src/pybind11/tests/test_custom_type_casters.py +122 -0
  268. pytetwild-0.1.0/src/pybind11/tests/test_custom_type_setup.cpp +41 -0
  269. pytetwild-0.1.0/src/pybind11/tests/test_custom_type_setup.py +48 -0
  270. pytetwild-0.1.0/src/pybind11/tests/test_docstring_options.cpp +141 -0
  271. pytetwild-0.1.0/src/pybind11/tests/test_docstring_options.py +64 -0
  272. pytetwild-0.1.0/src/pybind11/tests/test_eigen_matrix.cpp +445 -0
  273. pytetwild-0.1.0/src/pybind11/tests/test_eigen_matrix.py +812 -0
  274. pytetwild-0.1.0/src/pybind11/tests/test_eigen_tensor.cpp +18 -0
  275. pytetwild-0.1.0/src/pybind11/tests/test_eigen_tensor.inl +333 -0
  276. pytetwild-0.1.0/src/pybind11/tests/test_eigen_tensor.py +288 -0
  277. pytetwild-0.1.0/src/pybind11/tests/test_embed/CMakeLists.txt +47 -0
  278. pytetwild-0.1.0/src/pybind11/tests/test_embed/catch.cpp +43 -0
  279. pytetwild-0.1.0/src/pybind11/tests/test_embed/external_module.cpp +20 -0
  280. pytetwild-0.1.0/src/pybind11/tests/test_embed/test_interpreter.cpp +488 -0
  281. pytetwild-0.1.0/src/pybind11/tests/test_embed/test_interpreter.py +14 -0
  282. pytetwild-0.1.0/src/pybind11/tests/test_embed/test_trampoline.py +16 -0
  283. pytetwild-0.1.0/src/pybind11/tests/test_enum.cpp +133 -0
  284. pytetwild-0.1.0/src/pybind11/tests/test_enum.py +269 -0
  285. pytetwild-0.1.0/src/pybind11/tests/test_eval.cpp +118 -0
  286. pytetwild-0.1.0/src/pybind11/tests/test_eval.py +50 -0
  287. pytetwild-0.1.0/src/pybind11/tests/test_eval_call.py +4 -0
  288. pytetwild-0.1.0/src/pybind11/tests/test_exceptions.cpp +385 -0
  289. pytetwild-0.1.0/src/pybind11/tests/test_exceptions.h +13 -0
  290. pytetwild-0.1.0/src/pybind11/tests/test_exceptions.py +421 -0
  291. pytetwild-0.1.0/src/pybind11/tests/test_factory_constructors.cpp +430 -0
  292. pytetwild-0.1.0/src/pybind11/tests/test_factory_constructors.py +516 -0
  293. pytetwild-0.1.0/src/pybind11/tests/test_gil_scoped.cpp +144 -0
  294. pytetwild-0.1.0/src/pybind11/tests/test_gil_scoped.py +242 -0
  295. pytetwild-0.1.0/src/pybind11/tests/test_iostream.cpp +126 -0
  296. pytetwild-0.1.0/src/pybind11/tests/test_iostream.py +291 -0
  297. pytetwild-0.1.0/src/pybind11/tests/test_kwargs_and_defaults.cpp +327 -0
  298. pytetwild-0.1.0/src/pybind11/tests/test_kwargs_and_defaults.py +425 -0
  299. pytetwild-0.1.0/src/pybind11/tests/test_local_bindings.cpp +106 -0
  300. pytetwild-0.1.0/src/pybind11/tests/test_local_bindings.py +257 -0
  301. pytetwild-0.1.0/src/pybind11/tests/test_methods_and_attributes.cpp +493 -0
  302. pytetwild-0.1.0/src/pybind11/tests/test_methods_and_attributes.py +537 -0
  303. pytetwild-0.1.0/src/pybind11/tests/test_modules.cpp +125 -0
  304. pytetwild-0.1.0/src/pybind11/tests/test_modules.py +116 -0
  305. pytetwild-0.1.0/src/pybind11/tests/test_multiple_inheritance.cpp +341 -0
  306. pytetwild-0.1.0/src/pybind11/tests/test_multiple_inheritance.py +493 -0
  307. pytetwild-0.1.0/src/pybind11/tests/test_numpy_array.cpp +552 -0
  308. pytetwild-0.1.0/src/pybind11/tests/test_numpy_array.py +668 -0
  309. pytetwild-0.1.0/src/pybind11/tests/test_numpy_dtypes.cpp +614 -0
  310. pytetwild-0.1.0/src/pybind11/tests/test_numpy_dtypes.py +440 -0
  311. pytetwild-0.1.0/src/pybind11/tests/test_numpy_vectorize.cpp +107 -0
  312. pytetwild-0.1.0/src/pybind11/tests/test_numpy_vectorize.py +266 -0
  313. pytetwild-0.1.0/src/pybind11/tests/test_opaque_types.cpp +77 -0
  314. pytetwild-0.1.0/src/pybind11/tests/test_opaque_types.py +58 -0
  315. pytetwild-0.1.0/src/pybind11/tests/test_operator_overloading.cpp +281 -0
  316. pytetwild-0.1.0/src/pybind11/tests/test_operator_overloading.py +151 -0
  317. pytetwild-0.1.0/src/pybind11/tests/test_pickling.cpp +194 -0
  318. pytetwild-0.1.0/src/pybind11/tests/test_pickling.py +93 -0
  319. pytetwild-0.1.0/src/pybind11/tests/test_python_multiple_inheritance.cpp +45 -0
  320. pytetwild-0.1.0/src/pybind11/tests/test_python_multiple_inheritance.py +35 -0
  321. pytetwild-0.1.0/src/pybind11/tests/test_pytypes.cpp +835 -0
  322. pytetwild-0.1.0/src/pybind11/tests/test_pytypes.py +947 -0
  323. pytetwild-0.1.0/src/pybind11/tests/test_sequences_and_iterators.cpp +600 -0
  324. pytetwild-0.1.0/src/pybind11/tests/test_sequences_and_iterators.py +265 -0
  325. pytetwild-0.1.0/src/pybind11/tests/test_smart_ptr.cpp +473 -0
  326. pytetwild-0.1.0/src/pybind11/tests/test_smart_ptr.py +315 -0
  327. pytetwild-0.1.0/src/pybind11/tests/test_stl.cpp +551 -0
  328. pytetwild-0.1.0/src/pybind11/tests/test_stl.py +381 -0
  329. pytetwild-0.1.0/src/pybind11/tests/test_stl_binders.cpp +276 -0
  330. pytetwild-0.1.0/src/pybind11/tests/test_stl_binders.py +393 -0
  331. pytetwild-0.1.0/src/pybind11/tests/test_tagbased_polymorphic.cpp +147 -0
  332. pytetwild-0.1.0/src/pybind11/tests/test_tagbased_polymorphic.py +28 -0
  333. pytetwild-0.1.0/src/pybind11/tests/test_thread.cpp +66 -0
  334. pytetwild-0.1.0/src/pybind11/tests/test_thread.py +42 -0
  335. pytetwild-0.1.0/src/pybind11/tests/test_type_caster_pyobject_ptr.cpp +130 -0
  336. pytetwild-0.1.0/src/pybind11/tests/test_type_caster_pyobject_ptr.py +104 -0
  337. pytetwild-0.1.0/src/pybind11/tests/test_union.cpp +22 -0
  338. pytetwild-0.1.0/src/pybind11/tests/test_union.py +8 -0
  339. pytetwild-0.1.0/src/pybind11/tests/test_unnamed_namespace_a.cpp +38 -0
  340. pytetwild-0.1.0/src/pybind11/tests/test_unnamed_namespace_a.py +34 -0
  341. pytetwild-0.1.0/src/pybind11/tests/test_unnamed_namespace_b.cpp +13 -0
  342. pytetwild-0.1.0/src/pybind11/tests/test_unnamed_namespace_b.py +5 -0
  343. pytetwild-0.1.0/src/pybind11/tests/test_vector_unique_ptr_member.cpp +54 -0
  344. pytetwild-0.1.0/src/pybind11/tests/test_vector_unique_ptr_member.py +14 -0
  345. pytetwild-0.1.0/src/pybind11/tests/test_virtual_functions.cpp +592 -0
  346. pytetwild-0.1.0/src/pybind11/tests/test_virtual_functions.py +458 -0
  347. pytetwild-0.1.0/src/pybind11/tests/valgrind-numpy-scipy.supp +140 -0
  348. pytetwild-0.1.0/src/pybind11/tests/valgrind-python.supp +117 -0
  349. pytetwild-0.1.0/src/pybind11/tools/FindCatch.cmake +76 -0
  350. pytetwild-0.1.0/src/pybind11/tools/FindEigen3.cmake +86 -0
  351. pytetwild-0.1.0/src/pybind11/tools/FindPythonLibsNew.cmake +310 -0
  352. pytetwild-0.1.0/src/pybind11/tools/JoinPaths.cmake +23 -0
  353. pytetwild-0.1.0/src/pybind11/tools/check-style.sh +44 -0
  354. pytetwild-0.1.0/src/pybind11/tools/cmake_uninstall.cmake.in +23 -0
  355. pytetwild-0.1.0/src/pybind11/tools/codespell_ignore_lines_from_errors.py +39 -0
  356. pytetwild-0.1.0/src/pybind11/tools/libsize.py +36 -0
  357. pytetwild-0.1.0/src/pybind11/tools/make_changelog.py +88 -0
  358. pytetwild-0.1.0/src/pybind11/tools/pybind11.pc.in +7 -0
  359. pytetwild-0.1.0/src/pybind11/tools/pybind11Common.cmake +415 -0
  360. pytetwild-0.1.0/src/pybind11/tools/pybind11Config.cmake.in +233 -0
  361. pytetwild-0.1.0/src/pybind11/tools/pybind11NewTools.cmake +311 -0
  362. pytetwild-0.1.0/src/pybind11/tools/pybind11Tools.cmake +239 -0
  363. pytetwild-0.1.0/src/pybind11/tools/pyproject.toml +3 -0
  364. pytetwild-0.1.0/src/pybind11/tools/setup_global.py.in +63 -0
  365. pytetwild-0.1.0/src/pybind11/tools/setup_main.py.in +44 -0
  366. pytetwild-0.1.0/src/pytetwild/__init__.py +4 -0
  367. pytetwild-0.1.0/src/pytetwild/_version.py +5 -0
  368. pytetwild-0.1.0/src/pytetwild/py.typed +1 -0
  369. pytetwild-0.1.0/src/pytetwild/pytetwild.py +190 -0
  370. pytetwild-0.1.0/tests/test_data/box.stl +0 -0
  371. pytetwild-0.1.0/tests/test_data/csgtree.json +1 -0
  372. pytetwild-0.1.0/tests/test_data/sphere.stl +0 -0
  373. pytetwild-0.1.0/tests/test_data/test_surf.ply +0 -0
  374. pytetwild-0.1.0/tests/test_data/test_tets.msh +0 -0
  375. pytetwild-0.1.0/tests/test_pytetwild.py +135 -0
@@ -0,0 +1,135 @@
1
+ name: Build and upload
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ tags:
7
+ - "*"
8
+ branches:
9
+ - "main"
10
+
11
+ concurrency:
12
+ group: ${{ github.workflow }}-${{ github.ref }}
13
+ cancel-in-progress: true
14
+
15
+ jobs:
16
+ build_wheels:
17
+ name: Build wheels on ${{ matrix.os }}
18
+ runs-on: ${{ matrix.os }}
19
+ strategy:
20
+ fail-fast: false
21
+ matrix:
22
+ os: [ubuntu-latest, windows-latest, macos-15-intel, macos-15]
23
+
24
+ steps:
25
+ - uses: actions/checkout@v4
26
+ with:
27
+ submodules: true
28
+
29
+ - name: Setup Miniconda (Windows)
30
+ if: runner.os == 'Windows'
31
+ uses: conda-incubator/setup-miniconda@v3.0.3
32
+
33
+ - name: Install Dependencies (Windows)
34
+ if: runner.os == 'Windows'
35
+ shell: powershell
36
+ run: conda install -c conda-forge mpir zlib -y
37
+
38
+ - name: Set env (Windows)
39
+ if: runner.os == 'Windows'
40
+ run: |
41
+ echo "appdata=$env:LOCALAPPDATA" >> ${env:GITHUB_ENV}
42
+ echo "GMP_INC=C:\Miniconda\envs\test\Library\include" >> ${env:GITHUB_ENV}
43
+ echo "GMP_LIB=C:\Miniconda\envs\test\Library\lib" >> ${env:GITHUB_ENV}
44
+
45
+ - name: Build wheels
46
+ uses: pypa/cibuildwheel@v3.2.0
47
+ env:
48
+ CIBW_ENVIRONMENT_MACOS: 'MACOSX_DEPLOYMENT_TARGET="15.0"'
49
+ CIBW_ARCHS_MACOS: "auto"
50
+
51
+
52
+ - name: List generated wheels
53
+ run: ls ./wheelhouse/*
54
+
55
+ - uses: actions/upload-artifact@v4
56
+ with:
57
+ path: ./wheelhouse/*.whl
58
+ name: pytetwild-wheel-${{ matrix.os }}
59
+
60
+ build_sdist:
61
+ name: Build source distribution
62
+ runs-on: ubuntu-latest
63
+ steps:
64
+ - uses: actions/checkout@v4
65
+ with:
66
+ submodules: true
67
+
68
+ - name: Install system dependencies
69
+ run: |
70
+ sudo apt-get update
71
+ sudo apt-get install \
72
+ libblas-dev \
73
+ libboost-filesystem-dev \
74
+ libboost-system-dev \
75
+ libboost-thread-dev \
76
+ libglu1-mesa-dev \
77
+ libsuitesparse-dev \
78
+ libxi-dev \
79
+ libxcursor-dev \
80
+ libxinerama-dev \
81
+ libxrandr-dev \
82
+ libx11-dev \
83
+ libxcb1-dev \
84
+ libxau-dev \
85
+ libxdmcp-dev \
86
+ xorg-dev \
87
+ ccache
88
+
89
+ - name: Build source distribution
90
+ run: |
91
+ pipx run build --sdist
92
+
93
+ - name: Validate
94
+ run: |
95
+ pip install twine
96
+ twine check dist/*
97
+
98
+ - name: Install from dist/
99
+ run: |
100
+ sdist_file=$(ls dist/*.tar.gz)
101
+ pip install "$sdist_file[dev]"
102
+
103
+ - name: Test
104
+ run: pytest -vv
105
+
106
+ - uses: actions/upload-artifact@v4
107
+ with:
108
+ path: dist/*.tar.gz
109
+ name: pytetwild-sdist
110
+
111
+ release:
112
+ name: Release
113
+ if: github.event_name == 'push' && contains(github.ref, 'refs/tags')
114
+ needs: [build_wheels, build_sdist]
115
+ runs-on: ubuntu-latest
116
+ environment:
117
+ name: pypi
118
+ url: https://pypi.org/p/pytetwild
119
+ permissions:
120
+ id-token: write # this permission is mandatory for trusted publishing
121
+ steps:
122
+ - uses: actions/download-artifact@v4
123
+ - name: Flatten directory structure
124
+ run: |
125
+ mkdir -p dist/
126
+ find . -name '*.whl' -exec mv {} dist/ \;
127
+ find . -name '*.tar.gz' -exec mv {} dist/ \;
128
+ - name: Publish package distributions to PyPI
129
+ uses: pypa/gh-action-pypi-publish@release/v1
130
+ - name: Create GitHub Release
131
+ uses: softprops/action-gh-release@v1
132
+ with:
133
+ generate_release_notes: true
134
+ files: |
135
+ ./**/*.whl
@@ -0,0 +1,78 @@
1
+ # Compiled source #
2
+ ###################
3
+ *.pyc
4
+ *.pyd
5
+ *.so
6
+ *.o
7
+ __pycache__/
8
+
9
+ # OS generated files #
10
+ ######################
11
+ .fuse_hidden*
12
+ *~
13
+
14
+ # Pip generated folders #
15
+ #########################
16
+ *.egg-info/
17
+ build/
18
+ dist/
19
+
20
+ # MISC
21
+ .mypy_cache
22
+ __tracked_surface.stl
23
+
24
+ # Mac
25
+ .DS_Store
26
+ **/.DS_Store
27
+
28
+ # emacs
29
+ *#
30
+ .#
31
+ flycheck*
32
+
33
+ # vim
34
+ *.swp
35
+
36
+ # PyCharm
37
+ .idea/
38
+
39
+ # virtual environments
40
+ venv/
41
+ .venv/
42
+
43
+ # VSCode
44
+ .vscode/
45
+
46
+ # skbuild
47
+ _skbuild/
48
+
49
+ # cmake
50
+ .ninja_deps
51
+ .ninja_log
52
+ .cmake
53
+ CMakeCache.txt
54
+ CMakeFiles/
55
+ CMakeInit.txt
56
+ CPackConfig.cmake
57
+ CPackSourceConfig.cmake
58
+ build.ninja
59
+ cmake_install.cmake
60
+ lib/
61
+ ALL_BUILD.vcxproj
62
+ ALL_BUILD.vcxproj.filters
63
+ INSTALL.vcxproj
64
+ INSTALL.vcxproj.filters
65
+ PACKAGE.vcxproj
66
+ PACKAGE.vcxproj.filters
67
+ PyfTetWildWrapper.dir/
68
+ PyfTetWildWrapper.vcxproj
69
+ PyfTetWildWrapper.vcxproj.filters
70
+ ZERO_CHECK.vcxproj
71
+ ZERO_CHECK.vcxproj.filters
72
+ fTetWildWrapper.sln
73
+ x64/
74
+ Release/
75
+ mpir.dll
76
+
77
+ # cibuildwheel
78
+ wheelhouse
@@ -0,0 +1,6 @@
1
+ [submodule "src/fTetWild"]
2
+ path = src/fTetWild
3
+ url = https://github.com/MariusCausemann/fTetWild
4
+ [submodule "src/pybind11"]
5
+ path = src/pybind11
6
+ url = https://github.com/pybind/pybind11.git
@@ -0,0 +1,66 @@
1
+ repos:
2
+ - repo: https://github.com/astral-sh/ruff-pre-commit
3
+ rev: v0.4.3
4
+ hooks:
5
+ - id: ruff
6
+ args: [--fix, --exit-non-zero-on-fix]
7
+ exclude: ^(docs|tests)
8
+ - id: ruff-format
9
+
10
+ - repo: https://github.com/keewis/blackdoc
11
+ rev: v0.3.9
12
+ hooks:
13
+ - id: blackdoc
14
+ exclude: README.rst
15
+
16
+ - repo: https://github.com/numpy/numpydoc
17
+ rev: v1.7.0
18
+ hooks:
19
+ - id: numpydoc-validation
20
+ files: ^src/pytetwild
21
+
22
+ - repo: https://github.com/codespell-project/codespell
23
+ rev: v2.2.6
24
+ hooks:
25
+ - id: codespell
26
+ args: ["--skip=*.vt*"]
27
+
28
+ - repo: https://github.com/pycqa/pydocstyle
29
+ rev: 6.3.0
30
+ hooks:
31
+ - id: pydocstyle
32
+ additional_dependencies: [tomli==2.0.1]
33
+ files: ^src/pytetwild/.*\.py
34
+
35
+ - repo: https://github.com/pre-commit/pre-commit-hooks
36
+ rev: v4.6.0
37
+ hooks:
38
+ - id: check-merge-conflict
39
+ - id: debug-statements
40
+ - id: trailing-whitespace
41
+
42
+ - repo: https://github.com/pre-commit/mirrors-clang-format
43
+ rev: v18.1.4
44
+ hooks:
45
+ - id: clang-format
46
+ files: |
47
+ (?x)^(
48
+ src/FTetWildWrapper.cpp
49
+ )$
50
+
51
+ - repo: https://github.com/pre-commit/mirrors-mypy
52
+ rev: v1.10.0
53
+ hooks:
54
+ - id: mypy
55
+ exclude: ^(docs/|tests)
56
+ additional_dependencies: [
57
+ "mypy-extensions==1.0.0",
58
+ "toml==0.10.2",
59
+ "npt_promote",
60
+ "numpy",
61
+ ]
62
+
63
+ - repo: https://github.com/python-jsonschema/check-jsonschema
64
+ rev: 0.28.2
65
+ hooks:
66
+ - id: check-github-workflows
@@ -0,0 +1,41 @@
1
+ cmake_minimum_required(VERSION 3.15...3.26)
2
+ project(fTetWildWrapper)
3
+ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ./src/pytetwild)
4
+
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()
9
+
10
+ # Set the path to the fTetWild project
11
+ set(fTetWild_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/fTetWild")
12
+
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})
17
+
18
+ # Include the fTetWild project as a subdirectory
19
+ add_subdirectory(${fTetWild_DIR} EXCLUDE_FROM_ALL)
20
+
21
+ pybind11_add_module(PyfTetWildWrapper MODULE "${CMAKE_CURRENT_SOURCE_DIR}/src/FTetWildWrapper.cpp")
22
+
23
+ # Include directories from fTetWild required for the wrapper
24
+ target_include_directories(PyfTetWildWrapper PUBLIC ${fTetWild_DIR}/src)
25
+
26
+ # Link the FloatTetwild library (from fTetWild)
27
+ target_link_libraries(PyfTetWildWrapper PRIVATE FloatTetwild)
28
+ target_compile_features(PyfTetWildWrapper PUBLIC cxx_std_11)
29
+
30
+ if(WIN32)
31
+ set_target_properties(PyfTetWildWrapper PROPERTIES SUFFIX ".pyd")
32
+ foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES})
33
+ string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG_UPPER)
34
+ set_target_properties(PyfTetWildWrapper PROPERTIES
35
+ RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG_UPPER} "${CMAKE_CURRENT_SOURCE_DIR}/src/pytetwild"
36
+ LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG_UPPER} "${CMAKE_CURRENT_SOURCE_DIR}/src/pytetwild"
37
+ )
38
+ endforeach()
39
+ endif()
40
+
41
+ install(TARGETS PyfTetWildWrapper LIBRARY DESTINATION ./pytetwild)
@@ -0,0 +1,84 @@
1
+ # Contributing to Our Project
2
+
3
+ Thank you for considering contributions to our project! Here's how you can help:
4
+
5
+ ## Setting Up for Development
6
+
7
+ We're using [scikit-build-core](https://github.com/scikit-build/scikit-build-core) for our build system and building using ``cmake``. You'll need a handful of system dependencies to build locally.
8
+
9
+
10
+ ### Linux
11
+ On Linux, install the following OS dependencies with:
12
+
13
+ ```
14
+ sudo apt-get update
15
+ sudo apt-get install libblas-dev libboost-filesystem-dev libboost-system-dev libboost-thread-dev libglu1-mesa-dev libsuitesparse-dev xorg-dev ccache -y
16
+ ```
17
+
18
+ ### Windows
19
+
20
+ For contributors using Windows, we also have a setup process to ensure you can compile and test changes locally. Here's how to set up your development environment on Windows:
21
+
22
+ 1. **Install Miniconda**: We use Miniconda to manage dependencies. Install it from [here](https://docs.anaconda.com/free/miniconda/index.html).
23
+
24
+ 2. **Setup Miniconda and Install Dependencies**:
25
+ ```
26
+ conda install -c conda-forge mpir -y
27
+ ```
28
+
29
+ 3. **Configure Environment Variables**:
30
+ Set the required environment variables for the build. This assumes PowerShell.
31
+
32
+ ```
33
+ $Env:GMP_INC = "C:\Miniconda\Library\include"
34
+ $Env:GMP_LIB = "C:\Miniconda\Library\lib"
35
+ ```
36
+
37
+ Note: You may need to adjust these paths depending on if you use a non-global conda environment.
38
+
39
+ ### Installation
40
+ To install the library in editable mode:
41
+
42
+ 1. Clone the repository:
43
+ ```
44
+ git clone https://github.com/pyvista/pytetwild
45
+ ```
46
+ 2. Initialize submodules:
47
+ ```
48
+ git submodule update --init --recursive
49
+ ```
50
+ 3. Install the project in editable mode and include development dependencies:
51
+ ```
52
+ pip install -e .[dev]
53
+ ```
54
+
55
+ **Note:** On windows, you'll need to copy the `mpir.dll` to your source directory with:
56
+ ```
57
+ python -c "import shutil, os; shutil.copy(os.path.join(os.getenv('GMP_LIB'), '..', 'bin', 'mpir.dll'), './src/pytetwild')"
58
+ ```
59
+
60
+ ## Code Style and Quality
61
+
62
+ - **Documentation**: Follow the `numpydoc` style for docstrings.
63
+ - **Linting**: We use `ruff` for code styling to ensure consistency.
64
+ - **Pre-commit**: Utilize `pre-commit` hooks to automate checks before commits. Set up your local environment with:
65
+ ```
66
+ pip install pre-commit
67
+ pre-commit install
68
+ ```
69
+ - **Testing**: Write tests for new features or bug fixes and run them using `pytest`. Tests are located in the `tests` directory.
70
+
71
+ ## How to Contribute
72
+
73
+ - **Bugs and Feature Requests**: Submit them through our [issues page](https://github.com/pyvista/pytetwild/issues).
74
+ - **Code Contributions**: Make changes in a fork of this repository and submit a pull request (PR) through our [PR page](https://github.com/pyvista/pytetwild/pulls). Follow the standard fork-and-PR workflow for contributions.
75
+
76
+ ## Community and Conduct
77
+
78
+ - We expect all contributors to follow our [Code of Conduct](https://github.com/pyvista/pyvista/blob/main/CODE_OF_CONDUCT.md) to maintain a welcoming and inclusive community.
79
+
80
+ ## License
81
+
82
+ - Contributions are subject to the project's license as found in the [LICENSE.md](./LICENSE.md) file.
83
+
84
+ We welcome your contributions and look forward to collaborating with you!