uproot 5.4.2__tar.gz → 5.5.1__tar.gz

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.
Files changed (298) hide show
  1. {uproot-5.4.2 → uproot-5.5.1}/.all-contributorsrc +9 -0
  2. {uproot-5.4.2 → uproot-5.5.1}/.github/workflows/build-test.yml +2 -2
  3. {uproot-5.4.2 → uproot-5.5.1}/.github/workflows/deploy.yml +1 -1
  4. {uproot-5.4.2 → uproot-5.5.1}/.pre-commit-config.yaml +1 -1
  5. {uproot-5.4.2 → uproot-5.5.1}/.readthedocs.yml +1 -1
  6. {uproot-5.4.2 → uproot-5.5.1}/PKG-INFO +5 -7
  7. {uproot-5.4.2 → uproot-5.5.1}/README.md +2 -1
  8. {uproot-5.4.2 → uproot-5.5.1}/pyproject.toml +1 -3
  9. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/_util.py +4 -1
  10. uproot-5.5.1/src/uproot/const.py +283 -0
  11. uproot-5.5.1/src/uproot/interpretation/known_forth/__init__.py +46 -0
  12. uproot-5.5.1/src/uproot/interpretation/known_forth/atlas.py +99 -0
  13. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/interpretation/objects.py +15 -2
  14. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/models/RNTuple.py +126 -92
  15. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/reading.py +1 -1
  16. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/source/fsspec.py +8 -16
  17. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/version.py +2 -2
  18. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/writing/_cascadetree.py +10 -2
  19. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0013_rntuple_anchor.py +25 -26
  20. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0630_rntuple_basics.py +5 -3
  21. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0662_rntuple_stl_containers.py +1 -1
  22. uproot-5.4.2/tests/test_0962_RNTuple_update.py → uproot-5.5.1/tests/test_0962_rntuple_update.py +5 -28
  23. uproot-5.5.1/tests/test_1191_rntuple_fixes.py +65 -0
  24. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1223_more_rntuple_types.py +9 -6
  25. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1250_rntuple_improvements.py +14 -14
  26. uproot-5.5.1/tests/test_1282_add_known_forth_for_atlas.py +48 -0
  27. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1285_rntuple_multicluster_concatenation.py +1 -1
  28. {uproot-5.4.2 → uproot-5.5.1}/tests-wasm/test_1272_basic_functionality.py +3 -0
  29. uproot-5.4.2/src/uproot/const.py +0 -262
  30. uproot-5.4.2/tests/test_1191_rntuple_fixes.py +0 -87
  31. {uproot-5.4.2 → uproot-5.5.1}/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
  32. {uproot-5.4.2 → uproot-5.5.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  33. {uproot-5.4.2 → uproot-5.5.1}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
  34. {uproot-5.4.2 → uproot-5.5.1}/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
  35. {uproot-5.4.2 → uproot-5.5.1}/.github/dependabot.yml +0 -0
  36. {uproot-5.4.2 → uproot-5.5.1}/.github/workflows/build-distributions.yml +0 -0
  37. {uproot-5.4.2 → uproot-5.5.1}/.github/workflows/semantic-pr-title.yml +0 -0
  38. {uproot-5.4.2 → uproot-5.5.1}/.github/workflows/upload-nightly-wheels.yml +0 -0
  39. {uproot-5.4.2 → uproot-5.5.1}/.gitignore +0 -0
  40. {uproot-5.4.2 → uproot-5.5.1}/CITATION.cff +0 -0
  41. {uproot-5.4.2 → uproot-5.5.1}/LICENSE +0 -0
  42. {uproot-5.4.2 → uproot-5.5.1}/dev/example-objects.py +0 -0
  43. {uproot-5.4.2 → uproot-5.5.1}/dev/make-models.py +0 -0
  44. {uproot-5.4.2 → uproot-5.5.1}/docs-img/diagrams/abstraction-layers.png +0 -0
  45. {uproot-5.4.2 → uproot-5.5.1}/docs-img/diagrams/abstraction-layers.svg +0 -0
  46. {uproot-5.4.2 → uproot-5.5.1}/docs-img/diagrams/example-dask-graph.png +0 -0
  47. {uproot-5.4.2 → uproot-5.5.1}/docs-img/diagrams/uproot-awkward-timeline.png +0 -0
  48. {uproot-5.4.2 → uproot-5.5.1}/docs-img/diagrams/uproot-awkward-timeline.svg +0 -0
  49. {uproot-5.4.2 → uproot-5.5.1}/docs-img/logo/logo-300px-white.png +0 -0
  50. {uproot-5.4.2 → uproot-5.5.1}/docs-img/logo/logo-300px.png +0 -0
  51. {uproot-5.4.2 → uproot-5.5.1}/docs-img/logo/logo-600px.png +0 -0
  52. {uproot-5.4.2 → uproot-5.5.1}/docs-img/logo/logo.svg +0 -0
  53. {uproot-5.4.2 → uproot-5.5.1}/docs-img/photos/switcheroo.jpg +0 -0
  54. {uproot-5.4.2 → uproot-5.5.1}/docs-sphinx/_templates/breadcrumbs.html +0 -0
  55. {uproot-5.4.2 → uproot-5.5.1}/docs-sphinx/basic.rst +0 -0
  56. {uproot-5.4.2 → uproot-5.5.1}/docs-sphinx/conf.py +0 -0
  57. {uproot-5.4.2 → uproot-5.5.1}/docs-sphinx/index.rst +0 -0
  58. {uproot-5.4.2 → uproot-5.5.1}/docs-sphinx/make_changelog.py +0 -0
  59. {uproot-5.4.2 → uproot-5.5.1}/docs-sphinx/prepare_docstrings.py +0 -0
  60. {uproot-5.4.2 → uproot-5.5.1}/docs-sphinx/requirements.txt +0 -0
  61. {uproot-5.4.2 → uproot-5.5.1}/docs-sphinx/uproot3-to-4.rst +0 -0
  62. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/__init__.py +0 -0
  63. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/_awkwardforth.py +0 -0
  64. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/_dask.py +0 -0
  65. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/behavior.py +0 -0
  66. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/behaviors/RooCurve.py +0 -0
  67. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/behaviors/RooHist.py +0 -0
  68. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/behaviors/TAxis.py +0 -0
  69. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/behaviors/TBranch.py +0 -0
  70. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/behaviors/TBranchElement.py +0 -0
  71. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/behaviors/TDatime.py +0 -0
  72. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/behaviors/TGraph.py +0 -0
  73. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/behaviors/TGraphAsymmErrors.py +0 -0
  74. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/behaviors/TGraphErrors.py +0 -0
  75. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/behaviors/TH1.py +0 -0
  76. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/behaviors/TH2.py +0 -0
  77. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/behaviors/TH2Poly.py +0 -0
  78. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/behaviors/TH3.py +0 -0
  79. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/behaviors/TParameter.py +0 -0
  80. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/behaviors/TProfile.py +0 -0
  81. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/behaviors/TProfile2D.py +0 -0
  82. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/behaviors/TProfile3D.py +0 -0
  83. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/behaviors/TTree.py +0 -0
  84. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/behaviors/__init__.py +0 -0
  85. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/cache.py +0 -0
  86. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/compression.py +0 -0
  87. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/containers.py +0 -0
  88. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/deserialization.py +0 -0
  89. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/dynamic.py +0 -0
  90. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/exceptions.py +0 -0
  91. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/extras.py +0 -0
  92. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/interpretation/__init__.py +0 -0
  93. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/interpretation/grouped.py +0 -0
  94. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/interpretation/identify.py +0 -0
  95. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/interpretation/jagged.py +0 -0
  96. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/interpretation/library.py +0 -0
  97. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/interpretation/numerical.py +0 -0
  98. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/interpretation/strings.py +0 -0
  99. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/language/__init__.py +0 -0
  100. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/language/python.py +0 -0
  101. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/model.py +0 -0
  102. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/models/TArray.py +0 -0
  103. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/models/TAtt.py +0 -0
  104. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/models/TBasket.py +0 -0
  105. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/models/TBranch.py +0 -0
  106. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/models/TClonesArray.py +0 -0
  107. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/models/TDatime.py +0 -0
  108. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/models/TGraph.py +0 -0
  109. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/models/TH.py +0 -0
  110. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/models/THashList.py +0 -0
  111. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/models/TLeaf.py +0 -0
  112. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/models/TList.py +0 -0
  113. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/models/TMatrixT.py +0 -0
  114. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/models/TNamed.py +0 -0
  115. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/models/TObjArray.py +0 -0
  116. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/models/TObjString.py +0 -0
  117. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/models/TObject.py +0 -0
  118. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/models/TRef.py +0 -0
  119. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/models/TString.py +0 -0
  120. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/models/TTable.py +0 -0
  121. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/models/TTime.py +0 -0
  122. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/models/TTree.py +0 -0
  123. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/models/__init__.py +0 -0
  124. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/pyroot.py +0 -0
  125. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/serialization.py +0 -0
  126. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/sink/__init__.py +0 -0
  127. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/sink/file.py +0 -0
  128. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/source/__init__.py +0 -0
  129. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/source/chunk.py +0 -0
  130. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/source/coalesce.py +0 -0
  131. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/source/cursor.py +0 -0
  132. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/source/file.py +0 -0
  133. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/source/futures.py +0 -0
  134. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/source/http.py +0 -0
  135. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/source/object.py +0 -0
  136. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/source/s3.py +0 -0
  137. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/source/xrootd.py +0 -0
  138. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/streamers.py +0 -0
  139. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/writing/__init__.py +0 -0
  140. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/writing/_cascade.py +0 -0
  141. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/writing/_cascadentuple.py +0 -0
  142. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/writing/_dask_write.py +0 -0
  143. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/writing/identify.py +0 -0
  144. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/writing/interpret.py +0 -0
  145. {uproot-5.4.2 → uproot-5.5.1}/src/uproot/writing/writable.py +0 -0
  146. {uproot-5.4.2 → uproot-5.5.1}/tests/__init__.py +0 -0
  147. {uproot-5.4.2 → uproot-5.5.1}/tests/conftest.py +0 -0
  148. {uproot-5.4.2 → uproot-5.5.1}/tests/samples/h_dynamic.pkl +0 -0
  149. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0001_source_class.py +0 -0
  150. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0006_notify_when_downloaded.py +0 -0
  151. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0007_single_chunk_interface.py +0 -0
  152. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0008_start_interpretation.py +0 -0
  153. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0009_nested_directories.py +0 -0
  154. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0010_start_streamers.py +0 -0
  155. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0011_generate_classes_from_streamers.py +0 -0
  156. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0014_all_ttree_versions.py +0 -0
  157. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0016_interpretations.py +0 -0
  158. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0017_multi_basket_multi_branch_fetch.py +0 -0
  159. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0018_array_fetching_interface.py +0 -0
  160. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0022_number_of_branches.py +0 -0
  161. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0023_more_interpretations_1.py +0 -0
  162. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0023_ttree_versions.py +0 -0
  163. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0028_fallback_to_read_streamer.py +0 -0
  164. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0029_more_string_types.py +0 -0
  165. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0031_test_stl_containers.py +0 -0
  166. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0033_more_interpretations_2.py +0 -0
  167. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0034_generic_objects_in_ttrees.py +0 -0
  168. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0035_datatype_generality.py +0 -0
  169. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0038_memberwise_serialization.py +0 -0
  170. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0043_iterate_function.py +0 -0
  171. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0044_concatenate_function.py +0 -0
  172. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0046_histograms_bh_hist.py +0 -0
  173. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0053_parents_should_not_be_bases.py +0 -0
  174. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0058_detach_model_objects_from_files.py +0 -0
  175. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0066_fix_http_fallback_freeze.py +0 -0
  176. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0067_common_entry_offsets.py +0 -0
  177. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0081_dont_parse_colons.py +0 -0
  178. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0087_memberwise_splitting_not_implemented_messages.py +0 -0
  179. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0088_read_with_http.py +0 -0
  180. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0099_read_from_file_object.py +0 -0
  181. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0112_fix_pandas_with_cut.py +0 -0
  182. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0118_fix_name_fetch_again.py +0 -0
  183. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0123_atlas_issues.py +0 -0
  184. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0126_turn_unknown_emptyarrays_into_known_types.py +0 -0
  185. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0167_use_the_common_histogram_interface.py +0 -0
  186. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0172_allow_allocators_in_vector_typenames.py +0 -0
  187. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0173_empty_and_multiprocessing_bugs.py +0 -0
  188. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0182_complain_about_missing_files.py +0 -0
  189. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0194_fix_lost_cuts_in_iterate.py +0 -0
  190. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0220_contiguous_byte_ranges_in_http.py +0 -0
  191. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0228_read_TProfiles.py +0 -0
  192. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0240_read_TGraphAsymmErrors.py +0 -0
  193. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0278_specializations_for_TParameter.py +0 -0
  194. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0302_pickle.py +0 -0
  195. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0303_empty_jagged_array.py +0 -0
  196. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0320_start_working_on_ROOT_writing.py +0 -0
  197. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0322_writablefile_infrastructure.py +0 -0
  198. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0329_update_existing_root_files.py +0 -0
  199. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0335_empty_ttree_division_by_zero.py +0 -0
  200. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0341_manipulate_streamer_info.py +0 -0
  201. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0344_writabledirectory_can_read.py +0 -0
  202. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0345_bulk_copy_method.py +0 -0
  203. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0349_write_TObjString.py +0 -0
  204. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0350_read_RooCurve_RooHist.py +0 -0
  205. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0351_write_TList.py +0 -0
  206. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0352_write_THashList.py +0 -0
  207. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0384_move_behavior_of_and_fix_383.py +0 -0
  208. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0398_dimensions_in_leaflist.py +0 -0
  209. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0405_write_a_histogram.py +0 -0
  210. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0406_write_a_ttree.py +0 -0
  211. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0407_read_TDatime.py +0 -0
  212. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0412_write_multidimensional_numpy_to_ttree.py +0 -0
  213. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0414_write_jagged_arrays.py +0 -0
  214. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0416_writing_compressed_data.py +0 -0
  215. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0418_read_TTable.py +0 -0
  216. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0420_pyroot_uproot_interoperability.py +0 -0
  217. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0422_hist_integration.py +0 -0
  218. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0430_global_index_for_tuples_of_DataFrames.py +0 -0
  219. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0438_TClonesArray_is_not_AsGrouped.py +0 -0
  220. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0439_check_awkward_before_numpy.py +0 -0
  221. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0442_regular_TClonesArray.py +0 -0
  222. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0472_tstreamerinfo_for_ttree.py +0 -0
  223. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0475_remember_to_update_freesegments.py +0 -0
  224. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0484_manually_add_model_for_TMatrixTSym_double_.py +0 -0
  225. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0487_implement_asdtypeinplace.py +0 -0
  226. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0498_create_leaf_branch_in_extend.py +0 -0
  227. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0519_remove_memmap_copy.py +0 -0
  228. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0520_dynamic_classes_cant_be_abc_subclasses.py +0 -0
  229. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0569_fBits_is_4_bytes.py +0 -0
  230. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0576_unicode_in_names.py +0 -0
  231. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0578_dask_for_numpy.py +0 -0
  232. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0580_round_trip_for_no_flow_histograms.py +0 -0
  233. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0589_explicitly_interpret_RVec_type.py +0 -0
  234. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0603_dask_delayed_open.py +0 -0
  235. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0609_num_enteries_func.py +0 -0
  236. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0610_awkward_form.py +0 -0
  237. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0637_setup_tests_for_AwkwardForth.py +0 -0
  238. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0643_reading_vector_pair_TLorentzVector_int.py +0 -0
  239. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0651_implement_transformed_axis.py +0 -0
  240. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0652_dask_for_awkward.py +0 -0
  241. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0692_fsspec_reading.py +0 -0
  242. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0692_fsspec_writing.py +0 -0
  243. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0700_dask_empty_arrays.py +0 -0
  244. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0705_rntuple_writing_metadata.py +0 -0
  245. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0750_avoid_empty_TBasket_issue.py +0 -0
  246. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0755_dask_awkward_column_projection.py +0 -0
  247. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0791_protect_uproot_project_columns_from_dask_node_names.py +0 -0
  248. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0798_DAOD_PHYSLITE.py +0 -0
  249. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0808_fix_awkward_form_for_AsStridedObjects.py +0 -0
  250. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0816_separate_AwkwardForth_machines_by_TBranch.py +0 -0
  251. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0832_ak_add_doc_should_also_add_to_typetracer.py +0 -0
  252. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0840_support_tleafG.py +0 -0
  253. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0841_fix_814.py +0 -0
  254. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0844_fix_delete_hist_from_root.py +0 -0
  255. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0852_fix_strided_interp_extra_offsets.py +0 -0
  256. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0870_writing_arrays_of_type_unknown_fix_822.py +0 -0
  257. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0876_uproot_dask_blind_steps.py +0 -0
  258. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0886_fix_awkward_form_breadcrumbs.py +0 -0
  259. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0910_fix_906_members_non_numerical_branches.py +0 -0
  260. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0911_fix_interp_array_non_numerical_objs_issue_880.py +0 -0
  261. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0912_fix_pandas_and_double_nested_vectors_issue_885.py +0 -0
  262. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0916_read_from_s3.py +0 -0
  263. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0927_dont_assume_uproot_in_global_scope_in_TPython_Eval.py +0 -0
  264. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0930_expressions_in_pandas.py +0 -0
  265. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0940_feat_add_TLeafC_string_support.py +0 -0
  266. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0965_inverted_axes_variances_hist_888.py +0 -0
  267. {uproot-5.4.2 → uproot-5.5.1}/tests/test_0976_path_object_split.py +0 -0
  268. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1000-write-TProfiles.py +0 -0
  269. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1043_const_std_string.py +0 -0
  270. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1058_dask_awkward_report.py +0 -0
  271. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1063_dask_distributed.py +0 -0
  272. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1070_pandas_dataframe_building_performance_fix.py +0 -0
  273. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1085_dask_write.py +0 -0
  274. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1102_any_locks_in_models_must_be_transient.py +0 -0
  275. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1114_fix_attempt_to_concatenate_numpy_with_awkward.py +0 -0
  276. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1120_check_decompression_executor_pass_for_dask.py +0 -0
  277. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1127_fix_allow_colon_in_key_names.py +0 -0
  278. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1128_TGraph_writing.py +0 -0
  279. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1146_split_ranges_for_large_files_over_http.py +0 -0
  280. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1154_classof_using_relative_path.py +0 -0
  281. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1160_std_string_in_TDirectory.py +0 -0
  282. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1180_read_free_floating_vector_issue_1179.py +0 -0
  283. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1181_support_for_stl_list.py +0 -0
  284. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1182_add_support_for_bitset.py +0 -0
  285. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1183_ttime_custom.py +0 -0
  286. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1186_dtype_might_raise_ValueError.py +0 -0
  287. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1189_dask_failing_on_duplicate_keys.py +0 -0
  288. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1198_coalesce.py +0 -0
  289. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1207_fix_title_of_TBranch_with_counter.py +0 -0
  290. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1212_dont_let_update_mess_up_file_version.py +0 -0
  291. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1221_AwkwardForth_bug.py +0 -0
  292. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1254_test_threadpool_executor_for_dask.py +0 -0
  293. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1264_write_NumPy_array_of_strings.py +0 -0
  294. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1275_fix_TStreamerLoop_code_generation.py +0 -0
  295. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1318_dont_compare_big_endian_in_awkward.py +0 -0
  296. {uproot-5.4.2 → uproot-5.5.1}/tests/test_1321_pandas_changed_api_again.py +0 -0
  297. {uproot-5.4.2 → uproot-5.5.1}/tests-wasm/__init__.py +0 -0
  298. {uproot-5.4.2 → uproot-5.5.1}/tests-wasm/utils.py +0 -0
@@ -605,6 +605,15 @@
605
605
  "contributions": [
606
606
  "code"
607
607
  ]
608
+ },
609
+ {
610
+ "login": "ariostas",
611
+ "name": "Andres Rios Tascon",
612
+ "avatar_url": "https://avatars.githubusercontent.com/u/7596837?v=4",
613
+ "profile": "http://www.ariostas.com",
614
+ "contributions": [
615
+ "code"
616
+ ]
608
617
  }
