xcoll 0.5.11__py3-none-any.whl → 0.6.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (333) hide show
  1. xcoll/__init__.py +5 -18
  2. xcoll/beam_elements/__init__.py +1 -0
  3. xcoll/beam_elements/absorber.py +12 -2
  4. xcoll/beam_elements/base.py +162 -62
  5. xcoll/beam_elements/blowup.py +1 -0
  6. xcoll/beam_elements/elements_src/black_absorber.h +57 -58
  7. xcoll/beam_elements/elements_src/black_crystal.h +49 -50
  8. xcoll/beam_elements/elements_src/everest_block.h +21 -11
  9. xcoll/beam_elements/elements_src/everest_collimator.h +100 -91
  10. xcoll/beam_elements/elements_src/everest_crystal.h +145 -140
  11. xcoll/beam_elements/elements_src/transparent_collimator.h +126 -0
  12. xcoll/beam_elements/elements_src/transparent_crystal.h +118 -0
  13. xcoll/beam_elements/everest.py +16 -5
  14. xcoll/beam_elements/monitor.py +1 -0
  15. xcoll/beam_elements/transparent.py +83 -0
  16. xcoll/colldb.py +15 -6
  17. xcoll/general.py +1 -1
  18. xcoll/headers/particle_states.py +51 -0
  19. xcoll/initial_distribution.py +129 -103
  20. xcoll/interaction_record/interaction_record.py +2 -1
  21. xcoll/interaction_record/interaction_types.py +2 -2
  22. xcoll/line_tools.py +163 -74
  23. xcoll/lossmap.py +519 -127
  24. xcoll/plot.py +109 -0
  25. xcoll/rf_sweep.py +6 -0
  26. xcoll/scattering_routines/engine.py +600 -0
  27. xcoll/scattering_routines/environment.py +297 -0
  28. xcoll/scattering_routines/everest/amorphous.h +95 -71
  29. xcoll/scattering_routines/everest/{channeling.h → channelling.h} +121 -112
  30. xcoll/scattering_routines/everest/constants.h +1 -1
  31. xcoll/scattering_routines/everest/crystal_parameters.h +9 -9
  32. xcoll/scattering_routines/everest/everest.h +8 -3
  33. xcoll/scattering_routines/everest/everest.py +2 -1
  34. xcoll/scattering_routines/everest/ionisation_loss.h +141 -0
  35. xcoll/scattering_routines/everest/jaw.h +19 -24
  36. xcoll/scattering_routines/everest/materials.py +2 -0
  37. xcoll/scattering_routines/everest/multiple_coulomb_scattering.h +2 -2
  38. xcoll/scattering_routines/everest/nuclear_interaction.h +35 -19
  39. xcoll/scattering_routines/everest/properties.h +4 -73
  40. xcoll/xaux.py +73 -0
  41. {xcoll-0.5.11.dist-info → xcoll-0.6.0.dist-info}/METADATA +5 -5
  42. xcoll-0.6.0.dist-info/RECORD +135 -0
  43. xcoll/_manager.py +0 -22
  44. xcoll/headers/particle_states.h +0 -25
  45. xcoll/install.py +0 -35
  46. xcoll/scattering_routines/geant4/collimasim/.git +0 -1
  47. xcoll/scattering_routines/geant4/collimasim/.gitignore +0 -12
  48. xcoll/scattering_routines/geant4/collimasim/.gitmodules +0 -3
  49. xcoll/scattering_routines/geant4/collimasim/CMakeLists.txt +0 -26
  50. xcoll/scattering_routines/geant4/collimasim/README.md +0 -21
  51. xcoll/scattering_routines/geant4/collimasim/docs/Makefile +0 -20
  52. xcoll/scattering_routines/geant4/collimasim/docs/make.bat +0 -35
  53. xcoll/scattering_routines/geant4/collimasim/docs/source/collimasim.rst +0 -10
  54. xcoll/scattering_routines/geant4/collimasim/docs/source/conf.py +0 -59
  55. xcoll/scattering_routines/geant4/collimasim/docs/source/index.rst +0 -26
  56. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.appveyor.yml +0 -37
  57. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.clang-format +0 -19
  58. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.clang-tidy +0 -65
  59. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.cmake-format.yaml +0 -73
  60. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.git +0 -1
  61. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/CODEOWNERS +0 -9
  62. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/CONTRIBUTING.md +0 -386
  63. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/ISSUE_TEMPLATE/bug-report.yml +0 -45
  64. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/ISSUE_TEMPLATE/config.yml +0 -8
  65. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/dependabot.yml +0 -16
  66. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/labeler.yml +0 -8
  67. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/labeler_merged.yml +0 -3
  68. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/pull_request_template.md +0 -19
  69. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/ci.yml +0 -969
  70. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/configure.yml +0 -84
  71. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/format.yml +0 -48
  72. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/labeler.yml +0 -16
  73. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/pip.yml +0 -103
  74. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.gitignore +0 -45
  75. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.pre-commit-config.yaml +0 -151
  76. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.readthedocs.yml +0 -3
  77. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/CMakeLists.txt +0 -297
  78. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/LICENSE +0 -29
  79. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/MANIFEST.in +0 -6
  80. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/README.rst +0 -180
  81. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/Doxyfile +0 -23
  82. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/Makefile +0 -192
  83. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/_static/theme_overrides.css +0 -11
  84. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/chrono.rst +0 -81
  85. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/custom.rst +0 -93
  86. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/eigen.rst +0 -310
  87. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/functional.rst +0 -109
  88. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/index.rst +0 -43
  89. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/overview.rst +0 -171
  90. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/stl.rst +0 -251
  91. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/strings.rst +0 -305
  92. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/classes.rst +0 -1297
  93. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/embedding.rst +0 -262
  94. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/exceptions.rst +0 -396
  95. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/functions.rst +0 -568
  96. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/misc.rst +0 -337
  97. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/index.rst +0 -13
  98. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/numpy.rst +0 -463
  99. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/object.rst +0 -286
  100. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/utilities.rst +0 -155
  101. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/smart_ptrs.rst +0 -174
  102. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/basics.rst +0 -308
  103. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/benchmark.py +0 -91
  104. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/benchmark.rst +0 -95
  105. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/changelog.rst +0 -2050
  106. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/classes.rst +0 -542
  107. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/cmake/index.rst +0 -8
  108. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/compiling.rst +0 -648
  109. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/conf.py +0 -381
  110. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/faq.rst +0 -343
  111. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/index.rst +0 -48
  112. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/installing.rst +0 -105
  113. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/limitations.rst +0 -72
  114. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11-logo.png +0 -0
  115. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python1.png +0 -0
  116. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python1.svg +0 -427
  117. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python2.png +0 -0
  118. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python2.svg +0 -427
  119. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/reference.rst +0 -130
  120. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/release.rst +0 -96
  121. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/requirements.txt +0 -8
  122. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/upgrade.rst +0 -548
  123. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/attr.h +0 -605
  124. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/buffer_info.h +0 -144
  125. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/cast.h +0 -1432
  126. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/chrono.h +0 -213
  127. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/common.h +0 -2
  128. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/complex.h +0 -65
  129. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/class.h +0 -709
  130. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/common.h +0 -1021
  131. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/descr.h +0 -104
  132. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/init.h +0 -346
  133. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/internals.h +0 -467
  134. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/type_caster_base.h +0 -978
  135. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/typeid.h +0 -55
  136. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/eigen.h +0 -606
  137. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/embed.h +0 -284
  138. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/eval.h +0 -163
  139. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/functional.h +0 -121
  140. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/gil.h +0 -193
  141. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/iostream.h +0 -275
  142. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/numpy.h +0 -1741
  143. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/operators.h +0 -163
  144. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/options.h +0 -65
  145. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/pybind11.h +0 -2497
  146. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/pytypes.h +0 -1879
  147. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl/filesystem.h +0 -103
  148. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl.h +0 -375
  149. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl_bind.h +0 -747
  150. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/noxfile.py +0 -88
  151. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/__init__.py +0 -11
  152. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/__main__.py +0 -52
  153. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/_version.py +0 -12
  154. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/_version.pyi +0 -6
  155. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/commands.py +0 -21
  156. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/py.typed +0 -0
  157. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/setup_helpers.py +0 -482
  158. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/setup_helpers.pyi +0 -63
  159. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pyproject.toml +0 -41
  160. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/setup.cfg +0 -56
  161. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/setup.py +0 -155
  162. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/CMakeLists.txt +0 -503
  163. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/conftest.py +0 -208
  164. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/constructor_stats.h +0 -275
  165. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/cross_module_gil_utils.cpp +0 -73
  166. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/env.py +0 -33
  167. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_python_package/pytest.ini +0 -0
  168. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_python_package/test_files.py +0 -279
  169. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_setuptools/pytest.ini +0 -0
  170. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_setuptools/test_setuphelper.py +0 -143
  171. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/local_bindings.h +0 -85
  172. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/object.h +0 -179
  173. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_cross_module_tests.cpp +0 -151
  174. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_tests.cpp +0 -91
  175. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_tests.h +0 -85
  176. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pytest.ini +0 -19
  177. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/requirements.txt +0 -12
  178. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_async.cpp +0 -26
  179. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_async.py +0 -25
  180. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_buffers.cpp +0 -216
  181. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_buffers.py +0 -163
  182. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_builtin_casters.cpp +0 -286
  183. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_builtin_casters.py +0 -536
  184. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_call_policies.cpp +0 -107
  185. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_call_policies.py +0 -248
  186. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_callbacks.cpp +0 -227
  187. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_callbacks.py +0 -202
  188. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_chrono.cpp +0 -84
  189. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_chrono.py +0 -210
  190. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_class.cpp +0 -550
  191. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_class.py +0 -473
  192. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/CMakeLists.txt +0 -84
  193. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/embed.cpp +0 -21
  194. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_embed/CMakeLists.txt +0 -28
  195. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_function/CMakeLists.txt +0 -39
  196. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_target/CMakeLists.txt +0 -46
  197. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/main.cpp +0 -6
  198. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_embed/CMakeLists.txt +0 -41
  199. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_function/CMakeLists.txt +0 -35
  200. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_target/CMakeLists.txt +0 -41
  201. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/test.py +0 -10
  202. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_constants_and_functions.cpp +0 -165
  203. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_constants_and_functions.py +0 -53
  204. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_copy_move.cpp +0 -238
  205. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_copy_move.py +0 -126
  206. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_casters.cpp +0 -141
  207. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_casters.py +0 -117
  208. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_setup.cpp +0 -41
  209. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_setup.py +0 -50
  210. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_docstring_options.cpp +0 -69
  211. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_docstring_options.py +0 -42
  212. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eigen.cpp +0 -348
  213. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eigen.py +0 -771
  214. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/CMakeLists.txt +0 -47
  215. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/catch.cpp +0 -22
  216. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/external_module.cpp +0 -23
  217. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/test_interpreter.cpp +0 -326
  218. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/test_interpreter.py +0 -15
  219. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_enum.cpp +0 -148
  220. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_enum.py +0 -272
  221. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval.cpp +0 -119
  222. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval.py +0 -51
  223. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval_call.py +0 -5
  224. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.cpp +0 -285
  225. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.h +0 -12
  226. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.py +0 -265
  227. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_factory_constructors.cpp +0 -397
  228. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_factory_constructors.py +0 -520
  229. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_gil_scoped.cpp +0 -49
  230. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_gil_scoped.py +0 -94
  231. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_iostream.cpp +0 -125
  232. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_iostream.py +0 -331
  233. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_kwargs_and_defaults.cpp +0 -153
  234. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_kwargs_and_defaults.py +0 -284
  235. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_local_bindings.cpp +0 -107
  236. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_local_bindings.py +0 -257
  237. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_methods_and_attributes.cpp +0 -412
  238. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_methods_and_attributes.py +0 -517
  239. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_modules.cpp +0 -102
  240. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_modules.py +0 -92
  241. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_multiple_inheritance.cpp +0 -233
  242. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_multiple_inheritance.py +0 -360
  243. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_array.cpp +0 -472
  244. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_array.py +0 -593
  245. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_dtypes.cpp +0 -524
  246. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_dtypes.py +0 -441
  247. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_vectorize.cpp +0 -103
  248. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_vectorize.py +0 -267
  249. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_opaque_types.cpp +0 -73
  250. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_opaque_types.py +0 -59
  251. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_operator_overloading.cpp +0 -235
  252. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_operator_overloading.py +0 -146
  253. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pickling.cpp +0 -189
  254. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pickling.py +0 -82
  255. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pytypes.cpp +0 -560
  256. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pytypes.py +0 -651
  257. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_sequences_and_iterators.cpp +0 -500
  258. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_sequences_and_iterators.py +0 -253
  259. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_smart_ptr.cpp +0 -452
  260. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_smart_ptr.py +0 -318
  261. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl.cpp +0 -342
  262. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl.py +0 -291
  263. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl_binders.cpp +0 -131
  264. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl_binders.py +0 -318
  265. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_tagbased_polymorphic.cpp +0 -144
  266. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_tagbased_polymorphic.py +0 -29
  267. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_thread.cpp +0 -66
  268. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_thread.py +0 -44
  269. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_union.cpp +0 -22
  270. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_union.py +0 -9
  271. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_virtual_functions.cpp +0 -510
  272. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_virtual_functions.py +0 -408
  273. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/valgrind-numpy-scipy.supp +0 -140
  274. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/valgrind-python.supp +0 -117
  275. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindCatch.cmake +0 -70
  276. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindEigen3.cmake +0 -86
  277. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindPythonLibsNew.cmake +0 -257
  278. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/check-style.sh +0 -44
  279. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/cmake_uninstall.cmake.in +0 -23
  280. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/libsize.py +0 -39
  281. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/make_changelog.py +0 -64
  282. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Common.cmake +0 -402
  283. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Config.cmake.in +0 -233
  284. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11NewTools.cmake +0 -276
  285. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Tools.cmake +0 -214
  286. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pyproject.toml +0 -3
  287. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/setup_global.py.in +0 -65
  288. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/setup_main.py.in +0 -41
  289. xcoll/scattering_routines/geant4/collimasim/pyproject.toml +0 -8
  290. xcoll/scattering_routines/geant4/collimasim/setup.py +0 -144
  291. xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSPyATInterface.cpp +0 -403
  292. xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSPyATInterface.hh +0 -100
  293. xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSXtrackInterface.cpp +0 -763
  294. xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSXtrackInterface.hh +0 -118
  295. xcoll/scattering_routines/geant4/collimasim/src/collimasim/__init__.py +0 -8
  296. xcoll/scattering_routines/geant4/collimasim/src/collimasim/bindings.cpp +0 -63
  297. xcoll/scattering_routines/geant4/collimasim/src/collimasim/pyCollimatorPass.py +0 -142
  298. xcoll/scattering_routines/geant4/collimasim/src/collimasim/xtrack_collimator.py +0 -556
  299. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/PKG-INFO +0 -6
  300. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/SOURCES.txt +0 -24
  301. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/dependency_links.txt +0 -1
  302. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/not-zip-safe +0 -1
  303. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/top_level.txt +0 -1
  304. xcoll/scattering_routines/geant4/collimasim/tests/README.md +0 -25
  305. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_forions.dat +0 -25
  306. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_new_example.dat +0 -18
  307. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_old_example.dat +0 -68
  308. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_testing.dat +0 -15
  309. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_yaml_example.yaml +0 -110
  310. xcoll/scattering_routines/geant4/collimasim/tests/resources/collgaps.dat +0 -7
  311. xcoll/scattering_routines/geant4/collimasim/tests/resources/collgaps_pyat_test.dat +0 -3
  312. xcoll/scattering_routines/geant4/collimasim/tests/resources/collonly_twiss_file_example.tfs +0 -54
  313. xcoll/scattering_routines/geant4/collimasim/tests/resources/settings.gmad +0 -3
  314. xcoll/scattering_routines/geant4/collimasim/tests/resources/settings_black_absorber.gmad +0 -3
  315. xcoll/scattering_routines/geant4/collimasim/tests/resources/settings_ions.gmad +0 -5
  316. xcoll/scattering_routines/geant4/collimasim/tests/resources/twiss_file_testing.tfs +0 -51
  317. xcoll/scattering_routines/geant4/collimasim/tests/test_pyat.py +0 -65
  318. xcoll/scattering_routines/geant4/collimasim/tests/test_pyat_passmethod.py +0 -59
  319. xcoll/scattering_routines/geant4/collimasim/tests/test_pyat_tracking.py +0 -102
  320. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack.py +0 -75
  321. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_angle.py +0 -74
  322. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_colldb_load.py +0 -84
  323. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_interaction.py +0 -159
  324. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_interaction_ion.py +0 -99
  325. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_ions.py +0 -78
  326. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_lost_energy.py +0 -88
  327. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tilt.py +0 -80
  328. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tracking.py +0 -97
  329. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tracking_ions.py +0 -96
  330. xcoll-0.5.11.dist-info/RECORD +0 -413
  331. {xcoll-0.5.11.dist-info → xcoll-0.6.0.dist-info}/LICENSE +0 -0
  332. {xcoll-0.5.11.dist-info → xcoll-0.6.0.dist-info}/NOTICE +0 -0
  333. {xcoll-0.5.11.dist-info → xcoll-0.6.0.dist-info}/WHEEL +0 -0
