xcoll 0.5.12__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 +121 -91
  20. xcoll/interaction_record/interaction_record.py +2 -1
  21. xcoll/interaction_record/interaction_types.py +2 -2
  22. xcoll/line_tools.py +163 -73
  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 +414 -217
  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 +3 -72
  40. xcoll/xaux.py +65 -109
  41. {xcoll-0.5.12.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.12.dist-info/RECORD +0 -415
  331. {xcoll-0.5.12.dist-info → xcoll-0.6.0.dist-info}/LICENSE +0 -0
  332. {xcoll-0.5.12.dist-info → xcoll-0.6.0.dist-info}/NOTICE +0 -0
  333. {xcoll-0.5.12.dist-info → xcoll-0.6.0.dist-info}/WHEEL +0 -0
@@ -1,285 +0,0 @@
1
- /*
2
- tests/test_custom-exceptions.cpp -- exception translation
3
-
4
- Copyright (c) 2016 Pim Schellart <P.Schellart@princeton.edu>
5
-
6
- All rights reserved. Use of this source code is governed by a
7
- BSD-style license that can be found in the LICENSE file.
8
- */
9
- #include "test_exceptions.h"
10
-
11
- #include "local_bindings.h"
12
-
13
- #include "pybind11_tests.h"
14
- #include <utility>
15
-
16
- // A type that should be raised as an exception in Python
17
- class MyException : public std::exception {
18
- public:
19
- explicit MyException(const char * m) : message{m} {}
20
- const char * what() const noexcept override {return message.c_str();}
21
- private:
22
- std::string message = "";
23
- };
24
-
25
- // A type that should be translated to a standard Python exception
26
- class MyException2 : public std::exception {
27
- public:
28
- explicit MyException2(const char * m) : message{m} {}
29
- const char * what() const noexcept override {return message.c_str();}
30
- private:
31
- std::string message = "";
32
- };
33
-
34
- // A type that is not derived from std::exception (and is thus unknown)
35
- class MyException3 {
36
- public:
37
- explicit MyException3(const char * m) : message{m} {}
38
- virtual const char * what() const noexcept {return message.c_str();}
39
- // Rule of 5 BEGIN: to preempt compiler warnings.
40
- MyException3(const MyException3&) = default;
41
- MyException3(MyException3&&) = default;
42
- MyException3& operator=(const MyException3&) = default;
43
- MyException3& operator=(MyException3&&) = default;
44
- virtual ~MyException3() = default;
45
- // Rule of 5 END.
46
- private:
47
- std::string message = "";
48
- };
49
-
50
- // A type that should be translated to MyException
51
- // and delegated to its exception translator
52
- class MyException4 : public std::exception {
53
- public:
54
- explicit MyException4(const char * m) : message{m} {}
55
- const char * what() const noexcept override {return message.c_str();}
56
- private:
57
- std::string message = "";
58
- };
59
-
60
-
61
- // Like the above, but declared via the helper function
62
- class MyException5 : public std::logic_error {
63
- public:
64
- explicit MyException5(const std::string &what) : std::logic_error(what) {}
65
- };
66
-
67
- // Inherits from MyException5
68
- class MyException5_1 : public MyException5 {
69
- using MyException5::MyException5;
70
- };
71
-
72
-
73
- // Exception that will be caught via the module local translator.
74
- class MyException6 : public std::exception {
75
- public:
76
- explicit MyException6(const char * m) : message{m} {}
77
- const char * what() const noexcept override {return message.c_str();}
78
- private:
79
- std::string message = "";
80
- };
81
-
82
-
83
- struct PythonCallInDestructor {
84
- explicit PythonCallInDestructor(const py::dict &d) : d(d) {}
85
- ~PythonCallInDestructor() { d["good"] = true; }
86
-
87
- py::dict d;
88
- };
89
-
90
-
91
-
92
- struct PythonAlreadySetInDestructor {
93
- explicit PythonAlreadySetInDestructor(const py::str &s) : s(s) {}
94
- ~PythonAlreadySetInDestructor() {
95
- py::dict foo;
96
- try {
97
- // Assign to a py::object to force read access of nonexistent dict entry
98
- py::object o = foo["bar"];
99
- }
100
- catch (py::error_already_set& ex) {
101
- ex.discard_as_unraisable(s);
102
- }
103
- }
104
-
105
- py::str s;
106
- };
107
-
108
-
109
- TEST_SUBMODULE(exceptions, m) {
110
- m.def("throw_std_exception", []() {
111
- throw std::runtime_error("This exception was intentionally thrown.");
112
- });
113
-
114
- // make a new custom exception and use it as a translation target
115
- static py::exception<MyException> ex(m, "MyException");
116
- py::register_exception_translator([](std::exception_ptr p) {
117
- try {
118
- if (p) std::rethrow_exception(p);
119
- } catch (const MyException &e) {
120
- // Set MyException as the active python error
121
- ex(e.what());
122
- }
123
- });
124
-
125
- // register new translator for MyException2
126
- // no need to store anything here because this type will
127
- // never by visible from Python
128
- py::register_exception_translator([](std::exception_ptr p) {
129
- try {
130
- if (p) std::rethrow_exception(p);
131
- } catch (const MyException2 &e) {
132
- // Translate this exception to a standard RuntimeError
133
- PyErr_SetString(PyExc_RuntimeError, e.what());
134
- }
135
- });
136
-
137
- // register new translator for MyException4
138
- // which will catch it and delegate to the previously registered
139
- // translator for MyException by throwing a new exception
140
- py::register_exception_translator([](std::exception_ptr p) {
141
- try {
142
- if (p) std::rethrow_exception(p);
143
- } catch (const MyException4 &e) {
144
- throw MyException(e.what());
145
- }
146
- });
147
-
148
- // A simple exception translation:
149
- auto ex5 = py::register_exception<MyException5>(m, "MyException5");
150
- // A slightly more complicated one that declares MyException5_1 as a subclass of MyException5
151
- py::register_exception<MyException5_1>(m, "MyException5_1", ex5.ptr());
152
-
153
- //py::register_local_exception<LocalSimpleException>(m, "LocalSimpleException")
154
-
155
- py::register_local_exception_translator([](std::exception_ptr p) {
156
- try {
157
- if (p) {
158
- std::rethrow_exception(p);
159
- }
160
- } catch (const MyException6 &e) {
161
- PyErr_SetString(PyExc_RuntimeError, e.what());
162
- }
163
- });
164
-
165
- m.def("throws1", []() { throw MyException("this error should go to a custom type"); });
166
- m.def("throws2", []() { throw MyException2("this error should go to a standard Python exception"); });
167
- m.def("throws3", []() { throw MyException3("this error cannot be translated"); });
168
- m.def("throws4", []() { throw MyException4("this error is rethrown"); });
169
- m.def("throws5", []() { throw MyException5("this is a helper-defined translated exception"); });
170
- m.def("throws5_1", []() { throw MyException5_1("MyException5 subclass"); });
171
- m.def("throws6", []() { throw MyException6("MyException6 only handled in this module"); });
172
- m.def("throws_logic_error", []() { throw std::logic_error("this error should fall through to the standard handler"); });
173
- m.def("throws_overflow_error", []() { throw std::overflow_error(""); });
174
- m.def("throws_local_error", []() { throw LocalException("never caught"); });
175
- m.def("throws_local_simple_error", []() { throw LocalSimpleException("this mod"); });
176
- m.def("exception_matches", []() {
177
- py::dict foo;
178
- try {
179
- // Assign to a py::object to force read access of nonexistent dict entry
180
- py::object o = foo["bar"];
181
- }
182
- catch (py::error_already_set& ex) {
183
- if (!ex.matches(PyExc_KeyError)) throw;
184
- return true;
185
- }
186
- return false;
187
- });
188
- m.def("exception_matches_base", []() {
189
- py::dict foo;
190
- try {
191
- // Assign to a py::object to force read access of nonexistent dict entry
192
- py::object o = foo["bar"];
193
- }
194
- catch (py::error_already_set &ex) {
195
- if (!ex.matches(PyExc_Exception)) throw;
196
- return true;
197
- }
198
- return false;
199
- });
200
- m.def("modulenotfound_exception_matches_base", []() {
201
- try {
202
- // On Python >= 3.6, this raises a ModuleNotFoundError, a subclass of ImportError
203
- py::module_::import("nonexistent");
204
- }
205
- catch (py::error_already_set &ex) {
206
- if (!ex.matches(PyExc_ImportError)) throw;
207
- return true;
208
- }
209
- return false;
210
- });
211
-
212
- m.def("throw_already_set", [](bool err) {
213
- if (err)
214
- PyErr_SetString(PyExc_ValueError, "foo");
215
- try {
216
- throw py::error_already_set();
217
- } catch (const std::runtime_error& e) {
218
- if ((err && e.what() != std::string("ValueError: foo")) ||
219
- (!err && e.what() != std::string("Unknown internal error occurred")))
220
- {
221
- PyErr_Clear();
222
- throw std::runtime_error("error message mismatch");
223
- }
224
- }
225
- PyErr_Clear();
226
- if (err)
227
- PyErr_SetString(PyExc_ValueError, "foo");
228
- throw py::error_already_set();
229
- });
230
-
231
- m.def("python_call_in_destructor", [](const py::dict &d) {
232
- bool retval = false;
233
- try {
234
- PythonCallInDestructor set_dict_in_destructor(d);
235
- PyErr_SetString(PyExc_ValueError, "foo");
236
- throw py::error_already_set();
237
- } catch (const py::error_already_set&) {
238
- retval = true;
239
- }
240
- return retval;
241
- });
242
-
243
- m.def("python_alreadyset_in_destructor", [](const py::str &s) {
244
- PythonAlreadySetInDestructor alreadyset_in_destructor(s);
245
- return true;
246
- });
247
-
248
- // test_nested_throws
249
- m.def("try_catch",
250
- [m](const py::object &exc_type, const py::function &f, const py::args &args) {
251
- try {
252
- f(*args);
253
- } catch (py::error_already_set &ex) {
254
- if (ex.matches(exc_type))
255
- py::print(ex.what());
256
- else
257
- throw;
258
- }
259
- });
260
-
261
- // Test repr that cannot be displayed
262
- m.def("simple_bool_passthrough", [](bool x) {return x;});
263
-
264
- m.def("throw_should_be_translated_to_key_error", []() { throw shared_exception(); });
265
-
266
- #if PY_VERSION_HEX >= 0x03030000
267
-
268
- m.def("raise_from", []() {
269
- PyErr_SetString(PyExc_ValueError, "inner");
270
- py::raise_from(PyExc_ValueError, "outer");
271
- throw py::error_already_set();
272
- });
273
-
274
- m.def("raise_from_already_set", []() {
275
- try {
276
- PyErr_SetString(PyExc_ValueError, "inner");
277
- throw py::error_already_set();
278
- } catch (py::error_already_set& e) {
279
- py::raise_from(e, PyExc_ValueError, "outer");
280
- throw py::error_already_set();
281
- }
282
- });
283
-
284
- #endif
285
- }
@@ -1,12 +0,0 @@
1
- #pragma once
2
- #include "pybind11_tests.h"
3
- #include <stdexcept>
4
-
5
- // shared exceptions for cross_module_tests
6
-
7
- class PYBIND11_EXPORT_EXCEPTION shared_exception : public pybind11::builtin_exception {
8
- public:
9
- using builtin_exception::builtin_exception;
10
- explicit shared_exception() : shared_exception("") {}
11
- void set_error() const override { PyErr_SetString(PyExc_RuntimeError, what()); }
12
- };
@@ -1,265 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- import sys
3
-
4
- import pytest
5
-
6
- import env # noqa: F401
7
- import pybind11_cross_module_tests as cm
8
- from pybind11_tests import exceptions as m
9
-
10
-
11
- def test_std_exception(msg):
12
- with pytest.raises(RuntimeError) as excinfo:
13
- m.throw_std_exception()
14
- assert msg(excinfo.value) == "This exception was intentionally thrown."
15
-
16
-
17
- def test_error_already_set(msg):
18
- with pytest.raises(RuntimeError) as excinfo:
19
- m.throw_already_set(False)
20
- assert msg(excinfo.value) == "Unknown internal error occurred"
21
-
22
- with pytest.raises(ValueError) as excinfo:
23
- m.throw_already_set(True)
24
- assert msg(excinfo.value) == "foo"
25
-
26
-
27
- @pytest.mark.skipif("env.PY2")
28
- def test_raise_from(msg):
29
- with pytest.raises(ValueError) as excinfo:
30
- m.raise_from()
31
- assert msg(excinfo.value) == "outer"
32
- assert msg(excinfo.value.__cause__) == "inner"
33
-
34
-
35
- @pytest.mark.skipif("env.PY2")
36
- def test_raise_from_already_set(msg):
37
- with pytest.raises(ValueError) as excinfo:
38
- m.raise_from_already_set()
39
- assert msg(excinfo.value) == "outer"
40
- assert msg(excinfo.value.__cause__) == "inner"
41
-
42
-
43
- def test_cross_module_exceptions(msg):
44
- with pytest.raises(RuntimeError) as excinfo:
45
- cm.raise_runtime_error()
46
- assert str(excinfo.value) == "My runtime error"
47
-
48
- with pytest.raises(ValueError) as excinfo:
49
- cm.raise_value_error()
50
- assert str(excinfo.value) == "My value error"
51
-
52
- with pytest.raises(ValueError) as excinfo:
53
- cm.throw_pybind_value_error()
54
- assert str(excinfo.value) == "pybind11 value error"
55
-
56
- with pytest.raises(TypeError) as excinfo:
57
- cm.throw_pybind_type_error()
58
- assert str(excinfo.value) == "pybind11 type error"
59
-
60
- with pytest.raises(StopIteration) as excinfo:
61
- cm.throw_stop_iteration()
62
-
63
- with pytest.raises(cm.LocalSimpleException) as excinfo:
64
- cm.throw_local_simple_error()
65
- assert msg(excinfo.value) == "external mod"
66
-
67
- with pytest.raises(KeyError) as excinfo:
68
- cm.throw_local_error()
69
- # KeyError is a repr of the key, so it has an extra set of quotes
70
- assert str(excinfo.value) == "'just local'"
71
-
72
-
73
- # TODO: FIXME
74
- @pytest.mark.xfail(
75
- "env.PYPY and env.MACOS",
76
- raises=RuntimeError,
77
- reason="Expected failure with PyPy and libc++ (Issue #2847 & PR #2999)",
78
- )
79
- def test_cross_module_exception_translator():
80
- with pytest.raises(KeyError):
81
- # translator registered in cross_module_tests
82
- m.throw_should_be_translated_to_key_error()
83
-
84
-
85
- def test_python_call_in_catch():
86
- d = {}
87
- assert m.python_call_in_destructor(d) is True
88
- assert d["good"] is True
89
-
90
-
91
- def ignore_pytest_unraisable_warning(f):
92
- unraisable = "PytestUnraisableExceptionWarning"
93
- if hasattr(pytest, unraisable): # Python >= 3.8 and pytest >= 6
94
- dec = pytest.mark.filterwarnings("ignore::pytest.{}".format(unraisable))
95
- return dec(f)
96
- else:
97
- return f
98
-
99
-
100
- @ignore_pytest_unraisable_warning
101
- def test_python_alreadyset_in_destructor(monkeypatch, capsys):
102
- hooked = False
103
- triggered = [False] # mutable, so Python 2.7 closure can modify it
104
-
105
- if hasattr(sys, "unraisablehook"): # Python 3.8+
106
- hooked = True
107
- # Don't take `sys.unraisablehook`, as that's overwritten by pytest
108
- default_hook = sys.__unraisablehook__
109
-
110
- def hook(unraisable_hook_args):
111
- exc_type, exc_value, exc_tb, err_msg, obj = unraisable_hook_args
112
- if obj == "already_set demo":
113
- triggered[0] = True
114
- default_hook(unraisable_hook_args)
115
- return
116
-
117
- # Use monkeypatch so pytest can apply and remove the patch as appropriate
118
- monkeypatch.setattr(sys, "unraisablehook", hook)
119
-
120
- assert m.python_alreadyset_in_destructor("already_set demo") is True
121
- if hooked:
122
- assert triggered[0] is True
123
-
124
- _, captured_stderr = capsys.readouterr()
125
- # Error message is different in Python 2 and 3, check for words that appear in both
126
- assert "ignored" in captured_stderr and "already_set demo" in captured_stderr
127
-
128
-
129
- def test_exception_matches():
130
- assert m.exception_matches()
131
- assert m.exception_matches_base()
132
- assert m.modulenotfound_exception_matches_base()
133
-
134
-
135
- def test_custom(msg):
136
- # Can we catch a MyException?
137
- with pytest.raises(m.MyException) as excinfo:
138
- m.throws1()
139
- assert msg(excinfo.value) == "this error should go to a custom type"
140
-
141
- # Can we translate to standard Python exceptions?
142
- with pytest.raises(RuntimeError) as excinfo:
143
- m.throws2()
144
- assert msg(excinfo.value) == "this error should go to a standard Python exception"
145
-
146
- # Can we handle unknown exceptions?
147
- with pytest.raises(RuntimeError) as excinfo:
148
- m.throws3()
149
- assert msg(excinfo.value) == "Caught an unknown exception!"
150
-
151
- # Can we delegate to another handler by rethrowing?
152
- with pytest.raises(m.MyException) as excinfo:
153
- m.throws4()
154
- assert msg(excinfo.value) == "this error is rethrown"
155
-
156
- # Can we fall-through to the default handler?
157
- with pytest.raises(RuntimeError) as excinfo:
158
- m.throws_logic_error()
159
- assert (
160
- msg(excinfo.value) == "this error should fall through to the standard handler"
161
- )
162
-
163
- # OverFlow error translation.
164
- with pytest.raises(OverflowError) as excinfo:
165
- m.throws_overflow_error()
166
-
167
- # Can we handle a helper-declared exception?
168
- with pytest.raises(m.MyException5) as excinfo:
169
- m.throws5()
170
- assert msg(excinfo.value) == "this is a helper-defined translated exception"
171
-
172
- # Exception subclassing:
173
- with pytest.raises(m.MyException5) as excinfo:
174
- m.throws5_1()
175
- assert msg(excinfo.value) == "MyException5 subclass"
176
- assert isinstance(excinfo.value, m.MyException5_1)
177
-
178
- with pytest.raises(m.MyException5_1) as excinfo:
179
- m.throws5_1()
180
- assert msg(excinfo.value) == "MyException5 subclass"
181
-
182
- with pytest.raises(m.MyException5) as excinfo:
183
- try:
184
- m.throws5()
185
- except m.MyException5_1:
186
- raise RuntimeError("Exception error: caught child from parent")
187
- assert msg(excinfo.value) == "this is a helper-defined translated exception"
188
-
189
-
190
- def test_nested_throws(capture):
191
- """Tests nested (e.g. C++ -> Python -> C++) exception handling"""
192
-
193
- def throw_myex():
194
- raise m.MyException("nested error")
195
-
196
- def throw_myex5():
197
- raise m.MyException5("nested error 5")
198
-
199
- # In the comments below, the exception is caught in the first step, thrown in the last step
200
-
201
- # C++ -> Python
202
- with capture:
203
- m.try_catch(m.MyException5, throw_myex5)
204
- assert str(capture).startswith("MyException5: nested error 5")
205
-
206
- # Python -> C++ -> Python
207
- with pytest.raises(m.MyException) as excinfo:
208
- m.try_catch(m.MyException5, throw_myex)
209
- assert str(excinfo.value) == "nested error"
210
-
211
- def pycatch(exctype, f, *args):
212
- try:
213
- f(*args)
214
- except m.MyException as e:
215
- print(e)
216
-
217
- # C++ -> Python -> C++ -> Python
218
- with capture:
219
- m.try_catch(
220
- m.MyException5,
221
- pycatch,
222
- m.MyException,
223
- m.try_catch,
224
- m.MyException,
225
- throw_myex5,
226
- )
227
- assert str(capture).startswith("MyException5: nested error 5")
228
-
229
- # C++ -> Python -> C++
230
- with capture:
231
- m.try_catch(m.MyException, pycatch, m.MyException5, m.throws4)
232
- assert capture == "this error is rethrown"
233
-
234
- # Python -> C++ -> Python -> C++
235
- with pytest.raises(m.MyException5) as excinfo:
236
- m.try_catch(m.MyException, pycatch, m.MyException, m.throws5)
237
- assert str(excinfo.value) == "this is a helper-defined translated exception"
238
-
239
-
240
- # This can often happen if you wrap a pybind11 class in a Python wrapper
241
- def test_invalid_repr():
242
- class MyRepr(object):
243
- def __repr__(self):
244
- raise AttributeError("Example error")
245
-
246
- with pytest.raises(TypeError):
247
- m.simple_bool_passthrough(MyRepr())
248
-
249
-
250
- def test_local_translator(msg):
251
- """Tests that a local translator works and that the local translator from
252
- the cross module is not applied"""
253
- with pytest.raises(RuntimeError) as excinfo:
254
- m.throws6()
255
- assert msg(excinfo.value) == "MyException6 only handled in this module"
256
-
257
- with pytest.raises(RuntimeError) as excinfo:
258
- m.throws_local_error()
259
- assert not isinstance(excinfo.value, KeyError)
260
- assert msg(excinfo.value) == "never caught"
261
-
262
- with pytest.raises(Exception) as excinfo:
263
- m.throws_local_simple_error()
264
- assert not isinstance(excinfo.value, cm.LocalSimpleException)
265
- assert msg(excinfo.value) == "this mod"