xcoll 0.3.6__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 (350) hide show
  1. xcoll/__init__.py +13 -4
  2. xcoll/beam_elements/__init__.py +14 -6
  3. xcoll/beam_elements/absorber.py +41 -7
  4. xcoll/beam_elements/base.py +1202 -247
  5. xcoll/beam_elements/blowup.py +198 -0
  6. xcoll/beam_elements/elements_src/black_absorber.h +136 -0
  7. xcoll/beam_elements/elements_src/black_crystal.h +129 -0
  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 +59 -30
  11. xcoll/beam_elements/elements_src/everest_collimator.h +237 -0
  12. xcoll/beam_elements/elements_src/everest_crystal.h +280 -0
  13. xcoll/beam_elements/everest.py +65 -119
  14. xcoll/beam_elements/monitor.py +428 -0
  15. xcoll/colldb.py +276 -747
  16. xcoll/general.py +5 -5
  17. xcoll/headers/checks.h +1 -1
  18. xcoll/headers/particle_states.h +2 -2
  19. xcoll/initial_distribution.py +207 -0
  20. xcoll/install.py +179 -0
  21. xcoll/interaction_record/__init__.py +1 -0
  22. xcoll/interaction_record/interaction_record.py +298 -0
  23. xcoll/interaction_record/interaction_record_src/interaction_record.h +98 -0
  24. xcoll/{impacts → interaction_record}/interaction_types.py +11 -4
  25. xcoll/line_tools.py +82 -0
  26. xcoll/lossmap.py +219 -0
  27. xcoll/manager.py +2 -937
  28. xcoll/rf_sweep.py +1 -1
  29. xcoll/scattering_routines/everest/amorphous.h +232 -0
  30. xcoll/scattering_routines/everest/channeling.h +240 -0
  31. xcoll/scattering_routines/everest/crystal_parameters.h +137 -0
  32. xcoll/scattering_routines/everest/everest.h +11 -30
  33. xcoll/scattering_routines/everest/everest.py +13 -10
  34. xcoll/scattering_routines/everest/jaw.h +28 -197
  35. xcoll/scattering_routines/everest/materials.py +37 -15
  36. xcoll/scattering_routines/everest/multiple_coulomb_scattering.h +31 -10
  37. xcoll/scattering_routines/everest/nuclear_interaction.h +86 -0
  38. xcoll/scattering_routines/everest/properties.h +6 -1
  39. xcoll/scattering_routines/fluka/flukaio/lib/libFlukaIO64.a +0 -0
  40. xcoll/scattering_routines/geant4/collimasim/.git +1 -0
  41. xcoll/scattering_routines/geant4/collimasim/.gitignore +12 -0
  42. xcoll/scattering_routines/geant4/collimasim/.gitmodules +3 -0
  43. xcoll/scattering_routines/geant4/collimasim/CMakeLists.txt +26 -0
  44. xcoll/scattering_routines/geant4/collimasim/README.md +21 -0
  45. xcoll/scattering_routines/geant4/collimasim/docs/Makefile +20 -0
  46. xcoll/scattering_routines/geant4/collimasim/docs/make.bat +35 -0
  47. xcoll/scattering_routines/geant4/collimasim/docs/source/collimasim.rst +10 -0
  48. xcoll/scattering_routines/geant4/collimasim/docs/source/conf.py +59 -0
  49. xcoll/scattering_routines/geant4/collimasim/docs/source/index.rst +26 -0
  50. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.appveyor.yml +37 -0
  51. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.clang-format +19 -0
  52. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.clang-tidy +65 -0
  53. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.cmake-format.yaml +73 -0
  54. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.git +1 -0
  55. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/CODEOWNERS +9 -0
  56. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/CONTRIBUTING.md +386 -0
  57. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/ISSUE_TEMPLATE/bug-report.yml +45 -0
  58. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/ISSUE_TEMPLATE/config.yml +8 -0
  59. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/dependabot.yml +16 -0
  60. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/labeler.yml +8 -0
  61. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/labeler_merged.yml +3 -0
  62. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/pull_request_template.md +19 -0
  63. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/ci.yml +969 -0
  64. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/configure.yml +84 -0
  65. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/format.yml +48 -0
  66. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/labeler.yml +16 -0
  67. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/pip.yml +103 -0
  68. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.gitignore +45 -0
  69. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.pre-commit-config.yaml +151 -0
  70. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.readthedocs.yml +3 -0
  71. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/CMakeLists.txt +297 -0
  72. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/LICENSE +29 -0
  73. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/MANIFEST.in +6 -0
  74. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/README.rst +180 -0
  75. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/Doxyfile +23 -0
  76. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/Makefile +192 -0
  77. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/_static/theme_overrides.css +11 -0
  78. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/chrono.rst +81 -0
  79. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/custom.rst +93 -0
  80. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/eigen.rst +310 -0
  81. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/functional.rst +109 -0
  82. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/index.rst +43 -0
  83. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/overview.rst +171 -0
  84. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/stl.rst +251 -0
  85. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/strings.rst +305 -0
  86. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/classes.rst +1297 -0
  87. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/embedding.rst +262 -0
  88. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/exceptions.rst +396 -0
  89. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/functions.rst +568 -0
  90. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/misc.rst +337 -0
  91. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/index.rst +13 -0
  92. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/numpy.rst +463 -0
  93. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/object.rst +286 -0
  94. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/utilities.rst +155 -0
  95. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/smart_ptrs.rst +174 -0
  96. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/basics.rst +308 -0
  97. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/benchmark.py +91 -0
  98. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/benchmark.rst +95 -0
  99. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/changelog.rst +2050 -0
  100. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/classes.rst +542 -0
  101. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/cmake/index.rst +8 -0
  102. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/compiling.rst +648 -0
  103. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/conf.py +381 -0
  104. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/faq.rst +343 -0
  105. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/index.rst +48 -0
  106. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/installing.rst +105 -0
  107. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/limitations.rst +72 -0
  108. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11-logo.png +0 -0
  109. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python1.png +0 -0
  110. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python1.svg +427 -0
  111. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python2.png +0 -0
  112. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python2.svg +427 -0
  113. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/reference.rst +130 -0
  114. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/release.rst +96 -0
  115. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/requirements.txt +8 -0
  116. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/upgrade.rst +548 -0
  117. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/attr.h +605 -0
  118. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/buffer_info.h +144 -0
  119. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/cast.h +1432 -0
  120. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/chrono.h +213 -0
  121. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/common.h +2 -0
  122. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/complex.h +65 -0
  123. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/class.h +709 -0
  124. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/common.h +1021 -0
  125. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/descr.h +104 -0
  126. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/init.h +346 -0
  127. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/internals.h +467 -0
  128. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/type_caster_base.h +978 -0
  129. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/typeid.h +55 -0
  130. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/eigen.h +606 -0
  131. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/embed.h +284 -0
  132. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/eval.h +163 -0
  133. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/functional.h +121 -0
  134. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/gil.h +193 -0
  135. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/iostream.h +275 -0
  136. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/numpy.h +1741 -0
  137. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/operators.h +163 -0
  138. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/options.h +65 -0
  139. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/pybind11.h +2497 -0
  140. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/pytypes.h +1879 -0
  141. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl/filesystem.h +103 -0
  142. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl.h +375 -0
  143. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl_bind.h +747 -0
  144. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/noxfile.py +88 -0
  145. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/__init__.py +11 -0
  146. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/__main__.py +52 -0
  147. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/_version.py +12 -0
  148. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/_version.pyi +6 -0
  149. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/commands.py +21 -0
  150. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/py.typed +0 -0
  151. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/setup_helpers.py +482 -0
  152. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/setup_helpers.pyi +63 -0
  153. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pyproject.toml +41 -0
  154. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/setup.cfg +56 -0
  155. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/setup.py +155 -0
  156. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/CMakeLists.txt +503 -0
  157. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/conftest.py +208 -0
  158. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/constructor_stats.h +275 -0
  159. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/cross_module_gil_utils.cpp +73 -0
  160. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/env.py +33 -0
  161. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_python_package/pytest.ini +0 -0
  162. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_python_package/test_files.py +279 -0
  163. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_setuptools/pytest.ini +0 -0
  164. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_setuptools/test_setuphelper.py +143 -0
  165. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/local_bindings.h +85 -0
  166. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/object.h +179 -0
  167. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_cross_module_tests.cpp +151 -0
  168. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_tests.cpp +91 -0
  169. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_tests.h +85 -0
  170. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pytest.ini +19 -0
  171. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/requirements.txt +12 -0
  172. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_async.cpp +26 -0
  173. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_async.py +25 -0
  174. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_buffers.cpp +216 -0
  175. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_buffers.py +163 -0
  176. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_builtin_casters.cpp +286 -0
  177. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_builtin_casters.py +536 -0
  178. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_call_policies.cpp +107 -0
  179. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_call_policies.py +248 -0
  180. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_callbacks.cpp +227 -0
  181. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_callbacks.py +202 -0
  182. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_chrono.cpp +84 -0
  183. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_chrono.py +210 -0
  184. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_class.cpp +550 -0
  185. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_class.py +473 -0
  186. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/CMakeLists.txt +84 -0
  187. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/embed.cpp +21 -0
  188. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_embed/CMakeLists.txt +28 -0
  189. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_function/CMakeLists.txt +39 -0
  190. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_target/CMakeLists.txt +46 -0
  191. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/main.cpp +6 -0
  192. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_embed/CMakeLists.txt +41 -0
  193. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_function/CMakeLists.txt +35 -0
  194. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_target/CMakeLists.txt +41 -0
  195. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/test.py +10 -0
  196. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_constants_and_functions.cpp +165 -0
  197. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_constants_and_functions.py +53 -0
  198. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_copy_move.cpp +238 -0
  199. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_copy_move.py +126 -0
  200. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_casters.cpp +141 -0
  201. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_casters.py +117 -0
  202. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_setup.cpp +41 -0
  203. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_setup.py +50 -0
  204. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_docstring_options.cpp +69 -0
  205. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_docstring_options.py +42 -0
  206. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eigen.cpp +348 -0
  207. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eigen.py +771 -0
  208. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/CMakeLists.txt +47 -0
  209. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/catch.cpp +22 -0
  210. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/external_module.cpp +23 -0
  211. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/test_interpreter.cpp +326 -0
  212. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/test_interpreter.py +15 -0
  213. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_enum.cpp +148 -0
  214. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_enum.py +272 -0
  215. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval.cpp +119 -0
  216. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval.py +51 -0
  217. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval_call.py +5 -0
  218. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.cpp +285 -0
  219. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.h +12 -0
  220. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.py +265 -0
  221. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_factory_constructors.cpp +397 -0
  222. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_factory_constructors.py +520 -0
  223. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_gil_scoped.cpp +49 -0
  224. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_gil_scoped.py +94 -0
  225. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_iostream.cpp +125 -0
  226. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_iostream.py +331 -0
  227. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_kwargs_and_defaults.cpp +153 -0
  228. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_kwargs_and_defaults.py +284 -0
  229. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_local_bindings.cpp +107 -0
  230. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_local_bindings.py +257 -0
  231. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_methods_and_attributes.cpp +412 -0
  232. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_methods_and_attributes.py +517 -0
  233. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_modules.cpp +102 -0
  234. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_modules.py +92 -0
  235. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_multiple_inheritance.cpp +233 -0
  236. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_multiple_inheritance.py +360 -0
  237. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_array.cpp +472 -0
  238. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_array.py +593 -0
  239. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_dtypes.cpp +524 -0
  240. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_dtypes.py +441 -0
  241. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_vectorize.cpp +103 -0
  242. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_vectorize.py +267 -0
  243. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_opaque_types.cpp +73 -0
  244. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_opaque_types.py +59 -0
  245. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_operator_overloading.cpp +235 -0
  246. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_operator_overloading.py +146 -0
  247. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pickling.cpp +189 -0
  248. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pickling.py +82 -0
  249. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pytypes.cpp +560 -0
  250. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pytypes.py +651 -0
  251. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_sequences_and_iterators.cpp +500 -0
  252. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_sequences_and_iterators.py +253 -0
  253. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_smart_ptr.cpp +452 -0
  254. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_smart_ptr.py +318 -0
  255. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl.cpp +342 -0
  256. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl.py +291 -0
  257. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl_binders.cpp +131 -0
  258. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl_binders.py +318 -0
  259. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_tagbased_polymorphic.cpp +144 -0
  260. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_tagbased_polymorphic.py +29 -0
  261. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_thread.cpp +66 -0
  262. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_thread.py +44 -0
  263. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_union.cpp +22 -0
  264. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_union.py +9 -0
  265. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_virtual_functions.cpp +510 -0
  266. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_virtual_functions.py +408 -0
  267. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/valgrind-numpy-scipy.supp +140 -0
  268. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/valgrind-python.supp +117 -0
  269. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindCatch.cmake +70 -0
  270. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindEigen3.cmake +86 -0
  271. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindPythonLibsNew.cmake +257 -0
  272. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/check-style.sh +44 -0
  273. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/cmake_uninstall.cmake.in +23 -0
  274. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/libsize.py +39 -0
  275. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/make_changelog.py +64 -0
  276. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Common.cmake +402 -0
  277. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Config.cmake.in +233 -0
  278. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11NewTools.cmake +276 -0
  279. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Tools.cmake +214 -0
  280. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pyproject.toml +3 -0
  281. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/setup_global.py.in +65 -0
  282. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/setup_main.py.in +41 -0
  283. xcoll/scattering_routines/geant4/collimasim/pyproject.toml +8 -0
  284. xcoll/scattering_routines/geant4/collimasim/setup.py +144 -0
  285. xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSPyATInterface.cpp +403 -0
  286. xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSPyATInterface.hh +100 -0
  287. xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSXtrackInterface.cpp +763 -0
  288. xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSXtrackInterface.hh +118 -0
  289. xcoll/scattering_routines/geant4/collimasim/src/collimasim/__init__.py +8 -0
  290. xcoll/scattering_routines/geant4/collimasim/src/collimasim/bindings.cpp +63 -0
  291. xcoll/scattering_routines/geant4/collimasim/src/collimasim/pyCollimatorPass.py +142 -0
  292. xcoll/scattering_routines/geant4/collimasim/src/collimasim/xtrack_collimator.py +556 -0
  293. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/PKG-INFO +6 -0
  294. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/SOURCES.txt +24 -0
  295. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/dependency_links.txt +1 -0
  296. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/not-zip-safe +1 -0
  297. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/top_level.txt +1 -0
  298. xcoll/scattering_routines/geant4/collimasim/tests/README.md +25 -0
  299. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_forions.dat +25 -0
  300. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_new_example.dat +18 -0
  301. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_old_example.dat +68 -0
  302. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_testing.dat +15 -0
  303. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_yaml_example.yaml +110 -0
  304. xcoll/scattering_routines/geant4/collimasim/tests/resources/collgaps.dat +7 -0
  305. xcoll/scattering_routines/geant4/collimasim/tests/resources/collgaps_pyat_test.dat +3 -0
  306. xcoll/scattering_routines/geant4/collimasim/tests/resources/collonly_twiss_file_example.tfs +54 -0
  307. xcoll/scattering_routines/geant4/collimasim/tests/resources/settings.gmad +3 -0
  308. xcoll/scattering_routines/geant4/collimasim/tests/resources/settings_black_absorber.gmad +3 -0
  309. xcoll/scattering_routines/geant4/collimasim/tests/resources/settings_ions.gmad +5 -0
  310. xcoll/scattering_routines/geant4/collimasim/tests/resources/twiss_file_testing.tfs +51 -0
  311. xcoll/scattering_routines/geant4/collimasim/tests/test_pyat.py +65 -0
  312. xcoll/scattering_routines/geant4/collimasim/tests/test_pyat_passmethod.py +59 -0
  313. xcoll/scattering_routines/geant4/collimasim/tests/test_pyat_tracking.py +102 -0
  314. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack.py +75 -0
  315. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_angle.py +74 -0
  316. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_colldb_load.py +84 -0
  317. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_interaction.py +159 -0
  318. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_interaction_ion.py +99 -0
  319. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_ions.py +78 -0
  320. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_lost_energy.py +88 -0
  321. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tilt.py +80 -0
  322. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tracking.py +97 -0
  323. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tracking_ions.py +96 -0
  324. xcoll/scattering_routines/geometry/__init__.py +6 -0
  325. xcoll/scattering_routines/geometry/collimator_geometry.h +218 -0
  326. xcoll/scattering_routines/geometry/crystal_geometry.h +153 -0
  327. xcoll/scattering_routines/geometry/geometry.py +26 -0
  328. xcoll/scattering_routines/geometry/get_s.h +92 -0
  329. xcoll/scattering_routines/geometry/methods.h +111 -0
  330. xcoll/scattering_routines/geometry/objects.h +154 -0
  331. xcoll/scattering_routines/geometry/rotation.h +23 -0
  332. xcoll/scattering_routines/geometry/segments.h +226 -0
  333. xcoll/scattering_routines/geometry/sort.h +184 -0
  334. {xcoll-0.3.6.dist-info → xcoll-0.5.0.dist-info}/METADATA +1 -1
  335. xcoll-0.5.0.dist-info/RECORD +413 -0
  336. xcoll/beam_elements/collimators_src/absorber.h +0 -141
  337. xcoll/beam_elements/collimators_src/everest_collimator.h +0 -142
  338. xcoll/beam_elements/collimators_src/everest_crystal.h +0 -115
  339. xcoll/collimator_settings.py +0 -457
  340. xcoll/impacts/__init__.py +0 -1
  341. xcoll/impacts/impacts.py +0 -102
  342. xcoll/impacts/impacts_src/impacts.h +0 -99
  343. xcoll/scattering_routines/everest/crystal.h +0 -1302
  344. xcoll/scattering_routines/everest/scatter.h +0 -169
  345. xcoll/scattering_routines/everest/scatter_crystal.h +0 -260
  346. xcoll/scattering_routines/fluka/build_fluka_input.py +0 -58
  347. xcoll-0.3.6.dist-info/RECORD +0 -111
  348. {xcoll-0.3.6.dist-info → xcoll-0.5.0.dist-info}/LICENSE +0 -0
  349. {xcoll-0.3.6.dist-info → xcoll-0.5.0.dist-info}/NOTICE +0 -0
  350. {xcoll-0.3.6.dist-info → xcoll-0.5.0.dist-info}/WHEEL +0 -0
