xcoll 0.5.12__py3-none-any.whl → 0.6.1__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 (336) hide show
  1. xcoll/__init__.py +5 -18
  2. xcoll/__init__.py.orig +26 -0
  3. xcoll/beam_elements/__init__.py +1 -0
  4. xcoll/beam_elements/absorber.py +12 -2
  5. xcoll/beam_elements/base.py +162 -62
  6. xcoll/beam_elements/blowup.py +1 -0
  7. xcoll/beam_elements/elements_src/black_absorber.h +57 -58
  8. xcoll/beam_elements/elements_src/black_crystal.h +49 -50
  9. xcoll/beam_elements/elements_src/everest_block.h +21 -11
  10. xcoll/beam_elements/elements_src/everest_collimator.h +100 -91
  11. xcoll/beam_elements/elements_src/everest_crystal.h +145 -140
  12. xcoll/beam_elements/elements_src/transparent_collimator.h +126 -0
  13. xcoll/beam_elements/elements_src/transparent_crystal.h +118 -0
  14. xcoll/beam_elements/everest.py +16 -5
  15. xcoll/beam_elements/monitor.py +1 -0
  16. xcoll/beam_elements/transparent.py +83 -0
  17. xcoll/colldb.py +15 -6
  18. xcoll/general.py +1 -1
  19. xcoll/general.py.orig +20 -0
  20. xcoll/headers/particle_states.py +51 -0
  21. xcoll/initial_distribution.py +121 -91
  22. xcoll/initial_distribution.py.orig +256 -0
  23. xcoll/interaction_record/interaction_record.py +2 -1
  24. xcoll/interaction_record/interaction_types.py +2 -2
  25. xcoll/line_tools.py +163 -73
  26. xcoll/lossmap.py +519 -127
  27. xcoll/plot.py +109 -0
  28. xcoll/rf_sweep.py +6 -0
  29. xcoll/scattering_routines/engine.py +414 -217
  30. xcoll/scattering_routines/environment.py +297 -0
  31. xcoll/scattering_routines/everest/amorphous.h +95 -71
  32. xcoll/scattering_routines/everest/{channeling.h → channelling.h} +121 -112
  33. xcoll/scattering_routines/everest/constants.h +1 -1
  34. xcoll/scattering_routines/everest/crystal_parameters.h +9 -9
  35. xcoll/scattering_routines/everest/everest.h +8 -3
  36. xcoll/scattering_routines/everest/everest.py +2 -1
  37. xcoll/scattering_routines/everest/ionisation_loss.h +141 -0
  38. xcoll/scattering_routines/everest/jaw.h +19 -24
  39. xcoll/scattering_routines/everest/materials.py +2 -0
  40. xcoll/scattering_routines/everest/multiple_coulomb_scattering.h +2 -2
  41. xcoll/scattering_routines/everest/nuclear_interaction.h +35 -19
  42. xcoll/scattering_routines/everest/properties.h +3 -72
  43. xcoll/xaux.py +65 -109
  44. {xcoll-0.5.12.dist-info → xcoll-0.6.1.dist-info}/METADATA +5 -5
  45. xcoll-0.6.1.dist-info/RECORD +138 -0
  46. xcoll/_manager.py +0 -22
  47. xcoll/headers/particle_states.h +0 -25
  48. xcoll/install.py +0 -35
  49. xcoll/scattering_routines/geant4/collimasim/.git +0 -1
  50. xcoll/scattering_routines/geant4/collimasim/.gitignore +0 -12
  51. xcoll/scattering_routines/geant4/collimasim/.gitmodules +0 -3
  52. xcoll/scattering_routines/geant4/collimasim/CMakeLists.txt +0 -26
  53. xcoll/scattering_routines/geant4/collimasim/README.md +0 -21
  54. xcoll/scattering_routines/geant4/collimasim/docs/Makefile +0 -20
  55. xcoll/scattering_routines/geant4/collimasim/docs/make.bat +0 -35
  56. xcoll/scattering_routines/geant4/collimasim/docs/source/collimasim.rst +0 -10
  57. xcoll/scattering_routines/geant4/collimasim/docs/source/conf.py +0 -59
  58. xcoll/scattering_routines/geant4/collimasim/docs/source/index.rst +0 -26
  59. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.appveyor.yml +0 -37
  60. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.clang-format +0 -19
  61. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.clang-tidy +0 -65
  62. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.cmake-format.yaml +0 -73
  63. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.git +0 -1
  64. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/CODEOWNERS +0 -9
  65. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/CONTRIBUTING.md +0 -386
  66. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/ISSUE_TEMPLATE/bug-report.yml +0 -45
  67. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/ISSUE_TEMPLATE/config.yml +0 -8
  68. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/dependabot.yml +0 -16
  69. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/labeler.yml +0 -8
  70. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/labeler_merged.yml +0 -3
  71. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/pull_request_template.md +0 -19
  72. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/ci.yml +0 -969
  73. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/configure.yml +0 -84
  74. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/format.yml +0 -48
  75. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/labeler.yml +0 -16
  76. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/pip.yml +0 -103
  77. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.gitignore +0 -45
  78. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.pre-commit-config.yaml +0 -151
  79. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.readthedocs.yml +0 -3
  80. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/CMakeLists.txt +0 -297
  81. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/LICENSE +0 -29
  82. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/MANIFEST.in +0 -6
  83. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/README.rst +0 -180
  84. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/Doxyfile +0 -23
  85. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/Makefile +0 -192
  86. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/_static/theme_overrides.css +0 -11
  87. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/chrono.rst +0 -81
  88. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/custom.rst +0 -93
  89. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/eigen.rst +0 -310
  90. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/functional.rst +0 -109
  91. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/index.rst +0 -43
  92. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/overview.rst +0 -171
  93. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/stl.rst +0 -251
  94. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/strings.rst +0 -305
  95. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/classes.rst +0 -1297
  96. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/embedding.rst +0 -262
  97. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/exceptions.rst +0 -396
  98. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/functions.rst +0 -568
  99. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/misc.rst +0 -337
  100. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/index.rst +0 -13
  101. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/numpy.rst +0 -463
  102. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/object.rst +0 -286
  103. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/utilities.rst +0 -155
  104. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/smart_ptrs.rst +0 -174
  105. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/basics.rst +0 -308
  106. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/benchmark.py +0 -91
  107. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/benchmark.rst +0 -95
  108. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/changelog.rst +0 -2050
  109. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/classes.rst +0 -542
  110. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/cmake/index.rst +0 -8
  111. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/compiling.rst +0 -648
  112. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/conf.py +0 -381
  113. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/faq.rst +0 -343
  114. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/index.rst +0 -48
  115. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/installing.rst +0 -105
  116. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/limitations.rst +0 -72
  117. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11-logo.png +0 -0
  118. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python1.png +0 -0
  119. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python1.svg +0 -427
  120. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python2.png +0 -0
  121. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python2.svg +0 -427
  122. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/reference.rst +0 -130
  123. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/release.rst +0 -96
  124. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/requirements.txt +0 -8
  125. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/upgrade.rst +0 -548
  126. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/attr.h +0 -605
  127. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/buffer_info.h +0 -144
  128. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/cast.h +0 -1432
  129. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/chrono.h +0 -213
  130. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/common.h +0 -2
  131. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/complex.h +0 -65
  132. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/class.h +0 -709
  133. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/common.h +0 -1021
  134. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/descr.h +0 -104
  135. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/init.h +0 -346
  136. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/internals.h +0 -467
  137. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/type_caster_base.h +0 -978
  138. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/typeid.h +0 -55
  139. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/eigen.h +0 -606
  140. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/embed.h +0 -284
  141. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/eval.h +0 -163
  142. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/functional.h +0 -121
  143. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/gil.h +0 -193
  144. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/iostream.h +0 -275
  145. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/numpy.h +0 -1741
  146. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/operators.h +0 -163
  147. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/options.h +0 -65
  148. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/pybind11.h +0 -2497
  149. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/pytypes.h +0 -1879
  150. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl/filesystem.h +0 -103
  151. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl.h +0 -375
  152. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl_bind.h +0 -747
  153. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/noxfile.py +0 -88
  154. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/__init__.py +0 -11
  155. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/__main__.py +0 -52
  156. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/_version.py +0 -12
  157. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/_version.pyi +0 -6
  158. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/commands.py +0 -21
  159. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/py.typed +0 -0
  160. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/setup_helpers.py +0 -482
  161. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/setup_helpers.pyi +0 -63
  162. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pyproject.toml +0 -41
  163. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/setup.cfg +0 -56
  164. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/setup.py +0 -155
  165. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/CMakeLists.txt +0 -503
  166. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/conftest.py +0 -208
  167. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/constructor_stats.h +0 -275
  168. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/cross_module_gil_utils.cpp +0 -73
  169. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/env.py +0 -33
  170. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_python_package/pytest.ini +0 -0
  171. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_python_package/test_files.py +0 -279
  172. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_setuptools/pytest.ini +0 -0
  173. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_setuptools/test_setuphelper.py +0 -143
  174. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/local_bindings.h +0 -85
  175. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/object.h +0 -179
  176. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_cross_module_tests.cpp +0 -151
  177. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_tests.cpp +0 -91
  178. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_tests.h +0 -85
  179. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pytest.ini +0 -19
  180. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/requirements.txt +0 -12
  181. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_async.cpp +0 -26
  182. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_async.py +0 -25
  183. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_buffers.cpp +0 -216
  184. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_buffers.py +0 -163
  185. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_builtin_casters.cpp +0 -286
  186. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_builtin_casters.py +0 -536
  187. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_call_policies.cpp +0 -107
  188. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_call_policies.py +0 -248
  189. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_callbacks.cpp +0 -227
  190. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_callbacks.py +0 -202
  191. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_chrono.cpp +0 -84
  192. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_chrono.py +0 -210
  193. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_class.cpp +0 -550
  194. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_class.py +0 -473
  195. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/CMakeLists.txt +0 -84
  196. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/embed.cpp +0 -21
  197. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_embed/CMakeLists.txt +0 -28
  198. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_function/CMakeLists.txt +0 -39
  199. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_target/CMakeLists.txt +0 -46
  200. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/main.cpp +0 -6
  201. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_embed/CMakeLists.txt +0 -41
  202. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_function/CMakeLists.txt +0 -35
  203. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_target/CMakeLists.txt +0 -41
  204. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/test.py +0 -10
  205. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_constants_and_functions.cpp +0 -165
  206. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_constants_and_functions.py +0 -53
  207. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_copy_move.cpp +0 -238
  208. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_copy_move.py +0 -126
  209. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_casters.cpp +0 -141
  210. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_casters.py +0 -117
  211. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_setup.cpp +0 -41
  212. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_setup.py +0 -50
  213. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_docstring_options.cpp +0 -69
  214. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_docstring_options.py +0 -42
  215. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eigen.cpp +0 -348
  216. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eigen.py +0 -771
  217. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/CMakeLists.txt +0 -47
  218. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/catch.cpp +0 -22
  219. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/external_module.cpp +0 -23
  220. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/test_interpreter.cpp +0 -326
  221. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/test_interpreter.py +0 -15
  222. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_enum.cpp +0 -148
  223. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_enum.py +0 -272
  224. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval.cpp +0 -119
  225. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval.py +0 -51
  226. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval_call.py +0 -5
  227. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.cpp +0 -285
  228. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.h +0 -12
  229. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.py +0 -265
  230. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_factory_constructors.cpp +0 -397
  231. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_factory_constructors.py +0 -520
  232. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_gil_scoped.cpp +0 -49
  233. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_gil_scoped.py +0 -94
  234. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_iostream.cpp +0 -125
  235. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_iostream.py +0 -331
  236. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_kwargs_and_defaults.cpp +0 -153
  237. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_kwargs_and_defaults.py +0 -284
  238. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_local_bindings.cpp +0 -107
  239. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_local_bindings.py +0 -257
  240. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_methods_and_attributes.cpp +0 -412
  241. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_methods_and_attributes.py +0 -517
  242. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_modules.cpp +0 -102
  243. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_modules.py +0 -92
  244. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_multiple_inheritance.cpp +0 -233
  245. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_multiple_inheritance.py +0 -360
  246. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_array.cpp +0 -472
  247. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_array.py +0 -593
  248. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_dtypes.cpp +0 -524
  249. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_dtypes.py +0 -441
  250. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_vectorize.cpp +0 -103
  251. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_vectorize.py +0 -267
  252. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_opaque_types.cpp +0 -73
  253. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_opaque_types.py +0 -59
  254. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_operator_overloading.cpp +0 -235
  255. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_operator_overloading.py +0 -146
  256. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pickling.cpp +0 -189
  257. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pickling.py +0 -82
  258. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pytypes.cpp +0 -560
  259. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pytypes.py +0 -651
  260. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_sequences_and_iterators.cpp +0 -500
  261. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_sequences_and_iterators.py +0 -253
  262. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_smart_ptr.cpp +0 -452
  263. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_smart_ptr.py +0 -318
  264. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl.cpp +0 -342
  265. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl.py +0 -291
  266. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl_binders.cpp +0 -131
  267. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl_binders.py +0 -318
  268. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_tagbased_polymorphic.cpp +0 -144
  269. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_tagbased_polymorphic.py +0 -29
  270. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_thread.cpp +0 -66
  271. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_thread.py +0 -44
  272. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_union.cpp +0 -22
  273. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_union.py +0 -9
  274. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_virtual_functions.cpp +0 -510
  275. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_virtual_functions.py +0 -408
  276. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/valgrind-numpy-scipy.supp +0 -140
  277. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/valgrind-python.supp +0 -117
  278. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindCatch.cmake +0 -70
  279. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindEigen3.cmake +0 -86
  280. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindPythonLibsNew.cmake +0 -257
  281. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/check-style.sh +0 -44
  282. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/cmake_uninstall.cmake.in +0 -23
  283. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/libsize.py +0 -39
  284. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/make_changelog.py +0 -64
  285. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Common.cmake +0 -402
  286. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Config.cmake.in +0 -233
  287. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11NewTools.cmake +0 -276
  288. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Tools.cmake +0 -214
  289. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pyproject.toml +0 -3
  290. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/setup_global.py.in +0 -65
  291. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/setup_main.py.in +0 -41
  292. xcoll/scattering_routines/geant4/collimasim/pyproject.toml +0 -8
  293. xcoll/scattering_routines/geant4/collimasim/setup.py +0 -144
  294. xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSPyATInterface.cpp +0 -403
  295. xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSPyATInterface.hh +0 -100
  296. xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSXtrackInterface.cpp +0 -763
  297. xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSXtrackInterface.hh +0 -118
  298. xcoll/scattering_routines/geant4/collimasim/src/collimasim/__init__.py +0 -8
  299. xcoll/scattering_routines/geant4/collimasim/src/collimasim/bindings.cpp +0 -63
  300. xcoll/scattering_routines/geant4/collimasim/src/collimasim/pyCollimatorPass.py +0 -142
  301. xcoll/scattering_routines/geant4/collimasim/src/collimasim/xtrack_collimator.py +0 -556
  302. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/PKG-INFO +0 -6
  303. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/SOURCES.txt +0 -24
  304. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/dependency_links.txt +0 -1
  305. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/not-zip-safe +0 -1
  306. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/top_level.txt +0 -1
  307. xcoll/scattering_routines/geant4/collimasim/tests/README.md +0 -25
  308. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_forions.dat +0 -25
  309. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_new_example.dat +0 -18
  310. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_old_example.dat +0 -68
  311. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_testing.dat +0 -15
  312. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_yaml_example.yaml +0 -110
  313. xcoll/scattering_routines/geant4/collimasim/tests/resources/collgaps.dat +0 -7
  314. xcoll/scattering_routines/geant4/collimasim/tests/resources/collgaps_pyat_test.dat +0 -3
  315. xcoll/scattering_routines/geant4/collimasim/tests/resources/collonly_twiss_file_example.tfs +0 -54
  316. xcoll/scattering_routines/geant4/collimasim/tests/resources/settings.gmad +0 -3
  317. xcoll/scattering_routines/geant4/collimasim/tests/resources/settings_black_absorber.gmad +0 -3
  318. xcoll/scattering_routines/geant4/collimasim/tests/resources/settings_ions.gmad +0 -5
  319. xcoll/scattering_routines/geant4/collimasim/tests/resources/twiss_file_testing.tfs +0 -51
  320. xcoll/scattering_routines/geant4/collimasim/tests/test_pyat.py +0 -65
  321. xcoll/scattering_routines/geant4/collimasim/tests/test_pyat_passmethod.py +0 -59
  322. xcoll/scattering_routines/geant4/collimasim/tests/test_pyat_tracking.py +0 -102
  323. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack.py +0 -75
  324. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_angle.py +0 -74
  325. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_colldb_load.py +0 -84
  326. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_interaction.py +0 -159
  327. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_interaction_ion.py +0 -99
  328. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_ions.py +0 -78
  329. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_lost_energy.py +0 -88
  330. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tilt.py +0 -80
  331. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tracking.py +0 -97
  332. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tracking_ions.py +0 -96
  333. xcoll-0.5.12.dist-info/RECORD +0 -415
  334. {xcoll-0.5.12.dist-info → xcoll-0.6.1.dist-info}/LICENSE +0 -0
  335. {xcoll-0.5.12.dist-info → xcoll-0.6.1.dist-info}/NOTICE +0 -0
  336. {xcoll-0.5.12.dist-info → xcoll-0.6.1.dist-info}/WHEEL +0 -0
