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,605 +0,0 @@
1
- /*
2
- pybind11/attr.h: Infrastructure for processing custom
3
- type and function attributes
4
-
5
- Copyright (c) 2016 Wenzel Jakob <wenzel.jakob@epfl.ch>
6
-
7
- All rights reserved. Use of this source code is governed by a
8
- BSD-style license that can be found in the LICENSE file.
9
- */
10
-
11
- #pragma once
12
-
13
- #include "cast.h"
14
-
15
- #include <functional>
16
-
17
- PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE)
18
-
19
- /// \addtogroup annotations
20
- /// @{
21
-
22
- /// Annotation for methods
23
- struct is_method { handle class_;
24
- explicit is_method(const handle &c) : class_(c) {}
25
- };
26
-
27
- /// Annotation for operators
28
- struct is_operator { };
29
-
30
- /// Annotation for classes that cannot be subclassed
31
- struct is_final { };
32
-
33
- /// Annotation for parent scope
34
- struct scope { handle value;
35
- explicit scope(const handle &s) : value(s) {}
36
- };
37
-
38
- /// Annotation for documentation
39
- struct doc { const char *value;
40
- explicit doc(const char *value) : value(value) {}
41
- };
42
-
43
- /// Annotation for function names
44
- struct name { const char *value;
45
- explicit name(const char *value) : value(value) {}
46
- };
47
-
48
- /// Annotation indicating that a function is an overload associated with a given "sibling"
49
- struct sibling { handle value;
50
- explicit sibling(const handle &value) : value(value.ptr()) {}
51
- };
52
-
53
- /// Annotation indicating that a class derives from another given type
54
- template <typename T> struct base {
55
-
56
- PYBIND11_DEPRECATED("base<T>() was deprecated in favor of specifying 'T' as a template argument to class_")
57
- base() { } // NOLINT(modernize-use-equals-default): breaks MSVC 2015 when adding an attribute
58
- };
59
-
60
- /// Keep patient alive while nurse lives
61
- template <size_t Nurse, size_t Patient> struct keep_alive { };
62
-
63
- /// Annotation indicating that a class is involved in a multiple inheritance relationship
64
- struct multiple_inheritance { };
65
-
66
- /// Annotation which enables dynamic attributes, i.e. adds `__dict__` to a class
67
- struct dynamic_attr { };
68
-
69
- /// Annotation which enables the buffer protocol for a type
70
- struct buffer_protocol { };
71
-
72
- /// Annotation which requests that a special metaclass is created for a type
73
- struct metaclass {
74
- handle value;
75
-
76
- PYBIND11_DEPRECATED("py::metaclass() is no longer required. It's turned on by default now.")
77
- // NOLINTNEXTLINE(modernize-use-equals-default): breaks MSVC 2015 when adding an attribute
78
- metaclass() {}
79
-
80
- /// Override pybind11's default metaclass
81
- explicit metaclass(handle value) : value(value) { }
82
- };
83
-
84
- /// Specifies a custom callback with signature `void (PyHeapTypeObject*)` that
85
- /// may be used to customize the Python type.
86
- ///
87
- /// The callback is invoked immediately before `PyType_Ready`.
88
- ///
89
- /// Note: This is an advanced interface, and uses of it may require changes to
90
- /// work with later versions of pybind11. You may wish to consult the
91
- /// implementation of `make_new_python_type` in `detail/classes.h` to understand
92
- /// the context in which the callback will be run.
93
- struct custom_type_setup {
94
- using callback = std::function<void(PyHeapTypeObject *heap_type)>;
95
-
96
- explicit custom_type_setup(callback value) : value(std::move(value)) {}
97
-
98
- callback value;
99
- };
100
-
101
- /// Annotation that marks a class as local to the module:
102
- struct module_local { const bool value;
103
- constexpr explicit module_local(bool v = true) : value(v) {}
104
- };
105
-
106
- /// Annotation to mark enums as an arithmetic type
107
- struct arithmetic { };
108
-
109
- /// Mark a function for addition at the beginning of the existing overload chain instead of the end
110
- struct prepend { };
111
-
112
- /** \rst
113
- A call policy which places one or more guard variables (``Ts...``) around the function call.
114
-
115
- For example, this definition:
116
-
117
- .. code-block:: cpp
118
-
119
- m.def("foo", foo, py::call_guard<T>());
120
-
121
- is equivalent to the following pseudocode:
122
-
123
- .. code-block:: cpp
124
-
125
- m.def("foo", [](args...) {
126
- T scope_guard;
127
- return foo(args...); // forwarded arguments
128
- });
129
- \endrst */
130
- template <typename... Ts> struct call_guard;
131
-
132
- template <> struct call_guard<> { using type = detail::void_type; };
133
-
134
- template <typename T>
135
- struct call_guard<T> {
136
- static_assert(std::is_default_constructible<T>::value,
137
- "The guard type must be default constructible");
138
-
139
- using type = T;
140
- };
141
-
142
- template <typename T, typename... Ts>
143
- struct call_guard<T, Ts...> {
144
- struct type {
145
- T guard{}; // Compose multiple guard types with left-to-right default-constructor order
146
- typename call_guard<Ts...>::type next{};
147
- };
148
- };
149
-
150
- /// @} annotations
151
-
152
- PYBIND11_NAMESPACE_BEGIN(detail)
153
- /* Forward declarations */
154
- enum op_id : int;
155
- enum op_type : int;
156
- struct undefined_t;
157
- template <op_id id, op_type ot, typename L = undefined_t, typename R = undefined_t> struct op_;
158
- void keep_alive_impl(size_t Nurse, size_t Patient, function_call &call, handle ret);
159
-
160
- /// Internal data structure which holds metadata about a keyword argument
161
- struct argument_record {
162
- const char *name; ///< Argument name
163
- const char *descr; ///< Human-readable version of the argument value
164
- handle value; ///< Associated Python object
165
- bool convert : 1; ///< True if the argument is allowed to convert when loading
166
- bool none : 1; ///< True if None is allowed when loading
167
-
168
- argument_record(const char *name, const char *descr, handle value, bool convert, bool none)
169
- : name(name), descr(descr), value(value), convert(convert), none(none) { }
170
- };
171
-
172
- /// Internal data structure which holds metadata about a bound function (signature, overloads, etc.)
173
- struct function_record {
174
- function_record()
175
- : is_constructor(false), is_new_style_constructor(false), is_stateless(false),
176
- is_operator(false), is_method(false), has_args(false),
177
- has_kwargs(false), has_kw_only_args(false), prepend(false) { }
178
-
179
- /// Function name
180
- char *name = nullptr; /* why no C++ strings? They generate heavier code.. */
181
-
182
- // User-specified documentation string
183
- char *doc = nullptr;
184
-
185
- /// Human-readable version of the function signature
186
- char *signature = nullptr;
187
-
188
- /// List of registered keyword arguments
189
- std::vector<argument_record> args;
190
-
191
- /// Pointer to lambda function which converts arguments and performs the actual call
192
- handle (*impl) (function_call &) = nullptr;
193
-
194
- /// Storage for the wrapped function pointer and captured data, if any
195
- void *data[3] = { };
196
-
197
- /// Pointer to custom destructor for 'data' (if needed)
198
- void (*free_data) (function_record *ptr) = nullptr;
199
-
200
- /// Return value policy associated with this function
201
- return_value_policy policy = return_value_policy::automatic;
202
-
203
- /// True if name == '__init__'
204
- bool is_constructor : 1;
205
-
206
- /// True if this is a new-style `__init__` defined in `detail/init.h`
207
- bool is_new_style_constructor : 1;
208
-
209
- /// True if this is a stateless function pointer
210
- bool is_stateless : 1;
211
-
212
- /// True if this is an operator (__add__), etc.
213
- bool is_operator : 1;
214
-
215
- /// True if this is a method
216
- bool is_method : 1;
217
-
218
- /// True if the function has a '*args' argument
219
- bool has_args : 1;
220
-
221
- /// True if the function has a '**kwargs' argument
222
- bool has_kwargs : 1;
223
-
224
- /// True once a 'py::kw_only' is encountered (any following args are keyword-only)
225
- bool has_kw_only_args : 1;
226
-
227
- /// True if this function is to be inserted at the beginning of the overload resolution chain
228
- bool prepend : 1;
229
-
230
- /// Number of arguments (including py::args and/or py::kwargs, if present)
231
- std::uint16_t nargs;
232
-
233
- /// Number of trailing arguments (counted in `nargs`) that are keyword-only
234
- std::uint16_t nargs_kw_only = 0;
235
-
236
- /// Number of leading arguments (counted in `nargs`) that are positional-only
237
- std::uint16_t nargs_pos_only = 0;
238
-
239
- /// Python method object
240
- PyMethodDef *def = nullptr;
241
-
242
- /// Python handle to the parent scope (a class or a module)
243
- handle scope;
244
-
245
- /// Python handle to the sibling function representing an overload chain
246
- handle sibling;
247
-
248
- /// Pointer to next overload
249
- function_record *next = nullptr;
250
- };
251
-
252
- /// Special data structure which (temporarily) holds metadata about a bound class
253
- struct type_record {
254
- PYBIND11_NOINLINE type_record()
255
- : multiple_inheritance(false), dynamic_attr(false), buffer_protocol(false),
256
- default_holder(true), module_local(false), is_final(false) { }
257
-
258
- /// Handle to the parent scope
259
- handle scope;
260
-
261
- /// Name of the class
262
- const char *name = nullptr;
263
-
264
- // Pointer to RTTI type_info data structure
265
- const std::type_info *type = nullptr;
266
-
267
- /// How large is the underlying C++ type?
268
- size_t type_size = 0;
269
-
270
- /// What is the alignment of the underlying C++ type?
271
- size_t type_align = 0;
272
-
273
- /// How large is the type's holder?
274
- size_t holder_size = 0;
275
-
276
- /// The global operator new can be overridden with a class-specific variant
277
- void *(*operator_new)(size_t) = nullptr;
278
-
279
- /// Function pointer to class_<..>::init_instance
280
- void (*init_instance)(instance *, const void *) = nullptr;
281
-
282
- /// Function pointer to class_<..>::dealloc
283
- void (*dealloc)(detail::value_and_holder &) = nullptr;
284
-
285
- /// List of base classes of the newly created type
286
- list bases;
287
-
288
- /// Optional docstring
289
- const char *doc = nullptr;
290
-
291
- /// Custom metaclass (optional)
292
- handle metaclass;
293
-
294
- /// Custom type setup.
295
- custom_type_setup::callback custom_type_setup_callback;
296
-
297
- /// Multiple inheritance marker
298
- bool multiple_inheritance : 1;
299
-
300
- /// Does the class manage a __dict__?
301
- bool dynamic_attr : 1;
302
-
303
- /// Does the class implement the buffer protocol?
304
- bool buffer_protocol : 1;
305
-
306
- /// Is the default (unique_ptr) holder type used?
307
- bool default_holder : 1;
308
-
309
- /// Is the class definition local to the module shared object?
310
- bool module_local : 1;
311
-
312
- /// Is the class inheritable from python classes?
313
- bool is_final : 1;
314
-
315
- PYBIND11_NOINLINE void add_base(const std::type_info &base, void *(*caster)(void *)) {
316
- auto base_info = detail::get_type_info(base, false);
317
- if (!base_info) {
318
- std::string tname(base.name());
319
- detail::clean_type_id(tname);
320
- pybind11_fail("generic_type: type \"" + std::string(name) +
321
- "\" referenced unknown base type \"" + tname + "\"");
322
- }
323
-
324
- if (default_holder != base_info->default_holder) {
325
- std::string tname(base.name());
326
- detail::clean_type_id(tname);
327
- pybind11_fail("generic_type: type \"" + std::string(name) + "\" " +
328
- (default_holder ? "does not have" : "has") +
329
- " a non-default holder type while its base \"" + tname + "\" " +
330
- (base_info->default_holder ? "does not" : "does"));
331
- }
332
-
333
- bases.append((PyObject *) base_info->type);
334
-
335
- if (base_info->type->tp_dictoffset != 0)
336
- dynamic_attr = true;
337
-
338
- if (caster)
339
- base_info->implicit_casts.emplace_back(type, caster);
340
- }
341
- };
342
-
343
- inline function_call::function_call(const function_record &f, handle p) :
344
- func(f), parent(p) {
345
- args.reserve(f.nargs);
346
- args_convert.reserve(f.nargs);
347
- }
348
-
349
- /// Tag for a new-style `__init__` defined in `detail/init.h`
350
- struct is_new_style_constructor { };
351
-
352
- /**
353
- * Partial template specializations to process custom attributes provided to
354
- * cpp_function_ and class_. These are either used to initialize the respective
355
- * fields in the type_record and function_record data structures or executed at
356
- * runtime to deal with custom call policies (e.g. keep_alive).
357
- */
358
- template <typename T, typename SFINAE = void> struct process_attribute;
359
-
360
- template <typename T> struct process_attribute_default {
361
- /// Default implementation: do nothing
362
- static void init(const T &, function_record *) { }
363
- static void init(const T &, type_record *) { }
364
- static void precall(function_call &) { }
365
- static void postcall(function_call &, handle) { }
366
- };
367
-
368
- /// Process an attribute specifying the function's name
369
- template <> struct process_attribute<name> : process_attribute_default<name> {
370
- static void init(const name &n, function_record *r) { r->name = const_cast<char *>(n.value); }
371
- };
372
-
373
- /// Process an attribute specifying the function's docstring
374
- template <> struct process_attribute<doc> : process_attribute_default<doc> {
375
- static void init(const doc &n, function_record *r) { r->doc = const_cast<char *>(n.value); }
376
- };
377
-
378
- /// Process an attribute specifying the function's docstring (provided as a C-style string)
379
- template <> struct process_attribute<const char *> : process_attribute_default<const char *> {
380
- static void init(const char *d, function_record *r) { r->doc = const_cast<char *>(d); }
381
- static void init(const char *d, type_record *r) { r->doc = const_cast<char *>(d); }
382
- };
383
- template <> struct process_attribute<char *> : process_attribute<const char *> { };
384
-
385
- /// Process an attribute indicating the function's return value policy
386
- template <> struct process_attribute<return_value_policy> : process_attribute_default<return_value_policy> {
387
- static void init(const return_value_policy &p, function_record *r) { r->policy = p; }
388
- };
389
-
390
- /// Process an attribute which indicates that this is an overloaded function associated with a given sibling
391
- template <> struct process_attribute<sibling> : process_attribute_default<sibling> {
392
- static void init(const sibling &s, function_record *r) { r->sibling = s.value; }
393
- };
394
-
395
- /// Process an attribute which indicates that this function is a method
396
- template <> struct process_attribute<is_method> : process_attribute_default<is_method> {
397
- static void init(const is_method &s, function_record *r) { r->is_method = true; r->scope = s.class_; }
398
- };
399
-
400
- /// Process an attribute which indicates the parent scope of a method
401
- template <> struct process_attribute<scope> : process_attribute_default<scope> {
402
- static void init(const scope &s, function_record *r) { r->scope = s.value; }
403
- };
404
-
405
- /// Process an attribute which indicates that this function is an operator
406
- template <> struct process_attribute<is_operator> : process_attribute_default<is_operator> {
407
- static void init(const is_operator &, function_record *r) { r->is_operator = true; }
408
- };
409
-
410
- template <> struct process_attribute<is_new_style_constructor> : process_attribute_default<is_new_style_constructor> {
411
- static void init(const is_new_style_constructor &, function_record *r) { r->is_new_style_constructor = true; }
412
- };
413
-
414
- inline void process_kw_only_arg(const arg &a, function_record *r) {
415
- if (!a.name || a.name[0] == '\0')
416
- pybind11_fail("arg(): cannot specify an unnamed argument after an kw_only() annotation");
417
- ++r->nargs_kw_only;
418
- }
419
-
420
- /// Process a keyword argument attribute (*without* a default value)
421
- template <> struct process_attribute<arg> : process_attribute_default<arg> {
422
- static void init(const arg &a, function_record *r) {
423
- if (r->is_method && r->args.empty())
424
- r->args.emplace_back("self", nullptr, handle(), true /*convert*/, false /*none not allowed*/);
425
- r->args.emplace_back(a.name, nullptr, handle(), !a.flag_noconvert, a.flag_none);
426
-
427
- if (r->has_kw_only_args) process_kw_only_arg(a, r);
428
- }
429
- };
430
-
431
- /// Process a keyword argument attribute (*with* a default value)
432
- template <> struct process_attribute<arg_v> : process_attribute_default<arg_v> {
433
- static void init(const arg_v &a, function_record *r) {
434
- if (r->is_method && r->args.empty())
435
- r->args.emplace_back("self", nullptr /*descr*/, handle() /*parent*/, true /*convert*/, false /*none not allowed*/);
436
-
437
- if (!a.value) {
438
- #if !defined(NDEBUG)
439
- std::string descr("'");
440
- if (a.name) descr += std::string(a.name) + ": ";
441
- descr += a.type + "'";
442
- if (r->is_method) {
443
- if (r->name)
444
- descr += " in method '" + (std::string) str(r->scope) + "." + (std::string) r->name + "'";
445
- else
446
- descr += " in method of '" + (std::string) str(r->scope) + "'";
447
- } else if (r->name) {
448
- descr += " in function '" + (std::string) r->name + "'";
449
- }
450
- pybind11_fail("arg(): could not convert default argument "
451
- + descr + " into a Python object (type not registered yet?)");
452
- #else
453
- pybind11_fail("arg(): could not convert default argument "
454
- "into a Python object (type not registered yet?). "
455
- "Compile in debug mode for more information.");
456
- #endif
457
- }
458
- r->args.emplace_back(a.name, a.descr, a.value.inc_ref(), !a.flag_noconvert, a.flag_none);
459
-
460
- if (r->has_kw_only_args) process_kw_only_arg(a, r);
461
- }
462
- };
463
-
464
- /// Process a keyword-only-arguments-follow pseudo argument
465
- template <> struct process_attribute<kw_only> : process_attribute_default<kw_only> {
466
- static void init(const kw_only &, function_record *r) {
467
- r->has_kw_only_args = true;
468
- }
469
- };
470
-
471
- /// Process a positional-only-argument maker
472
- template <> struct process_attribute<pos_only> : process_attribute_default<pos_only> {
473
- static void init(const pos_only &, function_record *r) {
474
- r->nargs_pos_only = static_cast<std::uint16_t>(r->args.size());
475
- }
476
- };
477
-
478
- /// Process a parent class attribute. Single inheritance only (class_ itself already guarantees that)
479
- template <typename T>
480
- struct process_attribute<T, enable_if_t<is_pyobject<T>::value>> : process_attribute_default<handle> {
481
- static void init(const handle &h, type_record *r) { r->bases.append(h); }
482
- };
483
-
484
- /// Process a parent class attribute (deprecated, does not support multiple inheritance)
485
- template <typename T>
486
- struct process_attribute<base<T>> : process_attribute_default<base<T>> {
487
- static void init(const base<T> &, type_record *r) { r->add_base(typeid(T), nullptr); }
488
- };
489
-
490
- /// Process a multiple inheritance attribute
491
- template <>
492
- struct process_attribute<multiple_inheritance> : process_attribute_default<multiple_inheritance> {
493
- static void init(const multiple_inheritance &, type_record *r) { r->multiple_inheritance = true; }
494
- };
495
-
496
- template <>
497
- struct process_attribute<dynamic_attr> : process_attribute_default<dynamic_attr> {
498
- static void init(const dynamic_attr &, type_record *r) { r->dynamic_attr = true; }
499
- };
500
-
501
- template <>
502
- struct process_attribute<custom_type_setup> {
503
- static void init(const custom_type_setup &value, type_record *r) {
504
- r->custom_type_setup_callback = value.value;
505
- }
506
- };
507
-
508
- template <>
509
- struct process_attribute<is_final> : process_attribute_default<is_final> {
510
- static void init(const is_final &, type_record *r) { r->is_final = true; }
511
- };
512
-
513
- template <>
514
- struct process_attribute<buffer_protocol> : process_attribute_default<buffer_protocol> {
515
- static void init(const buffer_protocol &, type_record *r) { r->buffer_protocol = true; }
516
- };
517
-
518
- template <>
519
- struct process_attribute<metaclass> : process_attribute_default<metaclass> {
520
- static void init(const metaclass &m, type_record *r) { r->metaclass = m.value; }
521
- };
522
-
523
- template <>
524
- struct process_attribute<module_local> : process_attribute_default<module_local> {
525
- static void init(const module_local &l, type_record *r) { r->module_local = l.value; }
526
- };
527
-
528
- /// Process a 'prepend' attribute, putting this at the beginning of the overload chain
529
- template <>
530
- struct process_attribute<prepend> : process_attribute_default<prepend> {
531
- static void init(const prepend &, function_record *r) { r->prepend = true; }
532
- };
533
-
534
- /// Process an 'arithmetic' attribute for enums (does nothing here)
535
- template <>
536
- struct process_attribute<arithmetic> : process_attribute_default<arithmetic> {};
537
-
538
- template <typename... Ts>
539
- struct process_attribute<call_guard<Ts...>> : process_attribute_default<call_guard<Ts...>> { };
540
-
541
- /**
542
- * Process a keep_alive call policy -- invokes keep_alive_impl during the
543
- * pre-call handler if both Nurse, Patient != 0 and use the post-call handler
544
- * otherwise
545
- */
546
- template <size_t Nurse, size_t Patient> struct process_attribute<keep_alive<Nurse, Patient>> : public process_attribute_default<keep_alive<Nurse, Patient>> {
547
- template <size_t N = Nurse, size_t P = Patient, enable_if_t<N != 0 && P != 0, int> = 0>
548
- static void precall(function_call &call) { keep_alive_impl(Nurse, Patient, call, handle()); }
549
- template <size_t N = Nurse, size_t P = Patient, enable_if_t<N != 0 && P != 0, int> = 0>
550
- static void postcall(function_call &, handle) { }
551
- template <size_t N = Nurse, size_t P = Patient, enable_if_t<N == 0 || P == 0, int> = 0>
552
- static void precall(function_call &) { }
553
- template <size_t N = Nurse, size_t P = Patient, enable_if_t<N == 0 || P == 0, int> = 0>
554
- static void postcall(function_call &call, handle ret) { keep_alive_impl(Nurse, Patient, call, ret); }
555
- };
556
-
557
- /// Recursively iterate over variadic template arguments
558
- template <typename... Args> struct process_attributes {
559
- static void init(const Args&... args, function_record *r) {
560
- PYBIND11_WORKAROUND_INCORRECT_MSVC_C4100(r);
561
- PYBIND11_WORKAROUND_INCORRECT_GCC_UNUSED_BUT_SET_PARAMETER(r);
562
- using expander = int[];
563
- (void) expander{
564
- 0, ((void) process_attribute<typename std::decay<Args>::type>::init(args, r), 0)...};
565
- }
566
- static void init(const Args&... args, type_record *r) {
567
- PYBIND11_WORKAROUND_INCORRECT_MSVC_C4100(r);
568
- PYBIND11_WORKAROUND_INCORRECT_GCC_UNUSED_BUT_SET_PARAMETER(r);
569
- using expander = int[];
570
- (void) expander{0,
571
- (process_attribute<typename std::decay<Args>::type>::init(args, r), 0)...};
572
- }
573
- static void precall(function_call &call) {
574
- PYBIND11_WORKAROUND_INCORRECT_MSVC_C4100(call);
575
- using expander = int[];
576
- (void) expander{0,
577
- (process_attribute<typename std::decay<Args>::type>::precall(call), 0)...};
578
- }
579
- static void postcall(function_call &call, handle fn_ret) {
580
- PYBIND11_WORKAROUND_INCORRECT_MSVC_C4100(call, fn_ret);
581
- PYBIND11_WORKAROUND_INCORRECT_GCC_UNUSED_BUT_SET_PARAMETER(fn_ret);
582
- using expander = int[];
583
- (void) expander{
584
- 0, (process_attribute<typename std::decay<Args>::type>::postcall(call, fn_ret), 0)...};
585
- }
586
- };
587
-
588
- template <typename T>
589
- using is_call_guard = is_instantiation<call_guard, T>;
590
-
591
- /// Extract the ``type`` from the first `call_guard` in `Extras...` (or `void_type` if none found)
592
- template <typename... Extra>
593
- using extract_guard_t = typename exactly_one_t<is_call_guard, call_guard<>, Extra...>::type;
594
-
595
- /// Check the number of named arguments at compile time
596
- template <typename... Extra,
597
- size_t named = constexpr_sum(std::is_base_of<arg, Extra>::value...),
598
- size_t self = constexpr_sum(std::is_same<is_method, Extra>::value...)>
599
- constexpr bool expected_num_args(size_t nargs, bool has_args, bool has_kwargs) {
600
- PYBIND11_WORKAROUND_INCORRECT_MSVC_C4100(nargs, has_args, has_kwargs);
601
- return named == 0 || (self + named + size_t(has_args) + size_t(has_kwargs)) == nargs;
602
- }
603
-
604
- PYBIND11_NAMESPACE_END(detail)
605
- PYBIND11_NAMESPACE_END(PYBIND11_NAMESPACE)