xcoll 0.5.12__py3-none-any.whl → 0.6.1__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (336) hide show
  1. xcoll/__init__.py +5 -18
  2. xcoll/__init__.py.orig +26 -0
  3. xcoll/beam_elements/__init__.py +1 -0
  4. xcoll/beam_elements/absorber.py +12 -2
  5. xcoll/beam_elements/base.py +162 -62
  6. xcoll/beam_elements/blowup.py +1 -0
  7. xcoll/beam_elements/elements_src/black_absorber.h +57 -58
  8. xcoll/beam_elements/elements_src/black_crystal.h +49 -50
  9. xcoll/beam_elements/elements_src/everest_block.h +21 -11
  10. xcoll/beam_elements/elements_src/everest_collimator.h +100 -91
  11. xcoll/beam_elements/elements_src/everest_crystal.h +145 -140
  12. xcoll/beam_elements/elements_src/transparent_collimator.h +126 -0
  13. xcoll/beam_elements/elements_src/transparent_crystal.h +118 -0
  14. xcoll/beam_elements/everest.py +16 -5
  15. xcoll/beam_elements/monitor.py +1 -0
  16. xcoll/beam_elements/transparent.py +83 -0
  17. xcoll/colldb.py +15 -6
  18. xcoll/general.py +1 -1
  19. xcoll/general.py.orig +20 -0
  20. xcoll/headers/particle_states.py +51 -0
  21. xcoll/initial_distribution.py +121 -91
  22. xcoll/initial_distribution.py.orig +256 -0
  23. xcoll/interaction_record/interaction_record.py +2 -1
  24. xcoll/interaction_record/interaction_types.py +2 -2
  25. xcoll/line_tools.py +163 -73
  26. xcoll/lossmap.py +519 -127
  27. xcoll/plot.py +109 -0
  28. xcoll/rf_sweep.py +6 -0
  29. xcoll/scattering_routines/engine.py +414 -217
  30. xcoll/scattering_routines/environment.py +297 -0
  31. xcoll/scattering_routines/everest/amorphous.h +95 -71
  32. xcoll/scattering_routines/everest/{channeling.h → channelling.h} +121 -112
  33. xcoll/scattering_routines/everest/constants.h +1 -1
  34. xcoll/scattering_routines/everest/crystal_parameters.h +9 -9
  35. xcoll/scattering_routines/everest/everest.h +8 -3
  36. xcoll/scattering_routines/everest/everest.py +2 -1
  37. xcoll/scattering_routines/everest/ionisation_loss.h +141 -0
  38. xcoll/scattering_routines/everest/jaw.h +19 -24
  39. xcoll/scattering_routines/everest/materials.py +2 -0
  40. xcoll/scattering_routines/everest/multiple_coulomb_scattering.h +2 -2
  41. xcoll/scattering_routines/everest/nuclear_interaction.h +35 -19
  42. xcoll/scattering_routines/everest/properties.h +3 -72
  43. xcoll/xaux.py +65 -109
  44. {xcoll-0.5.12.dist-info → xcoll-0.6.1.dist-info}/METADATA +5 -5
  45. xcoll-0.6.1.dist-info/RECORD +138 -0
  46. xcoll/_manager.py +0 -22
  47. xcoll/headers/particle_states.h +0 -25
  48. xcoll/install.py +0 -35
  49. xcoll/scattering_routines/geant4/collimasim/.git +0 -1
  50. xcoll/scattering_routines/geant4/collimasim/.gitignore +0 -12
  51. xcoll/scattering_routines/geant4/collimasim/.gitmodules +0 -3
  52. xcoll/scattering_routines/geant4/collimasim/CMakeLists.txt +0 -26
  53. xcoll/scattering_routines/geant4/collimasim/README.md +0 -21
  54. xcoll/scattering_routines/geant4/collimasim/docs/Makefile +0 -20
  55. xcoll/scattering_routines/geant4/collimasim/docs/make.bat +0 -35
  56. xcoll/scattering_routines/geant4/collimasim/docs/source/collimasim.rst +0 -10
  57. xcoll/scattering_routines/geant4/collimasim/docs/source/conf.py +0 -59
  58. xcoll/scattering_routines/geant4/collimasim/docs/source/index.rst +0 -26
  59. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.appveyor.yml +0 -37
  60. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.clang-format +0 -19
  61. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.clang-tidy +0 -65
  62. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.cmake-format.yaml +0 -73
  63. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.git +0 -1
  64. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/CODEOWNERS +0 -9
  65. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/CONTRIBUTING.md +0 -386
  66. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/ISSUE_TEMPLATE/bug-report.yml +0 -45
  67. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/ISSUE_TEMPLATE/config.yml +0 -8
  68. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/dependabot.yml +0 -16
  69. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/labeler.yml +0 -8
  70. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/labeler_merged.yml +0 -3
  71. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/pull_request_template.md +0 -19
  72. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/ci.yml +0 -969
  73. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/configure.yml +0 -84
  74. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/format.yml +0 -48
  75. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/labeler.yml +0 -16
  76. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/pip.yml +0 -103
  77. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.gitignore +0 -45
  78. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.pre-commit-config.yaml +0 -151
  79. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.readthedocs.yml +0 -3
  80. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/CMakeLists.txt +0 -297
  81. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/LICENSE +0 -29
  82. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/MANIFEST.in +0 -6
  83. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/README.rst +0 -180
  84. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/Doxyfile +0 -23
  85. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/Makefile +0 -192
  86. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/_static/theme_overrides.css +0 -11
  87. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/chrono.rst +0 -81
  88. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/custom.rst +0 -93
  89. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/eigen.rst +0 -310
  90. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/functional.rst +0 -109
  91. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/index.rst +0 -43
  92. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/overview.rst +0 -171
  93. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/stl.rst +0 -251
  94. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/strings.rst +0 -305
  95. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/classes.rst +0 -1297
  96. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/embedding.rst +0 -262
  97. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/exceptions.rst +0 -396
  98. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/functions.rst +0 -568
  99. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/misc.rst +0 -337
  100. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/index.rst +0 -13
  101. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/numpy.rst +0 -463
  102. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/object.rst +0 -286
  103. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/utilities.rst +0 -155
  104. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/smart_ptrs.rst +0 -174
  105. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/basics.rst +0 -308
  106. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/benchmark.py +0 -91
  107. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/benchmark.rst +0 -95
  108. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/changelog.rst +0 -2050
  109. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/classes.rst +0 -542
  110. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/cmake/index.rst +0 -8
  111. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/compiling.rst +0 -648
  112. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/conf.py +0 -381
  113. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/faq.rst +0 -343
  114. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/index.rst +0 -48
  115. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/installing.rst +0 -105
  116. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/limitations.rst +0 -72
  117. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11-logo.png +0 -0
  118. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python1.png +0 -0
  119. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python1.svg +0 -427
  120. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python2.png +0 -0
  121. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python2.svg +0 -427
  122. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/reference.rst +0 -130
  123. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/release.rst +0 -96
  124. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/requirements.txt +0 -8
  125. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/upgrade.rst +0 -548
  126. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/attr.h +0 -605
  127. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/buffer_info.h +0 -144
  128. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/cast.h +0 -1432
  129. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/chrono.h +0 -213
  130. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/common.h +0 -2
  131. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/complex.h +0 -65
  132. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/class.h +0 -709
  133. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/common.h +0 -1021
  134. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/descr.h +0 -104
  135. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/init.h +0 -346
  136. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/internals.h +0 -467
  137. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/type_caster_base.h +0 -978
  138. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/typeid.h +0 -55
  139. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/eigen.h +0 -606
  140. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/embed.h +0 -284
  141. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/eval.h +0 -163
  142. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/functional.h +0 -121
  143. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/gil.h +0 -193
  144. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/iostream.h +0 -275
  145. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/numpy.h +0 -1741
  146. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/operators.h +0 -163
  147. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/options.h +0 -65
  148. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/pybind11.h +0 -2497
  149. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/pytypes.h +0 -1879
  150. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl/filesystem.h +0 -103
  151. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl.h +0 -375
  152. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl_bind.h +0 -747
  153. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/noxfile.py +0 -88
  154. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/__init__.py +0 -11
  155. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/__main__.py +0 -52
  156. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/_version.py +0 -12
  157. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/_version.pyi +0 -6
  158. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/commands.py +0 -21
  159. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/py.typed +0 -0
  160. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/setup_helpers.py +0 -482
  161. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/setup_helpers.pyi +0 -63
  162. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pyproject.toml +0 -41
  163. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/setup.cfg +0 -56
  164. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/setup.py +0 -155
  165. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/CMakeLists.txt +0 -503
  166. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/conftest.py +0 -208
  167. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/constructor_stats.h +0 -275
  168. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/cross_module_gil_utils.cpp +0 -73
  169. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/env.py +0 -33
  170. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_python_package/pytest.ini +0 -0
  171. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_python_package/test_files.py +0 -279
  172. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_setuptools/pytest.ini +0 -0
  173. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_setuptools/test_setuphelper.py +0 -143
  174. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/local_bindings.h +0 -85
  175. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/object.h +0 -179
  176. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_cross_module_tests.cpp +0 -151
  177. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_tests.cpp +0 -91
  178. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_tests.h +0 -85
  179. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pytest.ini +0 -19
  180. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/requirements.txt +0 -12
  181. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_async.cpp +0 -26
  182. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_async.py +0 -25
  183. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_buffers.cpp +0 -216
  184. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_buffers.py +0 -163
  185. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_builtin_casters.cpp +0 -286
  186. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_builtin_casters.py +0 -536
  187. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_call_policies.cpp +0 -107
  188. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_call_policies.py +0 -248
  189. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_callbacks.cpp +0 -227
  190. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_callbacks.py +0 -202
  191. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_chrono.cpp +0 -84
  192. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_chrono.py +0 -210
  193. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_class.cpp +0 -550
  194. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_class.py +0 -473
  195. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/CMakeLists.txt +0 -84
  196. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/embed.cpp +0 -21
  197. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_embed/CMakeLists.txt +0 -28
  198. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_function/CMakeLists.txt +0 -39
  199. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_target/CMakeLists.txt +0 -46
  200. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/main.cpp +0 -6
  201. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_embed/CMakeLists.txt +0 -41
  202. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_function/CMakeLists.txt +0 -35
  203. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_target/CMakeLists.txt +0 -41
  204. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/test.py +0 -10
  205. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_constants_and_functions.cpp +0 -165
  206. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_constants_and_functions.py +0 -53
  207. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_copy_move.cpp +0 -238
  208. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_copy_move.py +0 -126
  209. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_casters.cpp +0 -141
  210. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_casters.py +0 -117
  211. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_setup.cpp +0 -41
  212. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_setup.py +0 -50
  213. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_docstring_options.cpp +0 -69
  214. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_docstring_options.py +0 -42
  215. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eigen.cpp +0 -348
  216. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eigen.py +0 -771
  217. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/CMakeLists.txt +0 -47
  218. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/catch.cpp +0 -22
  219. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/external_module.cpp +0 -23
  220. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/test_interpreter.cpp +0 -326
  221. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/test_interpreter.py +0 -15
  222. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_enum.cpp +0 -148
  223. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_enum.py +0 -272
  224. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval.cpp +0 -119
  225. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval.py +0 -51
  226. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval_call.py +0 -5
  227. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.cpp +0 -285
  228. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.h +0 -12
  229. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.py +0 -265
  230. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_factory_constructors.cpp +0 -397
  231. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_factory_constructors.py +0 -520
  232. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_gil_scoped.cpp +0 -49
  233. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_gil_scoped.py +0 -94
  234. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_iostream.cpp +0 -125
  235. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_iostream.py +0 -331
  236. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_kwargs_and_defaults.cpp +0 -153
  237. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_kwargs_and_defaults.py +0 -284
  238. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_local_bindings.cpp +0 -107
  239. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_local_bindings.py +0 -257
  240. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_methods_and_attributes.cpp +0 -412
  241. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_methods_and_attributes.py +0 -517
  242. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_modules.cpp +0 -102
  243. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_modules.py +0 -92
  244. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_multiple_inheritance.cpp +0 -233
  245. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_multiple_inheritance.py +0 -360
  246. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_array.cpp +0 -472
  247. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_array.py +0 -593
  248. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_dtypes.cpp +0 -524
  249. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_dtypes.py +0 -441
  250. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_vectorize.cpp +0 -103
  251. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_vectorize.py +0 -267
  252. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_opaque_types.cpp +0 -73
  253. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_opaque_types.py +0 -59
  254. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_operator_overloading.cpp +0 -235
  255. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_operator_overloading.py +0 -146
  256. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pickling.cpp +0 -189
  257. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pickling.py +0 -82
  258. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pytypes.cpp +0 -560
  259. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pytypes.py +0 -651
  260. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_sequences_and_iterators.cpp +0 -500
  261. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_sequences_and_iterators.py +0 -253
  262. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_smart_ptr.cpp +0 -452
  263. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_smart_ptr.py +0 -318
  264. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl.cpp +0 -342
  265. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl.py +0 -291
  266. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl_binders.cpp +0 -131
  267. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl_binders.py +0 -318
  268. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_tagbased_polymorphic.cpp +0 -144
  269. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_tagbased_polymorphic.py +0 -29
  270. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_thread.cpp +0 -66
  271. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_thread.py +0 -44
  272. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_union.cpp +0 -22
  273. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_union.py +0 -9
  274. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_virtual_functions.cpp +0 -510
  275. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_virtual_functions.py +0 -408
  276. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/valgrind-numpy-scipy.supp +0 -140
  277. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/valgrind-python.supp +0 -117
  278. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindCatch.cmake +0 -70
  279. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindEigen3.cmake +0 -86
  280. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindPythonLibsNew.cmake +0 -257
  281. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/check-style.sh +0 -44
  282. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/cmake_uninstall.cmake.in +0 -23
  283. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/libsize.py +0 -39
  284. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/make_changelog.py +0 -64
  285. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Common.cmake +0 -402
  286. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Config.cmake.in +0 -233
  287. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11NewTools.cmake +0 -276
  288. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Tools.cmake +0 -214
  289. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pyproject.toml +0 -3
  290. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/setup_global.py.in +0 -65
  291. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/setup_main.py.in +0 -41
  292. xcoll/scattering_routines/geant4/collimasim/pyproject.toml +0 -8
  293. xcoll/scattering_routines/geant4/collimasim/setup.py +0 -144
  294. xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSPyATInterface.cpp +0 -403
  295. xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSPyATInterface.hh +0 -100
  296. xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSXtrackInterface.cpp +0 -763
  297. xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSXtrackInterface.hh +0 -118
  298. xcoll/scattering_routines/geant4/collimasim/src/collimasim/__init__.py +0 -8
  299. xcoll/scattering_routines/geant4/collimasim/src/collimasim/bindings.cpp +0 -63
  300. xcoll/scattering_routines/geant4/collimasim/src/collimasim/pyCollimatorPass.py +0 -142
  301. xcoll/scattering_routines/geant4/collimasim/src/collimasim/xtrack_collimator.py +0 -556
  302. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/PKG-INFO +0 -6
  303. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/SOURCES.txt +0 -24
  304. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/dependency_links.txt +0 -1
  305. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/not-zip-safe +0 -1
  306. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/top_level.txt +0 -1
  307. xcoll/scattering_routines/geant4/collimasim/tests/README.md +0 -25
  308. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_forions.dat +0 -25
  309. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_new_example.dat +0 -18
  310. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_old_example.dat +0 -68
  311. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_testing.dat +0 -15
  312. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_yaml_example.yaml +0 -110
  313. xcoll/scattering_routines/geant4/collimasim/tests/resources/collgaps.dat +0 -7
  314. xcoll/scattering_routines/geant4/collimasim/tests/resources/collgaps_pyat_test.dat +0 -3
  315. xcoll/scattering_routines/geant4/collimasim/tests/resources/collonly_twiss_file_example.tfs +0 -54
  316. xcoll/scattering_routines/geant4/collimasim/tests/resources/settings.gmad +0 -3
  317. xcoll/scattering_routines/geant4/collimasim/tests/resources/settings_black_absorber.gmad +0 -3
  318. xcoll/scattering_routines/geant4/collimasim/tests/resources/settings_ions.gmad +0 -5
  319. xcoll/scattering_routines/geant4/collimasim/tests/resources/twiss_file_testing.tfs +0 -51
  320. xcoll/scattering_routines/geant4/collimasim/tests/test_pyat.py +0 -65
  321. xcoll/scattering_routines/geant4/collimasim/tests/test_pyat_passmethod.py +0 -59
  322. xcoll/scattering_routines/geant4/collimasim/tests/test_pyat_tracking.py +0 -102
  323. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack.py +0 -75
  324. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_angle.py +0 -74
  325. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_colldb_load.py +0 -84
  326. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_interaction.py +0 -159
  327. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_interaction_ion.py +0 -99
  328. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_ions.py +0 -78
  329. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_lost_energy.py +0 -88
  330. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tilt.py +0 -80
  331. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tracking.py +0 -97
  332. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tracking_ions.py +0 -96
  333. xcoll-0.5.12.dist-info/RECORD +0 -415
  334. {xcoll-0.5.12.dist-info → xcoll-0.6.1.dist-info}/LICENSE +0 -0
  335. {xcoll-0.5.12.dist-info → xcoll-0.6.1.dist-info}/NOTICE +0 -0
  336. {xcoll-0.5.12.dist-info → xcoll-0.6.1.dist-info}/WHEEL +0 -0
@@ -1,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"