609
618
  ],
610
619
  "contributorsPerLine": 7,
@@ -16,7 +16,7 @@ jobs:
16
16
  fail-fast: false
17
17
  matrix:
18
18
  platform: [windows-latest, macos-latest, ubuntu-latest]
19
- python-version: ['3.8', '3.9', '3.10', '3.11', '3.12']
19
+ python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
20
20
 
21
21
  runs-on: ${{ matrix.platform }}
22
22
  timeout-minutes: 30
@@ -41,7 +41,7 @@ jobs:
41
41
  run: python -c "import sys; assert '.'.join(str(s) for s in sys.version_info[:2]) == '${{ matrix.python-version }}', f'{version} incorrect!'"
42
42
 
43
43
  - name: Install ROOT
44
- if: matrix.python-version == 3.8 && runner.os != 'macOS' && runner.os != 'Windows'
44
+ if: matrix.python-version == 3.9 && runner.os != 'macOS' && runner.os != 'Windows'
45
45
  run: |
46
46
  conda env list
47
47
  mamba install root
@@ -36,7 +36,7 @@ jobs:
36
36
  run: ls -lha dist/
37
37
 
38
38
  - name: Generate artifact attestation for sdist and wheel
39
- uses: actions/attest-build-provenance@1c608d11d69870c2092266b3f9a6f3abbf17002c # v1.4.3
39
+ uses: actions/attest-build-provenance@ef244123eb79f2f7a7e75d99086184180e6d0018 # v1.4.4
40
40
  with:
41
41
  subject-path: dist/uproot-*
42
42
 
@@ -23,7 +23,7 @@ repos:
23
23
  - id: black
24
24
 
25
25
  - repo: https://github.com/astral-sh/ruff-pre-commit
26
- rev: v0.7.2
26
+ rev: v0.7.4
27
27
  hooks:
28
28
  - id: ruff
29
29
  args: [--fix, --show-fixes]
@@ -6,7 +6,7 @@ sphinx:
6
6
  build:
7
7
  os: ubuntu-22.04
8
8
  tools:
9
- python: '3.8'
9
+ python: '3.9'
10
10
 
11
11
  python:
12
12
  install:
@@ -1,12 +1,11 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: uproot
3
- Version: 5.4.2
3
+ Version: 5.5.1
4
4
  Summary: ROOT I/O in pure Python and NumPy.
5
5
  Project-URL: Download, https://github.com/scikit-hep/uproot5/releases
6
6
  Project-URL: Homepage, https://github.com/scikit-hep/uproot5
7
7
  Author-email: Jim Pivarski <pivarski@princeton.edu>
8
- License-Expression: BSD-3-Clause
9
- License-File: LICENSE
8
+ License: BSD-3-Clause
10
9
  Classifier: Development Status :: 5 - Production/Stable
