xcoll 0.4.0__py3-none-any.whl → 0.5.0__py3-none-any.whl

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.

Potentially problematic release.


This version of xcoll might be problematic. Click here for more details.

Files changed (324) hide show
  1. xcoll/__init__.py +2 -1
  2. xcoll/beam_elements/__init__.py +7 -1
  3. xcoll/beam_elements/absorber.py +2 -2
  4. xcoll/beam_elements/base.py +105 -67
  5. xcoll/beam_elements/blowup.py +198 -0
  6. xcoll/beam_elements/{collimators_src → elements_src}/black_absorber.h +21 -3
  7. xcoll/beam_elements/{collimators_src → elements_src}/black_crystal.h +20 -2
  8. xcoll/beam_elements/elements_src/blowup.h +42 -0
  9. xcoll/beam_elements/elements_src/emittance_monitor.h +109 -0
  10. xcoll/beam_elements/{collimators_src → elements_src}/everest_block.h +19 -2
  11. xcoll/beam_elements/{collimators_src → elements_src}/everest_collimator.h +19 -3
  12. xcoll/beam_elements/{collimators_src → elements_src}/everest_crystal.h +30 -9
  13. xcoll/beam_elements/everest.py +5 -6
  14. xcoll/beam_elements/monitor.py +428 -0
  15. xcoll/colldb.py +103 -74
  16. xcoll/general.py +4 -4
  17. xcoll/initial_distribution.py +18 -6
  18. xcoll/install.py +3 -1
  19. xcoll/interaction_record/interaction_record.py +126 -80
  20. xcoll/interaction_record/interaction_record_src/interaction_record.h +43 -43
  21. xcoll/line_tools.py +8 -9
  22. xcoll/lossmap.py +48 -38
  23. xcoll/scattering_routines/everest/amorphous.h +4 -11
  24. xcoll/scattering_routines/everest/channeling.h +3 -8
  25. xcoll/scattering_routines/everest/everest.h +4 -1
  26. xcoll/scattering_routines/everest/jaw.h +4 -3
  27. xcoll/scattering_routines/everest/materials.py +35 -15
  28. xcoll/scattering_routines/everest/multiple_coulomb_scattering.h +2 -2
  29. xcoll/scattering_routines/everest/nuclear_interaction.h +1 -1
  30. xcoll/scattering_routines/everest/properties.h +6 -1
  31. xcoll/scattering_routines/fluka/flukaio/lib/libFlukaIO64.a +0 -0
  32. xcoll/scattering_routines/geant4/collimasim/.git +1 -0
  33. xcoll/scattering_routines/geant4/collimasim/.gitignore +12 -0
  34. xcoll/scattering_routines/geant4/collimasim/.gitmodules +3 -0
  35. xcoll/scattering_routines/geant4/collimasim/CMakeLists.txt +26 -0
  36. xcoll/scattering_routines/geant4/collimasim/README.md +21 -0
  37. xcoll/scattering_routines/geant4/collimasim/docs/Makefile +20 -0
  38. xcoll/scattering_routines/geant4/collimasim/docs/make.bat +35 -0
  39. xcoll/scattering_routines/geant4/collimasim/docs/source/collimasim.rst +10 -0
  40. xcoll/scattering_routines/geant4/collimasim/docs/source/conf.py +59 -0
  41. xcoll/scattering_routines/geant4/collimasim/docs/source/index.rst +26 -0
  42. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.appveyor.yml +37 -0
  43. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.clang-format +19 -0
  44. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.clang-tidy +65 -0
  45. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.cmake-format.yaml +73 -0
  46. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.git +1 -0
  47. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/CODEOWNERS +9 -0
  48. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/CONTRIBUTING.md +386 -0
  49. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/ISSUE_TEMPLATE/bug-report.yml +45 -0
  50. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/ISSUE_TEMPLATE/config.yml +8 -0
  51. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/dependabot.yml +16 -0
  52. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/labeler.yml +8 -0
  53. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/labeler_merged.yml +3 -0
  54. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/pull_request_template.md +19 -0
  55. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/ci.yml +969 -0
  56. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/configure.yml +84 -0
  57. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/format.yml +48 -0
  58. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/labeler.yml +16 -0
  59. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/pip.yml +103 -0
  60. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.gitignore +45 -0
  61. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.pre-commit-config.yaml +151 -0
  62. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.readthedocs.yml +3 -0
  63. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/CMakeLists.txt +297 -0
  64. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/LICENSE +29 -0
  65. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/MANIFEST.in +6 -0
  66. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/README.rst +180 -0
  67. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/Doxyfile +23 -0
  68. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/Makefile +192 -0
  69. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/_static/theme_overrides.css +11 -0
  70. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/chrono.rst +81 -0
  71. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/custom.rst +93 -0
  72. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/eigen.rst +310 -0
  73. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/functional.rst +109 -0
  74. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/index.rst +43 -0
  75. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/overview.rst +171 -0
  76. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/stl.rst +251 -0
  77. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/strings.rst +305 -0
  78. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/classes.rst +1297 -0
  79. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/embedding.rst +262 -0
  80. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/exceptions.rst +396 -0
  81. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/functions.rst +568 -0
  82. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/misc.rst +337 -0
  83. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/index.rst +13 -0
  84. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/numpy.rst +463 -0
  85. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/object.rst +286 -0
  86. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/utilities.rst +155 -0
  87. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/smart_ptrs.rst +174 -0
  88. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/basics.rst +308 -0
  89. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/benchmark.py +91 -0
  90. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/benchmark.rst +95 -0
  91. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/changelog.rst +2050 -0
  92. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/classes.rst +542 -0
  93. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/cmake/index.rst +8 -0
  94. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/compiling.rst +648 -0
  95. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/conf.py +381 -0
  96. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/faq.rst +343 -0
  97. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/index.rst +48 -0
  98. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/installing.rst +105 -0
  99. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/limitations.rst +72 -0
  100. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11-logo.png +0 -0
  101. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python1.png +0 -0
  102. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python1.svg +427 -0
  103. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python2.png +0 -0
  104. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python2.svg +427 -0
  105. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/reference.rst +130 -0
  106. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/release.rst +96 -0
  107. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/requirements.txt +8 -0
  108. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/upgrade.rst +548 -0
  109. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/attr.h +605 -0
  110. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/buffer_info.h +144 -0
  111. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/cast.h +1432 -0
  112. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/chrono.h +213 -0
  113. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/common.h +2 -0
  114. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/complex.h +65 -0
  115. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/class.h +709 -0
  116. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/common.h +1021 -0
  117. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/descr.h +104 -0
  118. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/init.h +346 -0
  119. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/internals.h +467 -0
  120. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/type_caster_base.h +978 -0
  121. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/typeid.h +55 -0
  122. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/eigen.h +606 -0
  123. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/embed.h +284 -0
  124. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/eval.h +163 -0
  125. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/functional.h +121 -0
  126. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/gil.h +193 -0
  127. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/iostream.h +275 -0
  128. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/numpy.h +1741 -0
  129. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/operators.h +163 -0
  130. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/options.h +65 -0
  131. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/pybind11.h +2497 -0
  132. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/pytypes.h +1879 -0
  133. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl/filesystem.h +103 -0
  134. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl.h +375 -0
  135. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl_bind.h +747 -0
  136. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/noxfile.py +88 -0
  137. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/__init__.py +11 -0
  138. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/__main__.py +52 -0
  139. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/_version.py +12 -0
  140. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/_version.pyi +6 -0
  141. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/commands.py +21 -0
  142. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/py.typed +0 -0
  143. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/setup_helpers.py +482 -0
  144. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/setup_helpers.pyi +63 -0
  145. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pyproject.toml +41 -0
  146. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/setup.cfg +56 -0
  147. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/setup.py +155 -0
  148. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/CMakeLists.txt +503 -0
  149. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/conftest.py +208 -0
  150. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/constructor_stats.h +275 -0
  151. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/cross_module_gil_utils.cpp +73 -0
  152. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/env.py +33 -0
  153. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_python_package/pytest.ini +0 -0
  154. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_python_package/test_files.py +279 -0
  155. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_setuptools/pytest.ini +0 -0
  156. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_setuptools/test_setuphelper.py +143 -0
  157. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/local_bindings.h +85 -0
  158. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/object.h +179 -0
  159. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_cross_module_tests.cpp +151 -0
  160. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_tests.cpp +91 -0
  161. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_tests.h +85 -0
  162. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pytest.ini +19 -0
  163. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/requirements.txt +12 -0
  164. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_async.cpp +26 -0
  165. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_async.py +25 -0
  166. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_buffers.cpp +216 -0
  167. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_buffers.py +163 -0
  168. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_builtin_casters.cpp +286 -0
  169. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_builtin_casters.py +536 -0
  170. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_call_policies.cpp +107 -0
  171. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_call_policies.py +248 -0
  172. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_callbacks.cpp +227 -0
  173. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_callbacks.py +202 -0
  174. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_chrono.cpp +84 -0
  175. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_chrono.py +210 -0
  176. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_class.cpp +550 -0
  177. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_class.py +473 -0
  178. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/CMakeLists.txt +84 -0
  179. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/embed.cpp +21 -0
  180. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_embed/CMakeLists.txt +28 -0
  181. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_function/CMakeLists.txt +39 -0
  182. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_target/CMakeLists.txt +46 -0
  183. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/main.cpp +6 -0
  184. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_embed/CMakeLists.txt +41 -0
  185. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_function/CMakeLists.txt +35 -0
  186. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_target/CMakeLists.txt +41 -0
  187. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/test.py +10 -0
  188. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_constants_and_functions.cpp +165 -0
  189. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_constants_and_functions.py +53 -0
  190. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_copy_move.cpp +238 -0
  191. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_copy_move.py +126 -0
  192. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_casters.cpp +141 -0
  193. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_casters.py +117 -0
  194. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_setup.cpp +41 -0
  195. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_setup.py +50 -0
  196. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_docstring_options.cpp +69 -0
  197. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_docstring_options.py +42 -0
  198. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eigen.cpp +348 -0
  199. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eigen.py +771 -0
  200. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/CMakeLists.txt +47 -0
  201. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/catch.cpp +22 -0
  202. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/external_module.cpp +23 -0
  203. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/test_interpreter.cpp +326 -0
  204. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/test_interpreter.py +15 -0
  205. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_enum.cpp +148 -0
  206. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_enum.py +272 -0
  207. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval.cpp +119 -0
  208. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval.py +51 -0
  209. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval_call.py +5 -0
  210. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.cpp +285 -0
  211. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.h +12 -0
  212. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.py +265 -0
  213. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_factory_constructors.cpp +397 -0
  214. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_factory_constructors.py +520 -0
  215. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_gil_scoped.cpp +49 -0
  216. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_gil_scoped.py +94 -0
  217. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_iostream.cpp +125 -0
  218. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_iostream.py +331 -0
  219. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_kwargs_and_defaults.cpp +153 -0
  220. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_kwargs_and_defaults.py +284 -0
  221. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_local_bindings.cpp +107 -0
  222. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_local_bindings.py +257 -0
  223. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_methods_and_attributes.cpp +412 -0
  224. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_methods_and_attributes.py +517 -0
  225. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_modules.cpp +102 -0
  226. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_modules.py +92 -0
  227. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_multiple_inheritance.cpp +233 -0
  228. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_multiple_inheritance.py +360 -0
  229. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_array.cpp +472 -0
  230. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_array.py +593 -0
  231. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_dtypes.cpp +524 -0
  232. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_dtypes.py +441 -0
  233. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_vectorize.cpp +103 -0
  234. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_vectorize.py +267 -0
  235. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_opaque_types.cpp +73 -0
  236. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_opaque_types.py +59 -0
  237. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_operator_overloading.cpp +235 -0
  238. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_operator_overloading.py +146 -0
  239. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pickling.cpp +189 -0
  240. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pickling.py +82 -0
  241. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pytypes.cpp +560 -0
  242. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pytypes.py +651 -0
  243. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_sequences_and_iterators.cpp +500 -0
  244. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_sequences_and_iterators.py +253 -0
  245. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_smart_ptr.cpp +452 -0
  246. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_smart_ptr.py +318 -0
  247. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl.cpp +342 -0
  248. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl.py +291 -0
  249. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl_binders.cpp +131 -0
  250. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl_binders.py +318 -0
  251. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_tagbased_polymorphic.cpp +144 -0
  252. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_tagbased_polymorphic.py +29 -0
  253. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_thread.cpp +66 -0
  254. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_thread.py +44 -0
  255. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_union.cpp +22 -0
  256. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_union.py +9 -0
  257. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_virtual_functions.cpp +510 -0
  258. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_virtual_functions.py +408 -0
  259. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/valgrind-numpy-scipy.supp +140 -0
  260. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/valgrind-python.supp +117 -0
  261. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindCatch.cmake +70 -0
  262. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindEigen3.cmake +86 -0
  263. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindPythonLibsNew.cmake +257 -0
  264. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/check-style.sh +44 -0
  265. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/cmake_uninstall.cmake.in +23 -0
  266. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/libsize.py +39 -0
  267. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/make_changelog.py +64 -0
  268. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Common.cmake +402 -0
  269. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Config.cmake.in +233 -0
  270. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11NewTools.cmake +276 -0
  271. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Tools.cmake +214 -0
  272. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pyproject.toml +3 -0
  273. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/setup_global.py.in +65 -0
  274. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/setup_main.py.in +41 -0
  275. xcoll/scattering_routines/geant4/collimasim/pyproject.toml +8 -0
  276. xcoll/scattering_routines/geant4/collimasim/setup.py +144 -0
  277. xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSPyATInterface.cpp +403 -0
  278. xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSPyATInterface.hh +100 -0
  279. xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSXtrackInterface.cpp +763 -0
  280. xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSXtrackInterface.hh +118 -0
  281. xcoll/scattering_routines/geant4/collimasim/src/collimasim/__init__.py +8 -0
  282. xcoll/scattering_routines/geant4/collimasim/src/collimasim/bindings.cpp +63 -0
  283. xcoll/scattering_routines/geant4/collimasim/src/collimasim/pyCollimatorPass.py +142 -0
  284. xcoll/scattering_routines/geant4/collimasim/src/collimasim/xtrack_collimator.py +556 -0
  285. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/PKG-INFO +6 -0
  286. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/SOURCES.txt +24 -0
  287. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/dependency_links.txt +1 -0
  288. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/not-zip-safe +1 -0
  289. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/top_level.txt +1 -0
  290. xcoll/scattering_routines/geant4/collimasim/tests/README.md +25 -0
  291. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_forions.dat +25 -0
  292. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_new_example.dat +18 -0
  293. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_old_example.dat +68 -0
  294. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_testing.dat +15 -0
  295. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_yaml_example.yaml +110 -0
  296. xcoll/scattering_routines/geant4/collimasim/tests/resources/collgaps.dat +7 -0
  297. xcoll/scattering_routines/geant4/collimasim/tests/resources/collgaps_pyat_test.dat +3 -0
  298. xcoll/scattering_routines/geant4/collimasim/tests/resources/collonly_twiss_file_example.tfs +54 -0
  299. xcoll/scattering_routines/geant4/collimasim/tests/resources/settings.gmad +3 -0
  300. xcoll/scattering_routines/geant4/collimasim/tests/resources/settings_black_absorber.gmad +3 -0
  301. xcoll/scattering_routines/geant4/collimasim/tests/resources/settings_ions.gmad +5 -0
  302. xcoll/scattering_routines/geant4/collimasim/tests/resources/twiss_file_testing.tfs +51 -0
  303. xcoll/scattering_routines/geant4/collimasim/tests/test_pyat.py +65 -0
  304. xcoll/scattering_routines/geant4/collimasim/tests/test_pyat_passmethod.py +59 -0
  305. xcoll/scattering_routines/geant4/collimasim/tests/test_pyat_tracking.py +102 -0
  306. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack.py +75 -0
  307. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_angle.py +74 -0
  308. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_colldb_load.py +84 -0
  309. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_interaction.py +159 -0
  310. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_interaction_ion.py +99 -0
  311. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_ions.py +78 -0
  312. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_lost_energy.py +88 -0
  313. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tilt.py +80 -0
  314. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tracking.py +97 -0
  315. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tracking_ions.py +96 -0
  316. xcoll/scattering_routines/geometry/collimator_geometry.h +9 -10
  317. xcoll/scattering_routines/geometry/crystal_geometry.h +9 -6
  318. {xcoll-0.4.0.dist-info → xcoll-0.5.0.dist-info}/METADATA +1 -1
  319. xcoll-0.5.0.dist-info/RECORD +413 -0
  320. xcoll/scattering_routines/fluka/build_fluka_input.py +0 -58
  321. xcoll-0.4.0.dist-info/RECORD +0 -126
  322. {xcoll-0.4.0.dist-info → xcoll-0.5.0.dist-info}/LICENSE +0 -0
  323. {xcoll-0.4.0.dist-info → xcoll-0.5.0.dist-info}/NOTICE +0 -0
  324. {xcoll-0.4.0.dist-info → xcoll-0.5.0.dist-info}/WHEEL +0 -0