@@ -0,0 +1,402 @@
1
+ #[======================================================[.rst
2
+
3
+ Adds the following targets::
4
+
5
+ pybind11::pybind11 - link to headers and pybind11
6
+ pybind11::module - Adds module links
7
+ pybind11::embed - Adds embed links
8
+ pybind11::lto - Link time optimizations (manual selection)
9
+ pybind11::thin_lto - Link time optimizations (manual selection)
10
+ pybind11::python_link_helper - Adds link to Python libraries
11
+ pybind11::python2_no_register - Avoid warning/error with Python 2 + C++14/7
12
+ pybind11::windows_extras - MSVC bigobj and mp for building multithreaded
13
+ pybind11::opt_size - avoid optimizations that increase code size
14
+
15
+ Adds the following functions::
16
+
17
+ pybind11_strip(target) - strip target after building on linux/macOS
18
+ pybind11_find_import(module) - See if a module is installed.
19
+
20
+ #]======================================================]
21
+
22
+ # CMake 3.10 has an include_guard command, but we can't use that yet
23
+ if(TARGET pybind11::lto)
24
+ return()
25
+ endif()
26
+
27
+ # If we are in subdirectory mode, all IMPORTED targets must be GLOBAL. If we
28
+ # are in CONFIG mode, they should be "normal" targets instead.
29
+ # In CMake 3.11+ you can promote a target to global after you create it,
30
+ # which might be simpler than this check.
31
+ get_property(
32
+ is_config
33
+ TARGET pybind11::headers
34
+ PROPERTY IMPORTED)
35
+ if(NOT is_config)
36
+ set(optional_global GLOBAL)
37
+ endif()
38
+
39
+ # If not run in Python mode, we still would like this to at least
40
+ # include pybind11's include directory:
41
+ set(pybind11_INCLUDE_DIRS
42
+ "${pybind11_INCLUDE_DIR}"
43
+ CACHE INTERNAL "Include directory for pybind11 (Python not requested)")
44
+
45
+ # --------------------- Shared targets ----------------------------
46
+
47
+ # Build an interface library target:
48
+ add_library(pybind11::pybind11 IMPORTED INTERFACE ${optional_global})
49
+ set_property(
50
+ TARGET pybind11::pybind11
51
+ APPEND
52
+ PROPERTY INTERFACE_LINK_LIBRARIES pybind11::headers)
53
+
54
+ # Build a module target:
55
+ add_library(pybind11::module IMPORTED INTERFACE ${optional_global})
56
+ set_property(
57
+ TARGET pybind11::module
58
+ APPEND
59
+ PROPERTY INTERFACE_LINK_LIBRARIES pybind11::pybind11)
60
+
61
+ # Build an embed library target:
62
+ add_library(pybind11::embed IMPORTED INTERFACE ${optional_global})
63
+ set_property(
64
+ TARGET pybind11::embed
65
+ APPEND
66
+ PROPERTY INTERFACE_LINK_LIBRARIES pybind11::pybind11)
67
+
68
+ # ----------------------- no register ----------------------
69
+
70
+ # Workaround for Python 2.7 and C++17 (C++14 as a warning) incompatibility
71
+ # This adds the flags -Wno-register and -Wno-deprecated-register if the compiler
72
+ # is Clang 3.9+ or AppleClang and the compile language is CXX, or /wd5033 for MSVC (all languages,
73
+ # since MSVC didn't recognize COMPILE_LANGUAGE until CMake 3.11+).
74
+
75
+ add_library(pybind11::python2_no_register INTERFACE IMPORTED ${optional_global})
76
+ set(clang_4plus
77
+ "$<AND:$<CXX_COMPILER_ID:Clang>,$<NOT:$<VERSION_LESS:$<CXX_COMPILER_VERSION>,3.9>>>")
78
+ set(no_register "$<OR:${clang_4plus},$<CXX_COMPILER_ID:AppleClang>>")
79
+
80
+ if(MSVC AND CMAKE_VERSION VERSION_LESS 3.11)
81
+ set(cxx_no_register "${no_register}")
82
+ else()
83
+ set(cxx_no_register "$<AND:$<COMPILE_LANGUAGE:CXX>,${no_register}>")
84
+ endif()
85
+
86
+ set(msvc "$<CXX_COMPILER_ID:MSVC>")
87
+
88
+ set_property(
89
+ TARGET pybind11::python2_no_register
90
+ PROPERTY INTERFACE_COMPILE_OPTIONS
91
+ "$<${cxx_no_register}:-Wno-register;-Wno-deprecated-register>" "$<${msvc}:/wd5033>")
92
+
93
+ # --------------------------- link helper ---------------------------
94
+
95
+ add_library(pybind11::python_link_helper IMPORTED INTERFACE ${optional_global})
96
+
97
+ if(CMAKE_VERSION VERSION_LESS 3.13)
98
+ # In CMake 3.11+, you can set INTERFACE properties via the normal methods, and
99
+ # this would be simpler.
100
+ set_property(
101
+ TARGET pybind11::python_link_helper
102
+ APPEND
103
+ PROPERTY INTERFACE_LINK_LIBRARIES "$<$<PLATFORM_ID:Darwin>:-undefined dynamic_lookup>")
104
+ else()
105
+ # link_options was added in 3.13+
106
+ # This is safer, because you are ensured the deduplication pass in CMake will not consider
107
+ # these separate and remove one but not the other.
108
+ set_property(
109
+ TARGET pybind11::python_link_helper
110
+ APPEND
111
+ PROPERTY INTERFACE_LINK_OPTIONS "$<$<PLATFORM_ID:Darwin>:LINKER:-undefined,dynamic_lookup>")
112
+ endif()
113
+
114
+ # ------------------------ Windows extras -------------------------
115
+
116
+ add_library(pybind11::windows_extras IMPORTED INTERFACE ${optional_global})
117
+
118
+ if(MSVC) # That's also clang-cl
119
+ # /bigobj is needed for bigger binding projects due to the limit to 64k
120
+ # addressable sections
121
+ set_property(
122
+ TARGET pybind11::windows_extras
123
+ APPEND
124
+ PROPERTY INTERFACE_COMPILE_OPTIONS /bigobj)
125
+
126
+ # /MP enables multithreaded builds (relevant when there are many files) for MSVC
127
+ if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") # no Clang no Intel
128
+ if(CMAKE_VERSION VERSION_LESS 3.11)
129
+ set_property(
130
+ TARGET pybind11::windows_extras
131
+ APPEND
132
+ PROPERTY INTERFACE_COMPILE_OPTIONS $<$<NOT:$<CONFIG:Debug>>:/MP>)
133
+ else()
134
+ # Only set these options for C++ files. This is important so that, for
135
+ # instance, projects that include other types of source files like CUDA
136
+ # .cu files don't get these options propagated to nvcc since that would
137
+ # cause the build to fail.
138
+ set_property(
139
+ TARGET pybind11::windows_extras
140
+ APPEND
141
+ PROPERTY INTERFACE_COMPILE_OPTIONS
142
+ $<$<NOT:$<CONFIG:Debug>>:$<$<COMPILE_LANGUAGE:CXX>:/MP>>)
143
+ endif()
144
+ endif()
145
+ endif()
146
+
147
+ # ----------------------- Optimize binary size --------------------------
148
+
149
+ add_library(pybind11::opt_size IMPORTED INTERFACE ${optional_global})
150
+
151
+ if(MSVC)
152
+ set(PYBIND11_OPT_SIZE /Os)
153
+ else()
154
+ set(PYBIND11_OPT_SIZE -Os)
155
+ endif()
156
+
157
+ set_property(
158
+ TARGET pybind11::opt_size
159
+ APPEND
160
+ PROPERTY INTERFACE_COMPILE_OPTIONS $<$<CONFIG:Release>:${PYBIND11_OPT_SIZE}>
161
+ $<$<CONFIG:MinSizeRel>:${PYBIND11_OPT_SIZE}>
162
+ $<$<CONFIG:RelWithDebInfo>:${PYBIND11_OPT_SIZE}>)
163
+
164
+ # ----------------------- Legacy option --------------------------
165
+
166
+ # Warn or error if old variable name used
167
+ if(PYBIND11_CPP_STANDARD)
168
+ string(REGEX MATCH [[..$]] VAL "${PYBIND11_CPP_STANDARD}")
169
+ if(CMAKE_CXX_STANDARD)
170
+ if(NOT CMAKE_CXX_STANDARD STREQUAL VAL)
171
+ message(WARNING "CMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD} does not match "
172
+ "PYBIND11_CPP_STANDARD=${PYBIND11_CPP_STANDARD}, "
173
+ "please remove PYBIND11_CPP_STANDARD from your cache")
174
+ endif()
175
+ else()
176
+ set(supported_standards 11 14 17 20)
177
+ if("${VAL}" IN_LIST supported_standards)
178
+ message(WARNING "USE -DCMAKE_CXX_STANDARD=${VAL} instead of PYBIND11_CPP_STANDARD")
179
+ set(CMAKE_CXX_STANDARD
180
+ ${VAL}
181
+ CACHE STRING "From PYBIND11_CPP_STANDARD")
182
+ else()
183
+ message(FATAL_ERROR "PYBIND11_CPP_STANDARD should be replaced with CMAKE_CXX_STANDARD "
184
+ "(last two chars: ${VAL} not understood as a valid CXX std)")
185
+ endif()
186
+ endif()
187
+ endif()
188
+
189
+ # --------------------- Python specifics -------------------------
190
+
191
+ # Check to see which Python mode we are in, new, old, or no python
192
+ if(PYBIND11_NOPYTHON)
193
+ set(_pybind11_nopython ON)
194
+ elseif(
195
+ PYBIND11_FINDPYTHON
196
+ OR Python_FOUND
197
+ OR Python2_FOUND
198
+ OR Python3_FOUND)
199
+ # New mode
200
+ include("${CMAKE_CURRENT_LIST_DIR}/pybind11NewTools.cmake")
201
+
202
+ else()
203
+
204
+ # Classic mode
205
+ include("${CMAKE_CURRENT_LIST_DIR}/pybind11Tools.cmake")
206
+
207
+ endif()
208
+
209
+ # --------------------- pybind11_find_import -------------------------------
210
+
211
+ if(NOT _pybind11_nopython)
212
+ # Check to see if modules are importable. Use REQUIRED to force an error if
213
+ # one of the modules is not found. <package_name>_FOUND will be set if the
214
+ # package was found (underscores replace dashes if present). QUIET will hide
215
+ # the found message, and VERSION will require a minimum version. A successful
216
+ # find will cache the result.
217
+ function(pybind11_find_import PYPI_NAME)
218
+ # CMake variables need underscores (PyPI doesn't care)
219
+ string(REPLACE "-" "_" NORM_PYPI_NAME "${PYPI_NAME}")
220
+
221
+ # Return if found previously
222
+ if(${NORM_PYPI_NAME}_FOUND)
223
+ return()
224
+ endif()
225
+
226
+ set(options "REQUIRED;QUIET")
227
+ set(oneValueArgs "VERSION")
228
+ cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "" ${ARGN})
229
+
230
+ if(ARG_REQUIRED)
231
+ set(status_level FATAL_ERROR)
232
+ else()
233
+ set(status_level WARNING)
234
+ endif()
235
+
236
+ execute_process(
237
+ COMMAND
238
+ ${${_Python}_EXECUTABLE} -c
239
+ "from pkg_resources import get_distribution; print(get_distribution('${PYPI_NAME}').version)"
240
+ RESULT_VARIABLE RESULT_PRESENT
241
+ OUTPUT_VARIABLE PKG_VERSION
242
+ ERROR_QUIET)
243
+
244
+ string(STRIP "${PKG_VERSION}" PKG_VERSION)
245
+
246
+ # If a result is present, this failed
247
+ if(RESULT_PRESENT)
248
+ set(${NORM_PYPI_NAME}_FOUND
249
+ ${NORM_PYPI_NAME}-NOTFOUND
250
+ CACHE INTERNAL "")
251
+ # Always warn or error
252
+ message(
253
+ ${status_level}
254
+ "Missing: ${PYPI_NAME} ${ARG_VERSION}\nTry: ${${_Python}_EXECUTABLE} -m pip install ${PYPI_NAME}"
255
+ )
256
+ else()
257
+ if(ARG_VERSION AND PKG_VERSION VERSION_LESS ARG_VERSION)
258
+ message(
259
+ ${status_level}
260
+ "Version incorrect: ${PYPI_NAME} ${PKG_VERSION} found, ${ARG_VERSION} required - try upgrading"
261
+ )
262
+ else()
263
+ set(${NORM_PYPI_NAME}_FOUND
264
+ YES
265
+ CACHE INTERNAL "")
266
+ set(${NORM_PYPI_NAME}_VERSION
267
+ ${PKG_VERSION}
268
+ CACHE INTERNAL "")
269
+ endif()
270
+ if(NOT ARG_QUIET)
271
+ message(STATUS "Found ${PYPI_NAME} ${PKG_VERSION}")
272
+ endif()
273
+ endif()
274
+ if(NOT ARG_VERSION OR (NOT PKG_VERSION VERSION_LESS ARG_VERSION))
275
+ # We have successfully found a good version, cache to avoid calling again.
276
+ endif()
277
+ endfunction()
278
+ endif()
279
+
280
+ # --------------------- LTO -------------------------------
281
+
282
+ include(CheckCXXCompilerFlag)
283
+
284
+ # Checks whether the given CXX/linker flags can compile and link a cxx file.
285
+ # cxxflags and linkerflags are lists of flags to use. The result variable is a
286
+ # unique variable name for each set of flags: the compilation result will be
287
+ # cached base on the result variable. If the flags work, sets them in
288
+ # cxxflags_out/linkerflags_out internal cache variables (in addition to
289
+ # ${result}).
290
+ function(_pybind11_return_if_cxx_and_linker_flags_work result cxxflags linkerflags cxxflags_out
291
+ linkerflags_out)
292
+ set(CMAKE_REQUIRED_LIBRARIES ${linkerflags})
293
+ check_cxx_compiler_flag("${cxxflags}" ${result})
294
+ if(${result})
295
+ set(${cxxflags_out}
296
+ "${cxxflags}"
297
+ PARENT_SCOPE)
298
+ set(${linkerflags_out}
299
+ "${linkerflags}"
300
+ PARENT_SCOPE)
301
+ endif()
302
+ endfunction()
303
+
304
+ function(_pybind11_generate_lto target prefer_thin_lto)
305
+ if(MINGW)
306
+ message(STATUS "${target} disabled (problems with undefined symbols for MinGW for now)")
307
+ return()
308
+ endif()
309
+
310
+ if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
311
+ set(cxx_append "")
312
+ set(linker_append "")
313
+ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND NOT APPLE)
314
+ # Clang Gold plugin does not support -Os; append -O3 to MinSizeRel builds to override it
315
+ set(linker_append ";$<$<CONFIG:MinSizeRel>:-O3>")
316
+ elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND NOT MINGW)
317
+ set(cxx_append ";-fno-fat-lto-objects")
318
+ endif()
319
+
320
+ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND prefer_thin_lto)
321
+ _pybind11_return_if_cxx_and_linker_flags_work(
322
+ HAS_FLTO_THIN "-flto=thin${cxx_append}" "-flto=thin${linker_append}"
323
+ PYBIND11_LTO_CXX_FLAGS PYBIND11_LTO_LINKER_FLAGS)
324
+ endif()
325
+
326
+ if(NOT HAS_FLTO_THIN)
327
+ _pybind11_return_if_cxx_and_linker_flags_work(
328
+ HAS_FLTO "-flto${cxx_append}" "-flto${linker_append}" PYBIND11_LTO_CXX_FLAGS
329
+ PYBIND11_LTO_LINKER_FLAGS)
330
+ endif()
331
+ elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel")
332
+ # Intel equivalent to LTO is called IPO
333
+ _pybind11_return_if_cxx_and_linker_flags_work(HAS_INTEL_IPO "-ipo" "-ipo"
334
+ PYBIND11_LTO_CXX_FLAGS PYBIND11_LTO_LINKER_FLAGS)
335
+ elseif(MSVC)
336
+ # cmake only interprets libraries as linker flags when they start with a - (otherwise it
337
+ # converts /LTCG to \LTCG as if it was a Windows path). Luckily MSVC supports passing flags
338
+ # with - instead of /, even if it is a bit non-standard:
339
+ _pybind11_return_if_cxx_and_linker_flags_work(HAS_MSVC_GL_LTCG "/GL" "-LTCG"
340
+ PYBIND11_LTO_CXX_FLAGS PYBIND11_LTO_LINKER_FLAGS)
341
+ endif()
342
+
343
+ # Enable LTO flags if found, except for Debug builds
344
+ if(PYBIND11_LTO_CXX_FLAGS)
345
+ # CONFIG takes multiple values in CMake 3.19+, until then we have to use OR
346
+ set(is_debug "$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>")
347
+ set(not_debug "$<NOT:${is_debug}>")
348
+ set(cxx_lang "$<COMPILE_LANGUAGE:CXX>")
349
+ if(MSVC AND CMAKE_VERSION VERSION_LESS 3.11)
350
+ set(genex "${not_debug}")
351
+ else()
352
+ set(genex "$<AND:${not_debug},${cxx_lang}>")
353
+ endif()
354
+ set_property(
355
+ TARGET ${target}
356
+ APPEND
357
+ PROPERTY INTERFACE_COMPILE_OPTIONS "$<${genex}:${PYBIND11_LTO_CXX_FLAGS}>")
358
+ if(CMAKE_PROJECT_NAME STREQUAL "pybind11")
359
+ message(STATUS "${target} enabled")
360
+ endif()
361
+ else()
362
+ if(CMAKE_PROJECT_NAME STREQUAL "pybind11")
363
+ message(STATUS "${target} disabled (not supported by the compiler and/or linker)")
364
+ endif()
365
+ endif()
366
+
367
+ if(PYBIND11_LTO_LINKER_FLAGS)
368
+ if(CMAKE_VERSION VERSION_LESS 3.11)
369
+ set_property(
370
+ TARGET ${target}
371
+ APPEND
372
+ PROPERTY INTERFACE_LINK_LIBRARIES "$<${not_debug}:${PYBIND11_LTO_LINKER_FLAGS}>")
373
+ else()
374
+ set_property(
375
+ TARGET ${target}
376
+ APPEND
377
+ PROPERTY INTERFACE_LINK_OPTIONS "$<${not_debug}:${PYBIND11_LTO_LINKER_FLAGS}>")
378
+ endif()
379
+ endif()
380
+ endfunction()
381
+
382
+ add_library(pybind11::lto IMPORTED INTERFACE ${optional_global})
383
+ _pybind11_generate_lto(pybind11::lto FALSE)
384
+
385
+ add_library(pybind11::thin_lto IMPORTED INTERFACE ${optional_global})
386
+ _pybind11_generate_lto(pybind11::thin_lto TRUE)
387
+
388
+ # ---------------------- pybind11_strip -----------------------------
389
+
390
+ function(pybind11_strip target_name)
391
+ # Strip unnecessary sections of the binary on Linux/macOS
392
+ if(CMAKE_STRIP)
393
+ if(APPLE)
394
+ set(x_opt -x)
395
+ endif()
396
+
397
+ add_custom_command(
398
+ TARGET ${target_name}
399
+ POST_BUILD
400
+ COMMAND ${CMAKE_STRIP} ${x_opt} $<TARGET_FILE:${target_name}>)
401
+ endif()
402
+ endfunction()
@@ -0,0 +1,233 @@
1
+ #[=============================================================================[.rst:
2
+
3
+ pybind11Config.cmake
4
+ ####################
5
+
6
+ Exported variables
7
+ ==================
8
+
9
+ This module sets the following variables in your project:
10
+
11
+ ``pybind11_FOUND``
12
+ true if pybind11 and all required components found on the system
13
+ ``pybind11_VERSION``
14
+ pybind11 version in format Major.Minor.Release
15
+ ``pybind11_VERSION_TYPE``
16
+ pybind11 version type (dev, release)
17
+ ``pybind11_INCLUDE_DIRS``
18
+ Directories where pybind11 and python headers are located.
19
+ ``pybind11_INCLUDE_DIR``
20
+ Directory where pybind11 headers are located.
21
+ ``pybind11_DEFINITIONS``
22
+ Definitions necessary to use pybind11, namely USING_pybind11.
23
+ ``pybind11_LIBRARIES``
24
+ Compile flags and python libraries (as needed) to link against.
25
+ ``pybind11_LIBRARY``
26
+ Empty.
27
+
28
+ Available components: None
29
+
30
+
31
+ Exported targets
32
+ ================
33
+
34
+ If pybind11 is found, this module defines the following ``IMPORTED``
35
+ interface library targets:
36
+
37
+ ``pybind11::module``
38
+ for extension modules.
39
+ ``pybind11::embed``
40
+ for embedding the Python interpreter.
41
+
42
+ Python headers, libraries (as needed by platform), and the C++ standard
43
+ are attached to the target.
44
+
45
+ Advanced targets are also supplied - these are primary for users building
46
+ complex applications, and they are available in all modes:
47
+
48
+ ``pybind11::headers``
49
+ Just the pybind11 headers and minimum compile requirements.
50
+ ``pybind11::pybind11``
51
+ Python headers too.
52
+ ``pybind11::python_link_helper``
53
+ Just the "linking" part of ``pybind11:module``, for CMake < 3.15.
54
+ ``pybind11::python2_no_register``
55
+ Quiets the warning/error when mixing C++14+ and Python 2, also included in ``pybind11::module``.
56
+ ``pybind11::thin_lto``
57
+ An alternative to ``INTERPROCEDURAL_OPTIMIZATION``.
58
+ ``pybind11::lto``
59
+ An alternative to ``INTERPROCEDURAL_OPTIMIZATION`` (also avoids thin LTO on clang).
60
+ ``pybind11::windows_extras``
61
+ Adds bigobj and mp for MSVC.
62
+
63
+ Modes
64
+ =====
65
+
66
+ There are two modes provided; classic, which is built on the old Python
67
+ discovery packages in CMake, or the new FindPython mode, which uses FindPython
68
+ from 3.12+ forward (3.15+ _highly_ recommended).
69
+
70
+ New FindPython mode
71
+ ^^^^^^^^^^^^^^^^^^^
72
+
73
+ To activate this mode, either call ``find_package(Python COMPONENTS Interpreter Development)``
74
+ before finding this package, or set the ``PYBIND11_FINDPYTHON`` variable to ON. In this mode,
75
+ you can either use the basic targets, or use the FindPython tools:
76
+
77
+ .. code-block:: cmake
78
+
79
+ find_package(Python COMPONENTS Interpreter Development)
80
+ find_package(pybind11 CONFIG)
81
+
82
+ # pybind11 method:
83
+ pybind11_add_module(MyModule1 src1.cpp)
84
+
85
+ # Python method:
86
+ Python_add_library(MyModule2 src2.cpp)
87
+ target_link_libraries(MyModule2 pybind11::headers)
88
+ set_target_properties(MyModule2 PROPERTIES
89
+ INTERPROCEDURAL_OPTIMIZATION ON
90
+ CXX_VISIBILITY_PRESET ON
91
+ VISIBLITY_INLINES_HIDDEN ON)
92
+
93
+ If you build targets yourself, you may be interested in stripping the output
94
+ for reduced size; this is the one other feature that the helper function gives you.
95
+
96
+ Classic mode
97
+ ^^^^^^^^^^^^
98
+
99
+ Set PythonLibsNew variables to influence python detection and
100
+ CMAKE_CXX_STANDARD to influence standard setting.
101
+
102
+ .. code-block:: cmake
103
+
104
+ find_package(pybind11 CONFIG REQUIRED)
105
+
106
+ # Create an extension module
107
+ add_library(mylib MODULE main.cpp)
108
+ target_link_libraries(mylib PUBLIC pybind11::module)
109
+
110
+ # Or embed the Python interpreter into an executable
111
+ add_executable(myexe main.cpp)
112
+ target_link_libraries(myexe PUBLIC pybind11::embed)
113
+
114
+
115
+ Hints
116
+ =====
117
+
118
+ The following variables can be set to guide the search for this package:
119
+
120
+ ``pybind11_DIR``
121
+ CMake variable, set to directory containing this Config file.
122
+ ``CMAKE_PREFIX_PATH``
123
+ CMake variable, set to root directory of this package.
124
+ ``PATH``
125
+ Environment variable, set to bin directory of this package.
126
+ ``CMAKE_DISABLE_FIND_PACKAGE_pybind11``
127
+ CMake variable, disables ``find_package(pybind11)`` when not ``REQUIRED``,
128
+ perhaps to force internal build.
129
+
130
+ Commands
131
+ ========
132
+
133
+ pybind11_add_module
134
+ ^^^^^^^^^^^^^^^^^^^
135
+
136
+ This module defines the following commands to assist with creating Python modules:
137
+
138
+ .. code-block:: cmake
139
+
140
+ pybind11_add_module(<target>
141
+ [STATIC|SHARED|MODULE]
142
+ [THIN_LTO] [OPT_SIZE] [NO_EXTRAS] [WITHOUT_SOABI]
143
+ <files>...
144
+ )
145
+
146
+ Add a module and setup all helpers. You can select the type of the library; the
147
+ default is ``MODULE``. There are several options:
148
+
149
+ ``OPT_SIZE``
150
+ Optimize for size, even if the ``CMAKE_BUILD_TYPE`` is not ``MinSizeRel``.
151
+ ``THIN_LTO``
152
+ Use thin TLO instead of regular if there's a choice (pybind11's selection
153
+ is disabled if ``CMAKE_INTERPROCEDURAL_OPTIMIZATIONS`` is set).
154
+ ``WITHOUT_SOABI``
155
+ Disable the SOABI component (``PYBIND11_NEWPYTHON`` mode only).
156
+ ``NO_EXTRAS``
157
+ Disable all extras, exit immediately after making the module.
158
+
159
+ pybind11_strip
160
+ ^^^^^^^^^^^^^^
161
+
162
+ .. code-block:: cmake
163
+
164
+ pybind11_strip(<target>)
165
+
166
+ Strip a target after building it (linux/macOS), called by ``pybind11_add_module``.
167
+
168
+ pybind11_extension
169
+ ^^^^^^^^^^^^^^^^^^
170
+
171
+ .. code-block:: cmake
172
+
173
+ pybind11_extension(<target>)
174
+
175
+ Sets the Python extension name correctly for Python on your platform, called by
176
+ ``pybind11_add_module``.
177
+
178
+ pybind11_find_import(module)
179
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
180
+
181
+ .. code-block:: cmake
182
+
183
+ pybind11_find_import(<module> [VERSION <number>] [REQUIRED] [QUIET])
184
+
185
+ See if a module is installed. Use the registered name (the one on PyPI). You
186
+ can specify a ``VERSION``, and you can specify ``REQUIRED`` or ``QUIET``. Only available if
187
+ ``NOPYTHON`` mode is not active. Sets ``module_VERSION`` and ``module_FOUND``. Caches the
188
+ result once a valid install is found.
189
+
190
+ Suggested usage
191
+ ===============
192
+
193
+ Using ``find_package`` with version info is not recommended except for release versions.
194
+
195
+ .. code-block:: cmake
196
+
197
+ find_package(pybind11 CONFIG)
198
+ find_package(pybind11 2.0 EXACT CONFIG REQUIRED)
199
+
200
+ #]=============================================================================]
201
+ @PACKAGE_INIT@
202
+
203
+ # Location of pybind11/pybind11.h
204
+ # This will be relative unless explicitly set as absolute
205
+ set(pybind11_INCLUDE_DIR "@pybind11_INCLUDEDIR@")
206
+
207
+ set(pybind11_LIBRARY "")
208
+ set(pybind11_DEFINITIONS USING_pybind11)
209
+ set(pybind11_VERSION_TYPE "@pybind11_VERSION_TYPE@")
210
+
211
+ check_required_components(pybind11)
212
+
213
+ if(TARGET pybind11::python_link_helper)
214
+ # This has already been setup elsewhere, such as with a previous call or
215
+ # add_subdirectory
216
+ return()
217
+ endif()
218
+
219
+ include("${CMAKE_CURRENT_LIST_DIR}/pybind11Targets.cmake")
220
+
221
+ # Easier to use / remember
222
+ add_library(pybind11::headers IMPORTED INTERFACE)
223
+ set_target_properties(pybind11::headers PROPERTIES INTERFACE_LINK_LIBRARIES
224
+ pybind11::pybind11_headers)
225
+
226
+ include("${CMAKE_CURRENT_LIST_DIR}/pybind11Common.cmake")
227
+
228
+ if(NOT pybind11_FIND_QUIETLY)
229
+ message(
230
+ STATUS
231
+ "Found pybind11: ${pybind11_INCLUDE_DIR} (found version \"${pybind11_VERSION}\" ${pybind11_VERSION_TYPE})"
232
+ )
233
+ endif()