11
10
  Classifier: Intended Audience :: Developers
12
11
  Classifier: Intended Audience :: Information Technology
@@ -18,7 +17,6 @@ Classifier: Operating System :: Unix
18
17
  Classifier: Programming Language :: Python
19
18
  Classifier: Programming Language :: Python :: 3
20
19
  Classifier: Programming Language :: Python :: 3 :: Only
21
- Classifier: Programming Language :: Python :: 3.8
22
20
  Classifier: Programming Language :: Python :: 3.9
23
21
  Classifier: Programming Language :: Python :: 3.10
24
22
  Classifier: Programming Language :: Python :: 3.11
@@ -30,7 +28,7 @@ Classifier: Topic :: Scientific/Engineering :: Mathematics
30
28
  Classifier: Topic :: Scientific/Engineering :: Physics
31
29
  Classifier: Topic :: Software Development
32
30
  Classifier: Topic :: Utilities
33
- Requires-Python: >=3.8
31
+ Requires-Python: >=3.9
34
32
  Requires-Dist: awkward>=2.4.6
35
33
  Requires-Dist: cramjam>=2.5.0
36
34
  Requires-Dist: fsspec
@@ -68,7 +66,6 @@ Requires-Dist: pytest-pyodide; extra == 'test-pyodide'
68
66
  Requires-Dist: pytest-timeout; extra == 'test-pyodide'
69
67
  Requires-Dist: pytest>=6; extra == 'test-pyodide'
70
68
  Requires-Dist: scikit-hep-testdata; extra == 'test-pyodide'
