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,651 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- from __future__ import division
3
-
4
- import sys
5
-
6
- import pytest
7
-
8
- import env
9
- from pybind11_tests import debug_enabled
10
- from pybind11_tests import pytypes as m
11
-
12
-
13
- def test_int(doc):
14
- assert doc(m.get_int) == "get_int() -> int"
15
-
16
-
17
- def test_iterator(doc):
18
- assert doc(m.get_iterator) == "get_iterator() -> Iterator"
19
-
20
-
21
- def test_iterable(doc):
22
- assert doc(m.get_iterable) == "get_iterable() -> Iterable"
23
-
24
-
25
- def test_list(capture, doc):
26
- assert m.list_no_args() == []
27
- assert m.list_ssize_t() == []
28
- assert m.list_size_t() == []
29
- lins = [1, 2]
30
- m.list_insert_ssize_t(lins)
31
- assert lins == [1, 83, 2]
32
- m.list_insert_size_t(lins)
33
- assert lins == [1, 83, 2, 57]
34
-
35
- with capture:
36
- lst = m.get_list()
37
- assert lst == ["inserted-0", "overwritten", "inserted-2"]
38
-
39
- lst.append("value2")
40
- m.print_list(lst)
41
- assert (
42
- capture.unordered
43
- == """
44
- Entry at position 0: value
45
- list item 0: inserted-0
46
- list item 1: overwritten
47
- list item 2: inserted-2
48
- list item 3: value2
49
- """
50
- )
51
-
52
- assert doc(m.get_list) == "get_list() -> list"
53
- assert doc(m.print_list) == "print_list(arg0: list) -> None"
54
-
55
-
56
- def test_none(capture, doc):
57
- assert doc(m.get_none) == "get_none() -> None"
58
- assert doc(m.print_none) == "print_none(arg0: None) -> None"
59
-
60
-
61
- def test_set(capture, doc):
62
- s = m.get_set()
63
- assert s == {"key1", "key2", "key3"}
64
-
65
- with capture:
66
- s.add("key4")
67
- m.print_set(s)
68
- assert (
69
- capture.unordered
70
- == """
71
- key: key1
72
- key: key2
73
- key: key3
74
- key: key4
75
- """
76
- )
77
-
78
- assert not m.set_contains(set(), 42)
79
- assert m.set_contains({42}, 42)
80
- assert m.set_contains({"foo"}, "foo")
81
-
82
- assert doc(m.get_list) == "get_list() -> list"
83
- assert doc(m.print_list) == "print_list(arg0: list) -> None"
84
-
85
-
86
- def test_dict(capture, doc):
87
- d = m.get_dict()
88
- assert d == {"key": "value"}
89
-
90
- with capture:
91
- d["key2"] = "value2"
92
- m.print_dict(d)
93
- assert (
94
- capture.unordered
95
- == """
96
- key: key, value=value
97
- key: key2, value=value2
98
- """
99
- )
100
-
101
- assert not m.dict_contains({}, 42)
102
- assert m.dict_contains({42: None}, 42)
103
- assert m.dict_contains({"foo": None}, "foo")
104
-
105
- assert doc(m.get_dict) == "get_dict() -> dict"
106
- assert doc(m.print_dict) == "print_dict(arg0: dict) -> None"
107
-
108
- assert m.dict_keyword_constructor() == {"x": 1, "y": 2, "z": 3}
109
-
110
-
111
- def test_tuple():
112
- assert m.tuple_no_args() == ()
113
- assert m.tuple_ssize_t() == ()
114
- assert m.tuple_size_t() == ()
115
- assert m.get_tuple() == (42, None, "spam")
116
-
117
-
118
- @pytest.mark.skipif("env.PY2")
119
- def test_simple_namespace():
120
- ns = m.get_simple_namespace()
121
- assert ns.attr == 42
122
- assert ns.x == "foo"
123
- assert ns.right == 2
124
- assert not hasattr(ns, "wrong")
125
-
126
-
127
- def test_str(doc):
128
- assert m.str_from_char_ssize_t().encode().decode() == "red"
129
- assert m.str_from_char_size_t().encode().decode() == "blue"
130
- assert m.str_from_string().encode().decode() == "baz"
131
- assert m.str_from_bytes().encode().decode() == "boo"
132
-
133
- assert doc(m.str_from_bytes) == "str_from_bytes() -> str"
134
-
135
- class A(object):
136
- def __str__(self):
137
- return "this is a str"
138
-
139
- def __repr__(self):
140
- return "this is a repr"
141
-
142
- assert m.str_from_object(A()) == "this is a str"
143
- assert m.repr_from_object(A()) == "this is a repr"
144
- assert m.str_from_handle(A()) == "this is a str"
145
-
146
- s1, s2 = m.str_format()
147
- assert s1 == "1 + 2 = 3"
148
- assert s1 == s2
149
-
150
- malformed_utf8 = b"\x80"
151
- if hasattr(m, "PYBIND11_STR_LEGACY_PERMISSIVE"):
152
- assert m.str_from_object(malformed_utf8) is malformed_utf8
153
- elif env.PY2:
154
- with pytest.raises(UnicodeDecodeError):
155
- m.str_from_object(malformed_utf8)
156
- else:
157
- assert m.str_from_object(malformed_utf8) == "b'\\x80'"
158
- if env.PY2:
159
- with pytest.raises(UnicodeDecodeError):
160
- m.str_from_handle(malformed_utf8)
161
- else:
162
- assert m.str_from_handle(malformed_utf8) == "b'\\x80'"
163
-
164
- assert m.str_from_string_from_str("this is a str") == "this is a str"
165
- ucs_surrogates_str = u"\udcc3"
166
- if env.PY2:
167
- assert u"\udcc3" == m.str_from_string_from_str(ucs_surrogates_str)
168
- else:
169
- with pytest.raises(UnicodeEncodeError):
170
- m.str_from_string_from_str(ucs_surrogates_str)
171
-
172
-
173
- def test_bytes(doc):
174
- assert m.bytes_from_char_ssize_t().decode() == "green"
175
- assert m.bytes_from_char_size_t().decode() == "purple"
176
- assert m.bytes_from_string().decode() == "foo"
177
- assert m.bytes_from_str().decode() == "bar"
178
-
179
- assert doc(m.bytes_from_str) == "bytes_from_str() -> {}".format(
180
- "str" if env.PY2 else "bytes"
181
- )
182
-
183
-
184
- def test_bytearray(doc):
185
- assert m.bytearray_from_char_ssize_t().decode() == "$%"
186
- assert m.bytearray_from_char_size_t().decode() == "@$!"
187
- assert m.bytearray_from_string().decode() == "foo"
188
- assert m.bytearray_size() == len("foo")
189
-
190
-
191
- def test_capsule(capture):
192
- pytest.gc_collect()
193
- with capture:
194
- a = m.return_capsule_with_destructor()
195
- del a
196
- pytest.gc_collect()
197
- assert (
198
- capture.unordered
199
- == """
200
- creating capsule
201
- destructing capsule
202
- """
203
- )
204
-
205
- with capture:
206
- a = m.return_capsule_with_destructor_2()
207
- del a
208
- pytest.gc_collect()
209
- assert (
210
- capture.unordered
211
- == """
212
- creating capsule
213
- destructing capsule: 1234
214
- """
215
- )
216
-
217
- with capture:
218
- a = m.return_capsule_with_name_and_destructor()
219
- del a
220
- pytest.gc_collect()
221
- assert (
222
- capture.unordered
223
- == """
224
- created capsule (1234, 'pointer type description')
225
- destructing capsule (1234, 'pointer type description')
226
- """
227
- )
228
-
229
-
230
- def test_accessors():
231
- class SubTestObject:
232
- attr_obj = 1
233
- attr_char = 2
234
-
235
- class TestObject:
236
- basic_attr = 1
237
- begin_end = [1, 2, 3]
238
- d = {"operator[object]": 1, "operator[char *]": 2}
239
- sub = SubTestObject()
240
-
241
- def func(self, x, *args):
242
- return self.basic_attr + x + sum(args)
243
-
244
- d = m.accessor_api(TestObject())
245
- assert d["basic_attr"] == 1
246
- assert d["begin_end"] == [1, 2, 3]
247
- assert d["operator[object]"] == 1
248
- assert d["operator[char *]"] == 2
249
- assert d["attr(object)"] == 1
250
- assert d["attr(char *)"] == 2
251
- assert d["missing_attr_ptr"] == "raised"
252
- assert d["missing_attr_chain"] == "raised"
253
- assert d["is_none"] is False
254
- assert d["operator()"] == 2
255
- assert d["operator*"] == 7
256
- assert d["implicit_list"] == [1, 2, 3]
257
- assert all(x in TestObject.__dict__ for x in d["implicit_dict"])
258
-
259
- assert m.tuple_accessor(tuple()) == (0, 1, 2)
260
-
261
- d = m.accessor_assignment()
262
- assert d["get"] == 0
263
- assert d["deferred_get"] == 0
264
- assert d["set"] == 1
265
- assert d["deferred_set"] == 1
266
- assert d["var"] == 99
267
-
268
-
269
- def test_constructors():
270
- """C++ default and converting constructors are equivalent to type calls in Python"""
271
- types = [bytes, bytearray, str, bool, int, float, tuple, list, dict, set]
272
- expected = {t.__name__: t() for t in types}
273
- if env.PY2:
274
- # Note that bytes.__name__ == 'str' in Python 2.
275
- # pybind11::str is unicode even under Python 2.
276
- expected["bytes"] = bytes()
277
- expected["str"] = unicode() # noqa: F821
278
- assert m.default_constructors() == expected
279
-
280
- data = {
281
- bytes: b"41", # Currently no supported or working conversions.
282
- bytearray: bytearray(b"41"),
283
- str: 42,
284
- bool: "Not empty",
285
- int: "42",
286
- float: "+1e3",
287
- tuple: range(3),
288
- list: range(3),
289
- dict: [("two", 2), ("one", 1), ("three", 3)],
290
- set: [4, 4, 5, 6, 6, 6],
291
- memoryview: b"abc",
292
- }
293
- inputs = {k.__name__: v for k, v in data.items()}
294
- expected = {k.__name__: k(v) for k, v in data.items()}
295
- if env.PY2: # Similar to the above. See comments above.
296
- inputs["bytes"] = b"41"
297
- inputs["str"] = 42
298
- expected["bytes"] = b"41"
299
- expected["str"] = u"42"
300
-
301
- assert m.converting_constructors(inputs) == expected
302
- assert m.cast_functions(inputs) == expected
303
-
304
- # Converting constructors and cast functions should just reference rather
305
- # than copy when no conversion is needed:
306
- noconv1 = m.converting_constructors(expected)
307
- for k in noconv1:
308
- assert noconv1[k] is expected[k]
309
-
310
- noconv2 = m.cast_functions(expected)
311
- for k in noconv2:
312
- assert noconv2[k] is expected[k]
313
-
314
-
315
- def test_non_converting_constructors():
316
- non_converting_test_cases = [
317
- ("bytes", range(10)),
318
- ("none", 42),
319
- ("ellipsis", 42),
320
- ("type", 42),
321
- ]
322
- for t, v in non_converting_test_cases:
323
- for move in [True, False]:
324
- with pytest.raises(TypeError) as excinfo:
325
- m.nonconverting_constructor(t, v, move)
326
- expected_error = "Object of type '{}' is not an instance of '{}'".format(
327
- type(v).__name__, t
328
- )
329
- assert str(excinfo.value) == expected_error
330
-
331
-
332
- def test_pybind11_str_raw_str():
333
- # specifically to exercise pybind11::str::raw_str
334
- cvt = m.convert_to_pybind11_str
335
- assert cvt(u"Str") == u"Str"
336
- assert cvt(b"Bytes") == u"Bytes" if env.PY2 else "b'Bytes'"
337
- assert cvt(None) == u"None"
338
- assert cvt(False) == u"False"
339
- assert cvt(True) == u"True"
340
- assert cvt(42) == u"42"
341
- assert cvt(2 ** 65) == u"36893488147419103232"
342
- assert cvt(-1.50) == u"-1.5"
343
- assert cvt(()) == u"()"
344
- assert cvt((18,)) == u"(18,)"
345
- assert cvt([]) == u"[]"
346
- assert cvt([28]) == u"[28]"
347
- assert cvt({}) == u"{}"
348
- assert cvt({3: 4}) == u"{3: 4}"
349
- assert cvt(set()) == u"set([])" if env.PY2 else "set()"
350
- assert cvt({3, 3}) == u"set([3])" if env.PY2 else "{3}"
351
-
352
- valid_orig = u"DZ"
353
- valid_utf8 = valid_orig.encode("utf-8")
354
- valid_cvt = cvt(valid_utf8)
355
- if hasattr(m, "PYBIND11_STR_LEGACY_PERMISSIVE"):
356
- assert valid_cvt is valid_utf8
357
- else:
358
- assert type(valid_cvt) is unicode if env.PY2 else str # noqa: F821
359
- if env.PY2:
360
- assert valid_cvt == valid_orig
361
- else:
362
- assert valid_cvt == "b'\\xc7\\xb1'"
363
-
364
- malformed_utf8 = b"\x80"
365
- if hasattr(m, "PYBIND11_STR_LEGACY_PERMISSIVE"):
366
- assert cvt(malformed_utf8) is malformed_utf8
367
- else:
368
- if env.PY2:
369
- with pytest.raises(UnicodeDecodeError):
370
- cvt(malformed_utf8)
371
- else:
372
- malformed_cvt = cvt(malformed_utf8)
373
- assert type(malformed_cvt) is str
374
- assert malformed_cvt == "b'\\x80'"
375
-
376
-
377
- def test_implicit_casting():
378
- """Tests implicit casting when assigning or appending to dicts and lists."""
379
- z = m.get_implicit_casting()
380
- assert z["d"] == {
381
- "char*_i1": "abc",
382
- "char*_i2": "abc",
383
- "char*_e": "abc",
384
- "char*_p": "abc",
385
- "str_i1": "str",
386
- "str_i2": "str1",
387
- "str_e": "str2",
388
- "str_p": "str3",
389
- "int_i1": 42,
390
- "int_i2": 42,
391
- "int_e": 43,
392
- "int_p": 44,
393
- }
394
- assert z["l"] == [3, 6, 9, 12, 15]
395
-
396
-
397
- def test_print(capture):
398
- with capture:
399
- m.print_function()
400
- assert (
401
- capture
402
- == """
403
- Hello, World!
404
- 1 2.0 three True -- multiple args
405
- *args-and-a-custom-separator
406
- no new line here -- next print
407
- flush
408
- py::print + str.format = this
409
- """
410
- )
411
- assert capture.stderr == "this goes to stderr"
412
-
413
- with pytest.raises(RuntimeError) as excinfo:
414
- m.print_failure()
415
- assert str(excinfo.value) == "Unable to convert call argument " + (
416
- "'1' of type 'UnregisteredType' to Python object"
417
- if debug_enabled
418
- else "to Python object (compile in debug mode for details)"
419
- )
420
-
421
-
422
- def test_hash():
423
- class Hashable(object):
424
- def __init__(self, value):
425
- self.value = value
426
-
427
- def __hash__(self):
428
- return self.value
429
-
430
- class Unhashable(object):
431
- __hash__ = None
432
-
433
- assert m.hash_function(Hashable(42)) == 42
434
- with pytest.raises(TypeError):
435
- m.hash_function(Unhashable())
436
-
437
-
438
- def test_number_protocol():
439
- for a, b in [(1, 1), (3, 5)]:
440
- li = [
441
- a == b,
442
- a != b,
443
- a < b,
444
- a <= b,
445
- a > b,
446
- a >= b,
447
- a + b,
448
- a - b,
449
- a * b,
450
- a / b,
451
- a | b,
452
- a & b,
453
- a ^ b,
454
- a >> b,
455
- a << b,
456
- ]
457
- assert m.test_number_protocol(a, b) == li
458
-
459
-
460
- def test_list_slicing():
461
- li = list(range(100))
462
- assert li[::2] == m.test_list_slicing(li)
463
-
464
-
465
- def test_issue2361():
466
- # See issue #2361
467
- assert m.issue2361_str_implicit_copy_none() == "None"
468
- with pytest.raises(TypeError) as excinfo:
469
- assert m.issue2361_dict_implicit_copy_none()
470
- assert "NoneType" in str(excinfo.value)
471
- assert "iterable" in str(excinfo.value)
472
-
473
-
474
- @pytest.mark.parametrize(
475
- "method, args, fmt, expected_view",
476
- [
477
- (m.test_memoryview_object, (b"red",), "B", b"red"),
478
- (m.test_memoryview_buffer_info, (b"green",), "B", b"green"),
479
- (m.test_memoryview_from_buffer, (False,), "h", [3, 1, 4, 1, 5]),
480
- (m.test_memoryview_from_buffer, (True,), "H", [2, 7, 1, 8]),
481
- (m.test_memoryview_from_buffer_nativeformat, (), "@i", [4, 7, 5]),
482
- ],
483
- )
484
- def test_memoryview(method, args, fmt, expected_view):
485
- view = method(*args)
486
- assert isinstance(view, memoryview)
487
- assert view.format == fmt
488
- if isinstance(expected_view, bytes) or not env.PY2:
489
- view_as_list = list(view)
490
- else:
491
- # Using max to pick non-zero byte (big-endian vs little-endian).
492
- view_as_list = [max(ord(c) for c in s) for s in view]
493
- assert view_as_list == list(expected_view)
494
-
495
-
496
- @pytest.mark.xfail("env.PYPY", reason="getrefcount is not available")
497
- @pytest.mark.parametrize(
498
- "method",
499
- [
500
- m.test_memoryview_object,
501
- m.test_memoryview_buffer_info,
502
- ],
503
- )
504
- def test_memoryview_refcount(method):
505
- buf = b"\x0a\x0b\x0c\x0d"
506
- ref_before = sys.getrefcount(buf)
507
- view = method(buf)
508
- ref_after = sys.getrefcount(buf)
509
- assert ref_before < ref_after
510
- assert list(view) == list(buf)
511
-
512
-
513
- def test_memoryview_from_buffer_empty_shape():
514
- view = m.test_memoryview_from_buffer_empty_shape()
515
- assert isinstance(view, memoryview)
516
- assert view.format == "B"
517
- if env.PY2:
518
- # Python 2 behavior is weird, but Python 3 (the future) is fine.
519
- # PyPy3 has <memoryview, while CPython 2 has <memory
520
- assert bytes(view).startswith(b"<memory")
521
- else:
522
- assert bytes(view) == b""
523
-
524
-
525
- def test_test_memoryview_from_buffer_invalid_strides():
526
- with pytest.raises(RuntimeError):
527
- m.test_memoryview_from_buffer_invalid_strides()
528
-
529
-
530
- def test_test_memoryview_from_buffer_nullptr():
531
- if env.PY2:
532
- m.test_memoryview_from_buffer_nullptr()
533
- else:
534
- with pytest.raises(ValueError):
535
- m.test_memoryview_from_buffer_nullptr()
536
-
537
-
538
- @pytest.mark.skipif("env.PY2")
539
- def test_memoryview_from_memory():
540
- view = m.test_memoryview_from_memory()
541
- assert isinstance(view, memoryview)
542
- assert view.format == "B"
543
- assert bytes(view) == b"\xff\xe1\xab\x37"
544
-
545
-
546
- def test_builtin_functions():
547
- assert m.get_len([i for i in range(42)]) == 42
548
- with pytest.raises(TypeError) as exc_info:
549
- m.get_len(i for i in range(42))
550
- assert str(exc_info.value) in [
551
- "object of type 'generator' has no len()",
552
- "'generator' has no length",
553
- ] # PyPy
554
-
555
-
556
- def test_isinstance_string_types():
557
- assert m.isinstance_pybind11_bytes(b"")
558
- assert not m.isinstance_pybind11_bytes(u"")
559
-
560
- assert m.isinstance_pybind11_str(u"")
561
- if hasattr(m, "PYBIND11_STR_LEGACY_PERMISSIVE"):
562
- assert m.isinstance_pybind11_str(b"")
563
- else:
564
- assert not m.isinstance_pybind11_str(b"")
565
-
566
-
567
- def test_pass_bytes_or_unicode_to_string_types():
568
- assert m.pass_to_pybind11_bytes(b"Bytes") == 5
569
- with pytest.raises(TypeError):
570
- m.pass_to_pybind11_bytes(u"Str")
571
-
572
- if hasattr(m, "PYBIND11_STR_LEGACY_PERMISSIVE") or env.PY2:
573
- assert m.pass_to_pybind11_str(b"Bytes") == 5
574
- else:
575
- with pytest.raises(TypeError):
576
- m.pass_to_pybind11_str(b"Bytes")
577
- assert m.pass_to_pybind11_str(u"Str") == 3
578
-
579
- assert m.pass_to_std_string(b"Bytes") == 5
580
- assert m.pass_to_std_string(u"Str") == 3
581
-
582
- malformed_utf8 = b"\x80"
583
- if hasattr(m, "PYBIND11_STR_LEGACY_PERMISSIVE"):
584
- assert m.pass_to_pybind11_str(malformed_utf8) == 1
585
- elif env.PY2:
586
- with pytest.raises(UnicodeDecodeError):
587
- m.pass_to_pybind11_str(malformed_utf8)
588
- else:
589
- with pytest.raises(TypeError):
590
- m.pass_to_pybind11_str(malformed_utf8)
591
-
592
-
593
- @pytest.mark.parametrize(
594
- "create_weakref, create_weakref_with_callback",
595
- [
596
- (m.weakref_from_handle, m.weakref_from_handle_and_function),
597
- (m.weakref_from_object, m.weakref_from_object_and_function),
598
- ],
599
- )
600
- def test_weakref(create_weakref, create_weakref_with_callback):
601
- from weakref import getweakrefcount
602
-
603
- # Apparently, you cannot weakly reference an object()
604
- class WeaklyReferenced(object):
605
- pass
606
-
607
- def callback(wr):
608
- # No `nonlocal` in Python 2
609
- callback.called = True
610
-
611
- obj = WeaklyReferenced()
612
- assert getweakrefcount(obj) == 0
613
- wr = create_weakref(obj)
614
- assert getweakrefcount(obj) == 1
615
-
616
- obj = WeaklyReferenced()
617
- assert getweakrefcount(obj) == 0
618
- callback.called = False
619
- wr = create_weakref_with_callback(obj, callback) # noqa: F841
620
- assert getweakrefcount(obj) == 1
621
- assert not callback.called
622
- del obj
623
- pytest.gc_collect()
624
- assert callback.called
625
-
626
-
627
- def test_cpp_iterators():
628
- assert m.tuple_iterator() == 12
629
- assert m.dict_iterator() == 305 + 711
630
- assert m.passed_iterator(iter((-7, 3))) == -4
631
-
632
-
633
- def test_implementation_details():
634
- lst = [39, 43, 92, 49, 22, 29, 93, 98, 26, 57, 8]
635
- tup = tuple(lst)
636
- assert m.sequence_item_get_ssize_t(lst) == 43
637
- assert m.sequence_item_set_ssize_t(lst) is None
638
- assert lst[1] == "peppa"
639
- assert m.sequence_item_get_size_t(lst) == 92
640
- assert m.sequence_item_set_size_t(lst) is None
641
- assert lst[2] == "george"
642
- assert m.list_item_get_ssize_t(lst) == 49
643
- assert m.list_item_set_ssize_t(lst) is None
644
- assert lst[3] == "rebecca"
645
- assert m.list_item_get_size_t(lst) == 22
646
- assert m.list_item_set_size_t(lst) is None
647
- assert lst[4] == "richard"
648
- assert m.tuple_item_get_ssize_t(tup) == 29
649
- assert m.tuple_item_set_ssize_t() == ("emely", "edmond")
650
- assert m.tuple_item_get_size_t(tup) == 93
651
- assert m.tuple_item_set_size_t() == ("candy", "cat")