@@ -1,88 +0,0 @@
1
- import nox
2
-
3
- nox.options.sessions = ["lint", "tests", "tests_packaging"]
4
-
5
- PYTHON_VERISONS = ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10"]
6
-
7
-
8
- @nox.session(reuse_venv=True)
9
- def lint(session: nox.Session) -> None:
10
- """
11
- Lint the codebase (except for clang-format/tidy).
12
- """
13
- session.install("pre-commit")
14
- session.run("pre-commit", "run", "-a")
15
-
16
-
17
- @nox.session(python=PYTHON_VERISONS)
18
- def tests(session: nox.Session) -> None:
19
- """
20
- Run the tests (requires a compiler).
21
- """
22
- tmpdir = session.create_tmp()
23
- session.install("pytest", "cmake")
24
- session.run(
25
- "cmake",
26
- "-S",
27
- ".",
28
- "-B",
29
- tmpdir,
30
- "-DPYBIND11_WERROR=ON",
31
- "-DDOWNLOAD_CATCH=ON",
32
- "-DDOWNLOAD_EIGEN=ON",
33
- *session.posargs
34
- )
35
- session.run("cmake", "--build", tmpdir)
36
- session.run("cmake", "--build", tmpdir, "--config=Release", "--target", "check")
37
-
38
-
39
- @nox.session
40
- def tests_packaging(session: nox.Session) -> None:
41
- """
42
- Run the packaging tests.
43
- """
44
-
45
- session.install("-r", "tests/requirements.txt", "--prefer-binary")
46
- session.run("pytest", "tests/extra_python_package")
47
-
48
-
49
- @nox.session(reuse_venv=True)
50
- def docs(session: nox.Session) -> None:
51
- """
52
- Build the docs. Pass "serve" to serve.
53
- """
54
-
55
- session.install("-r", "docs/requirements.txt")
56
- session.chdir("docs")
57
-
58
- if "pdf" in session.posargs:
59
- session.run("sphinx-build", "-M", "latexpdf", ".", "_build")
60
- return
61
-
62
- session.run("sphinx-build", "-M", "html", ".", "_build")
63
-
64
- if "serve" in session.posargs:
65
- session.log("Launching docs at http://localhost:8000/ - use Ctrl-C to quit")
66
- session.run("python", "-m", "http.server", "8000", "-d", "_build/html")
67
- elif session.posargs:
68
- session.error("Unsupported argument to docs")
69
-
70
-
71
- @nox.session(reuse_venv=True)
72
- def make_changelog(session: nox.Session) -> None:
73
- """
74
- Inspect the closed issues and make entries for a changelog.
75
- """
76
- session.install("ghapi", "rich")
77
- session.run("python", "tools/make_changelog.py")
78
-
79
-
80
- @nox.session(reuse_venv=True)
81
- def build(session: nox.Session) -> None:
82
- """
83
- Build SDists and wheels.
84
- """
85
-
86
- session.install("build")
87
- session.run("python", "-m", "build")
88
- session.run("python", "-m", "build", env={"PYBIND11_GLOBAL_SDIST": "1"})
@@ -1,11 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- from ._version import __version__, version_info
4
- from .commands import get_cmake_dir, get_include
5
-
6
- __all__ = (
7
- "version_info",
8
- "__version__",
9
- "get_include",
10
- "get_cmake_dir",
11
- )
@@ -1,52 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- from __future__ import print_function
3
-
4
- import argparse
5
- import sys
6
- import sysconfig
7
-
8
- from .commands import get_cmake_dir, get_include
9
-
10
-
11
- def print_includes():
12
- # type: () -> None
13
- dirs = [
14
- sysconfig.get_path("include"),
15
- sysconfig.get_path("platinclude"),
16
- get_include(),
17
- ]
18
-
19
- # Make unique but preserve order
20
- unique_dirs = []
21
- for d in dirs:
22
- if d and d not in unique_dirs:
23
- unique_dirs.append(d)
24
-
25
- print(" ".join("-I" + d for d in unique_dirs))
26
-
27
-
28
- def main():
29
- # type: () -> None
30
-
31
- parser = argparse.ArgumentParser()
32
- parser.add_argument(
33
- "--includes",
34
- action="store_true",
35
- help="Include flags for both pybind11 and Python headers.",
36
- )
37
- parser.add_argument(
38
- "--cmakedir",
39
- action="store_true",
40
- help="Print the CMake module directory, ideal for setting -Dpybind11_ROOT in CMake.",
41
- )
42
- args = parser.parse_args()
43
- if not sys.argv[1:]:
44
- parser.print_help()
45
- if args.includes:
46
- print_includes()
47
- if args.cmakedir:
48
- print(get_cmake_dir())
49
-
50
-
51
- if __name__ == "__main__":
52
- main()
@@ -1,12 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
-
4
- def _to_int(s):
5
- try:
6
- return int(s)
7
- except ValueError:
8
- return s
9
-
10
-
11
- __version__ = "2.9.0.dev1"
12
- version_info = tuple(_to_int(s) for s in __version__.split("."))
@@ -1,6 +0,0 @@
1
- from typing import Tuple, Union
2
-
3
- def _to_int(s: str) -> Union[int, str]: ...
4
-
5
- __version__: str
6
- version_info: Tuple[Union[int, str], ...]
@@ -1,21 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- import os
3
-
4
- DIR = os.path.abspath(os.path.dirname(__file__))
5
-
6
-
7
- def get_include(user=False):
8
- # type: (bool) -> str
9
- installed_path = os.path.join(DIR, "include")
10
- source_path = os.path.join(os.path.dirname(DIR), "include")
11
- return installed_path if os.path.exists(installed_path) else source_path
12
-
13
-
14
- def get_cmake_dir():
15
- # type: () -> str
16
- cmake_installed_path = os.path.join(DIR, "share", "cmake", "pybind11")
17
- if os.path.exists(cmake_installed_path):
18
- return cmake_installed_path
19
- else:
20
- msg = "pybind11 not installed, installation required to access the CMake files"
21
- raise ImportError(msg)
@@ -1,482 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- """
4
- This module provides helpers for C++11+ projects using pybind11.
5
-
6
- LICENSE:
7
-
8
- Copyright (c) 2016 Wenzel Jakob <wenzel.jakob@epfl.ch>, All rights reserved.
9
-
10
- Redistribution and use in source and binary forms, with or without
11
- modification, are permitted provided that the following conditions are met:
12
-
13
- 1. Redistributions of source code must retain the above copyright notice, this
14
- list of conditions and the following disclaimer.
15
-
16
- 2. Redistributions in binary form must reproduce the above copyright notice,
17
- this list of conditions and the following disclaimer in the documentation
18
- and/or other materials provided with the distribution.
19
-
20
- 3. Neither the name of the copyright holder nor the names of its contributors
21
- may be used to endorse or promote products derived from this software
22
- without specific prior written permission.
23
-
24
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
25
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
26
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
28
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
30
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31
- CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
32
- OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
- """
35
-
36
- # IMPORTANT: If you change this file in the pybind11 repo, also review
37
- # setup_helpers.pyi for matching changes.
38
- #
39
- # If you copy this file in, you don't
40
- # need the .pyi file; it's just an interface file for static type checkers.
41
-
42
- import contextlib
43
- import os
44
- import platform
45
- import shutil
46
- import sys
47
- import sysconfig
48
- import tempfile
49
- import threading
50
- import warnings
51
-
52
- try:
53
- from setuptools import Extension as _Extension
54
- from setuptools.command.build_ext import build_ext as _build_ext
55
- except ImportError:
56
- from distutils.command.build_ext import build_ext as _build_ext
57
- from distutils.extension import Extension as _Extension
58
-
59
- import distutils.ccompiler
60
- import distutils.errors
61
-
62
- WIN = sys.platform.startswith("win32") and "mingw" not in sysconfig.get_platform()
63
- PY2 = sys.version_info[0] < 3
64
- MACOS = sys.platform.startswith("darwin")
65
- STD_TMPL = "/std:c++{}" if WIN else "-std=c++{}"
66
-
67
-
68
- # It is recommended to use PEP 518 builds if using this module. However, this
69
- # file explicitly supports being copied into a user's project directory
70
- # standalone, and pulling pybind11 with the deprecated setup_requires feature.
71
- # If you copy the file, remember to add it to your MANIFEST.in, and add the current
72
- # directory into your path if it sits beside your setup.py.
73
-
74
-
75
- class Pybind11Extension(_Extension):
76
- """
77
- Build a C++11+ Extension module with pybind11. This automatically adds the
78
- recommended flags when you init the extension and assumes C++ sources - you
79
- can further modify the options yourself.
80
-
81
- The customizations are:
82
-
83
- * ``/EHsc`` and ``/bigobj`` on Windows
84
- * ``stdlib=libc++`` on macOS
85
- * ``visibility=hidden`` and ``-g0`` on Unix
86
-
87
- Finally, you can set ``cxx_std`` via constructor or afterwards to enable
88
- flags for C++ std, and a few extra helper flags related to the C++ standard
89
- level. It is _highly_ recommended you either set this, or use the provided
90
- ``build_ext``, which will search for the highest supported extension for
91
- you if the ``cxx_std`` property is not set. Do not set the ``cxx_std``
92
- property more than once, as flags are added when you set it. Set the
93
- property to None to disable the addition of C++ standard flags.
94
-
95
- If you want to add pybind11 headers manually, for example for an exact
96
- git checkout, then set ``include_pybind11=False``.
97
-
98
- Warning: do not use property-based access to the instance on Python 2 -
99
- this is an ugly old-style class due to Distutils.
100
- """
101
-
102
- # flags are prepended, so that they can be further overridden, e.g. by
103
- # ``extra_compile_args=["-g"]``.
104
-
105
- def _add_cflags(self, flags):
106
- self.extra_compile_args[:0] = flags
107
-
108
- def _add_ldflags(self, flags):
109
- self.extra_link_args[:0] = flags
110
-
111
- def __init__(self, *args, **kwargs):
112
-
113
- self._cxx_level = 0
114
- cxx_std = kwargs.pop("cxx_std", 0)
115
-
116
- if "language" not in kwargs:
117
- kwargs["language"] = "c++"
118
-
119
- include_pybind11 = kwargs.pop("include_pybind11", True)
120
-
121
- # Can't use super here because distutils has old-style classes in
122
- # Python 2!
123
- _Extension.__init__(self, *args, **kwargs)
124
-
125
- # Include the installed package pybind11 headers
126
- if include_pybind11:
127
- # If using setup_requires, this fails the first time - that's okay
128
- try:
129
- import pybind11
130
-
131
- pyinc = pybind11.get_include()
132
-
133
- if pyinc not in self.include_dirs:
134
- self.include_dirs.append(pyinc)
135
- except ImportError:
136
- pass
137
-
138
- # Have to use the accessor manually to support Python 2 distutils
139
- Pybind11Extension.cxx_std.__set__(self, cxx_std)
140
-
141
- cflags = []
142
- ldflags = []
143
- if WIN:
144
- cflags += ["/EHsc", "/bigobj"]
145
- else:
146
- cflags += ["-fvisibility=hidden", "-g0"]
147
- if MACOS:
148
- cflags += ["-stdlib=libc++"]
149
- ldflags += ["-stdlib=libc++"]
150
- self._add_cflags(cflags)
151
- self._add_ldflags(ldflags)
152
-
153
- @property
154
- def cxx_std(self):
155
- """
156
- The CXX standard level. If set, will add the required flags. If left
157
- at 0, it will trigger an automatic search when pybind11's build_ext
158
- is used. If None, will have no effect. Besides just the flags, this
159
- may add a register warning/error fix for Python 2 or macos-min 10.9
160
- or 10.14.
161
- """
162
- return self._cxx_level
163
-
164
- @cxx_std.setter
165
- def cxx_std(self, level):
166
-
167
- if self._cxx_level:
168
- warnings.warn("You cannot safely change the cxx_level after setting it!")
169
-
170
- # MSVC 2015 Update 3 and later only have 14 (and later 17) modes, so
171
- # force a valid flag here.
172
- if WIN and level == 11:
173
- level = 14
174
-
175
- self._cxx_level = level
176
-
177
- if not level:
178
- return
179
-
180
- cflags = [STD_TMPL.format(level)]
181
- ldflags = []
182
-
183
- if MACOS and "MACOSX_DEPLOYMENT_TARGET" not in os.environ:
184
- # C++17 requires a higher min version of macOS. An earlier version
185
- # (10.12 or 10.13) can be set manually via environment variable if
186
- # you are careful in your feature usage, but 10.14 is the safest
187
- # setting for general use. However, never set higher than the
188
- # current macOS version!
189
- current_macos = tuple(int(x) for x in platform.mac_ver()[0].split(".")[:2])
190
- desired_macos = (10, 9) if level < 17 else (10, 14)
191
- macos_string = ".".join(str(x) for x in min(current_macos, desired_macos))
192
- macosx_min = "-mmacosx-version-min=" + macos_string
193
- cflags += [macosx_min]
194
- ldflags += [macosx_min]
195
-
196
- if PY2:
197
- if WIN:
198
- # Will be ignored on MSVC 2015, where C++17 is not supported so
199
- # this flag is not valid.
200
- cflags += ["/wd5033"]
201
- elif level >= 17:
202
- cflags += ["-Wno-register"]
203
- elif level >= 14:
204
- cflags += ["-Wno-deprecated-register"]
205
-
206
- self._add_cflags(cflags)
207
- self._add_ldflags(ldflags)
208
-
209
-
210
- # Just in case someone clever tries to multithread
211
- tmp_chdir_lock = threading.Lock()
212
- cpp_cache_lock = threading.Lock()
213
-
214
-
215
- @contextlib.contextmanager
216
- def tmp_chdir():
217
- "Prepare and enter a temporary directory, cleanup when done"
218
-
219
- # Threadsafe
220
- with tmp_chdir_lock:
221
- olddir = os.getcwd()
222
- try:
223
- tmpdir = tempfile.mkdtemp()
224
- os.chdir(tmpdir)
225
- yield tmpdir
226
- finally:
227
- os.chdir(olddir)
228
- shutil.rmtree(tmpdir)
229
-
230
-
231
- # cf http://bugs.python.org/issue26689
232
- def has_flag(compiler, flag):
233
- """
234
- Return the flag if a flag name is supported on the
235
- specified compiler, otherwise None (can be used as a boolean).
236
- If multiple flags are passed, return the first that matches.
237
- """
238
-
239
- with tmp_chdir():
240
- fname = "flagcheck.cpp"
241
- with open(fname, "w") as f:
242
- # Don't trigger -Wunused-parameter.
243
- f.write("int main (int, char **) { return 0; }")
244
-
245
- try:
246
- compiler.compile([fname], extra_postargs=[flag])
247
- except distutils.errors.CompileError:
248
- return False
249
- return True
250
-
251
-
252
- # Every call will cache the result
253
- cpp_flag_cache = None
254
-
255
-
256
- def auto_cpp_level(compiler):
257
- """
258
- Return the max supported C++ std level (17, 14, or 11). Returns latest on Windows.
259
- """
260
-
261
- if WIN:
262
- return "latest"
263
-
264
- global cpp_flag_cache
265
-
266
- # If this has been previously calculated with the same args, return that
267
- with cpp_cache_lock:
268
- if cpp_flag_cache:
269
- return cpp_flag_cache
270
-
271
- levels = [17, 14, 11]
272
-
273
- for level in levels:
274
- if has_flag(compiler, STD_TMPL.format(level)):
275
- with cpp_cache_lock:
276
- cpp_flag_cache = level
277
- return level
278
-
279
- msg = "Unsupported compiler -- at least C++11 support is needed!"
280
- raise RuntimeError(msg)
281
-
282
-
283
- class build_ext(_build_ext): # noqa: N801
284
- """
285
- Customized build_ext that allows an auto-search for the highest supported
286
- C++ level for Pybind11Extension. This is only needed for the auto-search
287
- for now, and is completely optional otherwise.
288
- """
289
-
290
- def build_extensions(self):
291
- """
292
- Build extensions, injecting C++ std for Pybind11Extension if needed.
293
- """
294
-
295
- for ext in self.extensions:
296
- if hasattr(ext, "_cxx_level") and ext._cxx_level == 0:
297
- # Python 2 syntax - old-style distutils class
298
- ext.__class__.cxx_std.__set__(ext, auto_cpp_level(self.compiler))
299
-
300
- # Python 2 doesn't allow super here, since distutils uses old-style
301
- # classes!
302
- _build_ext.build_extensions(self)
303
-
304
-
305
- def intree_extensions(paths, package_dir=None):
306
- """
307
- Generate Pybind11Extensions from source files directly located in a Python
308
- source tree.
309
-
310
- ``package_dir`` behaves as in ``setuptools.setup``. If unset, the Python
311
- package root parent is determined as the first parent directory that does
312
- not contain an ``__init__.py`` file.
313
- """
314
- exts = []
315
- for path in paths:
316
- if package_dir is None:
317
- parent, _ = os.path.split(path)
318
- while os.path.exists(os.path.join(parent, "__init__.py")):
319
- parent, _ = os.path.split(parent)
320
- relname, _ = os.path.splitext(os.path.relpath(path, parent))
321
- qualified_name = relname.replace(os.path.sep, ".")
322
- exts.append(Pybind11Extension(qualified_name, [path]))
323
- else:
324
- found = False
325
- for prefix, parent in package_dir.items():
326
- if path.startswith(parent):
327
- found = True
328
- relname, _ = os.path.splitext(os.path.relpath(path, parent))
329
- qualified_name = relname.replace(os.path.sep, ".")
330
- if prefix:
331
- qualified_name = prefix + "." + qualified_name
332
- exts.append(Pybind11Extension(qualified_name, [path]))
333
- if not found:
334
- raise ValueError(
335
- "path {} is not a child of any of the directories listed "
336
- "in 'package_dir' ({})".format(path, package_dir)
337
- )
338
- return exts
339
-
340
-
341
- def naive_recompile(obj, src):
342
- """
343
- This will recompile only if the source file changes. It does not check
344
- header files, so a more advanced function or Ccache is better if you have
345
- editable header files in your package.
346
- """
347
- return os.stat(obj).st_mtime < os.stat(src).st_mtime
348
-
349
-
350
- def no_recompile(obg, src):
351
- """
352
- This is the safest but slowest choice (and is the default) - will always
353
- recompile sources.
354
- """
355
- return True
356
-
357
-
358
- # Optional parallel compile utility
359
- # inspired by: http://stackoverflow.com/questions/11013851/speeding-up-build-process-with-distutils
360
- # and: https://github.com/tbenthompson/cppimport/blob/stable/cppimport/build_module.py
361
- # and NumPy's parallel distutils module:
362
- # https://github.com/numpy/numpy/blob/master/numpy/distutils/ccompiler.py
363
- class ParallelCompile(object):
364
- """
365
- Make a parallel compile function. Inspired by
366
- numpy.distutils.ccompiler.CCompiler_compile and cppimport.
367
-
368
- This takes several arguments that allow you to customize the compile
369
- function created:
370
-
371
- envvar:
372
- Set an environment variable to control the compilation threads, like
373
- NPY_NUM_BUILD_JOBS
374
- default:
375
- 0 will automatically multithread, or 1 will only multithread if the
376
- envvar is set.
377
- max:
378
- The limit for automatic multithreading if non-zero
379
- needs_recompile:
380
- A function of (obj, src) that returns True when recompile is needed. No
381
- effect in isolated mode; use ccache instead, see
382
- https://github.com/matplotlib/matplotlib/issues/1507/
383
-
384
- To use::
385
-
386
- ParallelCompile("NPY_NUM_BUILD_JOBS").install()
387
-
388
- or::
389
-
390
- with ParallelCompile("NPY_NUM_BUILD_JOBS"):
391
- setup(...)
392
-
393
- By default, this assumes all files need to be recompiled. A smarter
394
- function can be provided via needs_recompile. If the output has not yet
395
- been generated, the compile will always run, and this function is not
396
- called.
397
- """
398
-
399
- __slots__ = ("envvar", "default", "max", "_old", "needs_recompile")
400
-
401
- def __init__(self, envvar=None, default=0, max=0, needs_recompile=no_recompile):
402
- self.envvar = envvar
403
- self.default = default
404
- self.max = max
405
- self.needs_recompile = needs_recompile
406
- self._old = []
407
-
408
- def function(self):
409
- """
410
- Builds a function object usable as distutils.ccompiler.CCompiler.compile.
411
- """
412
-
413
- def compile_function(
414
- compiler,
415
- sources,
416
- output_dir=None,
417
- macros=None,
418
- include_dirs=None,
419
- debug=0,
420
- extra_preargs=None,
421
- extra_postargs=None,
422
- depends=None,
423
- ):
424
-
425
- # These lines are directly from distutils.ccompiler.CCompiler
426
- macros, objects, extra_postargs, pp_opts, build = compiler._setup_compile(
427
- output_dir, macros, include_dirs, sources, depends, extra_postargs
428
- )
429
- cc_args = compiler._get_cc_args(pp_opts, debug, extra_preargs)
430
-
431
- # The number of threads; start with default.
432
- threads = self.default
433
-
434
- # Determine the number of compilation threads, unless set by an environment variable.
435
- if self.envvar is not None:
436
- threads = int(os.environ.get(self.envvar, self.default))
437
-
438
- def _single_compile(obj):
439
- try:
440
- src, ext = build[obj]
441
- except KeyError:
442
- return
443
-
444
- if not os.path.exists(obj) or self.needs_recompile(obj, src):
445
- compiler._compile(obj, src, ext, cc_args, extra_postargs, pp_opts)
446
-
447
- try:
448
- # Importing .synchronize checks for platforms that have some multiprocessing
449
- # capabilities but lack semaphores, such as AWS Lambda and Android Termux.
450
- import multiprocessing.synchronize
451
- from multiprocessing.pool import ThreadPool
452
- except ImportError:
453
- threads = 1
454
-
455
- if threads == 0:
456
- try:
457
- threads = multiprocessing.cpu_count()
458
- threads = self.max if self.max and self.max < threads else threads
459
- except NotImplementedError:
460
- threads = 1
461
-
462
- if threads > 1:
463
- for _ in ThreadPool(threads).imap_unordered(_single_compile, objects):
464
- pass
465
- else:
466
- for ob in objects:
467
- _single_compile(ob)
468
-
469
- return objects
470
-
471
- return compile_function
472
-
473
- def install(self):
474
- distutils.ccompiler.CCompiler.compile = self.function()
475
- return self
476
-
477
- def __enter__(self):
478
- self._old.append(distutils.ccompiler.CCompiler.compile)
479
- return self.install()
480
-
481
- def __exit__(self, *args):
482
- distutils.ccompiler.CCompiler.compile = self._old.pop()