71
- Requires-Dist: selenium<=4.25.0; extra == 'test-pyodide'
72
69
  Provides-Extra: xrootd
73
70
  Requires-Dist: fsspec-xrootd; extra == 'xrootd'
74
71
  Description-Content-Type: text/markdown
@@ -77,7 +74,7 @@ Description-Content-Type: text/markdown
77
74
 
78
75
  [![PyPI version](https://badge.fury.io/py/uproot.svg)](https://pypi.org/project/uproot)
79
76
  [![Conda-Forge](https://img.shields.io/conda/vn/conda-forge/uproot)](https://github.com/conda-forge/uproot-feedstock)
80
- [![Python 3.8‒3.12](https://img.shields.io/badge/python-3.8%E2%80%923.12-blue)](https://www.python.org)
77
+ [![Python 3.9‒3.13](https://img.shields.io/badge/python-3.9%E2%80%923.13-blue)](https://www.python.org)
81
78
  [![BSD-3 Clause License](https://img.shields.io/badge/license-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)
82
79
  [![Continuous integration tests](https://github.com/scikit-hep/uproot5/actions/workflows/build-test.yml/badge.svg)](https://github.com/scikit-hep/uproot5/actions)
83
80
 
@@ -268,6 +265,7 @@ Thanks especially to the gracious help of Uproot contributors (including the [or
268
265
  <tr>
269
266
  <td align="center" valign="top" width="14.28%"><a href="https://github.com/MatousVozak"><img src="https://avatars.githubusercontent.com/u/33348191?v=4?s=100" width="100px;" alt="MatousVozak"/><br /><sub><b>MatousVozak</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=MatousVozak" title="Code">💻</a></td>
270
267
  <td align="center" valign="top" width="14.28%"><a href="https://github.com/rossodisera"><img src="https://avatars.githubusercontent.com/u/46961664?v=4?s=100" width="100px;" alt="Andrea Serafini"/><br /><sub><b>Andrea Serafini</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=rossodisera" title="Code">💻</a></td>
268
+ <td align="center" valign="top" width="14.28%"><a href="http://www.ariostas.com"><img src="https://avatars.githubusercontent.com/u/7596837?v=4?s=100" width="100px;" alt="Andres Rios Tascon"/><br /><sub><b>Andres Rios Tascon</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=ariostas" title="Code">💻</a></td>
271
269
  </tr>
272
270
  </tbody>
273
271
  </table>
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![PyPI version](https://badge.fury.io/py/uproot.svg)](https://pypi.org/project/uproot)
4
4
  [![Conda-Forge](https://img.shields.io/conda/vn/conda-forge/uproot)](https://github.com/conda-forge/uproot-feedstock)
5
- [![Python 3.8‒3.12](https://img.shields.io/badge/python-3.8%E2%80%923.12-blue)](https://www.python.org)
5
+ [![Python 3.9‒3.13](https://img.shields.io/badge/python-3.9%E2%80%923.13-blue)](https://www.python.org)
6
6
  [![BSD-3 Clause License](https://img.shields.io/badge/license-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)
7
7
  [![Continuous integration tests](https://github.com/scikit-hep/uproot5/actions/workflows/build-test.yml/badge.svg)](https://github.com/scikit-hep/uproot5/actions)
8
8
 
@@ -193,6 +193,7 @@ Thanks especially to the gracious help of Uproot contributors (including the [or
193
193
  <tr>
194
194
  <td align="center" valign="top" width="14.28%"><a href="https://github.com/MatousVozak"><img src="https://avatars.githubusercontent.com/u/33348191?v=4?s=100" width="100px;" alt="MatousVozak"/><br /><sub><b>MatousVozak</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=MatousVozak" title="Code">💻</a></td>
195
195
  <td align="center" valign="top" width="14.28%"><a href="https://github.com/rossodisera"><img src="https://avatars.githubusercontent.com/u/46961664?v=4?s=100" width="100px;" alt="Andrea Serafini"/><br /><sub><b>Andrea Serafini</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=rossodisera" title="Code">💻</a></td>
196
+ <td align="center" valign="top" width="14.28%"><a href="http://www.ariostas.com"><img src="https://avatars.githubusercontent.com/u/7596837?v=4?s=100" width="100px;" alt="Andres Rios Tascon"/><br /><sub><b>Andres Rios Tascon</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=ariostas" title="Code">💻</a></td>
196
197
  </tr>
197
198
  </tbody>
198
199
  </table>
@@ -24,7 +24,6 @@ classifiers = [
24
24
  "Programming Language :: Python",
25
25
  "Programming Language :: Python :: 3",
26
26
  "Programming Language :: Python :: 3 :: Only",
27
- "Programming Language :: Python :: 3.8",
28
27
  "Programming Language :: Python :: 3.9",
29
28
  "Programming Language :: Python :: 3.10",
30
29
  "Programming Language :: Python :: 3.11",
@@ -53,7 +52,7 @@ dynamic = [
53
52
  license = "BSD-3-Clause"
54
53
  name = "uproot"
55
54
  readme = "README.md"
56
- requires-python = ">=3.8"
55
+ requires-python = ">=3.9"
57
56
 
58
57
  [project.optional-dependencies]
59
58
  dev = [
@@ -83,7 +82,6 @@ test = [
83
82
  ]
84
83
  test-pyodide = [
85
84
  "pytest>=6",
86
- "selenium<=4.25.0", # unpin once >4.26.0 is available
87
85
  "pytest-pyodide",
88
86
  "pytest-timeout",
89
87
  "scikit-hep-testdata"
@@ -91,7 +91,10 @@ def ensure_numpy(array, types=(numpy.bool_, numpy.integer, numpy.floating)):
91
91
  else:
92
92
  try:
93
93
  out = numpy.asarray(array)
94
- except (ValueError, numpy.VisibleDeprecationWarning) as err:
94
+ except (
95
+ ValueError,
96
+ getattr(numpy, "exceptions", numpy).VisibleDeprecationWarning,
97
+ ) as err:
95
98
  raise TypeError("cannot be converted to a NumPy array") from err
96
99
  if not issubclass(out.dtype.type, types):
97
100
  raise TypeError(f"cannot be converted to a NumPy array of type {types}")
@@ -0,0 +1,283 @@
1
+ # BSD 3-Clause License; see https://github.com/scikit-hep/uproot5/blob/main/LICENSE
2
+
3
+ """
4
+ This module defines integer constants used by serialization and deserialization routines.
5
+ """
6
+ from __future__ import annotations
7
+
8
+ from enum import IntEnum
9
+
10
+ import numpy
11
+
12
+ # determines when a file is "big"
13
+ kStartBigFile = 2000000000
14
+
15
+ # used in unmarshaling
16
+ kByteCountMask = numpy.int64(0x40000000)
17
+ kByteCountVMask = numpy.int64(0x4000)
18
+ kClassMask = numpy.int64(0x80000000)
19
+ kNewClassTag = numpy.int64(0xFFFFFFFF)
20
+
21
+ kIsOnHeap = numpy.uint32(0x01000000)
22
+ kNotDeleted = numpy.uint32(0x02000000)
23
+ kMustCleanup = numpy.uint32(1 << 3)
24
+ kIsReferenced = numpy.uint32(1 << 4)
25
+
26
+ kMapOffset = 2
27
+
28
+ # not used?
29
+ kNullTag = 0
30
+ kZombie = numpy.uint32(0x04000000)
31
+ kBitMask = numpy.uint32(0x00FFFFFF)
32
+ kDisplacementMask = numpy.uint32(0xFF000000)
33
+
34
+ ############# core/zip/inc/Compression.h
35
+
36
+ kZLIB = 1
37
+ kLZMA = 2
38
+ kOldCompressionAlgo = 3
39
+ kLZ4 = 4
40
+ kZSTD = 5
41
+ kUndefinedCompressionAlgorithm = 6
42
+
43
+ ############# constants for streamers
44
+
45
+ kBase = 0
46
+ kChar = 1
47
+ kShort = 2
48
+ kInt = 3
49
+ kLong = 4
50
+ kFloat = 5
51
+ kCounter = 6
52
+ kCharStar = 7
53
+ kDouble = 8
54
+ kDouble32 = 9
55
+ kLegacyChar = 10
56
+ kUChar = 11
57
+ kUShort = 12
58
+ kUInt = 13
59
+ kULong = 14
60
+ kBits = 15
61
+ kLong64 = 16
62
+ kULong64 = 17
63
+ kBool = 18
64
+ kFloat16 = 19
65
+ kOffsetL = 20
66
+ kOffsetP = 40
67
+ kObject = 61
68
+ kAny = 62
69
+ kObjectp = 63
70
+ kObjectP = 64
71
+ kTString = 65
72
+ kTObject = 66
73
+ kTNamed = 67
74
+ kAnyp = 68
75
+ kAnyP = 69
76
+ kAnyPnoVT = 70
77
+ kSTLp = 71
78
+
79
+ kSkip = 100
80
+ kSkipL = 120
81
+ kSkipP = 140
82
+
83
+ kConv = 200
84
+ kConvL = 220
85
+ kConvP = 240
86
+
87
+ kSTL = 300
88
+ kSTLstring = 365
89
+
90
+ kStreamer = 500
91
+ kStreamLoop = 501
92
+
93
+ ############# constants from core/foundation/inc/ESTLType.h
94
+
95
+ kNotSTL = 0
96
+ kSTLvector = 1
97
+ kSTLlist = 2
98
+ kSTLdeque = 3
99
+ kSTLmap = 4
100
+ kSTLmultimap = 5
101
+ kSTLset = 6
102
+ kSTLmultiset = 7
103
+ kSTLbitset = 8
104
+ kSTLforwardlist = 9
105
+ kSTLunorderedset = 10
106
+ kSTLunorderedmultiset = 11
107
+ kSTLunorderedmap = 12
108
+ kSTLunorderedmultimap = 13
109
+ kSTLend = 14
110
+ kSTLany = 300
111
+
112
+ ############# IOFeatures
113
+
114
+ kGenerateOffsetMap = numpy.uint8(1)
115
+
116
+ ############# other
117
+
118
+ kStreamedMemberWise = numpy.uint16(1 << 14)
119
+
120
+ ############ RNTuple https://github.com/root-project/root/blob/0b9cdbcfd326ba50ee6c2f202675656129eafbe7/tree/ntuple/v7/doc/BinaryFormatSpecification.md
121
+ rntuple_col_num_to_dtype_dict = {
122
+ 0x00: "bit",
123
+ 0x01: "uint8", # uninterpreted byte
124
+ 0x02: "uint8", # char
125
+ 0x03: "int8",
126
+ 0x04: "uint8",
127
+ 0x05: "int16",
128
+ 0x06: "uint16",
129
+ 0x07: "int32",
130
+ 0x08: "uint32",
131
+ 0x09: "int64",
132
+ 0x0A: "uint64",
133
+ 0x0B: "float16",
134
+ 0x0C: "float32",
135
+ 0x0D: "float64",
136
+ 0x0E: "uint32", # Index32
137
+ 0x0F: "uint64", # Index64
138
+ 0x10: "switch", # Switch: (uint64, uint32)
139
+ 0x11: "int16", # SplitInt16: split + zigzag encoding
140
+ 0x12: "uint16", # SplitUInt16: split encoding
141
+ 0x13: "int32", # SplitInt32: split + zigzag encoding
142
+ 0x14: "uint32", # SplitUInt32: split encoding
143
+ 0x15: "int64", # SplitInt64: split + zigzag encoding
144
+ 0x16: "uint64", # SplitUInt64: split encoding
145
+ 0x17: "float16", # SplitReal16: split encoding
146
+ 0x18: "float32", # SplitReal32: split encoding
147
+ 0x19: "float64", # SplitReal64: split encoding
148
+ 0x1A: "uint32", # SplitIndex32: split + delta encoding
149
+ 0x1B: "uint64", # SplitIndex64: split + delta encoding
150
+ 0x1C: "real32trunc", # Real32Trunc: float32 with truncated mantissa
151
+ 0x1D: "real32quant", # Real32Quant: float32 with quantized integer representation
152
+ }
153
+ rntuple_col_num_to_size_dict = {
154
+ 0x00: 1,
155
+ 0x01: 8,
156
+ 0x02: 8,
157
+ 0x03: 8,
158
+ 0x04: 8,
159
+ 0x05: 16,
160
+ 0x06: 16,
161
+ 0x07: 32,
162
+ 0x08: 32,
163
+ 0x09: 64,
164
+ 0x0A: 64,
165
+ 0x0B: 16,
166
+ 0x0C: 32,
167
+ 0x0D: 64,
168
+ 0x0E: 32,
169
+ 0x0F: 64,
170
+ 0x10: 96,
171
+ 0x11: 16,
172
+ 0x12: 16,
173
+ 0x13: 32,
174
+ 0x14: 32,
175
+ 0x15: 64,
176
+ 0x16: 64,
177
+ 0x17: 16,
178
+ 0x18: 32,
179
+ 0x19: 64,
180
+ 0x1A: 32,
181
+ 0x1B: 64,
182
+ 0x1C: 31, # variable from 10 to 31
183
+ 0x1D: 32, # variable from 1 to 32
184
+ }
185
+ rntuple_col_type_to_num_dict = {
186
+ "bit": 0x00,
187
+ "byte": 0x01,
188
+ "char": 0x02,
189
+ "int8": 0x03,
190
+ "uint8": 0x04,
191
+ "int16": 0x05,
192
+ "uint16": 0x06,
193
+ "int32": 0x07,
194
+ "uint32": 0x08,
195
+ "int64": 0x09,
196
+ "uint64": 0x0A,
197
+ "real16": 0x0B,
198
+ "real32": 0x0C,
199
+ "real64": 0x0D,
200
+ "index32": 0x0E,
201
+ "index64": 0x0F,
202
+ "switch": 0x10,
203
+ "splitint16": 0x11,
204
+ "splituint16": 0x12,
205
+ "splitint32": 0x13,
206
+ "splituint32": 0x14,
207
+ "splitint64": 0x15,
208
+ "splituint64": 0x16,
209
+ "splitreal16": 0x17,
210
+ "splitreal32": 0x18,
211
+ "splitreal64": 0x19,
212
+ "splitindex32": 0x1A,
213
+ "splitindex64": 0x1B,
214
+ "real32trunc": 0x1C,
215
+ "real32quant": 0x1D,
216
+ }
217
+ rntuple_index_types = (
218
+ rntuple_col_type_to_num_dict["index32"],
219
+ rntuple_col_type_to_num_dict["index64"],
220
+ rntuple_col_type_to_num_dict["splitindex32"],
221
+ rntuple_col_type_to_num_dict["splitindex64"],
222
+ )
223
+ rntuple_split_types = (
224
+ rntuple_col_type_to_num_dict["splitint16"],
225
+ rntuple_col_type_to_num_dict["splituint16"],
226
+ rntuple_col_type_to_num_dict["splitint32"],
227
+ rntuple_col_type_to_num_dict["splituint32"],
228
+ rntuple_col_type_to_num_dict["splitint64"],
229
+ rntuple_col_type_to_num_dict["splituint64"],
230
+ rntuple_col_type_to_num_dict["splitreal16"],
231
+ rntuple_col_type_to_num_dict["splitreal32"],
232
+ rntuple_col_type_to_num_dict["splitreal64"],
233
+ rntuple_col_type_to_num_dict["splitindex32"],
234
+ rntuple_col_type_to_num_dict["splitindex64"],
235
+ )
236
+ rntuple_zigzag_types = (
237
+ rntuple_col_type_to_num_dict["splitint16"],
238
+ rntuple_col_type_to_num_dict["splitint32"],
239
+ rntuple_col_type_to_num_dict["splitint64"],
240
+ )
241
+ rntuple_delta_types = (
242
+ rntuple_col_type_to_num_dict["splitindex32"],
243
+ rntuple_col_type_to_num_dict["splitindex64"],
244
+ )
245
+
246
+
247
+ class RNTupleLocatorType(IntEnum):
248
+ STANDARD = 0x00
249
+ LARGE = 0x01
250
+
251
+
252
+ class RNTupleEnvelopeType(IntEnum):
253
+ RESERVED = 0x00
254
+ HEADER = 0x01
255
+ FOOTER = 0x02
256
+ PAGELIST = 0x03
257
+
258
+
259
+ class RNTupleFieldRole(IntEnum):
260
+ LEAF = 0x00
261
+ COLLECTION = 0x01
262
+ RECORD = 0x02
263
+ VARIANT = 0x03
264
+ STREAMER = 0x04
265
+
266
+
267
+ class RNTupleFieldFlag(IntEnum):
268
+ REPETITIVE = 0x01
269
+ PROJECTED = 0x02
270
+ CHECKSUM = 0x04
271
+
272
+
273
+ class RNTupleColumnFlag(IntEnum):
274
+ DEFERRED = 0x01
275
+ RANGE = 0x02
276
+
277
+
278
+ class RNTupleExtraTypeIdentifier(IntEnum):
279
+ ROOT = 0x00
280
+
281
+
282
+ class RNTupleClusterFlag(IntEnum):
283
+ SHARDED = 0x01
@@ -0,0 +1,46 @@
1
+ # BSD 3-Clause License; see https://github.com/scikit-hep/uproot5/blob/main/LICENSE
2
+
3
+ """
4
+ This module provides known forth code and awkward forms for types where it is known a priori.
5
+
6
+ See :doc:`uproot.interpretation.known_forth.known_forth_of` for the function
7
+ that provides the lookup of known forth codes and :doc:`uproot.interpretation.known_forth.atlas.VectorVectorElementLink` for an
8
+ implementation used in ATLAS (D)AODs.
9
+ """
10
+ from __future__ import annotations
11
+
12
+ import uproot
13
+ from uproot.interpretation.known_forth.atlas import VectorVectorElementLink
14
+
15
+ KNOWN_FORTH_DICT = {
16
+ "std::vector<std::vector<ElementLink<DataVector<xAOD::CaloCluster_v1>>>>": VectorVectorElementLink,
17
+ "std::vector<std::vector<ElementLink<DataVector<xAOD::IParticle>>>>": VectorVectorElementLink,
18
+ "std::vector<std::vector<ElementLink<DataVector<xAOD::MuonSegment_v1>>>>": VectorVectorElementLink,
19
+ "std::vector<std::vector<ElementLink<DataVector<xAOD::NeutralParticle_v1>>>>": VectorVectorElementLink,
20
+ "std::vector<std::vector<ElementLink<DataVector<xAOD::TauTrack_v1>>>>": VectorVectorElementLink,
21
+ "std::vector<std::vector<ElementLink<DataVector<xAOD::TrackParticle_v1>>>>": VectorVectorElementLink,
22
+ "std::vector<std::vector<ElementLink<DataVector<xAOD::TruthParticle_v1>>>>": VectorVectorElementLink,
23
+ "std::vector<std::vector<ElementLink<DataVector<xAOD::Vertex_v1>>>>": VectorVectorElementLink,
24
+ }
25
+
26
+
27
+ def known_forth_of(model):
28
+ """
29
+ Args:
30
+ model: The :doc:`uproot.model.Model` to look up known forth for
31
+
32
+ Returns an object with attributes `forth_code` and `awkward_form` if a known
33
+ special case exists, else None
34
+ """
35
+ try:
36
+ typename = model.typename
37
+ except AttributeError:
38
+ try:
39
+ typename = model.classname
40
+ except AttributeError:
41
+ typename = uproot.model.classname_decode(model.__name__)
42
+
43
+ if typename not in KNOWN_FORTH_DICT:
44
+ return
45
+
46
+ return KNOWN_FORTH_DICT[typename](typename)
@@ -0,0 +1,99 @@
1
+ # BSD 3-Clause License; see https://github.com/scikit-hep/uproot5/blob/main/LICENSE
2
+
3
+ """
4
+ This module defines ATLAS specific known forth code
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ import re
10
+
11
+
12
+ class VectorVectorElementLink:
13
+ """
14
+ Known forth and awkward form for ``std::vector<std::vector<ElementLink<T>>`` types in ATLAS (D)AODs
15
+
16
+ The forth code was adjusted from what was provided in
17
+ ``branch._complete_forth_code`` after running ``.array()`` once.
18
+
19
+ The binary data of one vector<vector<ElementLink<T>> looks as follows:
20
+
21
+ * 6 bytes header for the outer vector
22
+ * 4 bytes big endian uint for the size of the outer vector (node1)
23
+ * for each outer vector element:
24
+ * 4 bytes big endian uint for the size of the inner vector (node2)
25
+ * for each inner vector element:
26
+ * 20 bytes header for the ElementLink object
27
+ * 4 bytes big endian uint for the ``m_persKey`` member (node3)
28
+ * 4 bytes big endian uint for the ``m_persIndex`` member (node4)
29
+ """
30
+
31
+ forth_code = """
32
+ input stream
33
+ input byteoffsets
34
+ input bytestops
35
+ output node1-offsets int64
36
+ output node2-offsets int64
37
+ output node3-data uint32
38
+ output node4-data uint32
39
+
40
+ 0 node1-offsets <- stack
41
+ 0 node2-offsets <- stack
42
+
43
+ 0 do
44
+ byteoffsets I-> stack
45
+ stream seek
46
+ 6 stream skip
47
+ stream !I-> stack
48
+ dup node1-offsets +<- stack
49
+ 0 do
50
+ stream !I-> stack
51
+ dup node2-offsets +<- stack
52
+ 0 do
53
+ 20 stream skip
54
+ stream !I-> node3-data
55
+ stream !I-> node4-data
56
+ loop
57
+ loop
58
+ loop
59
+ """
60
+
61
+ def __init__(self, typename):
62
+ self.typename = typename
63
+ self.inner_typename = re.sub(
64
+ "std::vector<std::vector<(.*)>>", r"\1", self.typename
65
+ )
66
+
67
+ @property
68
+ def awkward_form(self):
69
+ return {
70
+ "class": "ListOffsetArray",
71
+ "offsets": "i64",
72
+ "form_key": "node1",
73
+ "content": {
74
+ "class": "ListOffsetArray",
75
+ "offsets": "i64",
76
+ "form_key": "node2",
77
+ "content": {
78
+ "class": "RecordArray",
79
+ "fields": ["m_persKey", "m_persIndex"],
80
+ "contents": [
81
+ {
82
+ "class": "NumpyArray",
83
+ "primitive": "uint32",
84
+ "inner_shape": [],
85
+ "parameters": {},
86
+ "form_key": "node3",
87
+ },
88
+ {
89
+ "class": "NumpyArray",
90
+ "primitive": "uint32",
91
+ "inner_shape": [],
92
+ "parameters": {},
93
+ "form_key": "node4",
94
+ },
95
+ ],
96
+ "parameters": {"__record__": f"{self.inner_typename}"},
97
+ },
98
+ },
99
+ }
@@ -28,6 +28,7 @@ import numpy
28
28
 
29
29
  import uproot
30
30
  import uproot._awkwardforth
31
+ from uproot.interpretation.known_forth import known_forth_of
31
32
 
32
33
 
33
34
  class AsObjects(uproot.interpretation.Interpretation):
@@ -45,14 +46,22 @@ class AsObjects(uproot.interpretation.Interpretation):
45
46
  :ref:`uproot.interpretation.objects.AsObjects.simplify` attempts to
46
47
  replace this interpretation with a faster-to-read equivalent, but not all
47
48
  data types can be simplified.
49
+
50
+ :doc:`uproot.interpretation.known_forth` defines forth code and forms for
51
+ special cases that will be picked up here as well
48
52
  """
49
53
 
50
54
  def __init__(self, model, branch=None):
51
55
  self._model = model
52
56
  self._branch = branch
53
- self._form = None
54
57
  self._forth = True
55
- self._complete_forth_code = None
58
+ known_forth = known_forth_of(self._model)
59
+ if known_forth is not None:
60
+ self._complete_forth_code = known_forth.forth_code
61
+ self._form = known_forth.awkward_form
62
+ else:
63
+ self._complete_forth_code = None
64
+ self._form = None
56
65
  self._forth_lock = threading.Lock()
57
66
 
58
67
  @property
@@ -122,6 +131,10 @@ class AsObjects(uproot.interpretation.Interpretation):
122
131
  tobject_header=False,
123
132
  breadcrumbs=(),
124
133
  ):
134
+ if self._form is not None:
135
+ awkward = uproot.extras.awkward()
136
+ return awkward.forms.from_dict(self._form)
137
+
125
138
  context = self._make_context(
126
139
  context, index_format, header, tobject_header, breadcrumbs
127
140
  )