@@ -0,0 +1,276 @@
1
+ # tools/pybind11NewTools.cmake -- Build system for the pybind11 modules
2
+ #
3
+ # Copyright (c) 2020 Wenzel Jakob <wenzel@inf.ethz.ch> and Henry Schreiner
4
+ #
5
+ # All rights reserved. Use of this source code is governed by a
6
+ # BSD-style license that can be found in the LICENSE file.
7
+
8
+ get_property(
9
+ is_config
10
+ TARGET pybind11::headers
11
+ PROPERTY IMPORTED)
12
+
13
+ if(pybind11_FIND_QUIETLY)
14
+ set(_pybind11_quiet QUIET)
15
+ else()
16
+ set(_pybind11_quiet "")
17
+ endif()
18
+
19
+ if(CMAKE_VERSION VERSION_LESS 3.12)
20
+ message(FATAL_ERROR "You cannot use the new FindPython module with CMake < 3.12")
21
+ endif()
22
+
23
+ if(NOT Python_FOUND
24
+ AND NOT Python3_FOUND
25
+ AND NOT Python2_FOUND)
26
+ if(NOT DEFINED Python_FIND_IMPLEMENTATIONS)
27
+ set(Python_FIND_IMPLEMENTATIONS CPython PyPy)
28
+ endif()
29
+
30
+ # GitHub Actions like activation
31
+ if(NOT DEFINED Python_ROOT_DIR AND DEFINED ENV{pythonLocation})
32
+ set(Python_ROOT_DIR "$ENV{pythonLocation}")
33
+ endif()
34
+
35
+ find_package(Python REQUIRED COMPONENTS Interpreter Development ${_pybind11_quiet})
36
+
37
+ # If we are in submodule mode, export the Python targets to global targets.
38
+ # If this behavior is not desired, FindPython _before_ pybind11.
39
+ if(NOT is_config)
40
+ set_property(TARGET Python::Python PROPERTY IMPORTED_GLOBAL TRUE)
41
+ set_property(TARGET Python::Interpreter PROPERTY IMPORTED_GLOBAL TRUE)
42
+ if(TARGET Python::Module)
43
+ set_property(TARGET Python::Module PROPERTY IMPORTED_GLOBAL TRUE)
44
+ endif()
45
+ endif()
46
+ endif()
47
+
48
+ if(Python_FOUND)
49
+ set(_Python
50
+ Python
51
+ CACHE INTERNAL "" FORCE)
52
+ elseif(Python3_FOUND AND NOT Python2_FOUND)
53
+ set(_Python
54
+ Python3
55
+ CACHE INTERNAL "" FORCE)
56
+ elseif(Python2_FOUND AND NOT Python3_FOUND)
57
+ set(_Python
58
+ Python2
59
+ CACHE INTERNAL "" FORCE)
60
+ else()
61
+ message(AUTHOR_WARNING "Python2 and Python3 both present, pybind11 in "
62
+ "PYBIND11_NOPYTHON mode (manually activate to silence warning)")
63
+ set(_pybind11_nopython ON)
64
+ return()
65
+ endif()
66
+
67
+ if(PYBIND11_MASTER_PROJECT)
68
+ if(${_Python}_INTERPRETER_ID MATCHES "PyPy")
69
+ message(STATUS "PyPy ${${_Python}_PyPy_VERSION} (Py ${${_Python}_VERSION})")
70
+ else()
71
+ message(STATUS "${_Python} ${${_Python}_VERSION}")
72
+ endif()
73
+ endif()
74
+
75
+ # If a user finds Python, they may forget to include the Interpreter component
76
+ # and the following two steps require it. It is highly recommended by CMake
77
+ # when finding development libraries anyway, so we will require it.
78
+ if(NOT DEFINED ${_Python}_EXECUTABLE)
79
+ message(
80
+ FATAL_ERROR
81
+ "${_Python} was found without the Interpreter component. Pybind11 requires this component.")
82
+
83
+ endif()
84
+
85
+ if(NOT ${_Python}_EXECUTABLE STREQUAL PYBIND11_PYTHON_EXECUTABLE_LAST)
86
+ # Detect changes to the Python version/binary in subsequent CMake runs, and refresh config if needed
87
+ unset(PYTHON_IS_DEBUG CACHE)
88
+ unset(PYTHON_MODULE_EXTENSION CACHE)
89
+ set(PYBIND11_PYTHON_EXECUTABLE_LAST
90
+ "${${_Python}_EXECUTABLE}"
91
+ CACHE INTERNAL "Python executable during the last CMake run")
92
+ endif()
93
+
94
+ if(NOT DEFINED PYTHON_IS_DEBUG)
95
+ # Debug check - see https://stackoverflow.com/questions/646518/python-how-to-detect-debug-Interpreter
96
+ execute_process(
97
+ COMMAND "${${_Python}_EXECUTABLE}" "-c"
98
+ "import sys; sys.exit(hasattr(sys, 'gettotalrefcount'))"
99
+ RESULT_VARIABLE _PYTHON_IS_DEBUG)
100
+ set(PYTHON_IS_DEBUG
101
+ "${_PYTHON_IS_DEBUG}"
102
+ CACHE INTERNAL "Python debug status")
103
+ endif()
104
+
105
+ # Get the suffix - SO is deprecated, should use EXT_SUFFIX, but this is
106
+ # required for PyPy3 (as of 7.3.1)
107
+ if(NOT DEFINED PYTHON_MODULE_EXTENSION)
108
+ execute_process(
109
+ COMMAND
110
+ "${${_Python}_EXECUTABLE}" "-c"
111
+ "from distutils import sysconfig as s;print(s.get_config_var('EXT_SUFFIX') or s.get_config_var('SO'))"
112
+ OUTPUT_VARIABLE _PYTHON_MODULE_EXTENSION
113
+ ERROR_VARIABLE _PYTHON_MODULE_EXTENSION_ERR
114
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
115
+
116
+ if(_PYTHON_MODULE_EXTENSION STREQUAL "")
117
+ message(
118
+ FATAL_ERROR "pybind11 could not query the module file extension, likely the 'distutils'"
119
+ "package is not installed. Full error message:\n${_PYTHON_MODULE_EXTENSION_ERR}")
120
+ endif()
121
+
122
+ # This needs to be available for the pybind11_extension function
123
+ set(PYTHON_MODULE_EXTENSION
124
+ "${_PYTHON_MODULE_EXTENSION}"
125
+ CACHE INTERNAL "")
126
+ endif()
127
+
128
+ # Python debug libraries expose slightly different objects before 3.8
129
+ # https://docs.python.org/3.6/c-api/intro.html#debugging-builds
130
+ # https://stackoverflow.com/questions/39161202/how-to-work-around-missing-pymodule-create2-in-amd64-win-python35-d-lib
131
+ if(PYTHON_IS_DEBUG)
132
+ set_property(
133
+ TARGET pybind11::pybind11
134
+ APPEND
135
+ PROPERTY INTERFACE_COMPILE_DEFINITIONS Py_DEBUG)
136
+ endif()
137
+
138
+ # Check on every access - since Python2 and Python3 could have been used - do nothing in that case.
139
+
140
+ if(DEFINED ${_Python}_INCLUDE_DIRS)
141
+ # Only add Python for build - must be added during the import for config
142
+ # since it has to be re-discovered.
143
+ #
144
+ # This needs to be a target to be included after the local pybind11
145
+ # directory, just in case there there is an installed pybind11 sitting
146
+ # next to Python's includes. It also ensures Python is a SYSTEM library.
147
+ add_library(pybind11::python_headers INTERFACE IMPORTED)
148
+ set_property(
149
+ TARGET pybind11::python_headers PROPERTY INTERFACE_INCLUDE_DIRECTORIES
150
+ "$<BUILD_INTERFACE:${${_Python}_INCLUDE_DIRS}>")
151
+ set_property(
152
+ TARGET pybind11::pybind11
153
+ APPEND
154
+ PROPERTY INTERFACE_LINK_LIBRARIES pybind11::python_headers)
155
+ set(pybind11_INCLUDE_DIRS
156
+ "${pybind11_INCLUDE_DIR}" "${${_Python}_INCLUDE_DIRS}"
157
+ CACHE INTERNAL "Directories where pybind11 and possibly Python headers are located")
158
+ endif()
159
+
160
+ if(DEFINED ${_Python}_VERSION AND ${_Python}_VERSION VERSION_LESS 3)
161
+ set_property(
162
+ TARGET pybind11::pybind11
163
+ APPEND
164
+ PROPERTY INTERFACE_LINK_LIBRARIES pybind11::python2_no_register)
165
+ endif()
166
+
167
+ # In CMake 3.18+, you can find these separately, so include an if
168
+ if(TARGET ${_Python}::Python)
169
+ set_property(
170
+ TARGET pybind11::embed
171
+ APPEND
172
+ PROPERTY INTERFACE_LINK_LIBRARIES ${_Python}::Python)
173
+ endif()
174
+
175
+ # CMake 3.15+ has this
176
+ if(TARGET ${_Python}::Module)
177
+ set_property(
178
+ TARGET pybind11::module
179
+ APPEND
180
+ PROPERTY INTERFACE_LINK_LIBRARIES ${_Python}::Module)
181
+ else()
182
+ set_property(
183
+ TARGET pybind11::module
184
+ APPEND
185
+ PROPERTY INTERFACE_LINK_LIBRARIES pybind11::python_link_helper)
186
+ endif()
187
+
188
+ # WITHOUT_SOABI and WITH_SOABI will disable the custom extension handling used by pybind11.
189
+ # WITH_SOABI is passed on to python_add_library.
190
+ function(pybind11_add_module target_name)
191
+ cmake_parse_arguments(PARSE_ARGV 1 ARG
192
+ "STATIC;SHARED;MODULE;THIN_LTO;OPT_SIZE;NO_EXTRAS;WITHOUT_SOABI" "" "")
193
+
194
+ if(ARG_STATIC)
195
+ set(lib_type STATIC)
196
+ elseif(ARG_SHARED)
197
+ set(lib_type SHARED)
198
+ else()
199
+ set(lib_type MODULE)
200
+ endif()
201
+
202
+ if("${_Python}" STREQUAL "Python")
203
+ python_add_library(${target_name} ${lib_type} ${ARG_UNPARSED_ARGUMENTS})
204
+ elseif("${_Python}" STREQUAL "Python3")
205
+ python3_add_library(${target_name} ${lib_type} ${ARG_UNPARSED_ARGUMENTS})
206
+ elseif("${_Python}" STREQUAL "Python2")
207
+ python2_add_library(${target_name} ${lib_type} ${ARG_UNPARSED_ARGUMENTS})
208
+ else()
209
+ message(FATAL_ERROR "Cannot detect FindPython version: ${_Python}")
210
+ endif()
211
+
212
+ target_link_libraries(${target_name} PRIVATE pybind11::headers)
213
+
214
+ if(lib_type STREQUAL "MODULE")
215
+ target_link_libraries(${target_name} PRIVATE pybind11::module)
216
+ else()
217
+ target_link_libraries(${target_name} PRIVATE pybind11::embed)
218
+ endif()
219
+
220
+ if(MSVC)
221
+ target_link_libraries(${target_name} PRIVATE pybind11::windows_extras)
222
+ endif()
223
+
224
+ if(DEFINED ${_Python}_VERSION AND ${_Python}_VERSION VERSION_LESS 3)
225
+ target_link_libraries(${target_name} PRIVATE pybind11::python2_no_register)
226
+ endif()
227
+
228
+ # -fvisibility=hidden is required to allow multiple modules compiled against
229
+ # different pybind versions to work properly, and for some features (e.g.
230
+ # py::module_local). We force it on everything inside the `pybind11`
231
+ # namespace; also turning it on for a pybind module compilation here avoids
232
+ # potential warnings or issues from having mixed hidden/non-hidden types.
233
+ if(NOT DEFINED CMAKE_CXX_VISIBILITY_PRESET)
234
+ set_target_properties(${target_name} PROPERTIES CXX_VISIBILITY_PRESET "hidden")
235
+ endif()
236
+
237
+ if(NOT DEFINED CMAKE_CUDA_VISIBILITY_PRESET)
238
+ set_target_properties(${target_name} PROPERTIES CUDA_VISIBILITY_PRESET "hidden")
239
+ endif()
240
+
241
+ # If we don't pass a WITH_SOABI or WITHOUT_SOABI, use our own default handling of extensions
242
+ if(NOT ARG_WITHOUT_SOABI AND NOT "WITH_SOABI" IN_LIST ARG_UNPARSED_ARGUMENTS)
243
+ pybind11_extension(${target_name})
244
+ endif()
245
+
246
+ if(ARG_NO_EXTRAS)
247
+ return()
248
+ endif()
249
+
250
+ if(NOT DEFINED CMAKE_INTERPROCEDURAL_OPTIMIZATION)
251
+ if(ARG_THIN_LTO)
252
+ target_link_libraries(${target_name} PRIVATE pybind11::thin_lto)
253
+ else()
254
+ target_link_libraries(${target_name} PRIVATE pybind11::lto)
255
+ endif()
256
+ endif()
257
+
258
+ if(NOT MSVC AND NOT ${CMAKE_BUILD_TYPE} MATCHES Debug|RelWithDebInfo)
259
+ # Strip unnecessary sections of the binary on Linux/macOS
260
+ pybind11_strip(${target_name})
261
+ endif()
262
+
263
+ if(MSVC)
264
+ target_link_libraries(${target_name} PRIVATE pybind11::windows_extras)
265
+ endif()
266
+
267
+ if(ARG_OPT_SIZE)
268
+ target_link_libraries(${target_name} PRIVATE pybind11::opt_size)
269
+ endif()
270
+ endfunction()
271
+
272
+ function(pybind11_extension name)
273
+ # The extension is precomputed
274
+ set_target_properties(${name} PROPERTIES PREFIX "" SUFFIX "${PYTHON_MODULE_EXTENSION}")
275
+
276
+ endfunction()
@@ -0,0 +1,214 @@
1
+ # tools/pybind11Tools.cmake -- Build system for the pybind11 modules
2
+ #
3
+ # Copyright (c) 2020 Wenzel Jakob <wenzel.jakob@epfl.ch>
4
+ #
5
+ # All rights reserved. Use of this source code is governed by a
6
+ # BSD-style license that can be found in the LICENSE file.
7
+
8
+ # Built-in in CMake 3.5+
9
+ include(CMakeParseArguments)
10
+
11
+ if(pybind11_FIND_QUIETLY)
12
+ set(_pybind11_quiet QUIET)
13
+ else()
14
+ set(_pybind11_quiet "")
15
+ endif()
16
+
17
+ # If this is the first run, PYTHON_VERSION can stand in for PYBIND11_PYTHON_VERSION
18
+ if(NOT DEFINED PYBIND11_PYTHON_VERSION AND DEFINED PYTHON_VERSION)
19
+ message(WARNING "Set PYBIND11_PYTHON_VERSION to search for a specific version, not "
20
+ "PYTHON_VERSION (which is an output). Assuming that is what you "
21
+ "meant to do and continuing anyway.")
22
+ set(PYBIND11_PYTHON_VERSION
23
+ "${PYTHON_VERSION}"
24
+ CACHE STRING "Python version to use for compiling modules")
25
+ unset(PYTHON_VERSION)
26
+ unset(PYTHON_VERSION CACHE)
27
+ elseif(DEFINED PYBIND11_PYTHON_VERSION)
28
+ # If this is set as a normal variable, promote it
29
+ set(PYBIND11_PYTHON_VERSION
30
+ "${PYBIND11_PYTHON_VERSION}"
31
+ CACHE STRING "Python version to use for compiling modules")
32
+ else()
33
+ # Make an empty cache variable.
34
+ set(PYBIND11_PYTHON_VERSION
35
+ ""
36
+ CACHE STRING "Python version to use for compiling modules")
37
+ endif()
38
+
39
+ # A user can set versions manually too
40
+ set(Python_ADDITIONAL_VERSIONS
41
+ "3.10;3.9;3.8;3.7;3.6;3.5;3.4"
42
+ CACHE INTERNAL "")
43
+
44
+ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")
45
+ find_package(PythonLibsNew ${PYBIND11_PYTHON_VERSION} MODULE REQUIRED ${_pybind11_quiet})
46
+ list(REMOVE_AT CMAKE_MODULE_PATH -1)
47
+
48
+ # Makes a normal variable a cached variable
49
+ macro(_PYBIND11_PROMOTE_TO_CACHE NAME)
50
+ set(_tmp_ptc "${${NAME}}")
51
+ # CMake 3.21 complains if a cached variable is shadowed by a normal one
52
+ unset(${NAME})
53
+ set(${NAME}
54
+ "${_tmp_ptc}"
55
+ CACHE INTERNAL "")
56
+ endmacro()
57
+
58
+ # Cache variables so pybind11_add_module can be used in parent projects
59
+ _pybind11_promote_to_cache(PYTHON_INCLUDE_DIRS)
60
+ _pybind11_promote_to_cache(PYTHON_LIBRARIES)
61
+ _pybind11_promote_to_cache(PYTHON_MODULE_PREFIX)
62
+ _pybind11_promote_to_cache(PYTHON_MODULE_EXTENSION)
63
+ _pybind11_promote_to_cache(PYTHON_VERSION_MAJOR)
64
+ _pybind11_promote_to_cache(PYTHON_VERSION_MINOR)
65
+ _pybind11_promote_to_cache(PYTHON_VERSION)
66
+ _pybind11_promote_to_cache(PYTHON_IS_DEBUG)
67
+
68
+ if(PYBIND11_MASTER_PROJECT)
69
+ if(PYTHON_MODULE_EXTENSION MATCHES "pypy")
70
+ if(NOT DEFINED PYPY_VERSION)
71
+ execute_process(
72
+ COMMAND ${PYTHON_EXECUTABLE} -c
73
+ [=[import sys; sys.stdout.write(".".join(map(str, sys.pypy_version_info[:3])))]=]
74
+ OUTPUT_VARIABLE pypy_version)
75
+ set(PYPY_VERSION
76
+ ${pypy_version}
77
+ CACHE INTERNAL "")
78
+ endif()
79
+ message(STATUS "PYPY ${PYPY_VERSION} (Py ${PYTHON_VERSION})")
80
+ else()
81
+ message(STATUS "PYTHON ${PYTHON_VERSION}")
82
+ endif()
83
+ endif()
84
+
85
+ # Only add Python for build - must be added during the import for config since
86
+ # it has to be re-discovered.
87
+ #
88
+ # This needs to be an target to it is included after the local pybind11
89
+ # directory, just in case there are multiple versions of pybind11, we want the
90
+ # one we expect.
91
+ add_library(pybind11::python_headers INTERFACE IMPORTED)
92
+ set_property(TARGET pybind11::python_headers PROPERTY INTERFACE_INCLUDE_DIRECTORIES
93
+ "$<BUILD_INTERFACE:${PYTHON_INCLUDE_DIRS}>")
94
+ set_property(
95
+ TARGET pybind11::pybind11
96
+ APPEND
97
+ PROPERTY INTERFACE_LINK_LIBRARIES pybind11::python_headers)
98
+
99
+ set(pybind11_INCLUDE_DIRS
100
+ "${pybind11_INCLUDE_DIR}" "${PYTHON_INCLUDE_DIRS}"
101
+ CACHE INTERNAL "Directories where pybind11 and possibly Python headers are located")
102
+
103
+ # Python debug libraries expose slightly different objects before 3.8
104
+ # https://docs.python.org/3.6/c-api/intro.html#debugging-builds
105
+ # https://stackoverflow.com/questions/39161202/how-to-work-around-missing-pymodule-create2-in-amd64-win-python35-d-lib
106
+ if(PYTHON_IS_DEBUG)
107
+ set_property(
108
+ TARGET pybind11::pybind11
109
+ APPEND
110
+ PROPERTY INTERFACE_COMPILE_DEFINITIONS Py_DEBUG)
111
+ endif()
112
+
113
+ set_property(
114
+ TARGET pybind11::module
115
+ APPEND
116
+ PROPERTY
117
+ INTERFACE_LINK_LIBRARIES pybind11::python_link_helper
118
+ "$<$<OR:$<PLATFORM_ID:Windows>,$<PLATFORM_ID:Cygwin>>:$<BUILD_INTERFACE:${PYTHON_LIBRARIES}>>")
119
+
120
+ if(PYTHON_VERSION VERSION_LESS 3)
121
+ set_property(
122
+ TARGET pybind11::pybind11
123
+ APPEND
124
+ PROPERTY INTERFACE_LINK_LIBRARIES pybind11::python2_no_register)
125
+ endif()
126
+
127
+ set_property(
128
+ TARGET pybind11::embed
129
+ APPEND
130
+ PROPERTY INTERFACE_LINK_LIBRARIES pybind11::pybind11 $<BUILD_INTERFACE:${PYTHON_LIBRARIES}>)
131
+
132
+ function(pybind11_extension name)
133
+ # The prefix and extension are provided by FindPythonLibsNew.cmake
134
+ set_target_properties(${name} PROPERTIES PREFIX "${PYTHON_MODULE_PREFIX}"
135
+ SUFFIX "${PYTHON_MODULE_EXTENSION}")
136
+ endfunction()
137
+
138
+ # Build a Python extension module:
139
+ # pybind11_add_module(<name> [MODULE | SHARED] [EXCLUDE_FROM_ALL]
140
+ # [NO_EXTRAS] [THIN_LTO] [OPT_SIZE] source1 [source2 ...])
141
+ #
142
+ function(pybind11_add_module target_name)
143
+ set(options "MODULE;SHARED;EXCLUDE_FROM_ALL;NO_EXTRAS;SYSTEM;THIN_LTO;OPT_SIZE")
144
+ cmake_parse_arguments(ARG "${options}" "" "" ${ARGN})
145
+
146
+ if(ARG_MODULE AND ARG_SHARED)
147
+ message(FATAL_ERROR "Can't be both MODULE and SHARED")
148
+ elseif(ARG_SHARED)
149
+ set(lib_type SHARED)
150
+ else()
151
+ set(lib_type MODULE)
152
+ endif()
153
+
154
+ if(ARG_EXCLUDE_FROM_ALL)
155
+ set(exclude_from_all EXCLUDE_FROM_ALL)
156
+ else()
157
+ set(exclude_from_all "")
158
+ endif()
159
+
160
+ add_library(${target_name} ${lib_type} ${exclude_from_all} ${ARG_UNPARSED_ARGUMENTS})
161
+
162
+ target_link_libraries(${target_name} PRIVATE pybind11::module)
163
+
164
+ if(ARG_SYSTEM)
165
+ message(
166
+ STATUS
167
+ "Warning: this does not have an effect - use NO_SYSTEM_FROM_IMPORTED if using imported targets"
168
+ )
169
+ endif()
170
+
171
+ pybind11_extension(${target_name})
172
+
173
+ # -fvisibility=hidden is required to allow multiple modules compiled against
174
+ # different pybind versions to work properly, and for some features (e.g.
175
+ # py::module_local). We force it on everything inside the `pybind11`
176
+ # namespace; also turning it on for a pybind module compilation here avoids
177
+ # potential warnings or issues from having mixed hidden/non-hidden types.
178
+ if(NOT DEFINED CMAKE_CXX_VISIBILITY_PRESET)
179
+ set_target_properties(${target_name} PROPERTIES CXX_VISIBILITY_PRESET "hidden")
180
+ endif()
181
+
182
+ if(NOT DEFINED CMAKE_CUDA_VISIBILITY_PRESET)
183
+ set_target_properties(${target_name} PROPERTIES CUDA_VISIBILITY_PRESET "hidden")
184
+ endif()
185
+
186
+ if(ARG_NO_EXTRAS)
187
+ return()
188
+ endif()
189
+
190
+ if(NOT DEFINED CMAKE_INTERPROCEDURAL_OPTIMIZATION)
191
+ if(ARG_THIN_LTO)
192
+ target_link_libraries(${target_name} PRIVATE pybind11::thin_lto)
193
+ else()
194
+ target_link_libraries(${target_name} PRIVATE pybind11::lto)
195
+ endif()
196
+ endif()
197
+
198
+ if(NOT MSVC AND NOT ${CMAKE_BUILD_TYPE} MATCHES Debug|RelWithDebInfo)
199
+ pybind11_strip(${target_name})
200
+ endif()
201
+
202
+ if(MSVC)
203
+ target_link_libraries(${target_name} PRIVATE pybind11::windows_extras)
204
+ endif()
205
+
206
+ if(ARG_OPT_SIZE)
207
+ target_link_libraries(${target_name} PRIVATE pybind11::opt_size)
208
+ endif()
209
+ endfunction()
210
+
211
+ # Provide general way to call common Python commands in "common" file.
212
+ set(_Python
213
+ PYTHON
214
+ CACHE INTERNAL "" FORCE)
@@ -0,0 +1,3 @@
1
+ [build-system]
2
+ requires = ["setuptools>=42", "wheel"]
3
+ build-backend = "setuptools.build_meta"
@@ -0,0 +1,65 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+
4
+ # Setup script for pybind11-global (in the sdist or in tools/setup_global.py in the repository)
5
+ # This package is targeted for easy use from CMake.
6
+
7
+ import contextlib
8
+ import glob
9
+ import os
10
+ import re
11
+ import shutil
12
+ import subprocess
13
+ import sys
14
+ import tempfile
15
+
16
+ # Setuptools has to be before distutils
17
+ from setuptools import setup
18
+
19
+ from distutils.command.install_headers import install_headers
20
+
21
+ class InstallHeadersNested(install_headers):
22
+ def run(self):
23
+ headers = self.distribution.headers or []
24
+ for header in headers:
25
+ # Remove pybind11/include/
26
+ short_header = header.split("/", 2)[-1]
27
+
28
+ dst = os.path.join(self.install_dir, os.path.dirname(short_header))
29
+ self.mkpath(dst)
30
+ (out, _) = self.copy_file(header, dst)
31
+ self.outfiles.append(out)
32
+
33
+
34
+ main_headers = glob.glob("pybind11/include/pybind11/*.h")
35
+ detail_headers = glob.glob("pybind11/include/pybind11/detail/*.h")
36
+ stl_headers = glob.glob("pybind11/include/pybind11/stl/*.h")
37
+ cmake_files = glob.glob("pybind11/share/cmake/pybind11/*.cmake")
38
+ headers = main_headers + detail_headers + stl_headers
39
+
40
+ cmdclass = {"install_headers": InstallHeadersNested}
41
+ $extra_cmd
42
+
43
+ # This will _not_ affect installing from wheels,
44
+ # only building wheels or installing from SDist.
45
+ # Primarily intended on Windows, where this is sometimes
46
+ # customized (for example, conda-forge uses Library/)
47
+ base = os.environ.get("PYBIND11_GLOBAL_PREFIX", "")
48
+
49
+ # Must have a separator
50
+ if base and not base.endswith("/"):
51
+ base += "/"
52
+
53
+ setup(
54
+ name="pybind11_global",
55
+ version="$version",
56
+ packages=[],
57
+ headers=headers,
58
+ data_files=[
59
+ (base + "share/cmake/pybind11", cmake_files),
60
+ (base + "include/pybind11", main_headers),
61
+ (base + "include/pybind11/detail", detail_headers),
62
+ (base + "include/pybind11/stl", stl_headers),
63
+ ],
64
+ cmdclass=cmdclass,
65
+ )
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+
4
+ # Setup script (in the sdist or in tools/setup_main.py in the repository)
5
+
6
+ from setuptools import setup
7
+
8
+ cmdclass = {}
9
+ $extra_cmd
10
+
11
+ setup(
12
+ name="pybind11",
13
+ version="$version",
14
+ download_url='https://github.com/pybind/pybind11/tarball/v$version',
15
+ packages=[
16
+ "pybind11",
17
+ "pybind11.include.pybind11",
18
+ "pybind11.include.pybind11.detail",
19
+ "pybind11.include.pybind11.stl",
20
+ "pybind11.share.cmake.pybind11",
21
+ ],
22
+ package_data={
23
+ "pybind11": ["py.typed", "*.pyi"],
24
+ "pybind11.include.pybind11": ["*.h"],
25
+ "pybind11.include.pybind11.detail": ["*.h"],
26
+ "pybind11.include.pybind11.stl": ["*.h"],
27
+ "pybind11.share.cmake.pybind11": ["*.cmake"],
28
+ },
29
+ extras_require={
30
+ "global": ["pybind11_global==$version"]
31
+ },
32
+ entry_points={
33
+ "console_scripts": [
34
+ "pybind11-config = pybind11.__main__:main",
35
+ ],
36
+ "pipx.run": [
37
+ "pybind11 = pybind11.__main__:main",
38
+ ]
39
+ },
40
+ cmdclass=cmdclass
41
+ )
@@ -0,0 +1,8 @@
1
+ [build-system]
2
+ requires = [
3
+ "setuptools>=42",
4
+ "wheel",
5
+ "ninja; sys_platform != 'win32' and platform_machine != 'arm64'",
6
+ "cmake>=3.17",
7
+ ]
8
+ build-backend = "setuptools.build_meta"