xcoll 0.3.3__py3-none-any.whl → 0.3.5__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 (317) hide show
  1. xcoll/beam_elements/__init__.py +5 -0
  2. xcoll/beam_elements/absorber.py +2 -1
  3. xcoll/beam_elements/base.py +32 -17
  4. xcoll/beam_elements/collimators_src/absorber.h +5 -0
  5. xcoll/beam_elements/everest.py +14 -25
  6. xcoll/colldb.py +50 -27
  7. xcoll/general.py +1 -1
  8. xcoll/headers/checks.h +7 -1
  9. xcoll/impacts/impacts.py +2 -1
  10. xcoll/impacts/impacts_src/impacts.h +1 -6
  11. xcoll/manager.py +5 -5
  12. xcoll/rf_sweep.py +90 -19
  13. xcoll/scattering_routines/everest/__init__.py +5 -0
  14. xcoll/scattering_routines/everest/everest.py +1 -1
  15. xcoll/scattering_routines/fluka/build_fluka_input.py +58 -0
  16. xcoll/scattering_routines/fluka/flukaio/lib/libFlukaIO64.a +0 -0
  17. xcoll/scattering_routines/fluka/flukaio/lib/libFlukaIO64.so +0 -0
  18. xcoll/scattering_routines/fluka/flukaio/src/Connection.d +68 -48
  19. xcoll/scattering_routines/fluka/flukaio/src/Connection.o +0 -0
  20. xcoll/scattering_routines/fluka/flukaio/src/FlukaIO.d +46 -37
  21. xcoll/scattering_routines/fluka/flukaio/src/FlukaIO.o +0 -0
  22. xcoll/scattering_routines/fluka/flukaio/src/FlukaIOHandshake.d +28 -25
  23. xcoll/scattering_routines/fluka/flukaio/src/FlukaIOHandshake.o +0 -0
  24. xcoll/scattering_routines/fluka/flukaio/src/FlukaIOServer.d +67 -47
  25. xcoll/scattering_routines/fluka/flukaio/src/FlukaIOServer.o +0 -0
  26. xcoll/scattering_routines/fluka/flukaio/src/FortranFlukaIO.d +39 -33
  27. xcoll/scattering_routines/fluka/flukaio/src/FortranFlukaIO.o +0 -0
  28. xcoll/scattering_routines/fluka/flukaio/src/NetIO.d +66 -47
  29. xcoll/scattering_routines/fluka/flukaio/src/NetIO.o +0 -0
  30. {xcoll-0.3.3.dist-info → xcoll-0.3.5.dist-info}/METADATA +3 -2
  31. xcoll-0.3.5.dist-info/NOTICE +2 -0
  32. xcoll-0.3.5.dist-info/RECORD +111 -0
  33. {xcoll-0.3.3.dist-info → xcoll-0.3.5.dist-info}/WHEEL +1 -1
  34. xcoll/beam_elements/collimators_src/base_block.h +0 -14
  35. xcoll/beam_elements/collimators_src/base_collimator.h +0 -14
  36. xcoll/beam_elements/collimators_src/invalid_collimator.h +0 -15
  37. xcoll/install_collimators.py +0 -180
  38. xcoll/scattering_routines/geant4/collimasim/.git +0 -1
  39. xcoll/scattering_routines/geant4/collimasim/.gitignore +0 -12
  40. xcoll/scattering_routines/geant4/collimasim/.gitmodules +0 -3
  41. xcoll/scattering_routines/geant4/collimasim/CMakeLists.txt +0 -26
  42. xcoll/scattering_routines/geant4/collimasim/README.md +0 -21
  43. xcoll/scattering_routines/geant4/collimasim/docs/Makefile +0 -20
  44. xcoll/scattering_routines/geant4/collimasim/docs/make.bat +0 -35
  45. xcoll/scattering_routines/geant4/collimasim/docs/source/collimasim.rst +0 -10
  46. xcoll/scattering_routines/geant4/collimasim/docs/source/conf.py +0 -59
  47. xcoll/scattering_routines/geant4/collimasim/docs/source/index.rst +0 -26
  48. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.appveyor.yml +0 -37
  49. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.clang-format +0 -19
  50. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.clang-tidy +0 -65
  51. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.cmake-format.yaml +0 -73
  52. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.git +0 -1
  53. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/CODEOWNERS +0 -9
  54. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/CONTRIBUTING.md +0 -386
  55. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/ISSUE_TEMPLATE/bug-report.yml +0 -45
  56. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/ISSUE_TEMPLATE/config.yml +0 -8
  57. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/dependabot.yml +0 -16
  58. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/labeler.yml +0 -8
  59. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/labeler_merged.yml +0 -3
  60. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/pull_request_template.md +0 -19
  61. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/ci.yml +0 -969
  62. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/configure.yml +0 -84
  63. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/format.yml +0 -48
  64. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/labeler.yml +0 -16
  65. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/pip.yml +0 -103
  66. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.gitignore +0 -45
  67. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.pre-commit-config.yaml +0 -151
  68. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.readthedocs.yml +0 -3
  69. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/CMakeLists.txt +0 -297
  70. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/LICENSE +0 -29
  71. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/MANIFEST.in +0 -6
  72. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/README.rst +0 -180
  73. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/Doxyfile +0 -23
  74. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/Makefile +0 -192
  75. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/_static/theme_overrides.css +0 -11
  76. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/chrono.rst +0 -81
  77. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/custom.rst +0 -93
  78. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/eigen.rst +0 -310
  79. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/functional.rst +0 -109
  80. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/index.rst +0 -43
  81. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/overview.rst +0 -171
  82. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/stl.rst +0 -251
  83. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/strings.rst +0 -305
  84. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/classes.rst +0 -1297
  85. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/embedding.rst +0 -262
  86. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/exceptions.rst +0 -396
  87. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/functions.rst +0 -568
  88. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/misc.rst +0 -337
  89. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/index.rst +0 -13
  90. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/numpy.rst +0 -463
  91. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/object.rst +0 -286
  92. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/utilities.rst +0 -155
  93. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/smart_ptrs.rst +0 -174
  94. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/basics.rst +0 -308
  95. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/benchmark.py +0 -91
  96. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/benchmark.rst +0 -95
  97. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/changelog.rst +0 -2050
  98. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/classes.rst +0 -542
  99. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/cmake/index.rst +0 -8
  100. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/compiling.rst +0 -648
  101. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/conf.py +0 -381
  102. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/faq.rst +0 -343
  103. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/index.rst +0 -48
  104. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/installing.rst +0 -105
  105. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/limitations.rst +0 -72
  106. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11-logo.png +0 -0
  107. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python1.png +0 -0
  108. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python1.svg +0 -427
  109. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python2.png +0 -0
  110. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python2.svg +0 -427
  111. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/reference.rst +0 -130
  112. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/release.rst +0 -96
  113. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/requirements.txt +0 -8
  114. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/upgrade.rst +0 -548
  115. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/attr.h +0 -605
  116. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/buffer_info.h +0 -144
  117. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/cast.h +0 -1432
  118. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/chrono.h +0 -213
  119. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/common.h +0 -2
  120. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/complex.h +0 -65
  121. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/class.h +0 -709
  122. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/common.h +0 -1021
  123. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/descr.h +0 -104
  124. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/init.h +0 -346
  125. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/internals.h +0 -467
  126. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/type_caster_base.h +0 -978
  127. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/typeid.h +0 -55
  128. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/eigen.h +0 -606
  129. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/embed.h +0 -284
  130. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/eval.h +0 -163
  131. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/functional.h +0 -121
  132. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/gil.h +0 -193
  133. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/iostream.h +0 -275
  134. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/numpy.h +0 -1741
  135. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/operators.h +0 -163
  136. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/options.h +0 -65
  137. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/pybind11.h +0 -2497
  138. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/pytypes.h +0 -1879
  139. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl/filesystem.h +0 -103
  140. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl.h +0 -375
  141. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl_bind.h +0 -747
  142. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/noxfile.py +0 -88
  143. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/__init__.py +0 -11
  144. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/__main__.py +0 -52
  145. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/_version.py +0 -12
  146. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/_version.pyi +0 -6
  147. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/commands.py +0 -21
  148. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/py.typed +0 -0
  149. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/setup_helpers.py +0 -482
  150. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/setup_helpers.pyi +0 -63
  151. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pyproject.toml +0 -41
  152. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/setup.cfg +0 -56
  153. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/setup.py +0 -155
  154. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/CMakeLists.txt +0 -503
  155. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/conftest.py +0 -208
  156. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/constructor_stats.h +0 -275
  157. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/cross_module_gil_utils.cpp +0 -73
  158. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/env.py +0 -33
  159. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_python_package/pytest.ini +0 -0
  160. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_python_package/test_files.py +0 -279
  161. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_setuptools/pytest.ini +0 -0
  162. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_setuptools/test_setuphelper.py +0 -143
  163. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/local_bindings.h +0 -85
  164. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/object.h +0 -179
  165. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_cross_module_tests.cpp +0 -151
  166. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_tests.cpp +0 -91
  167. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_tests.h +0 -85
  168. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pytest.ini +0 -19
  169. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/requirements.txt +0 -12
  170. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_async.cpp +0 -26
  171. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_async.py +0 -25
  172. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_buffers.cpp +0 -216
  173. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_buffers.py +0 -163
  174. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_builtin_casters.cpp +0 -286
  175. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_builtin_casters.py +0 -536
  176. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_call_policies.cpp +0 -107
  177. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_call_policies.py +0 -248
  178. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_callbacks.cpp +0 -227
  179. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_callbacks.py +0 -202
  180. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_chrono.cpp +0 -84
  181. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_chrono.py +0 -210
  182. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_class.cpp +0 -550
  183. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_class.py +0 -473
  184. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/CMakeLists.txt +0 -84
  185. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/embed.cpp +0 -21
  186. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_embed/CMakeLists.txt +0 -28
  187. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_function/CMakeLists.txt +0 -39
  188. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_target/CMakeLists.txt +0 -46
  189. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/main.cpp +0 -6
  190. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_embed/CMakeLists.txt +0 -41
  191. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_function/CMakeLists.txt +0 -35
  192. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_target/CMakeLists.txt +0 -41
  193. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/test.py +0 -10
  194. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_constants_and_functions.cpp +0 -165
  195. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_constants_and_functions.py +0 -53
  196. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_copy_move.cpp +0 -238
  197. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_copy_move.py +0 -126
  198. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_casters.cpp +0 -141
  199. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_casters.py +0 -117
  200. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_setup.cpp +0 -41
  201. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_setup.py +0 -50
  202. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_docstring_options.cpp +0 -69
  203. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_docstring_options.py +0 -42
  204. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eigen.cpp +0 -348
  205. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eigen.py +0 -771
  206. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/CMakeLists.txt +0 -47
  207. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/catch.cpp +0 -22
  208. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/external_module.cpp +0 -23
  209. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/test_interpreter.cpp +0 -326
  210. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/test_interpreter.py +0 -15
  211. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_enum.cpp +0 -148
  212. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_enum.py +0 -272
  213. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval.cpp +0 -119
  214. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval.py +0 -51
  215. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval_call.py +0 -5
  216. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.cpp +0 -285
  217. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.h +0 -12
  218. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.py +0 -265
  219. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_factory_constructors.cpp +0 -397
  220. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_factory_constructors.py +0 -520
  221. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_gil_scoped.cpp +0 -49
  222. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_gil_scoped.py +0 -94
  223. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_iostream.cpp +0 -125
  224. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_iostream.py +0 -331
  225. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_kwargs_and_defaults.cpp +0 -153
  226. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_kwargs_and_defaults.py +0 -284
  227. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_local_bindings.cpp +0 -107
  228. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_local_bindings.py +0 -257
  229. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_methods_and_attributes.cpp +0 -412
  230. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_methods_and_attributes.py +0 -517
  231. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_modules.cpp +0 -102
  232. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_modules.py +0 -92
  233. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_multiple_inheritance.cpp +0 -233
  234. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_multiple_inheritance.py +0 -360
  235. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_array.cpp +0 -472
  236. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_array.py +0 -593
  237. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_dtypes.cpp +0 -524
  238. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_dtypes.py +0 -441
  239. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_vectorize.cpp +0 -103
  240. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_vectorize.py +0 -267
  241. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_opaque_types.cpp +0 -73
  242. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_opaque_types.py +0 -59
  243. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_operator_overloading.cpp +0 -235
  244. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_operator_overloading.py +0 -146
  245. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pickling.cpp +0 -189
  246. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pickling.py +0 -82
  247. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pytypes.cpp +0 -560
  248. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pytypes.py +0 -651
  249. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_sequences_and_iterators.cpp +0 -500
  250. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_sequences_and_iterators.py +0 -253
  251. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_smart_ptr.cpp +0 -452
  252. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_smart_ptr.py +0 -318
  253. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl.cpp +0 -342
  254. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl.py +0 -291
  255. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl_binders.cpp +0 -131
  256. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl_binders.py +0 -318
  257. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_tagbased_polymorphic.cpp +0 -144
  258. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_tagbased_polymorphic.py +0 -29
  259. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_thread.cpp +0 -66
  260. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_thread.py +0 -44
  261. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_union.cpp +0 -22
  262. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_union.py +0 -9
  263. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_virtual_functions.cpp +0 -510
  264. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_virtual_functions.py +0 -408
  265. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/valgrind-numpy-scipy.supp +0 -140
  266. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/valgrind-python.supp +0 -117
  267. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindCatch.cmake +0 -70
  268. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindEigen3.cmake +0 -86
  269. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindPythonLibsNew.cmake +0 -257
  270. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/check-style.sh +0 -44
  271. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/cmake_uninstall.cmake.in +0 -23
  272. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/libsize.py +0 -39
  273. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/make_changelog.py +0 -64
  274. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Common.cmake +0 -402
  275. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Config.cmake.in +0 -233
  276. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11NewTools.cmake +0 -276
  277. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Tools.cmake +0 -214
  278. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pyproject.toml +0 -3
  279. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/setup_global.py.in +0 -65
  280. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/setup_main.py.in +0 -41
  281. xcoll/scattering_routines/geant4/collimasim/pyproject.toml +0 -8
  282. xcoll/scattering_routines/geant4/collimasim/setup.py +0 -144
  283. xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSPyATInterface.cpp +0 -403
  284. xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSPyATInterface.hh +0 -100
  285. xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSXtrackInterface.cpp +0 -662
  286. xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSXtrackInterface.hh +0 -110
  287. xcoll/scattering_routines/geant4/collimasim/src/collimasim/__init__.py +0 -8
  288. xcoll/scattering_routines/geant4/collimasim/src/collimasim/bindings.cpp +0 -63
  289. xcoll/scattering_routines/geant4/collimasim/src/collimasim/pyCollimatorPass.py +0 -142
  290. xcoll/scattering_routines/geant4/collimasim/src/collimasim/xtrack_collimator.py +0 -475
  291. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/PKG-INFO +0 -6
  292. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/SOURCES.txt +0 -20
  293. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/dependency_links.txt +0 -1
  294. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/not-zip-safe +0 -1
  295. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/top_level.txt +0 -1
  296. xcoll/scattering_routines/geant4/collimasim/tests/README.md +0 -25
  297. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_new_example.dat +0 -18
  298. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_old_example.dat +0 -68
  299. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_testing.dat +0 -15
  300. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_yaml_example.yaml +0 -110
  301. xcoll/scattering_routines/geant4/collimasim/tests/resources/collgaps.dat +0 -7
  302. xcoll/scattering_routines/geant4/collimasim/tests/resources/collgaps_pyat_test.dat +0 -3
  303. xcoll/scattering_routines/geant4/collimasim/tests/resources/collonly_twiss_file_example.tfs +0 -54
  304. xcoll/scattering_routines/geant4/collimasim/tests/resources/settings.gmad +0 -3
  305. xcoll/scattering_routines/geant4/collimasim/tests/resources/settings_black_absorber.gmad +0 -3
  306. xcoll/scattering_routines/geant4/collimasim/tests/resources/twiss_file_testing.tfs +0 -51
  307. xcoll/scattering_routines/geant4/collimasim/tests/test_pyat.py +0 -65
  308. xcoll/scattering_routines/geant4/collimasim/tests/test_pyat_passmethod.py +0 -59
  309. xcoll/scattering_routines/geant4/collimasim/tests/test_pyat_tracking.py +0 -102
  310. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack.py +0 -75
  311. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_angle.py +0 -74
  312. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_colldb_load.py +0 -84
  313. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_interaction.py +0 -159
  314. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tilt.py +0 -80
  315. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tracking.py +0 -97
  316. xcoll-0.3.3.dist-info/RECORD +0 -391
  317. {xcoll-0.3.3.dist-info → xcoll-0.3.5.dist-info}/LICENSE +0 -0
