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,104 +0,0 @@
1
- /*
2
- pybind11/detail/descr.h: Helper type for concatenating type signatures at compile time
3
-
4
- Copyright (c) 2016 Wenzel Jakob <wenzel.jakob@epfl.ch>
5
-
6
- All rights reserved. Use of this source code is governed by a
7
- BSD-style license that can be found in the LICENSE file.
8
- */
9
-
10
- #pragma once
11
-
12
- #include "common.h"
13
-
14
- PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE)
15
- PYBIND11_NAMESPACE_BEGIN(detail)
16
-
17
- #if !defined(_MSC_VER)
18
- # define PYBIND11_DESCR_CONSTEXPR static constexpr
19
- #else
20
- # define PYBIND11_DESCR_CONSTEXPR const
21
- #endif
22
-
23
- /* Concatenate type signatures at compile time */
24
- template <size_t N, typename... Ts>
25
- struct descr {
26
- char text[N + 1]{'\0'};
27
-
28
- constexpr descr() = default;
29
- // NOLINTNEXTLINE(google-explicit-constructor)
30
- constexpr descr(char const (&s)[N+1]) : descr(s, make_index_sequence<N>()) { }
31
-
32
- template <size_t... Is>
33
- constexpr descr(char const (&s)[N+1], index_sequence<Is...>) : text{s[Is]..., '\0'} { }
34
-
35
- template <typename... Chars>
36
- // NOLINTNEXTLINE(google-explicit-constructor)
37
- constexpr descr(char c, Chars... cs) : text{c, static_cast<char>(cs)..., '\0'} { }
38
-
39
- static constexpr std::array<const std::type_info *, sizeof...(Ts) + 1> types() {
40
- return {{&typeid(Ts)..., nullptr}};
41
- }
42
- };
43
-
44
- template <size_t N1, size_t N2, typename... Ts1, typename... Ts2, size_t... Is1, size_t... Is2>
45
- constexpr descr<N1 + N2, Ts1..., Ts2...> plus_impl(const descr<N1, Ts1...> &a, const descr<N2, Ts2...> &b,
46
- index_sequence<Is1...>, index_sequence<Is2...>) {
47
- PYBIND11_WORKAROUND_INCORRECT_MSVC_C4100(b);
48
- return {a.text[Is1]..., b.text[Is2]...};
49
- }
50
-
51
- template <size_t N1, size_t N2, typename... Ts1, typename... Ts2>
52
- constexpr descr<N1 + N2, Ts1..., Ts2...> operator+(const descr<N1, Ts1...> &a, const descr<N2, Ts2...> &b) {
53
- return plus_impl(a, b, make_index_sequence<N1>(), make_index_sequence<N2>());
54
- }
55
-
56
- template <size_t N>
57
- constexpr descr<N - 1> _(char const(&text)[N]) { return descr<N - 1>(text); }
58
- constexpr descr<0> _(char const(&)[1]) { return {}; }
59
-
60
- template <size_t Rem, size_t... Digits> struct int_to_str : int_to_str<Rem/10, Rem%10, Digits...> { };
61
- template <size_t...Digits> struct int_to_str<0, Digits...> {
62
- static constexpr auto digits = descr<sizeof...(Digits)>(('0' + Digits)...);
63
- };
64
-
65
- // Ternary description (like std::conditional)
66
- template <bool B, size_t N1, size_t N2>
67
- constexpr enable_if_t<B, descr<N1 - 1>> _(char const(&text1)[N1], char const(&)[N2]) {
68
- return _(text1);
69
- }
70
- template <bool B, size_t N1, size_t N2>
71
- constexpr enable_if_t<!B, descr<N2 - 1>> _(char const(&)[N1], char const(&text2)[N2]) {
72
- return _(text2);
73
- }
74
-
75
- template <bool B, typename T1, typename T2>
76
- constexpr enable_if_t<B, T1> _(const T1 &d, const T2 &) { return d; }
77
- template <bool B, typename T1, typename T2>
78
- constexpr enable_if_t<!B, T2> _(const T1 &, const T2 &d) { return d; }
79
-
80
- template <size_t Size>
81
- auto constexpr _() -> remove_cv_t<decltype(int_to_str<Size / 10, Size % 10>::digits)> {
82
- return int_to_str<Size / 10, Size % 10>::digits;
83
- }
84
-
85
- template <typename Type> constexpr descr<1, Type> _() { return {'%'}; }
86
-
87
- constexpr descr<0> concat() { return {}; }
88
-
89
- template <size_t N, typename... Ts>
90
- constexpr descr<N, Ts...> concat(const descr<N, Ts...> &descr) { return descr; }
91
-
92
- template <size_t N, typename... Ts, typename... Args>
93
- constexpr auto concat(const descr<N, Ts...> &d, const Args &...args)
94
- -> decltype(std::declval<descr<N + 2, Ts...>>() + concat(args...)) {
95
- return d + _(", ") + concat(args...);
96
- }
97
-
98
- template <size_t N, typename... Ts>
99
- constexpr descr<N + 2, Ts...> type_descr(const descr<N, Ts...> &descr) {
100
- return _("{") + descr + _("}");
101
- }
102
-
103
- PYBIND11_NAMESPACE_END(detail)
104
- PYBIND11_NAMESPACE_END(PYBIND11_NAMESPACE)
@@ -1,346 +0,0 @@
1
- /*
2
- pybind11/detail/init.h: init factory function implementation and support code.
3
-
4
- Copyright (c) 2017 Jason Rhinelander <jason@imaginary.ca>
5
-
6
- All rights reserved. Use of this source code is governed by a
7
- BSD-style license that can be found in the LICENSE file.
8
- */
9
-
10
- #pragma once
11
-
12
- #include "class.h"
13
-
14
- PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE)
15
- PYBIND11_NAMESPACE_BEGIN(detail)
16
-
17
- template <>
18
- class type_caster<value_and_holder> {
19
- public:
20
- bool load(handle h, bool) {
21
- value = reinterpret_cast<value_and_holder *>(h.ptr());
22
- return true;
23
- }
24
-
25
- template <typename> using cast_op_type = value_and_holder &;
26
- explicit operator value_and_holder &() { return *value; }
27
- static constexpr auto name = _<value_and_holder>();
28
-
29
- private:
30
- value_and_holder *value = nullptr;
31
- };
32
-
33
- PYBIND11_NAMESPACE_BEGIN(initimpl)
34
-
35
- inline void no_nullptr(void *ptr) {
36
- if (!ptr) throw type_error("pybind11::init(): factory function returned nullptr");
37
- }
38
-
39
- // Implementing functions for all forms of py::init<...> and py::init(...)
40
- template <typename Class> using Cpp = typename Class::type;
41
- template <typename Class> using Alias = typename Class::type_alias;
42
- template <typename Class> using Holder = typename Class::holder_type;
43
-
44
- template <typename Class> using is_alias_constructible = std::is_constructible<Alias<Class>, Cpp<Class> &&>;
45
-
46
- // Takes a Cpp pointer and returns true if it actually is a polymorphic Alias instance.
47
- template <typename Class, enable_if_t<Class::has_alias, int> = 0>
48
- bool is_alias(Cpp<Class> *ptr) {
49
- return dynamic_cast<Alias<Class> *>(ptr) != nullptr;
50
- }
51
- // Failing fallback version of the above for a no-alias class (always returns false)
52
- template <typename /*Class*/>
53
- constexpr bool is_alias(void *) { return false; }
54
-
55
- // Constructs and returns a new object; if the given arguments don't map to a constructor, we fall
56
- // back to brace aggregate initiailization so that for aggregate initialization can be used with
57
- // py::init, e.g. `py::init<int, int>` to initialize a `struct T { int a; int b; }`. For
58
- // non-aggregate types, we need to use an ordinary T(...) constructor (invoking as `T{...}` usually
59
- // works, but will not do the expected thing when `T` has an `initializer_list<T>` constructor).
60
- template <typename Class, typename... Args, detail::enable_if_t<std::is_constructible<Class, Args...>::value, int> = 0>
61
- inline Class *construct_or_initialize(Args &&...args) { return new Class(std::forward<Args>(args)...); }
62
- template <typename Class, typename... Args, detail::enable_if_t<!std::is_constructible<Class, Args...>::value, int> = 0>
63
- inline Class *construct_or_initialize(Args &&...args) { return new Class{std::forward<Args>(args)...}; }
64
-
65
- // Attempts to constructs an alias using a `Alias(Cpp &&)` constructor. This allows types with
66
- // an alias to provide only a single Cpp factory function as long as the Alias can be
67
- // constructed from an rvalue reference of the base Cpp type. This means that Alias classes
68
- // can, when appropriate, simply define a `Alias(Cpp &&)` constructor rather than needing to
69
- // inherit all the base class constructors.
70
- template <typename Class>
71
- void construct_alias_from_cpp(std::true_type /*is_alias_constructible*/,
72
- value_and_holder &v_h, Cpp<Class> &&base) {
73
- v_h.value_ptr() = new Alias<Class>(std::move(base));
74
- }
75
- template <typename Class>
76
- [[noreturn]] void construct_alias_from_cpp(std::false_type /*!is_alias_constructible*/,
77
- value_and_holder &, Cpp<Class> &&) {
78
- throw type_error("pybind11::init(): unable to convert returned instance to required "
79
- "alias class: no `Alias<Class>(Class &&)` constructor available");
80
- }
81
-
82
- // Error-generating fallback for factories that don't match one of the below construction
83
- // mechanisms.
84
- template <typename Class>
85
- void construct(...) {
86
- static_assert(!std::is_same<Class, Class>::value /* always false */,
87
- "pybind11::init(): init function must return a compatible pointer, "
88
- "holder, or value");
89
- }
90
-
91
- // Pointer return v1: the factory function returns a class pointer for a registered class.
92
- // If we don't need an alias (because this class doesn't have one, or because the final type is
93
- // inherited on the Python side) we can simply take over ownership. Otherwise we need to try to
94
- // construct an Alias from the returned base instance.
95
- template <typename Class>
96
- void construct(value_and_holder &v_h, Cpp<Class> *ptr, bool need_alias) {
97
- PYBIND11_WORKAROUND_INCORRECT_MSVC_C4100(need_alias);
98
- no_nullptr(ptr);
99
- if (PYBIND11_SILENCE_MSVC_C4127(Class::has_alias) && need_alias && !is_alias<Class>(ptr)) {
100
- // We're going to try to construct an alias by moving the cpp type. Whether or not
101
- // that succeeds, we still need to destroy the original cpp pointer (either the
102
- // moved away leftover, if the alias construction works, or the value itself if we
103
- // throw an error), but we can't just call `delete ptr`: it might have a special
104
- // deleter, or might be shared_from_this. So we construct a holder around it as if
105
- // it was a normal instance, then steal the holder away into a local variable; thus
106
- // the holder and destruction happens when we leave the C++ scope, and the holder
107
- // class gets to handle the destruction however it likes.
108
- v_h.value_ptr() = ptr;
109
- v_h.set_instance_registered(true); // To prevent init_instance from registering it
110
- v_h.type->init_instance(v_h.inst, nullptr); // Set up the holder
111
- Holder<Class> temp_holder(std::move(v_h.holder<Holder<Class>>())); // Steal the holder
112
- v_h.type->dealloc(v_h); // Destroys the moved-out holder remains, resets value ptr to null
113
- v_h.set_instance_registered(false);
114
-
115
- construct_alias_from_cpp<Class>(is_alias_constructible<Class>{}, v_h, std::move(*ptr));
116
- } else {
117
- // Otherwise the type isn't inherited, so we don't need an Alias
118
- v_h.value_ptr() = ptr;
119
- }
120
- }
121
-
122
- // Pointer return v2: a factory that always returns an alias instance ptr. We simply take over
123
- // ownership of the pointer.
124
- template <typename Class, enable_if_t<Class::has_alias, int> = 0>
125
- void construct(value_and_holder &v_h, Alias<Class> *alias_ptr, bool) {
126
- no_nullptr(alias_ptr);
127
- v_h.value_ptr() = static_cast<Cpp<Class> *>(alias_ptr);
128
- }
129
-
130
- // Holder return: copy its pointer, and move or copy the returned holder into the new instance's
131
- // holder. This also handles types like std::shared_ptr<T> and std::unique_ptr<T> where T is a
132
- // derived type (through those holder's implicit conversion from derived class holder constructors).
133
- template <typename Class>
134
- void construct(value_and_holder &v_h, Holder<Class> holder, bool need_alias) {
135
- PYBIND11_WORKAROUND_INCORRECT_MSVC_C4100(need_alias);
136
- auto *ptr = holder_helper<Holder<Class>>::get(holder);
137
- no_nullptr(ptr);
138
- // If we need an alias, check that the held pointer is actually an alias instance
139
- if (PYBIND11_SILENCE_MSVC_C4127(Class::has_alias) && need_alias && !is_alias<Class>(ptr))
140
- throw type_error("pybind11::init(): construction failed: returned holder-wrapped instance "
141
- "is not an alias instance");
142
-
143
- v_h.value_ptr() = ptr;
144
- v_h.type->init_instance(v_h.inst, &holder);
145
- }
146
-
147
- // return-by-value version 1: returning a cpp class by value. If the class has an alias and an
148
- // alias is required the alias must have an `Alias(Cpp &&)` constructor so that we can construct
149
- // the alias from the base when needed (i.e. because of Python-side inheritance). When we don't
150
- // need it, we simply move-construct the cpp value into a new instance.
151
- template <typename Class>
152
- void construct(value_and_holder &v_h, Cpp<Class> &&result, bool need_alias) {
153
- PYBIND11_WORKAROUND_INCORRECT_MSVC_C4100(need_alias);
154
- static_assert(std::is_move_constructible<Cpp<Class>>::value,
155
- "pybind11::init() return-by-value factory function requires a movable class");
156
- if (PYBIND11_SILENCE_MSVC_C4127(Class::has_alias) && need_alias)
157
- construct_alias_from_cpp<Class>(is_alias_constructible<Class>{}, v_h, std::move(result));
158
- else
159
- v_h.value_ptr() = new Cpp<Class>(std::move(result));
160
- }
161
-
162
- // return-by-value version 2: returning a value of the alias type itself. We move-construct an
163
- // Alias instance (even if no the python-side inheritance is involved). The is intended for
164
- // cases where Alias initialization is always desired.
165
- template <typename Class>
166
- void construct(value_and_holder &v_h, Alias<Class> &&result, bool) {
167
- static_assert(std::is_move_constructible<Alias<Class>>::value,
168
- "pybind11::init() return-by-alias-value factory function requires a movable alias class");
169
- v_h.value_ptr() = new Alias<Class>(std::move(result));
170
- }
171
-
172
- // Implementing class for py::init<...>()
173
- template <typename... Args>
174
- struct constructor {
175
- template <typename Class, typename... Extra, enable_if_t<!Class::has_alias, int> = 0>
176
- static void execute(Class &cl, const Extra&... extra) {
177
- cl.def("__init__", [](value_and_holder &v_h, Args... args) {
178
- v_h.value_ptr() = construct_or_initialize<Cpp<Class>>(std::forward<Args>(args)...);
179
- }, is_new_style_constructor(), extra...);
180
- }
181
-
182
- template <typename Class, typename... Extra,
183
- enable_if_t<Class::has_alias &&
184
- std::is_constructible<Cpp<Class>, Args...>::value, int> = 0>
185
- static void execute(Class &cl, const Extra&... extra) {
186
- cl.def("__init__", [](value_and_holder &v_h, Args... args) {
187
- if (Py_TYPE(v_h.inst) == v_h.type->type)
188
- v_h.value_ptr() = construct_or_initialize<Cpp<Class>>(std::forward<Args>(args)...);
189
- else
190
- v_h.value_ptr() = construct_or_initialize<Alias<Class>>(std::forward<Args>(args)...);
191
- }, is_new_style_constructor(), extra...);
192
- }
193
-
194
- template <typename Class, typename... Extra,
195
- enable_if_t<Class::has_alias &&
196
- !std::is_constructible<Cpp<Class>, Args...>::value, int> = 0>
197
- static void execute(Class &cl, const Extra&... extra) {
198
- cl.def("__init__", [](value_and_holder &v_h, Args... args) {
199
- v_h.value_ptr() = construct_or_initialize<Alias<Class>>(std::forward<Args>(args)...);
200
- }, is_new_style_constructor(), extra...);
201
- }
202
- };
203
-
204
- // Implementing class for py::init_alias<...>()
205
- template <typename... Args> struct alias_constructor {
206
- template <typename Class, typename... Extra,
207
- enable_if_t<Class::has_alias && std::is_constructible<Alias<Class>, Args...>::value, int> = 0>
208
- static void execute(Class &cl, const Extra&... extra) {
209
- cl.def("__init__", [](value_and_holder &v_h, Args... args) {
210
- v_h.value_ptr() = construct_or_initialize<Alias<Class>>(std::forward<Args>(args)...);
211
- }, is_new_style_constructor(), extra...);
212
- }
213
- };
214
-
215
- // Implementation class for py::init(Func) and py::init(Func, AliasFunc)
216
- template <typename CFunc, typename AFunc = void_type (*)(),
217
- typename = function_signature_t<CFunc>, typename = function_signature_t<AFunc>>
218
- struct factory;
219
-
220
- // Specialization for py::init(Func)
221
- template <typename Func, typename Return, typename... Args>
222
- struct factory<Func, void_type (*)(), Return(Args...)> {
223
- remove_reference_t<Func> class_factory;
224
-
225
- // NOLINTNEXTLINE(google-explicit-constructor)
226
- factory(Func &&f) : class_factory(std::forward<Func>(f)) {}
227
-
228
- // The given class either has no alias or has no separate alias factory;
229
- // this always constructs the class itself. If the class is registered with an alias
230
- // type and an alias instance is needed (i.e. because the final type is a Python class
231
- // inheriting from the C++ type) the returned value needs to either already be an alias
232
- // instance, or the alias needs to be constructible from a `Class &&` argument.
233
- template <typename Class, typename... Extra>
234
- void execute(Class &cl, const Extra &...extra) && {
235
- #if defined(PYBIND11_CPP14)
236
- cl.def("__init__", [func = std::move(class_factory)]
237
- #else
238
- auto &func = class_factory;
239
- cl.def("__init__", [func]
240
- #endif
241
- (value_and_holder &v_h, Args... args) {
242
- construct<Class>(v_h, func(std::forward<Args>(args)...),
243
- Py_TYPE(v_h.inst) != v_h.type->type);
244
- }, is_new_style_constructor(), extra...);
245
- }
246
- };
247
-
248
- // Specialization for py::init(Func, AliasFunc)
249
- template <typename CFunc, typename AFunc,
250
- typename CReturn, typename... CArgs, typename AReturn, typename... AArgs>
251
- struct factory<CFunc, AFunc, CReturn(CArgs...), AReturn(AArgs...)> {
252
- static_assert(sizeof...(CArgs) == sizeof...(AArgs),
253
- "pybind11::init(class_factory, alias_factory): class and alias factories "
254
- "must have identical argument signatures");
255
- static_assert(all_of<std::is_same<CArgs, AArgs>...>::value,
256
- "pybind11::init(class_factory, alias_factory): class and alias factories "
257
- "must have identical argument signatures");
258
-
259
- remove_reference_t<CFunc> class_factory;
260
- remove_reference_t<AFunc> alias_factory;
261
-
262
- factory(CFunc &&c, AFunc &&a)
263
- : class_factory(std::forward<CFunc>(c)), alias_factory(std::forward<AFunc>(a)) { }
264
-
265
- // The class factory is called when the `self` type passed to `__init__` is the direct
266
- // class (i.e. not inherited), the alias factory when `self` is a Python-side subtype.
267
- template <typename Class, typename... Extra>
268
- void execute(Class &cl, const Extra&... extra) && {
269
- static_assert(Class::has_alias, "The two-argument version of `py::init()` can "
270
- "only be used if the class has an alias");
271
- #if defined(PYBIND11_CPP14)
272
- cl.def("__init__", [class_func = std::move(class_factory), alias_func = std::move(alias_factory)]
273
- #else
274
- auto &class_func = class_factory;
275
- auto &alias_func = alias_factory;
276
- cl.def("__init__", [class_func, alias_func]
277
- #endif
278
- (value_and_holder &v_h, CArgs... args) {
279
- if (Py_TYPE(v_h.inst) == v_h.type->type)
280
- // If the instance type equals the registered type we don't have inheritance, so
281
- // don't need the alias and can construct using the class function:
282
- construct<Class>(v_h, class_func(std::forward<CArgs>(args)...), false);
283
- else
284
- construct<Class>(v_h, alias_func(std::forward<CArgs>(args)...), true);
285
- }, is_new_style_constructor(), extra...);
286
- }
287
- };
288
-
289
- /// Set just the C++ state. Same as `__init__`.
290
- template <typename Class, typename T>
291
- void setstate(value_and_holder &v_h, T &&result, bool need_alias) {
292
- construct<Class>(v_h, std::forward<T>(result), need_alias);
293
- }
294
-
295
- /// Set both the C++ and Python states
296
- template <typename Class, typename T, typename O,
297
- enable_if_t<std::is_convertible<O, handle>::value, int> = 0>
298
- void setstate(value_and_holder &v_h, std::pair<T, O> &&result, bool need_alias) {
299
- construct<Class>(v_h, std::move(result.first), need_alias);
300
- auto d = handle(result.second);
301
- if (PyDict_Check(d.ptr()) && PyDict_Size(d.ptr()) == 0) {
302
- // Skipping setattr below, to not force use of py::dynamic_attr() for Class unnecessarily.
303
- // See PR #2972 for details.
304
- return;
305
- }
306
- setattr((PyObject *) v_h.inst, "__dict__", d);
307
- }
308
-
309
- /// Implementation for py::pickle(GetState, SetState)
310
- template <typename Get, typename Set,
311
- typename = function_signature_t<Get>, typename = function_signature_t<Set>>
312
- struct pickle_factory;
313
-
314
- template <typename Get, typename Set,
315
- typename RetState, typename Self, typename NewInstance, typename ArgState>
316
- struct pickle_factory<Get, Set, RetState(Self), NewInstance(ArgState)> {
317
- static_assert(std::is_same<intrinsic_t<RetState>, intrinsic_t<ArgState>>::value,
318
- "The type returned by `__getstate__` must be the same "
319
- "as the argument accepted by `__setstate__`");
320
-
321
- remove_reference_t<Get> get;
322
- remove_reference_t<Set> set;
323
-
324
- pickle_factory(Get get, Set set)
325
- : get(std::forward<Get>(get)), set(std::forward<Set>(set)) { }
326
-
327
- template <typename Class, typename... Extra>
328
- void execute(Class &cl, const Extra &...extra) && {
329
- cl.def("__getstate__", std::move(get));
330
-
331
- #if defined(PYBIND11_CPP14)
332
- cl.def("__setstate__", [func = std::move(set)]
333
- #else
334
- auto &func = set;
335
- cl.def("__setstate__", [func]
336
- #endif
337
- (value_and_holder &v_h, ArgState state) {
338
- setstate<Class>(v_h, func(std::forward<ArgState>(state)),
339
- Py_TYPE(v_h.inst) != v_h.type->type);
340
- }, is_new_style_constructor(), extra...);
341
- }
342
- };
343
-
344
- PYBIND11_NAMESPACE_END(initimpl)
345
- PYBIND11_NAMESPACE_END(detail)
346
- PYBIND11_NAMESPACE_END(pybind11)