@@ -1,397 +0,0 @@
1
- /*
2
- tests/test_factory_constructors.cpp -- tests construction from a factory function
3
- via py::init_factory()
4
-
5
- Copyright (c) 2017 Jason Rhinelander <jason@imaginary.ca>
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
- #include "constructor_stats.h"
12
- #include "pybind11_tests.h"
13
- #include <cmath>
14
- #include <new>
15
- #include <utility>
16
-
17
- // Classes for testing python construction via C++ factory function:
18
- // Not publicly constructible, copyable, or movable:
19
- class TestFactory1 {
20
- friend class TestFactoryHelper;
21
- TestFactory1() : value("(empty)") { print_default_created(this); }
22
- explicit TestFactory1(int v) : value(std::to_string(v)) { print_created(this, value); }
23
- explicit TestFactory1(std::string v) : value(std::move(v)) { print_created(this, value); }
24
-
25
- public:
26
- std::string value;
27
- TestFactory1(TestFactory1 &&) = delete;
28
- TestFactory1(const TestFactory1 &) = delete;
29
- TestFactory1 &operator=(TestFactory1 &&) = delete;
30
- TestFactory1 &operator=(const TestFactory1 &) = delete;
31
- ~TestFactory1() { print_destroyed(this); }
32
- };
33
- // Non-public construction, but moveable:
34
- class TestFactory2 {
35
- friend class TestFactoryHelper;
36
- TestFactory2() : value("(empty2)") { print_default_created(this); }
37
- explicit TestFactory2(int v) : value(std::to_string(v)) { print_created(this, value); }
38
- explicit TestFactory2(std::string v) : value(std::move(v)) { print_created(this, value); }
39
-
40
- public:
41
- TestFactory2(TestFactory2 &&m) noexcept {
42
- value = std::move(m.value);
43
- print_move_created(this);
44
- }
45
- TestFactory2 &operator=(TestFactory2 &&m) noexcept {
46
- value = std::move(m.value);
47
- print_move_assigned(this);
48
- return *this;
49
- }
50
- std::string value;
51
- ~TestFactory2() { print_destroyed(this); }
52
- };
53
- // Mixed direct/factory construction:
54
- class TestFactory3 {
55
- protected:
56
- friend class TestFactoryHelper;
57
- TestFactory3() : value("(empty3)") { print_default_created(this); }
58
- explicit TestFactory3(int v) : value(std::to_string(v)) { print_created(this, value); }
59
-
60
- public:
61
- explicit TestFactory3(std::string v) : value(std::move(v)) { print_created(this, value); }
62
- TestFactory3(TestFactory3 &&m) noexcept {
63
- value = std::move(m.value);
64
- print_move_created(this);
65
- }
66
- TestFactory3 &operator=(TestFactory3 &&m) noexcept {
67
- value = std::move(m.value);
68
- print_move_assigned(this);
69
- return *this;
70
- }
71
- std::string value;
72
- virtual ~TestFactory3() { print_destroyed(this); }
73
- };
74
- // Inheritance test
75
- class TestFactory4 : public TestFactory3 {
76
- public:
77
- TestFactory4() : TestFactory3() { print_default_created(this); }
78
- explicit TestFactory4(int v) : TestFactory3(v) { print_created(this, v); }
79
- ~TestFactory4() override { print_destroyed(this); }
80
- };
81
- // Another class for an invalid downcast test
82
- class TestFactory5 : public TestFactory3 {
83
- public:
84
- explicit TestFactory5(int i) : TestFactory3(i) { print_created(this, i); }
85
- ~TestFactory5() override { print_destroyed(this); }
86
- };
87
-
88
- class TestFactory6 {
89
- protected:
90
- int value;
91
- bool alias = false;
92
- public:
93
- explicit TestFactory6(int i) : value{i} { print_created(this, i); }
94
- TestFactory6(TestFactory6 &&f) noexcept {
95
- print_move_created(this);
96
- value = f.value;
97
- alias = f.alias;
98
- }
99
- TestFactory6(const TestFactory6 &f) { print_copy_created(this); value = f.value; alias = f.alias; }
100
- virtual ~TestFactory6() { print_destroyed(this); }
101
- virtual int get() { return value; }
102
- bool has_alias() const { return alias; }
103
- };
104
- class PyTF6 : public TestFactory6 {
105
- public:
106
- // Special constructor that allows the factory to construct a PyTF6 from a TestFactory6 only
107
- // when an alias is needed:
108
- explicit PyTF6(TestFactory6 &&base) : TestFactory6(std::move(base)) {
109
- alias = true;
110
- print_created(this, "move", value);
111
- }
112
- explicit PyTF6(int i) : TestFactory6(i) {
113
- alias = true;
114
- print_created(this, i);
115
- }
116
- PyTF6(PyTF6 &&f) noexcept : TestFactory6(std::move(f)) { print_move_created(this); }
117
- PyTF6(const PyTF6 &f) : TestFactory6(f) { print_copy_created(this); }
118
- explicit PyTF6(std::string s) : TestFactory6((int) s.size()) {
119
- alias = true;
120
- print_created(this, s);
121
- }
122
- ~PyTF6() override { print_destroyed(this); }
123
- int get() override { PYBIND11_OVERRIDE(int, TestFactory6, get, /*no args*/); }
124
- };
125
-
126
- class TestFactory7 {
127
- protected:
128
- int value;
129
- bool alias = false;
130
- public:
131
- explicit TestFactory7(int i) : value{i} { print_created(this, i); }
132
- TestFactory7(TestFactory7 &&f) noexcept {
133
- print_move_created(this);
134
- value = f.value;
135
- alias = f.alias;
136
- }
137
- TestFactory7(const TestFactory7 &f) { print_copy_created(this); value = f.value; alias = f.alias; }
138
- virtual ~TestFactory7() { print_destroyed(this); }
139
- virtual int get() { return value; }
140
- bool has_alias() const { return alias; }
141
- };
142
- class PyTF7 : public TestFactory7 {
143
- public:
144
- explicit PyTF7(int i) : TestFactory7(i) {
145
- alias = true;
146
- print_created(this, i);
147
- }
148
- PyTF7(PyTF7 &&f) noexcept : TestFactory7(std::move(f)) { print_move_created(this); }
149
- PyTF7(const PyTF7 &f) : TestFactory7(f) { print_copy_created(this); }
150
- ~PyTF7() override { print_destroyed(this); }
151
- int get() override { PYBIND11_OVERRIDE(int, TestFactory7, get, /*no args*/); }
152
- };
153
-
154
-
155
- class TestFactoryHelper {
156
- public:
157
- // Non-movable, non-copyable type:
158
- // Return via pointer:
159
- static TestFactory1 *construct1() { return new TestFactory1(); }
160
- // Holder:
161
- static std::unique_ptr<TestFactory1> construct1(int a) { return std::unique_ptr<TestFactory1>(new TestFactory1(a)); }
162
- // pointer again
163
- static TestFactory1 *construct1_string(std::string a) {
164
- return new TestFactory1(std::move(a));
165
- }
166
-
167
- // Moveable type:
168
- // pointer:
169
- static TestFactory2 *construct2() { return new TestFactory2(); }
170
- // holder:
171
- static std::unique_ptr<TestFactory2> construct2(int a) { return std::unique_ptr<TestFactory2>(new TestFactory2(a)); }
172
- // by value moving:
173
- static TestFactory2 construct2(std::string a) { return TestFactory2(std::move(a)); }
174
-
175
- // shared_ptr holder type:
176
- // pointer:
177
- static TestFactory3 *construct3() { return new TestFactory3(); }
178
- // holder:
179
- static std::shared_ptr<TestFactory3> construct3(int a) { return std::shared_ptr<TestFactory3>(new TestFactory3(a)); }
180
- };
181
-
182
- TEST_SUBMODULE(factory_constructors, m) {
183
-
184
- // Define various trivial types to allow simpler overload resolution:
185
- py::module_ m_tag = m.def_submodule("tag");
186
- #define MAKE_TAG_TYPE(Name) \
187
- struct Name##_tag {}; \
188
- py::class_<Name##_tag>(m_tag, #Name "_tag").def(py::init<>()); \
189
- m_tag.attr(#Name) = py::cast(Name##_tag{})
190
- MAKE_TAG_TYPE(pointer);
191
- MAKE_TAG_TYPE(unique_ptr);
192
- MAKE_TAG_TYPE(move);
193
- MAKE_TAG_TYPE(shared_ptr);
194
- MAKE_TAG_TYPE(derived);
195
- MAKE_TAG_TYPE(TF4);
196
- MAKE_TAG_TYPE(TF5);
197
- MAKE_TAG_TYPE(null_ptr);
198
- MAKE_TAG_TYPE(null_unique_ptr);
199
- MAKE_TAG_TYPE(null_shared_ptr);
200
- MAKE_TAG_TYPE(base);
201
- MAKE_TAG_TYPE(invalid_base);
202
- MAKE_TAG_TYPE(alias);
203
- MAKE_TAG_TYPE(unaliasable);
204
- MAKE_TAG_TYPE(mixed);
205
-
206
- // test_init_factory_basic, test_bad_type
207
- py::class_<TestFactory1>(m, "TestFactory1")
208
- .def(py::init([](unique_ptr_tag, int v) { return TestFactoryHelper::construct1(v); }))
209
- .def(py::init(&TestFactoryHelper::construct1_string)) // raw function pointer
210
- .def(py::init([](pointer_tag) { return TestFactoryHelper::construct1(); }))
211
- .def(py::init([](py::handle, int v, py::handle) { return TestFactoryHelper::construct1(v); }))
212
- .def_readwrite("value", &TestFactory1::value)
213
- ;
214
- py::class_<TestFactory2>(m, "TestFactory2")
215
- .def(py::init([](pointer_tag, int v) { return TestFactoryHelper::construct2(v); }))
216
- .def(py::init([](unique_ptr_tag, std::string v) {
217
- return TestFactoryHelper::construct2(std::move(v));
218
- }))
219
- .def(py::init([](move_tag) { return TestFactoryHelper::construct2(); }))
220
- .def_readwrite("value", &TestFactory2::value);
221
-
222
- // Stateful & reused:
223
- int c = 1;
224
- auto c4a = [c](pointer_tag, TF4_tag, int a) { (void) c; return new TestFactory4(a);};
225
-
226
- // test_init_factory_basic, test_init_factory_casting
227
- py::class_<TestFactory3, std::shared_ptr<TestFactory3>> pyTestFactory3(m, "TestFactory3");
228
- pyTestFactory3
229
- .def(py::init([](pointer_tag, int v) { return TestFactoryHelper::construct3(v); }))
230
- .def(py::init([](shared_ptr_tag) { return TestFactoryHelper::construct3(); }));
231
- ignoreOldStyleInitWarnings([&pyTestFactory3]() {
232
- pyTestFactory3.def("__init__", [](TestFactory3 &self, std::string v) {
233
- new (&self) TestFactory3(std::move(v));
234
- }); // placement-new ctor
235
- });
236
- pyTestFactory3
237
- // factories returning a derived type:
238
- .def(py::init(c4a)) // derived ptr
239
- .def(py::init([](pointer_tag, TF5_tag, int a) { return new TestFactory5(a); }))
240
- // derived shared ptr:
241
- .def(py::init([](shared_ptr_tag, TF4_tag, int a) { return std::make_shared<TestFactory4>(a); }))
242
- .def(py::init([](shared_ptr_tag, TF5_tag, int a) { return std::make_shared<TestFactory5>(a); }))
243
-
244
- // Returns nullptr:
245
- .def(py::init([](null_ptr_tag) { return (TestFactory3 *) nullptr; }))
246
- .def(py::init([](null_unique_ptr_tag) { return std::unique_ptr<TestFactory3>(); }))
247
- .def(py::init([](null_shared_ptr_tag) { return std::shared_ptr<TestFactory3>(); }))
248
-
249
- .def_readwrite("value", &TestFactory3::value)
250
- ;
251
-
252
- // test_init_factory_casting
253
- py::class_<TestFactory4, TestFactory3, std::shared_ptr<TestFactory4>>(m, "TestFactory4")
254
- .def(py::init(c4a)) // pointer
255
- ;
256
-
257
- // Doesn't need to be registered, but registering makes getting ConstructorStats easier:
258
- py::class_<TestFactory5, TestFactory3, std::shared_ptr<TestFactory5>>(m, "TestFactory5");
259
-
260
- // test_init_factory_alias
261
- // Alias testing
262
- py::class_<TestFactory6, PyTF6>(m, "TestFactory6")
263
- .def(py::init([](base_tag, int i) { return TestFactory6(i); }))
264
- .def(py::init([](alias_tag, int i) { return PyTF6(i); }))
265
- .def(py::init([](alias_tag, std::string s) { return PyTF6(std::move(s)); }))
266
- .def(py::init([](alias_tag, pointer_tag, int i) { return new PyTF6(i); }))
267
- .def(py::init([](base_tag, pointer_tag, int i) { return new TestFactory6(i); }))
268
- .def(py::init(
269
- [](base_tag, alias_tag, pointer_tag, int i) { return (TestFactory6 *) new PyTF6(i); }))
270
-
271
- .def("get", &TestFactory6::get)
272
- .def("has_alias", &TestFactory6::has_alias)
273
-
274
- .def_static(
275
- "get_cstats", &ConstructorStats::get<TestFactory6>, py::return_value_policy::reference)
276
- .def_static(
277
- "get_alias_cstats", &ConstructorStats::get<PyTF6>, py::return_value_policy::reference);
278
-
279
- // test_init_factory_dual
280
- // Separate alias constructor testing
281
- py::class_<TestFactory7, PyTF7, std::shared_ptr<TestFactory7>>(m, "TestFactory7")
282
- .def(py::init([](int i) { return TestFactory7(i); }, [](int i) { return PyTF7(i); }))
283
- .def(py::init([](pointer_tag, int i) { return new TestFactory7(i); },
284
- [](pointer_tag, int i) { return new PyTF7(i); }))
285
- .def(py::init([](mixed_tag, int i) { return new TestFactory7(i); },
286
- [](mixed_tag, int i) { return PyTF7(i); }))
287
- .def(py::init([](mixed_tag, const std::string &s) { return TestFactory7((int) s.size()); },
288
- [](mixed_tag, const std::string &s) { return new PyTF7((int) s.size()); }))
289
- .def(py::init([](base_tag, pointer_tag, int i) { return new TestFactory7(i); },
290
- [](base_tag, pointer_tag, int i) { return (TestFactory7 *) new PyTF7(i); }))
291
- .def(py::init([](alias_tag, pointer_tag, int i) { return new PyTF7(i); },
292
- [](alias_tag, pointer_tag, int i) { return new PyTF7(10 * i); }))
293
- .def(py::init(
294
- [](shared_ptr_tag, base_tag, int i) { return std::make_shared<TestFactory7>(i); },
295
- [](shared_ptr_tag, base_tag, int i) {
296
- auto *p = new PyTF7(i);
297
- return std::shared_ptr<TestFactory7>(p);
298
- }))
299
- .def(py::init([](shared_ptr_tag,
300
- invalid_base_tag,
301
- int i) { return std::make_shared<TestFactory7>(i); },
302
- [](shared_ptr_tag, invalid_base_tag, int i) {
303
- return std::make_shared<TestFactory7>(i);
304
- })) // <-- invalid alias factory
305
-
306
- .def("get", &TestFactory7::get)
307
- .def("has_alias", &TestFactory7::has_alias)
308
-
309
- .def_static(
310
- "get_cstats", &ConstructorStats::get<TestFactory7>, py::return_value_policy::reference)
311
- .def_static(
312
- "get_alias_cstats", &ConstructorStats::get<PyTF7>, py::return_value_policy::reference);
313
-
314
- // test_placement_new_alternative
315
- // Class with a custom new operator but *without* a placement new operator (issue #948)
316
- class NoPlacementNew {
317
- public:
318
- explicit NoPlacementNew(int i) : i(i) {}
319
- static void *operator new(std::size_t s) {
320
- auto *p = ::operator new(s);
321
- py::print("operator new called, returning", reinterpret_cast<uintptr_t>(p));
322
- return p;
323
- }
324
- static void operator delete(void *p) {
325
- py::print("operator delete called on", reinterpret_cast<uintptr_t>(p));
326
- ::operator delete(p);
327
- }
328
- int i;
329
- };
330
- // As of 2.2, `py::init<args>` no longer requires placement new
331
- py::class_<NoPlacementNew>(m, "NoPlacementNew")
332
- .def(py::init<int>())
333
- .def(py::init([]() { return new NoPlacementNew(100); }))
334
- .def_readwrite("i", &NoPlacementNew::i)
335
- ;
336
-
337
-
338
- // test_reallocations
339
- // Class that has verbose operator_new/operator_delete calls
340
- struct NoisyAlloc {
341
- NoisyAlloc(const NoisyAlloc &) = default;
342
- explicit NoisyAlloc(int i) { py::print(py::str("NoisyAlloc(int {})").format(i)); }
343
- explicit NoisyAlloc(double d) { py::print(py::str("NoisyAlloc(double {})").format(d)); }
344
- ~NoisyAlloc() { py::print("~NoisyAlloc()"); }
345
-
346
- static void *operator new(size_t s) { py::print("noisy new"); return ::operator new(s); }
347
- static void *operator new(size_t, void *p) { py::print("noisy placement new"); return p; }
348
- static void operator delete(void *p, size_t) { py::print("noisy delete"); ::operator delete(p); }
349
- static void operator delete(void *, void *) { py::print("noisy placement delete"); }
350
- #if defined(_MSC_VER) && _MSC_VER < 1910
351
- // MSVC 2015 bug: the above "noisy delete" isn't invoked (fixed in MSVC 2017)
352
- static void operator delete(void *p) { py::print("noisy delete"); ::operator delete(p); }
353
- #endif
354
- };
355
-
356
-
357
- py::class_<NoisyAlloc> pyNoisyAlloc(m, "NoisyAlloc");
358
- // Since these overloads have the same number of arguments, the dispatcher will try each of
359
- // them until the arguments convert. Thus we can get a pre-allocation here when passing a
360
- // single non-integer:
361
- ignoreOldStyleInitWarnings([&pyNoisyAlloc]() {
362
- pyNoisyAlloc.def("__init__", [](NoisyAlloc *a, int i) { new (a) NoisyAlloc(i); }); // Regular constructor, runs first, requires preallocation
363
- });
364
-
365
- pyNoisyAlloc.def(py::init([](double d) { return new NoisyAlloc(d); }));
366
-
367
- // The two-argument version: first the factory pointer overload.
368
- pyNoisyAlloc.def(py::init([](int i, int) { return new NoisyAlloc(i); }));
369
- // Return-by-value:
370
- pyNoisyAlloc.def(py::init([](double d, int) { return NoisyAlloc(d); }));
371
- // Old-style placement new init; requires preallocation
372
- ignoreOldStyleInitWarnings([&pyNoisyAlloc]() {
373
- pyNoisyAlloc.def("__init__", [](NoisyAlloc &a, double d, double) { new (&a) NoisyAlloc(d); });
374
- });
375
- // Requires deallocation of previous overload preallocated value:
376
- pyNoisyAlloc.def(py::init([](int i, double) { return new NoisyAlloc(i); }));
377
- // Regular again: requires yet another preallocation
378
- ignoreOldStyleInitWarnings([&pyNoisyAlloc]() {
379
- pyNoisyAlloc.def(
380
- "__init__", [](NoisyAlloc &a, int i, const std::string &) { new (&a) NoisyAlloc(i); });
381
- });
382
-
383
- // static_assert testing (the following def's should all fail with appropriate compilation errors):
384
- #if 0
385
- struct BadF1Base {};
386
- struct BadF1 : BadF1Base {};
387
- struct PyBadF1 : BadF1 {};
388
- py::class_<BadF1, PyBadF1, std::shared_ptr<BadF1>> bf1(m, "BadF1");
389
- // wrapped factory function must return a compatible pointer, holder, or value
390
- bf1.def(py::init([]() { return 3; }));
391
- // incompatible factory function pointer return type
392
- bf1.def(py::init([]() { static int three = 3; return &three; }));
393
- // incompatible factory function std::shared_ptr<T> return type: cannot convert shared_ptr<T> to holder
394
- // (non-polymorphic base)
395
- bf1.def(py::init([]() { return std::shared_ptr<BadF1Base>(new BadF1()); }));
396
- #endif
397
- }