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,308 +0,0 @@
1
- .. _basics:
2
-
3
- First steps
4
- ###########
5
-
6
- This sections demonstrates the basic features of pybind11. Before getting
7
- started, make sure that development environment is set up to compile the
8
- included set of test cases.
9
-
10
-
11
- Compiling the test cases
12
- ========================
13
-
14
- Linux/macOS
15
- -----------
16
-
17
- On Linux you'll need to install the **python-dev** or **python3-dev** packages as
18
- well as **cmake**. On macOS, the included python version works out of the box,
19
- but **cmake** must still be installed.
20
-
21
- After installing the prerequisites, run
22
-
23
- .. code-block:: bash
24
-
25
- mkdir build
26
- cd build
27
- cmake ..
28
- make check -j 4
29
-
30
- The last line will both compile and run the tests.
31
-
32
- Windows
33
- -------
34
-
35
- On Windows, only **Visual Studio 2015** and newer are supported since pybind11 relies
36
- on various C++11 language features that break older versions of Visual Studio.
37
-
38
- .. Note::
39
-
40
- To use the C++17 in Visual Studio 2017 (MSVC 14.1), pybind11 requires the flag
41
- ``/permissive-`` to be passed to the compiler `to enforce standard conformance`_. When
42
- building with Visual Studio 2019, this is not strictly necessary, but still advised.
43
-
44
- .. _`to enforce standard conformance`: https://docs.microsoft.com/en-us/cpp/build/reference/permissive-standards-conformance?view=vs-2017
45
-
46
- To compile and run the tests:
47
-
48
- .. code-block:: batch
49
-
50
- mkdir build
51
- cd build
52
- cmake ..
53
- cmake --build . --config Release --target check
54
-
55
- This will create a Visual Studio project, compile and run the target, all from the
56
- command line.
57
-
58
- .. Note::
59
-
60
- If all tests fail, make sure that the Python binary and the testcases are compiled
61
- for the same processor type and bitness (i.e. either **i386** or **x86_64**). You
62
- can specify **x86_64** as the target architecture for the generated Visual Studio
63
- project using ``cmake -A x64 ..``.
64
-
65
- .. seealso::
66
-
67
- Advanced users who are already familiar with Boost.Python may want to skip
68
- the tutorial and look at the test cases in the :file:`tests` directory,
69
- which exercise all features of pybind11.
70
-
71
- Header and namespace conventions
72
- ================================
73
-
74
- For brevity, all code examples assume that the following two lines are present:
75
-
76
- .. code-block:: cpp
77
-
78
- #include <pybind11/pybind11.h>
79
-
80
- namespace py = pybind11;
81
-
82
- Some features may require additional headers, but those will be specified as needed.
83
-
84
- .. _simple_example:
85
-
86
- Creating bindings for a simple function
87
- =======================================
88
-
89
- Let's start by creating Python bindings for an extremely simple function, which
90
- adds two numbers and returns their result:
91
-
92
- .. code-block:: cpp
93
-
94
- int add(int i, int j) {
95
- return i + j;
96
- }
97
-
98
- For simplicity [#f1]_, we'll put both this function and the binding code into
99
- a file named :file:`example.cpp` with the following contents:
100
-
101
- .. code-block:: cpp
102
-
103
- #include <pybind11/pybind11.h>
104
-
105
- int add(int i, int j) {
106
- return i + j;
107
- }
108
-
109
- PYBIND11_MODULE(example, m) {
110
- m.doc() = "pybind11 example plugin"; // optional module docstring
111
-
112
- m.def("add", &add, "A function which adds two numbers");
113
- }
114
-
115
- .. [#f1] In practice, implementation and binding code will generally be located
116
- in separate files.
117
-
118
- The :func:`PYBIND11_MODULE` macro creates a function that will be called when an
119
- ``import`` statement is issued from within Python. The module name (``example``)
120
- is given as the first macro argument (it should not be in quotes). The second
121
- argument (``m``) defines a variable of type :class:`py::module_ <module>` which
122
- is the main interface for creating bindings. The method :func:`module_::def`
123
- generates binding code that exposes the ``add()`` function to Python.
124
-
125
- .. note::
126
-
127
- Notice how little code was needed to expose our function to Python: all
128
- details regarding the function's parameters and return value were
129
- automatically inferred using template metaprogramming. This overall
130
- approach and the used syntax are borrowed from Boost.Python, though the
131
- underlying implementation is very different.
132
-
133
- pybind11 is a header-only library, hence it is not necessary to link against
134
- any special libraries and there are no intermediate (magic) translation steps.
135
- On Linux, the above example can be compiled using the following command:
136
-
137
- .. code-block:: bash
138
-
139
- $ c++ -O3 -Wall -shared -std=c++11 -fPIC $(python3 -m pybind11 --includes) example.cpp -o example$(python3-config --extension-suffix)
140
-
141
- .. note::
142
-
143
- If you used :ref:`include_as_a_submodule` to get the pybind11 source, then
144
- use ``$(python3-config --includes) -Iextern/pybind11/include`` instead of
145
- ``$(python3 -m pybind11 --includes)`` in the above compilation, as
146
- explained in :ref:`building_manually`.
147
-
148
- For more details on the required compiler flags on Linux and macOS, see
149
- :ref:`building_manually`. For complete cross-platform compilation instructions,
150
- refer to the :ref:`compiling` page.
151
-
152
- The `python_example`_ and `cmake_example`_ repositories are also a good place
153
- to start. They are both complete project examples with cross-platform build
154
- systems. The only difference between the two is that `python_example`_ uses
155
- Python's ``setuptools`` to build the module, while `cmake_example`_ uses CMake
156
- (which may be preferable for existing C++ projects).
157
-
158
- .. _python_example: https://github.com/pybind/python_example
159
- .. _cmake_example: https://github.com/pybind/cmake_example
160
-
161
- Building the above C++ code will produce a binary module file that can be
162
- imported to Python. Assuming that the compiled module is located in the
163
- current directory, the following interactive Python session shows how to
164
- load and execute the example:
165
-
166
- .. code-block:: pycon
167
-
168
- $ python
169
- Python 2.7.10 (default, Aug 22 2015, 20:33:39)
170
- [GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.1)] on darwin
171
- Type "help", "copyright", "credits" or "license" for more information.
172
- >>> import example
173
- >>> example.add(1, 2)
174
- 3L
175
- >>>
176
-
177
- .. _keyword_args:
178
-
179
- Keyword arguments
180
- =================
181
-
182
- With a simple code modification, it is possible to inform Python about the
183
- names of the arguments ("i" and "j" in this case).
184
-
185
- .. code-block:: cpp
186
-
187
- m.def("add", &add, "A function which adds two numbers",
188
- py::arg("i"), py::arg("j"));
189
-
190
- :class:`arg` is one of several special tag classes which can be used to pass
191
- metadata into :func:`module_::def`. With this modified binding code, we can now
192
- call the function using keyword arguments, which is a more readable alternative
193
- particularly for functions taking many parameters:
194
-
195
- .. code-block:: pycon
196
-
197
- >>> import example
198
- >>> example.add(i=1, j=2)
199
- 3L
200
-
201
- The keyword names also appear in the function signatures within the documentation.
202
-
203
- .. code-block:: pycon
204
-
205
- >>> help(example)
206
-
207
- ....
208
-
209
- FUNCTIONS
210
- add(...)
211
- Signature : (i: int, j: int) -> int
212
-
213
- A function which adds two numbers
214
-
215
- A shorter notation for named arguments is also available:
216
-
217
- .. code-block:: cpp
218
-
219
- // regular notation
220
- m.def("add1", &add, py::arg("i"), py::arg("j"));
221
- // shorthand
222
- using namespace pybind11::literals;
223
- m.def("add2", &add, "i"_a, "j"_a);
224
-
225
- The :var:`_a` suffix forms a C++11 literal which is equivalent to :class:`arg`.
226
- Note that the literal operator must first be made visible with the directive
227
- ``using namespace pybind11::literals``. This does not bring in anything else
228
- from the ``pybind11`` namespace except for literals.
229
-
230
- .. _default_args:
231
-
232
- Default arguments
233
- =================
234
-
235
- Suppose now that the function to be bound has default arguments, e.g.:
236
-
237
- .. code-block:: cpp
238
-
239
- int add(int i = 1, int j = 2) {
240
- return i + j;
241
- }
242
-
243
- Unfortunately, pybind11 cannot automatically extract these parameters, since they
244
- are not part of the function's type information. However, they are simple to specify
245
- using an extension of :class:`arg`:
246
-
247
- .. code-block:: cpp
248
-
249
- m.def("add", &add, "A function which adds two numbers",
250
- py::arg("i") = 1, py::arg("j") = 2);
251
-
252
- The default values also appear within the documentation.
253
-
254
- .. code-block:: pycon
255
-
256
- >>> help(example)
257
-
258
- ....
259
-
260
- FUNCTIONS
261
- add(...)
262
- Signature : (i: int = 1, j: int = 2) -> int
263
-
264
- A function which adds two numbers
265
-
266
- The shorthand notation is also available for default arguments:
267
-
268
- .. code-block:: cpp
269
-
270
- // regular notation
271
- m.def("add1", &add, py::arg("i") = 1, py::arg("j") = 2);
272
- // shorthand
273
- m.def("add2", &add, "i"_a=1, "j"_a=2);
274
-
275
- Exporting variables
276
- ===================
277
-
278
- To expose a value from C++, use the ``attr`` function to register it in a
279
- module as shown below. Built-in types and general objects (more on that later)
280
- are automatically converted when assigned as attributes, and can be explicitly
281
- converted using the function ``py::cast``.
282
-
283
- .. code-block:: cpp
284
-
285
- PYBIND11_MODULE(example, m) {
286
- m.attr("the_answer") = 42;
287
- py::object world = py::cast("World");
288
- m.attr("what") = world;
289
- }
290
-
291
- These are then accessible from Python:
292
-
293
- .. code-block:: pycon
294
-
295
- >>> import example
296
- >>> example.the_answer
297
- 42
298
- >>> example.what
299
- 'World'
300
-
301
- .. _supported_types:
302
-
303
- Supported data types
304
- ====================
305
-
306
- A large number of data types are supported out of the box and can be used
307
- seamlessly as functions arguments, return values or with ``py::cast`` in general.
308
- For a full overview, see the :doc:`advanced/cast/index` section.
@@ -1,91 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- import datetime as dt
3
- import os
4
- import random
5
-
6
- nfns = 4 # Functions per class
7
- nargs = 4 # Arguments per function
8
-
9
-
10
- def generate_dummy_code_pybind11(nclasses=10):
11
- decl = ""
12
- bindings = ""
13
-
14
- for cl in range(nclasses):
15
- decl += "class cl%03i;\n" % cl
16
- decl += "\n"
17
-
18
- for cl in range(nclasses):
19
- decl += "class cl%03i {\n" % cl
20
- decl += "public:\n"
21
- bindings += ' py::class_<cl%03i>(m, "cl%03i")\n' % (cl, cl)
22
- for fn in range(nfns):
23
- ret = random.randint(0, nclasses - 1)
24
- params = [random.randint(0, nclasses - 1) for i in range(nargs)]
25
- decl += " cl%03i *fn_%03i(" % (ret, fn)
26
- decl += ", ".join("cl%03i *" % p for p in params)
27
- decl += ");\n"
28
- bindings += ' .def("fn_%03i", &cl%03i::fn_%03i)\n' % (fn, cl, fn)
29
- decl += "};\n\n"
30
- bindings += " ;\n"
31
-
32
- result = "#include <pybind11/pybind11.h>\n\n"
33
- result += "namespace py = pybind11;\n\n"
34
- result += decl + "\n"
35
- result += "PYBIND11_MODULE(example, m) {\n"
36
- result += bindings
37
- result += "}"
38
- return result
39
-
40
-
41
- def generate_dummy_code_boost(nclasses=10):
42
- decl = ""
43
- bindings = ""
44
-
45
- for cl in range(nclasses):
46
- decl += "class cl%03i;\n" % cl
47
- decl += "\n"
48
-
49
- for cl in range(nclasses):
50
- decl += "class cl%03i {\n" % cl
51
- decl += "public:\n"
52
- bindings += ' py::class_<cl%03i>("cl%03i")\n' % (cl, cl)
53
- for fn in range(nfns):
54
- ret = random.randint(0, nclasses - 1)
55
- params = [random.randint(0, nclasses - 1) for i in range(nargs)]
56
- decl += " cl%03i *fn_%03i(" % (ret, fn)
57
- decl += ", ".join("cl%03i *" % p for p in params)
58
- decl += ");\n"
59
- bindings += (
60
- ' .def("fn_%03i", &cl%03i::fn_%03i, py::return_value_policy<py::manage_new_object>())\n'
61
- % (fn, cl, fn)
62
- )
63
- decl += "};\n\n"
64
- bindings += " ;\n"
65
-
66
- result = "#include <boost/python.hpp>\n\n"
67
- result += "namespace py = boost::python;\n\n"
68
- result += decl + "\n"
69
- result += "BOOST_PYTHON_MODULE(example) {\n"
70
- result += bindings
71
- result += "}"
72
- return result
73
-
74
-
75
- for codegen in [generate_dummy_code_pybind11, generate_dummy_code_boost]:
76
- print("{")
77
- for i in range(0, 10):
78
- nclasses = 2 ** i
79
- with open("test.cpp", "w") as f:
80
- f.write(codegen(nclasses))
81
- n1 = dt.datetime.now()
82
- os.system(
83
- "g++ -Os -shared -rdynamic -undefined dynamic_lookup "
84
- "-fvisibility=hidden -std=c++14 test.cpp -I include "
85
- "-I /System/Library/Frameworks/Python.framework/Headers -o test.so"
86
- )
87
- n2 = dt.datetime.now()
88
- elapsed = (n2 - n1).total_seconds()
89
- size = os.stat("test.so").st_size
90
- print(" {%i, %f, %i}," % (nclasses * nfns, elapsed, size))
91
- print("}")
@@ -1,95 +0,0 @@
1
- Benchmark
2
- =========
3
-
4
- The following is the result of a synthetic benchmark comparing both compilation
5
- time and module size of pybind11 against Boost.Python. A detailed report about a
6
- Boost.Python to pybind11 conversion of a real project is available here: [#f1]_.
7
-
8
- .. [#f1] http://graylab.jhu.edu/RosettaCon2016/PyRosetta-4.pdf
9
-
10
- Setup
11
- -----
12
-
13
- A python script (see the ``docs/benchmark.py`` file) was used to generate a set
14
- of files with dummy classes whose count increases for each successive benchmark
15
- (between 1 and 2048 classes in powers of two). Each class has four methods with
16
- a randomly generated signature with a return value and four arguments. (There
17
- was no particular reason for this setup other than the desire to generate many
18
- unique function signatures whose count could be controlled in a simple way.)
19
-
20
- Here is an example of the binding code for one class:
21
-
22
- .. code-block:: cpp
23
-
24
- ...
25
- class cl034 {
26
- public:
27
- cl279 *fn_000(cl084 *, cl057 *, cl065 *, cl042 *);
28
- cl025 *fn_001(cl098 *, cl262 *, cl414 *, cl121 *);
29
- cl085 *fn_002(cl445 *, cl297 *, cl145 *, cl421 *);
30
- cl470 *fn_003(cl200 *, cl323 *, cl332 *, cl492 *);
31
- };
32
- ...
33
-
34
- PYBIND11_MODULE(example, m) {
35
- ...
36
- py::class_<cl034>(m, "cl034")
37
- .def("fn_000", &cl034::fn_000)
38
- .def("fn_001", &cl034::fn_001)
39
- .def("fn_002", &cl034::fn_002)
40
- .def("fn_003", &cl034::fn_003)
41
- ...
42
- }
43
-
44
- The Boost.Python version looks almost identical except that a return value
45
- policy had to be specified as an argument to ``def()``. For both libraries,
46
- compilation was done with
47
-
48
- .. code-block:: bash
49
-
50
- Apple LLVM version 7.0.2 (clang-700.1.81)
51
-
52
- and the following compilation flags
53
-
54
- .. code-block:: bash
55
-
56
- g++ -Os -shared -rdynamic -undefined dynamic_lookup -fvisibility=hidden -std=c++14
57
-
58
- Compilation time
59
- ----------------
60
-
61
- The following log-log plot shows how the compilation time grows for an
62
- increasing number of class and function declarations. pybind11 includes many
63
- fewer headers, which initially leads to shorter compilation times, but the
64
- performance is ultimately fairly similar (pybind11 is 19.8 seconds faster for
65
- the largest largest file with 2048 classes and a total of 8192 methods -- a
66
- modest **1.2x** speedup relative to Boost.Python, which required 116.35
67
- seconds).
68
-
69
- .. only:: not latex
70
-
71
- .. image:: pybind11_vs_boost_python1.svg
72
-
73
- .. only:: latex
74
-
75
- .. image:: pybind11_vs_boost_python1.png
76
-
77
- Module size
78
- -----------
79
-
80
- Differences between the two libraries become much more pronounced when
81
- considering the file size of the generated Python plugin: for the largest file,
82
- the binary generated by Boost.Python required 16.8 MiB, which was **2.17
83
- times** / **9.1 megabytes** larger than the output generated by pybind11. For
84
- very small inputs, Boost.Python has an edge in the plot below -- however, note
85
- that it stores many definitions in an external library, whose size was not
86
- included here, hence the comparison is slightly shifted in Boost.Python's
87
- favor.
88
-
89
- .. only:: not latex
90
-
91
- .. image:: pybind11_vs_boost_python2.svg
92
-
93
- .. only:: latex
94
-
95
- .. image:: pybind11_vs_boost_python2.png