@@ -1,441 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- import re
3
-
4
- import pytest
5
-
6
- import env # noqa: F401
7
- from pybind11_tests import numpy_dtypes as m
8
-
9
- np = pytest.importorskip("numpy")
10
-
11
-
12
- @pytest.fixture(scope="module")
13
- def simple_dtype():
14
- ld = np.dtype("longdouble")
15
- return np.dtype(
16
- {
17
- "names": ["bool_", "uint_", "float_", "ldbl_"],
18
- "formats": ["?", "u4", "f4", "f{}".format(ld.itemsize)],
19
- "offsets": [0, 4, 8, (16 if ld.alignment > 4 else 12)],
20
- }
21
- )
22
-
23
-
24
- @pytest.fixture(scope="module")
25
- def packed_dtype():
26
- return np.dtype([("bool_", "?"), ("uint_", "u4"), ("float_", "f4"), ("ldbl_", "g")])
27
-
28
-
29
- def dt_fmt():
30
- from sys import byteorder
31
-
32
- e = "<" if byteorder == "little" else ">"
33
- return (
34
- "{{'names':['bool_','uint_','float_','ldbl_'],"
35
- " 'formats':['?','" + e + "u4','" + e + "f4','" + e + "f{}'],"
36
- " 'offsets':[0,4,8,{}], 'itemsize':{}}}"
37
- )
38
-
39
-
40
- def simple_dtype_fmt():
41
- ld = np.dtype("longdouble")
42
- simple_ld_off = 12 + 4 * (ld.alignment > 4)
43
- return dt_fmt().format(ld.itemsize, simple_ld_off, simple_ld_off + ld.itemsize)
44
-
45
-
46
- def packed_dtype_fmt():
47
- from sys import byteorder
48
-
49
- return "[('bool_', '?'), ('uint_', '{e}u4'), ('float_', '{e}f4'), ('ldbl_', '{e}f{}')]".format(
50
- np.dtype("longdouble").itemsize, e="<" if byteorder == "little" else ">"
51
- )
52
-
53
-
54
- def partial_ld_offset():
55
- return (
56
- 12
57
- + 4 * (np.dtype("uint64").alignment > 4)
58
- + 8
59
- + 8 * (np.dtype("longdouble").alignment > 8)
60
- )
61
-
62
-
63
- def partial_dtype_fmt():
64
- ld = np.dtype("longdouble")
65
- partial_ld_off = partial_ld_offset()
66
- partial_size = partial_ld_off + ld.itemsize
67
- partial_end_padding = partial_size % np.dtype("uint64").alignment
68
- return dt_fmt().format(
69
- ld.itemsize, partial_ld_off, partial_size + partial_end_padding
70
- )
71
-
72
-
73
- def partial_nested_fmt():
74
- ld = np.dtype("longdouble")
75
- partial_nested_off = 8 + 8 * (ld.alignment > 8)
76
- partial_ld_off = partial_ld_offset()
77
- partial_size = partial_ld_off + ld.itemsize
78
- partial_end_padding = partial_size % np.dtype("uint64").alignment
79
- partial_nested_size = partial_nested_off * 2 + partial_size + partial_end_padding
80
- return "{{'names':['a'], 'formats':[{}], 'offsets':[{}], 'itemsize':{}}}".format(
81
- partial_dtype_fmt(), partial_nested_off, partial_nested_size
82
- )
83
-
84
-
85
- def assert_equal(actual, expected_data, expected_dtype):
86
- np.testing.assert_equal(actual, np.array(expected_data, dtype=expected_dtype))
87
-
88
-
89
- def test_format_descriptors():
90
- with pytest.raises(RuntimeError) as excinfo:
91
- m.get_format_unbound()
92
- assert re.match(
93
- "^NumPy type info missing for .*UnboundStruct.*$", str(excinfo.value)
94
- )
95
-
96
- ld = np.dtype("longdouble")
97
- ldbl_fmt = ("4x" if ld.alignment > 4 else "") + ld.char
98
- ss_fmt = "^T{?:bool_:3xI:uint_:f:float_:" + ldbl_fmt + ":ldbl_:}"
99
- dbl = np.dtype("double")
100
- end_padding = ld.itemsize % np.dtype("uint64").alignment
101
- partial_fmt = (
102
- "^T{?:bool_:3xI:uint_:f:float_:"
103
- + str(4 * (dbl.alignment > 4) + dbl.itemsize + 8 * (ld.alignment > 8))
104
- + "xg:ldbl_:"
105
- + (str(end_padding) + "x}" if end_padding > 0 else "}")
106
- )
107
- nested_extra = str(max(8, ld.alignment))
108
- assert m.print_format_descriptors() == [
109
- ss_fmt,
110
- "^T{?:bool_:I:uint_:f:float_:g:ldbl_:}",
111
- "^T{" + ss_fmt + ":a:^T{?:bool_:I:uint_:f:float_:g:ldbl_:}:b:}",
112
- partial_fmt,
113
- "^T{" + nested_extra + "x" + partial_fmt + ":a:" + nested_extra + "x}",
114
- "^T{3s:a:3s:b:}",
115
- "^T{(3)4s:a:(2)i:b:(3)B:c:1x(4, 2)f:d:}",
116
- "^T{q:e1:B:e2:}",
117
- "^T{Zf:cflt:Zd:cdbl:}",
118
- ]
119
-
120
-
121
- def test_dtype(simple_dtype):
122
- from sys import byteorder
123
-
124
- e = "<" if byteorder == "little" else ">"
125
-
126
- assert m.print_dtypes() == [
127
- simple_dtype_fmt(),
128
- packed_dtype_fmt(),
129
- "[('a', {}), ('b', {})]".format(simple_dtype_fmt(), packed_dtype_fmt()),
130
- partial_dtype_fmt(),
131
- partial_nested_fmt(),
132
- "[('a', 'S3'), ('b', 'S3')]",
133
- (
134
- "{{'names':['a','b','c','d'], "
135
- + "'formats':[('S4', (3,)),('"
136
- + e
137
- + "i4', (2,)),('u1', (3,)),('"
138
- + e
139
- + "f4', (4, 2))], "
140
- + "'offsets':[0,12,20,24], 'itemsize':56}}"
141
- ).format(e=e),
142
- "[('e1', '" + e + "i8'), ('e2', 'u1')]",
143
- "[('x', 'i1'), ('y', '" + e + "u8')]",
144
- "[('cflt', '" + e + "c8'), ('cdbl', '" + e + "c16')]",
145
- ]
146
-
147
- d1 = np.dtype(
148
- {
149
- "names": ["a", "b"],
150
- "formats": ["int32", "float64"],
151
- "offsets": [1, 10],
152
- "itemsize": 20,
153
- }
154
- )
155
- d2 = np.dtype([("a", "i4"), ("b", "f4")])
156
- assert m.test_dtype_ctors() == [
157
- np.dtype("int32"),
158
- np.dtype("float64"),
159
- np.dtype("bool"),
160
- d1,
161
- d1,
162
- np.dtype("uint32"),
163
- d2,
164
- ]
165
-
166
- assert m.test_dtype_methods() == [
167
- np.dtype("int32"),
168
- simple_dtype,
169
- False,
170
- True,
171
- np.dtype("int32").itemsize,
172
- simple_dtype.itemsize,
173
- ]
174
-
175
- assert m.trailing_padding_dtype() == m.buffer_to_dtype(
176
- np.zeros(1, m.trailing_padding_dtype())
177
- )
178
-
179
- assert m.test_dtype_kind() == list("iiiiiuuuuuffffcccbMmO")
180
- assert m.test_dtype_char_() == list("bhilqBHILQefdgFDG?MmO")
181
-
182
-
183
- def test_recarray(simple_dtype, packed_dtype):
184
- elements = [(False, 0, 0.0, -0.0), (True, 1, 1.5, -2.5), (False, 2, 3.0, -5.0)]
185
-
186
- for func, dtype in [
187
- (m.create_rec_simple, simple_dtype),
188
- (m.create_rec_packed, packed_dtype),
189
- ]:
190
- arr = func(0)
191
- assert arr.dtype == dtype
192
- assert_equal(arr, [], simple_dtype)
193
- assert_equal(arr, [], packed_dtype)
194
-
195
- arr = func(3)
196
- assert arr.dtype == dtype
197
- assert_equal(arr, elements, simple_dtype)
198
- assert_equal(arr, elements, packed_dtype)
199
-
200
- # Show what recarray's look like in NumPy.
201
- assert type(arr[0]) == np.void
202
- assert type(arr[0].item()) == tuple
203
-
204
- if dtype == simple_dtype:
205
- assert m.print_rec_simple(arr) == [
206
- "s:0,0,0,-0",
207
- "s:1,1,1.5,-2.5",
208
- "s:0,2,3,-5",
209
- ]
210
- else:
211
- assert m.print_rec_packed(arr) == [
212
- "p:0,0,0,-0",
213
- "p:1,1,1.5,-2.5",
214
- "p:0,2,3,-5",
215
- ]
216
-
217
- nested_dtype = np.dtype([("a", simple_dtype), ("b", packed_dtype)])
218
-
219
- arr = m.create_rec_nested(0)
220
- assert arr.dtype == nested_dtype
221
- assert_equal(arr, [], nested_dtype)
222
-
223
- arr = m.create_rec_nested(3)
224
- assert arr.dtype == nested_dtype
225
- assert_equal(
226
- arr,
227
- [
228
- ((False, 0, 0.0, -0.0), (True, 1, 1.5, -2.5)),
229
- ((True, 1, 1.5, -2.5), (False, 2, 3.0, -5.0)),
230
- ((False, 2, 3.0, -5.0), (True, 3, 4.5, -7.5)),
231
- ],
232
- nested_dtype,
233
- )
234
- assert m.print_rec_nested(arr) == [
235
- "n:a=s:0,0,0,-0;b=p:1,1,1.5,-2.5",
236
- "n:a=s:1,1,1.5,-2.5;b=p:0,2,3,-5",
237
- "n:a=s:0,2,3,-5;b=p:1,3,4.5,-7.5",
238
- ]
239
-
240
- arr = m.create_rec_partial(3)
241
- assert str(arr.dtype) == partial_dtype_fmt()
242
- partial_dtype = arr.dtype
243
- assert "" not in arr.dtype.fields
244
- assert partial_dtype.itemsize > simple_dtype.itemsize
245
- assert_equal(arr, elements, simple_dtype)
246
- assert_equal(arr, elements, packed_dtype)
247
-
248
- arr = m.create_rec_partial_nested(3)
249
- assert str(arr.dtype) == partial_nested_fmt()
250
- assert "" not in arr.dtype.fields
251
- assert "" not in arr.dtype.fields["a"][0].fields
252
- assert arr.dtype.itemsize > partial_dtype.itemsize
253
- np.testing.assert_equal(arr["a"], m.create_rec_partial(3))
254
-
255
-
256
- def test_array_constructors():
257
- data = np.arange(1, 7, dtype="int32")
258
- for i in range(8):
259
- np.testing.assert_array_equal(m.test_array_ctors(10 + i), data.reshape((3, 2)))
260
- np.testing.assert_array_equal(m.test_array_ctors(20 + i), data.reshape((3, 2)))
261
- for i in range(5):
262
- np.testing.assert_array_equal(m.test_array_ctors(30 + i), data)
263
- np.testing.assert_array_equal(m.test_array_ctors(40 + i), data)
264
-
265
-
266
- def test_string_array():
267
- arr = m.create_string_array(True)
268
- assert str(arr.dtype) == "[('a', 'S3'), ('b', 'S3')]"
269
- assert m.print_string_array(arr) == [
270
- "a='',b=''",
271
- "a='a',b='a'",
272
- "a='ab',b='ab'",
273
- "a='abc',b='abc'",
274
- ]
275
- dtype = arr.dtype
276
- assert arr["a"].tolist() == [b"", b"a", b"ab", b"abc"]
277
- assert arr["b"].tolist() == [b"", b"a", b"ab", b"abc"]
278
- arr = m.create_string_array(False)
279
- assert dtype == arr.dtype
280
-
281
-
282
- def test_array_array():
283
- from sys import byteorder
284
-
285
- e = "<" if byteorder == "little" else ">"
286
-
287
- arr = m.create_array_array(3)
288
- assert str(arr.dtype) == (
289
- "{{'names':['a','b','c','d'], "
290
- + "'formats':[('S4', (3,)),('"
291
- + e
292
- + "i4', (2,)),('u1', (3,)),('{e}f4', (4, 2))], "
293
- + "'offsets':[0,12,20,24], 'itemsize':56}}"
294
- ).format(e=e)
295
- assert m.print_array_array(arr) == [
296
- "a={{A,B,C,D},{K,L,M,N},{U,V,W,X}},b={0,1},"
297
- + "c={0,1,2},d={{0,1},{10,11},{20,21},{30,31}}",
298
- "a={{W,X,Y,Z},{G,H,I,J},{Q,R,S,T}},b={1000,1001},"
299
- + "c={10,11,12},d={{100,101},{110,111},{120,121},{130,131}}",
300
- "a={{S,T,U,V},{C,D,E,F},{M,N,O,P}},b={2000,2001},"
301
- + "c={20,21,22},d={{200,201},{210,211},{220,221},{230,231}}",
302
- ]
303
- assert arr["a"].tolist() == [
304
- [b"ABCD", b"KLMN", b"UVWX"],
305
- [b"WXYZ", b"GHIJ", b"QRST"],
306
- [b"STUV", b"CDEF", b"MNOP"],
307
- ]
308
- assert arr["b"].tolist() == [[0, 1], [1000, 1001], [2000, 2001]]
309
- assert m.create_array_array(0).dtype == arr.dtype
310
-
311
-
312
- def test_enum_array():
313
- from sys import byteorder
314
-
315
- e = "<" if byteorder == "little" else ">"
316
-
317
- arr = m.create_enum_array(3)
318
- dtype = arr.dtype
319
- assert dtype == np.dtype([("e1", e + "i8"), ("e2", "u1")])
320
- assert m.print_enum_array(arr) == ["e1=A,e2=X", "e1=B,e2=Y", "e1=A,e2=X"]
321
- assert arr["e1"].tolist() == [-1, 1, -1]
322
- assert arr["e2"].tolist() == [1, 2, 1]
323
- assert m.create_enum_array(0).dtype == dtype
324
-
325
-
326
- def test_complex_array():
327
- from sys import byteorder
328
-
329
- e = "<" if byteorder == "little" else ">"
330
-
331
- arr = m.create_complex_array(3)
332
- dtype = arr.dtype
333
- assert dtype == np.dtype([("cflt", e + "c8"), ("cdbl", e + "c16")])
334
- assert m.print_complex_array(arr) == [
335
- "c:(0,0.25),(0.5,0.75)",
336
- "c:(1,1.25),(1.5,1.75)",
337
- "c:(2,2.25),(2.5,2.75)",
338
- ]
339
- assert arr["cflt"].tolist() == [0.0 + 0.25j, 1.0 + 1.25j, 2.0 + 2.25j]
340
- assert arr["cdbl"].tolist() == [0.5 + 0.75j, 1.5 + 1.75j, 2.5 + 2.75j]
341
- assert m.create_complex_array(0).dtype == dtype
342
-
343
-
344
- def test_signature(doc):
345
- assert (
346
- doc(m.create_rec_nested)
347
- == "create_rec_nested(arg0: int) -> numpy.ndarray[NestedStruct]"
348
- )
349
-
350
-
351
- def test_scalar_conversion():
352
- n = 3
353
- arrays = [
354
- m.create_rec_simple(n),
355
- m.create_rec_packed(n),
356
- m.create_rec_nested(n),
357
- m.create_enum_array(n),
358
- ]
359
- funcs = [m.f_simple, m.f_packed, m.f_nested]
360
-
361
- for i, func in enumerate(funcs):
362
- for j, arr in enumerate(arrays):
363
- if i == j and i < 2:
364
- assert [func(arr[k]) for k in range(n)] == [k * 10 for k in range(n)]
365
- else:
366
- with pytest.raises(TypeError) as excinfo:
367
- func(arr[0])
368
- assert "incompatible function arguments" in str(excinfo.value)
369
-
370
-
371
- def test_vectorize():
372
- n = 3
373
- array = m.create_rec_simple(n)
374
- values = m.f_simple_vectorized(array)
375
- np.testing.assert_array_equal(values, [0, 10, 20])
376
- array_2 = m.f_simple_pass_thru_vectorized(array)
377
- np.testing.assert_array_equal(array, array_2)
378
-
379
-
380
- def test_cls_and_dtype_conversion(simple_dtype):
381
- s = m.SimpleStruct()
382
- assert s.astuple() == (False, 0, 0.0, 0.0)
383
- assert m.SimpleStruct.fromtuple(s.astuple()).astuple() == s.astuple()
384
-
385
- s.uint_ = 2
386
- assert m.f_simple(s) == 20
387
-
388
- # Try as recarray of shape==(1,).
389
- s_recarray = np.array([(False, 2, 0.0, 0.0)], dtype=simple_dtype)
390
- # Show that this will work for vectorized case.
391
- np.testing.assert_array_equal(m.f_simple_vectorized(s_recarray), [20])
392
-
393
- # Show as a scalar that inherits from np.generic.
394
- s_scalar = s_recarray[0]
395
- assert isinstance(s_scalar, np.void)
396
- assert m.f_simple(s_scalar) == 20
397
-
398
- # Show that an *array* scalar (np.ndarray.shape == ()) does not convert.
399
- # More specifically, conversion to SimpleStruct is not implicit.
400
- s_recarray_scalar = s_recarray.reshape(())
401
- assert isinstance(s_recarray_scalar, np.ndarray)
402
- assert s_recarray_scalar.dtype == simple_dtype
403
- with pytest.raises(TypeError) as excinfo:
404
- m.f_simple(s_recarray_scalar)
405
- assert "incompatible function arguments" in str(excinfo.value)
406
- # Explicitly convert to m.SimpleStruct.
407
- assert m.f_simple(m.SimpleStruct.fromtuple(s_recarray_scalar.item())) == 20
408
-
409
- # Show that an array of dtype=object does *not* convert.
410
- s_array_object = np.array([s])
411
- assert s_array_object.dtype == object
412
- with pytest.raises(TypeError) as excinfo:
413
- m.f_simple_vectorized(s_array_object)
414
- assert "incompatible function arguments" in str(excinfo.value)
415
- # Explicitly convert to `np.array(..., dtype=simple_dtype)`
416
- s_array = np.array([s.astuple()], dtype=simple_dtype)
417
- np.testing.assert_array_equal(m.f_simple_vectorized(s_array), [20])
418
-
419
-
420
- def test_register_dtype():
421
- with pytest.raises(RuntimeError) as excinfo:
422
- m.register_dtype()
423
- assert "dtype is already registered" in str(excinfo.value)
424
-
425
-
426
- @pytest.mark.xfail("env.PYPY")
427
- def test_str_leak():
428
- from sys import getrefcount
429
-
430
- fmt = "f4"
431
- pytest.gc_collect()
432
- start = getrefcount(fmt)
433
- d = m.dtype_wrapper(fmt)
434
- assert d is np.dtype("f4")
435
- del d
436
- pytest.gc_collect()
437
- assert getrefcount(fmt) == start
438
-
439
-
440
- def test_compare_buffer_info():
441
- assert all(m.compare_buffer_info())
@@ -1,103 +0,0 @@
1
- /*
2
- tests/test_numpy_vectorize.cpp -- auto-vectorize functions over NumPy array
3
- arguments
4
-
5
- Copyright (c) 2016 Wenzel Jakob <wenzel.jakob@epfl.ch>
6
-
7
- All rights reserved. Use of this source code is governed by a
8
- BSD-style license that can be found in the LICENSE file.
9
- */
10
-
11
- #include "pybind11_tests.h"
12
- #include <pybind11/numpy.h>
13
-
14
- #include <utility>
15
-
16
- double my_func(int x, float y, double z) {
17
- py::print("my_func(x:int={}, y:float={:.0f}, z:float={:.0f})"_s.format(x, y, z));
18
- return (float) x*y*z;
19
- }
20
-
21
- TEST_SUBMODULE(numpy_vectorize, m) {
22
- try { py::module_::import("numpy"); }
23
- catch (...) { return; }
24
-
25
- // test_vectorize, test_docs, test_array_collapse
26
- // Vectorize all arguments of a function (though non-vector arguments are also allowed)
27
- m.def("vectorized_func", py::vectorize(my_func));
28
-
29
- // Vectorize a lambda function with a capture object (e.g. to exclude some arguments from the vectorization)
30
- m.def("vectorized_func2", [](py::array_t<int> x, py::array_t<float> y, float z) {
31
- return py::vectorize([z](int x, float y) { return my_func(x, y, z); })(std::move(x),
32
- std::move(y));
33
- });
34
-
35
- // Vectorize a complex-valued function
36
- m.def("vectorized_func3", py::vectorize(
37
- [](std::complex<double> c) { return c * std::complex<double>(2.f); }
38
- ));
39
-
40
- // test_type_selection
41
- // NumPy function which only accepts specific data types
42
- // A lot of these no lints could be replaced with const refs, and probably should at some point.
43
- m.def("selective_func",
44
- [](const py::array_t<int, py::array::c_style> &) { return "Int branch taken."; });
45
- m.def("selective_func",
46
- [](const py::array_t<float, py::array::c_style> &) { return "Float branch taken."; });
47
- m.def("selective_func", [](const py::array_t<std::complex<float>, py::array::c_style> &) {
48
- return "Complex float branch taken.";
49
- });
50
-
51
- // test_passthrough_arguments
52
- // Passthrough test: references and non-pod types should be automatically passed through (in the
53
- // function definition below, only `b`, `d`, and `g` are vectorized):
54
- struct NonPODClass {
55
- explicit NonPODClass(int v) : value{v} {}
56
- int value;
57
- };
58
- py::class_<NonPODClass>(m, "NonPODClass")
59
- .def(py::init<int>())
60
- .def_readwrite("value", &NonPODClass::value);
61
- m.def("vec_passthrough",
62
- py::vectorize([](const double *a,
63
- double b,
64
- // Changing this broke things
65
- // NOLINTNEXTLINE(performance-unnecessary-value-param)
66
- py::array_t<double> c,
67
- const int &d,
68
- int &e,
69
- NonPODClass f,
70
- const double g) { return *a + b + c.at(0) + d + e + f.value + g; }));
71
-
72
- // test_method_vectorization
73
- struct VectorizeTestClass {
74
- explicit VectorizeTestClass(int v) : value{v} {};
75
- float method(int x, float y) const { return y + (float) (x + value); }
76
- int value = 0;
77
- };
78
- py::class_<VectorizeTestClass> vtc(m, "VectorizeTestClass");
79
- vtc .def(py::init<int>())
80
- .def_readwrite("value", &VectorizeTestClass::value);
81
-
82
- // Automatic vectorizing of methods
83
- vtc.def("method", py::vectorize(&VectorizeTestClass::method));
84
-
85
- // test_trivial_broadcasting
86
- // Internal optimization test for whether the input is trivially broadcastable:
87
- py::enum_<py::detail::broadcast_trivial>(m, "trivial")
88
- .value("f_trivial", py::detail::broadcast_trivial::f_trivial)
89
- .value("c_trivial", py::detail::broadcast_trivial::c_trivial)
90
- .value("non_trivial", py::detail::broadcast_trivial::non_trivial);
91
- m.def("vectorized_is_trivial",
92
- [](const py::array_t<int, py::array::forcecast> &arg1,
93
- const py::array_t<float, py::array::forcecast> &arg2,
94
- const py::array_t<double, py::array::forcecast> &arg3) {
95
- py::ssize_t ndim = 0;
96
- std::vector<py::ssize_t> shape;
97
- std::array<py::buffer_info, 3> buffers{
98
- {arg1.request(), arg2.request(), arg3.request()}};
99
- return py::detail::broadcast(buffers, ndim, shape);
100
- });
101
-
102
- m.def("add_to", py::vectorize([](NonPODClass& x, int a) { x.value += a; }));
103
- }