uproot 5.4.1__tar.gz → 5.4.2__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 (293) hide show
  1. {uproot-5.4.1 → uproot-5.4.2}/.all-contributorsrc +18 -0
  2. {uproot-5.4.1 → uproot-5.4.2}/.pre-commit-config.yaml +4 -4
  3. {uproot-5.4.1 → uproot-5.4.2}/PKG-INFO +6 -1
  4. {uproot-5.4.1 → uproot-5.4.2}/README.md +4 -0
  5. {uproot-5.4.1 → uproot-5.4.2}/pyproject.toml +1 -0
  6. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/behaviors/TBranch.py +18 -5
  7. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/const.py +51 -7
  8. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/containers.py +2 -2
  9. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/interpretation/identify.py +8 -0
  10. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/interpretation/library.py +6 -1
  11. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/language/python.py +4 -0
  12. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/models/RNTuple.py +456 -104
  13. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/source/coalesce.py +9 -2
  14. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/version.py +2 -2
  15. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/writing/_cascadentuple.py +5 -5
  16. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/writing/_cascadetree.py +3 -1
  17. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0013_rntuple_anchor.py +1 -1
  18. {uproot-5.4.1 → uproot-5.4.2}/tests/test_1191_rntuple_fixes.py +1 -1
  19. uproot-5.4.2/tests/test_1250_rntuple_improvements.py +85 -0
  20. uproot-5.4.2/tests/test_1285_rntuple_multicluster_concatenation.py +20 -0
  21. uproot-5.4.2/tests/test_1318_dont_compare_big_endian_in_awkward.py +18 -0
  22. uproot-5.4.2/tests/test_1321_pandas_changed_api_again.py +20 -0
  23. {uproot-5.4.1 → uproot-5.4.2}/tests-wasm/test_1272_basic_functionality.py +1 -1
  24. {uproot-5.4.1 → uproot-5.4.2}/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
  25. {uproot-5.4.1 → uproot-5.4.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  26. {uproot-5.4.1 → uproot-5.4.2}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
  27. {uproot-5.4.1 → uproot-5.4.2}/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
  28. {uproot-5.4.1 → uproot-5.4.2}/.github/dependabot.yml +0 -0
  29. {uproot-5.4.1 → uproot-5.4.2}/.github/workflows/build-distributions.yml +0 -0
  30. {uproot-5.4.1 → uproot-5.4.2}/.github/workflows/build-test.yml +0 -0
  31. {uproot-5.4.1 → uproot-5.4.2}/.github/workflows/deploy.yml +0 -0
  32. {uproot-5.4.1 → uproot-5.4.2}/.github/workflows/semantic-pr-title.yml +0 -0
  33. {uproot-5.4.1 → uproot-5.4.2}/.github/workflows/upload-nightly-wheels.yml +0 -0
  34. {uproot-5.4.1 → uproot-5.4.2}/.gitignore +0 -0
  35. {uproot-5.4.1 → uproot-5.4.2}/.readthedocs.yml +0 -0
  36. {uproot-5.4.1 → uproot-5.4.2}/CITATION.cff +0 -0
  37. {uproot-5.4.1 → uproot-5.4.2}/LICENSE +0 -0
  38. {uproot-5.4.1 → uproot-5.4.2}/dev/example-objects.py +0 -0
  39. {uproot-5.4.1 → uproot-5.4.2}/dev/make-models.py +0 -0
  40. {uproot-5.4.1 → uproot-5.4.2}/docs-img/diagrams/abstraction-layers.png +0 -0
  41. {uproot-5.4.1 → uproot-5.4.2}/docs-img/diagrams/abstraction-layers.svg +0 -0
  42. {uproot-5.4.1 → uproot-5.4.2}/docs-img/diagrams/example-dask-graph.png +0 -0
  43. {uproot-5.4.1 → uproot-5.4.2}/docs-img/diagrams/uproot-awkward-timeline.png +0 -0
  44. {uproot-5.4.1 → uproot-5.4.2}/docs-img/diagrams/uproot-awkward-timeline.svg +0 -0
  45. {uproot-5.4.1 → uproot-5.4.2}/docs-img/logo/logo-300px-white.png +0 -0
  46. {uproot-5.4.1 → uproot-5.4.2}/docs-img/logo/logo-300px.png +0 -0
  47. {uproot-5.4.1 → uproot-5.4.2}/docs-img/logo/logo-600px.png +0 -0
  48. {uproot-5.4.1 → uproot-5.4.2}/docs-img/logo/logo.svg +0 -0
  49. {uproot-5.4.1 → uproot-5.4.2}/docs-img/photos/switcheroo.jpg +0 -0
  50. {uproot-5.4.1 → uproot-5.4.2}/docs-sphinx/_templates/breadcrumbs.html +0 -0
  51. {uproot-5.4.1 → uproot-5.4.2}/docs-sphinx/basic.rst +0 -0
  52. {uproot-5.4.1 → uproot-5.4.2}/docs-sphinx/conf.py +0 -0
  53. {uproot-5.4.1 → uproot-5.4.2}/docs-sphinx/index.rst +0 -0
  54. {uproot-5.4.1 → uproot-5.4.2}/docs-sphinx/make_changelog.py +0 -0
  55. {uproot-5.4.1 → uproot-5.4.2}/docs-sphinx/prepare_docstrings.py +0 -0
  56. {uproot-5.4.1 → uproot-5.4.2}/docs-sphinx/requirements.txt +0 -0
  57. {uproot-5.4.1 → uproot-5.4.2}/docs-sphinx/uproot3-to-4.rst +0 -0
  58. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/__init__.py +0 -0
  59. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/_awkwardforth.py +0 -0
  60. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/_dask.py +0 -0
  61. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/_util.py +0 -0
  62. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/behavior.py +0 -0
  63. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/behaviors/RooCurve.py +0 -0
  64. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/behaviors/RooHist.py +0 -0
  65. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/behaviors/TAxis.py +0 -0
  66. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/behaviors/TBranchElement.py +0 -0
  67. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/behaviors/TDatime.py +0 -0
  68. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/behaviors/TGraph.py +0 -0
  69. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/behaviors/TGraphAsymmErrors.py +0 -0
  70. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/behaviors/TGraphErrors.py +0 -0
  71. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/behaviors/TH1.py +0 -0
  72. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/behaviors/TH2.py +0 -0
  73. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/behaviors/TH2Poly.py +0 -0
  74. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/behaviors/TH3.py +0 -0
  75. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/behaviors/TParameter.py +0 -0
  76. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/behaviors/TProfile.py +0 -0
  77. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/behaviors/TProfile2D.py +0 -0
  78. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/behaviors/TProfile3D.py +0 -0
  79. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/behaviors/TTree.py +0 -0
  80. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/behaviors/__init__.py +0 -0
  81. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/cache.py +0 -0
  82. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/compression.py +0 -0
  83. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/deserialization.py +0 -0
  84. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/dynamic.py +0 -0
  85. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/exceptions.py +0 -0
  86. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/extras.py +0 -0
  87. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/interpretation/__init__.py +0 -0
  88. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/interpretation/grouped.py +0 -0
  89. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/interpretation/jagged.py +0 -0
  90. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/interpretation/numerical.py +0 -0
  91. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/interpretation/objects.py +0 -0
  92. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/interpretation/strings.py +0 -0
  93. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/language/__init__.py +0 -0
  94. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/model.py +0 -0
  95. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/models/TArray.py +0 -0
  96. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/models/TAtt.py +0 -0
  97. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/models/TBasket.py +0 -0
  98. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/models/TBranch.py +0 -0
  99. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/models/TClonesArray.py +0 -0
  100. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/models/TDatime.py +0 -0
  101. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/models/TGraph.py +0 -0
  102. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/models/TH.py +0 -0
  103. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/models/THashList.py +0 -0
  104. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/models/TLeaf.py +0 -0
  105. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/models/TList.py +0 -0
  106. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/models/TMatrixT.py +0 -0
  107. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/models/TNamed.py +0 -0
  108. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/models/TObjArray.py +0 -0
  109. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/models/TObjString.py +0 -0
  110. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/models/TObject.py +0 -0
  111. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/models/TRef.py +0 -0
  112. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/models/TString.py +0 -0
  113. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/models/TTable.py +0 -0
  114. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/models/TTime.py +0 -0
  115. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/models/TTree.py +0 -0
  116. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/models/__init__.py +0 -0
  117. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/pyroot.py +0 -0
  118. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/reading.py +0 -0
  119. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/serialization.py +0 -0
  120. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/sink/__init__.py +0 -0
  121. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/sink/file.py +0 -0
  122. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/source/__init__.py +0 -0
  123. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/source/chunk.py +0 -0
  124. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/source/cursor.py +0 -0
  125. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/source/file.py +0 -0
  126. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/source/fsspec.py +0 -0
  127. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/source/futures.py +0 -0
  128. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/source/http.py +0 -0
  129. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/source/object.py +0 -0
  130. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/source/s3.py +0 -0
  131. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/source/xrootd.py +0 -0
  132. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/streamers.py +0 -0
  133. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/writing/__init__.py +0 -0
  134. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/writing/_cascade.py +0 -0
  135. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/writing/_dask_write.py +0 -0
  136. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/writing/identify.py +0 -0
  137. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/writing/interpret.py +0 -0
  138. {uproot-5.4.1 → uproot-5.4.2}/src/uproot/writing/writable.py +0 -0
  139. {uproot-5.4.1 → uproot-5.4.2}/tests/__init__.py +0 -0
  140. {uproot-5.4.1 → uproot-5.4.2}/tests/conftest.py +0 -0
  141. {uproot-5.4.1 → uproot-5.4.2}/tests/samples/h_dynamic.pkl +0 -0
  142. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0001_source_class.py +0 -0
  143. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0006_notify_when_downloaded.py +0 -0
  144. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0007_single_chunk_interface.py +0 -0
  145. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0008_start_interpretation.py +0 -0
  146. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0009_nested_directories.py +0 -0
  147. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0010_start_streamers.py +0 -0
  148. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0011_generate_classes_from_streamers.py +0 -0
  149. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0014_all_ttree_versions.py +0 -0
  150. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0016_interpretations.py +0 -0
  151. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0017_multi_basket_multi_branch_fetch.py +0 -0
  152. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0018_array_fetching_interface.py +0 -0
  153. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0022_number_of_branches.py +0 -0
  154. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0023_more_interpretations_1.py +0 -0
  155. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0023_ttree_versions.py +0 -0
  156. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0028_fallback_to_read_streamer.py +0 -0
  157. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0029_more_string_types.py +0 -0
  158. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0031_test_stl_containers.py +0 -0
  159. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0033_more_interpretations_2.py +0 -0
  160. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0034_generic_objects_in_ttrees.py +0 -0
  161. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0035_datatype_generality.py +0 -0
  162. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0038_memberwise_serialization.py +0 -0
  163. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0043_iterate_function.py +0 -0
  164. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0044_concatenate_function.py +0 -0
  165. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0046_histograms_bh_hist.py +0 -0
  166. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0053_parents_should_not_be_bases.py +0 -0
  167. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0058_detach_model_objects_from_files.py +0 -0
  168. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0066_fix_http_fallback_freeze.py +0 -0
  169. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0067_common_entry_offsets.py +0 -0
  170. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0081_dont_parse_colons.py +0 -0
  171. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0087_memberwise_splitting_not_implemented_messages.py +0 -0
  172. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0088_read_with_http.py +0 -0
  173. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0099_read_from_file_object.py +0 -0
  174. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0112_fix_pandas_with_cut.py +0 -0
  175. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0118_fix_name_fetch_again.py +0 -0
  176. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0123_atlas_issues.py +0 -0
  177. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0126_turn_unknown_emptyarrays_into_known_types.py +0 -0
  178. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0167_use_the_common_histogram_interface.py +0 -0
  179. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0172_allow_allocators_in_vector_typenames.py +0 -0
  180. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0173_empty_and_multiprocessing_bugs.py +0 -0
  181. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0182_complain_about_missing_files.py +0 -0
  182. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0194_fix_lost_cuts_in_iterate.py +0 -0
  183. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0220_contiguous_byte_ranges_in_http.py +0 -0
  184. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0228_read_TProfiles.py +0 -0
  185. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0240_read_TGraphAsymmErrors.py +0 -0
  186. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0278_specializations_for_TParameter.py +0 -0
  187. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0302_pickle.py +0 -0
  188. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0303_empty_jagged_array.py +0 -0
  189. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0320_start_working_on_ROOT_writing.py +0 -0
  190. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0322_writablefile_infrastructure.py +0 -0
  191. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0329_update_existing_root_files.py +0 -0
  192. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0335_empty_ttree_division_by_zero.py +0 -0
  193. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0341_manipulate_streamer_info.py +0 -0
  194. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0344_writabledirectory_can_read.py +0 -0
  195. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0345_bulk_copy_method.py +0 -0
  196. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0349_write_TObjString.py +0 -0
  197. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0350_read_RooCurve_RooHist.py +0 -0
  198. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0351_write_TList.py +0 -0
  199. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0352_write_THashList.py +0 -0
  200. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0384_move_behavior_of_and_fix_383.py +0 -0
  201. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0398_dimensions_in_leaflist.py +0 -0
  202. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0405_write_a_histogram.py +0 -0
  203. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0406_write_a_ttree.py +0 -0
  204. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0407_read_TDatime.py +0 -0
  205. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0412_write_multidimensional_numpy_to_ttree.py +0 -0
  206. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0414_write_jagged_arrays.py +0 -0
  207. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0416_writing_compressed_data.py +0 -0
  208. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0418_read_TTable.py +0 -0
  209. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0420_pyroot_uproot_interoperability.py +0 -0
  210. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0422_hist_integration.py +0 -0
  211. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0430_global_index_for_tuples_of_DataFrames.py +0 -0
  212. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0438_TClonesArray_is_not_AsGrouped.py +0 -0
  213. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0439_check_awkward_before_numpy.py +0 -0
  214. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0442_regular_TClonesArray.py +0 -0
  215. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0472_tstreamerinfo_for_ttree.py +0 -0
  216. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0475_remember_to_update_freesegments.py +0 -0
  217. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0484_manually_add_model_for_TMatrixTSym_double_.py +0 -0
  218. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0487_implement_asdtypeinplace.py +0 -0
  219. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0498_create_leaf_branch_in_extend.py +0 -0
  220. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0519_remove_memmap_copy.py +0 -0
  221. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0520_dynamic_classes_cant_be_abc_subclasses.py +0 -0
  222. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0569_fBits_is_4_bytes.py +0 -0
  223. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0576_unicode_in_names.py +0 -0
  224. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0578_dask_for_numpy.py +0 -0
  225. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0580_round_trip_for_no_flow_histograms.py +0 -0
  226. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0589_explicitly_interpret_RVec_type.py +0 -0
  227. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0603_dask_delayed_open.py +0 -0
  228. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0609_num_enteries_func.py +0 -0
  229. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0610_awkward_form.py +0 -0
  230. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0630_rntuple_basics.py +0 -0
  231. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0637_setup_tests_for_AwkwardForth.py +0 -0
  232. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0643_reading_vector_pair_TLorentzVector_int.py +0 -0
  233. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0651_implement_transformed_axis.py +0 -0
  234. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0652_dask_for_awkward.py +0 -0
  235. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0662_rntuple_stl_containers.py +0 -0
  236. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0692_fsspec_reading.py +0 -0
  237. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0692_fsspec_writing.py +0 -0
  238. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0700_dask_empty_arrays.py +0 -0
  239. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0705_rntuple_writing_metadata.py +0 -0
  240. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0750_avoid_empty_TBasket_issue.py +0 -0
  241. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0755_dask_awkward_column_projection.py +0 -0
  242. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0791_protect_uproot_project_columns_from_dask_node_names.py +0 -0
  243. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0798_DAOD_PHYSLITE.py +0 -0
  244. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0808_fix_awkward_form_for_AsStridedObjects.py +0 -0
  245. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0816_separate_AwkwardForth_machines_by_TBranch.py +0 -0
  246. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0832_ak_add_doc_should_also_add_to_typetracer.py +0 -0
  247. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0840_support_tleafG.py +0 -0
  248. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0841_fix_814.py +0 -0
  249. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0844_fix_delete_hist_from_root.py +0 -0
  250. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0852_fix_strided_interp_extra_offsets.py +0 -0
  251. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0870_writing_arrays_of_type_unknown_fix_822.py +0 -0
  252. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0876_uproot_dask_blind_steps.py +0 -0
  253. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0886_fix_awkward_form_breadcrumbs.py +0 -0
  254. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0910_fix_906_members_non_numerical_branches.py +0 -0
  255. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0911_fix_interp_array_non_numerical_objs_issue_880.py +0 -0
  256. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0912_fix_pandas_and_double_nested_vectors_issue_885.py +0 -0
  257. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0916_read_from_s3.py +0 -0
  258. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0927_dont_assume_uproot_in_global_scope_in_TPython_Eval.py +0 -0
  259. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0930_expressions_in_pandas.py +0 -0
  260. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0940_feat_add_TLeafC_string_support.py +0 -0
  261. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0962_RNTuple_update.py +0 -0
  262. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0965_inverted_axes_variances_hist_888.py +0 -0
  263. {uproot-5.4.1 → uproot-5.4.2}/tests/test_0976_path_object_split.py +0 -0
  264. {uproot-5.4.1 → uproot-5.4.2}/tests/test_1000-write-TProfiles.py +0 -0
  265. {uproot-5.4.1 → uproot-5.4.2}/tests/test_1043_const_std_string.py +0 -0
  266. {uproot-5.4.1 → uproot-5.4.2}/tests/test_1058_dask_awkward_report.py +0 -0
  267. {uproot-5.4.1 → uproot-5.4.2}/tests/test_1063_dask_distributed.py +0 -0
  268. {uproot-5.4.1 → uproot-5.4.2}/tests/test_1070_pandas_dataframe_building_performance_fix.py +0 -0
  269. {uproot-5.4.1 → uproot-5.4.2}/tests/test_1085_dask_write.py +0 -0
  270. {uproot-5.4.1 → uproot-5.4.2}/tests/test_1102_any_locks_in_models_must_be_transient.py +0 -0
  271. {uproot-5.4.1 → uproot-5.4.2}/tests/test_1114_fix_attempt_to_concatenate_numpy_with_awkward.py +0 -0
  272. {uproot-5.4.1 → uproot-5.4.2}/tests/test_1120_check_decompression_executor_pass_for_dask.py +0 -0
  273. {uproot-5.4.1 → uproot-5.4.2}/tests/test_1127_fix_allow_colon_in_key_names.py +0 -0
  274. {uproot-5.4.1 → uproot-5.4.2}/tests/test_1128_TGraph_writing.py +0 -0
  275. {uproot-5.4.1 → uproot-5.4.2}/tests/test_1146_split_ranges_for_large_files_over_http.py +0 -0
  276. {uproot-5.4.1 → uproot-5.4.2}/tests/test_1154_classof_using_relative_path.py +0 -0
  277. {uproot-5.4.1 → uproot-5.4.2}/tests/test_1160_std_string_in_TDirectory.py +0 -0
  278. {uproot-5.4.1 → uproot-5.4.2}/tests/test_1180_read_free_floating_vector_issue_1179.py +0 -0
  279. {uproot-5.4.1 → uproot-5.4.2}/tests/test_1181_support_for_stl_list.py +0 -0
  280. {uproot-5.4.1 → uproot-5.4.2}/tests/test_1182_add_support_for_bitset.py +0 -0
  281. {uproot-5.4.1 → uproot-5.4.2}/tests/test_1183_ttime_custom.py +0 -0
  282. {uproot-5.4.1 → uproot-5.4.2}/tests/test_1186_dtype_might_raise_ValueError.py +0 -0
  283. {uproot-5.4.1 → uproot-5.4.2}/tests/test_1189_dask_failing_on_duplicate_keys.py +0 -0
  284. {uproot-5.4.1 → uproot-5.4.2}/tests/test_1198_coalesce.py +0 -0
  285. {uproot-5.4.1 → uproot-5.4.2}/tests/test_1207_fix_title_of_TBranch_with_counter.py +0 -0
  286. {uproot-5.4.1 → uproot-5.4.2}/tests/test_1212_dont_let_update_mess_up_file_version.py +0 -0
  287. {uproot-5.4.1 → uproot-5.4.2}/tests/test_1221_AwkwardForth_bug.py +0 -0
  288. {uproot-5.4.1 → uproot-5.4.2}/tests/test_1223_more_rntuple_types.py +0 -0
  289. {uproot-5.4.1 → uproot-5.4.2}/tests/test_1254_test_threadpool_executor_for_dask.py +0 -0
  290. {uproot-5.4.1 → uproot-5.4.2}/tests/test_1264_write_NumPy_array_of_strings.py +0 -0
  291. {uproot-5.4.1 → uproot-5.4.2}/tests/test_1275_fix_TStreamerLoop_code_generation.py +0 -0
  292. {uproot-5.4.1 → uproot-5.4.2}/tests-wasm/__init__.py +0 -0
  293. {uproot-5.4.1 → uproot-5.4.2}/tests-wasm/utils.py +0 -0
@@ -587,6 +587,24 @@
587
587
  "contributions": [
588
588
  "code"
589
589
  ]
590
+ },
591
+ {
592
+ "login": "MatousVozak",
593
+ "name": "MatousVozak",
594
+ "avatar_url": "https://avatars.githubusercontent.com/u/33348191?v=4",
595
+ "profile": "https://github.com/MatousVozak",
596
+ "contributions": [
597
+ "code"
598
+ ]
599
+ },
600
+ {
601
+ "login": "rossodisera",
602
+ "name": "Andrea Serafini",
603
+ "avatar_url": "https://avatars.githubusercontent.com/u/46961664?v=4",
604
+ "profile": "https://github.com/rossodisera",
605
+ "contributions": [
606
+ "code"
607
+ ]
590
608
  }
591
609
  ],
592
610
  "contributorsPerLine": 7,
@@ -4,7 +4,7 @@ ci:
4
4
 
5
5
  repos:
6
6
  - repo: https://github.com/pre-commit/pre-commit-hooks
7
- rev: v4.6.0
7
+ rev: v5.0.0
8
8
  hooks:
9
9
  - id: check-added-large-files
10
10
  - id: check-case-conflict
@@ -18,19 +18,19 @@ repos:
18
18
  - id: trailing-whitespace
19
19
 
20
20
  - repo: https://github.com/psf/black-pre-commit-mirror
21
- rev: 24.8.0
21
+ rev: 24.10.0
22
22
  hooks:
23
23
  - id: black
24
24
 
25
25
  - repo: https://github.com/astral-sh/ruff-pre-commit
26
- rev: v0.6.8
26
+ rev: v0.7.2
27
27
  hooks:
28
28
  - id: ruff
29
29
  args: [--fix, --show-fixes]
30
30
 
31
31
 
32
32
  - repo: https://github.com/asottile/pyupgrade
33
- rev: v3.17.0
33
+ rev: v3.19.0
34
34
  hooks:
35
35
  - id: pyupgrade
36
36
  args: [--py38-plus]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: uproot
3
- Version: 5.4.1
3
+ Version: 5.4.2
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
@@ -68,6 +68,7 @@ Requires-Dist: pytest-pyodide; extra == 'test-pyodide'
68
68
  Requires-Dist: pytest-timeout; extra == 'test-pyodide'
69
69
  Requires-Dist: pytest>=6; extra == 'test-pyodide'
70
70
  Requires-Dist: scikit-hep-testdata; extra == 'test-pyodide'
71
+ Requires-Dist: selenium<=4.25.0; extra == 'test-pyodide'
71
72
  Provides-Extra: xrootd
72
73
  Requires-Dist: fsspec-xrootd; extra == 'xrootd'
73
74
  Description-Content-Type: text/markdown
@@ -264,6 +265,10 @@ Thanks especially to the gracious help of Uproot contributors (including the [or
264
265
  <td align="center" valign="top" width="14.28%"><a href="https://github.com/Pepesob"><img src="https://avatars.githubusercontent.com/u/113636251?v=4?s=100" width="100px;" alt="Piotr Sobczyński"/><br /><sub><b>Piotr Sobczyński</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=Pepesob" title="Code">💻</a></td>
265
266
  <td align="center" valign="top" width="14.28%"><a href="https://github.com/giedrius2020"><img src="https://avatars.githubusercontent.com/u/71819123?v=4?s=100" width="100px;" alt="Giedrius Juškevičius"/><br /><sub><b>Giedrius Juškevičius</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=giedrius2020" title="Code">💻</a></td>
266
267
  </tr>
268
+ <tr>
269
+ <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
+ <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>
271
+ </tr>
267
272
  </tbody>
268
273
  </table>
269
274
 
@@ -190,6 +190,10 @@ Thanks especially to the gracious help of Uproot contributors (including the [or
190
190
  <td align="center" valign="top" width="14.28%"><a href="https://github.com/Pepesob"><img src="https://avatars.githubusercontent.com/u/113636251?v=4?s=100" width="100px;" alt="Piotr Sobczyński"/><br /><sub><b>Piotr Sobczyński</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=Pepesob" title="Code">💻</a></td>
191
191
  <td align="center" valign="top" width="14.28%"><a href="https://github.com/giedrius2020"><img src="https://avatars.githubusercontent.com/u/71819123?v=4?s=100" width="100px;" alt="Giedrius Juškevičius"/><br /><sub><b>Giedrius Juškevičius</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=giedrius2020" title="Code">💻</a></td>
192
192
  </tr>
193
+ <tr>
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
+ <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
+ </tr>
193
197
  </tbody>
194
198
  </table>
195
199
 
@@ -83,6 +83,7 @@ test = [
83
83
  ]
84
84
  test-pyodide = [
85
85
  "pytest>=6",
86
+ "selenium<=4.25.0", # unpin once >4.26.0 is available
86
87
  "pytest-pyodide",
87
88
  "pytest-timeout",
88
89
  "scikit-hep-testdata"
@@ -210,10 +210,16 @@ def iterate(
210
210
  arrays, report = item
211
211
  arrays = library.global_index(arrays, global_offset)
212
212
  report = report.to_global(global_offset)
213
- yield arrays, report
213
+ popper = [arrays]
214
+ del arrays
215
+ del item
216
+ yield popper.pop(), report
217
+
214
218
  else:
215
- arrays = library.global_index(item, global_offset)
216
- yield arrays
219
+ popper = [library.global_index(item, global_offset)]
220
+ del item
221
+ yield popper.pop()
222
+
217
223
  except uproot.exceptions.KeyInFileError:
218
224
  if allow_missing:
219
225
  continue
@@ -1111,6 +1117,9 @@ class HasBranches(Mapping):
1111
1117
  ak_add_doc,
1112
1118
  )
1113
1119
 
1120
+ # no longer needed; save memory
1121
+ del output
1122
+
1114
1123
  next_baskets = {}
1115
1124
  for branch, basket_num, basket in ranges_or_baskets:
1116
1125
  basket_entry_start, basket_entry_stop = basket.entry_start_stop
@@ -1119,10 +1128,14 @@ class HasBranches(Mapping):
1119
1128
 
1120
1129
  previous_baskets = next_baskets
1121
1130
 
1131
+ # no longer needed; save memory
1132
+ popper = [out]
1133
+ del out
1134
+
1122
1135
  if report:
1123
- yield out, Report(self, sub_entry_start, sub_entry_stop)
1136
+ yield popper.pop(), Report(self, sub_entry_start, sub_entry_stop)
1124
1137
  else:
1125
- yield out
1138
+ yield popper.pop()
1126
1139
 
1127
1140
  def keys(
1128
1141
  self,
@@ -5,7 +5,7 @@ This module defines integer constants used by serialization and deserialization
5
5
  """
6
6
  from __future__ import annotations
7
7
 
8
- import struct
8
+ from enum import IntEnum
9
9
 
10
10
  import numpy
11
11
 
@@ -118,8 +118,6 @@ kGenerateOffsetMap = numpy.uint8(1)
118
118
  kStreamedMemberWise = numpy.uint16(1 << 14)
119
119
 
120
120
  ############ RNTuple https://github.com/root-project/root/blob/master/tree/ntuple/v7/doc/specifications.md
121
- _rntuple_frame_format = struct.Struct("<Q")
122
- rntuple_env_header = _rntuple_frame_format.pack(0) # TODO: need to check this
123
121
  rntuple_col_num_to_dtype_dict = {
124
122
  1: "uint64",
125
123
  2: "uint32",
@@ -149,6 +147,8 @@ rntuple_col_num_to_dtype_dict = {
149
147
  26: "int64", # split + zigzag encoding
150
148
  27: "int32", # split + zigzag encoding
151
149
  28: "int16", # split + zigzag encoding
150
+ 29: "float32trunc",
151
+ 30: "float32quant",
152
152
  }
153
153
  rntuple_col_num_to_size_dict = {
154
154
  1: 64,
@@ -179,6 +179,8 @@ rntuple_col_num_to_size_dict = {
179
179
  26: 64, # split + zigzag encoding
180
180
  27: 32, # split + zigzag encoding
181
181
  28: 16, # split + zigzag encoding
182
+ 29: 32, # TODO: variable size
183
+ 30: 32, # TODO: variable size
182
184
  }
183
185
 
184
186
  rntuple_col_type_to_num_dict = {
@@ -212,7 +214,49 @@ rntuple_col_type_to_num_dict = {
212
214
  "splitzigzagint16": 28,
213
215
  }
214
216
 
215
- rntuple_role_leaf = 0
216
- rntuple_role_vector = 1
217
- rntuple_role_struct = 2
218
- rntuple_role_union = 3
217
+
218
+ class RNTupleLocatorType(IntEnum):
219
+ STANDARD = 0x00
220
+ LARGE = 0x01
221
+ DAOS = 0x02
222
+
223
+
224
+ class RNTupleEnvelopeType(IntEnum):
225
+ RESERVED = 0x00
226
+ HEADER = 0x01
227
+ FOOTER = 0x02
228
+ PAGELIST = 0x03
229
+
230
+
231
+ class RNTupleFieldRole(IntEnum):
232
+ LEAF = 0x00
233
+ VECTOR = 0x01
234
+ STRUCT = 0x02
235
+ UNION = 0x03
236
+ UNSPLIT = 0x04
237
+
238
+
239
+ class RNTupleFieldFlag(IntEnum):
240
+ REPETITIVE = 0x01
241
+ PROJECTED = 0x02
242
+ CHECKSUM = 0x04
243
+
244
+
245
+ class RNTupleColumnFlag(IntEnum):
246
+ DEFERRED = 0x08
247
+ RANGE = 0x10
248
+
249
+
250
+ class RNTupleExtraTypeIdentifier(IntEnum):
251
+ ROOT = 0x00
252
+
253
+
254
+ class RNTupleUserMetadataType(IntEnum):
255
+ INT = 0x01
256
+ BOOL = 0x02
257
+ DOUBLE = 0x03
258
+ STRING = 0x04
259
+
260
+
261
+ class RNTupleClusterFlag(IntEnum):
262
+ SHARDED = 0x01
@@ -1541,7 +1541,7 @@ class ROOTRVec(Container, Sequence):
1541
1541
  return False
1542
1542
 
1543
1543
  def __array__(self, *args, **kwargs):
1544
- return numpy.asarray(self._vector, *args, **kwargs)
1544
+ return numpy.asarray(self._values, *args, **kwargs)
1545
1545
 
1546
1546
  def tolist(self):
1547
1547
  return [
@@ -1656,7 +1656,7 @@ class STLVector(Container, Sequence):
1656
1656
  return False
1657
1657
 
1658
1658
  def __array__(self, *args, **kwargs):
1659
- return numpy.asarray(self._vector, *args, **kwargs)
1659
+ return numpy.asarray(self._values, *args, **kwargs)
1660
1660
 
1661
1661
  def tolist(self):
1662
1662
  return [
@@ -607,6 +607,8 @@ def _parse_node(tokens, i, typename, file, quote, header, inner_header):
607
607
  return i + 1, _parse_maybe_quote('numpy.dtype("u1")', quote)
608
608
  elif has2 and tokens[i].group(0) == "unsigned" and tokens[i + 1].group(0) == "char":
609
609
  return i + 2, _parse_maybe_quote('numpy.dtype("u1")', quote)
610
+ elif has2 and tokens[i].group(0) == "signed" and tokens[i + 1].group(0) == "char":
611
+ return i + 2, _parse_maybe_quote('numpy.dtype(">i1")', quote)
610
612
 
611
613
  elif _simplify_token(tokens[i]) == "UChar_t*":
612
614
  return (
@@ -639,6 +641,8 @@ def _parse_node(tokens, i, typename, file, quote, header, inner_header):
639
641
  has2 and tokens[i].group(0) == "unsigned" and tokens[i + 1].group(0) == "short"
640
642
  ):
641
643
  return i + 2, _parse_maybe_quote('numpy.dtype(">u2")', quote)
644
+ elif has2 and tokens[i].group(0) == "signed" and tokens[i + 1].group(0) == "short":
645
+ return i + 2, _parse_maybe_quote('numpy.dtype(">i2")', quote)
642
646
 
643
647
  elif _simplify_token(tokens[i]) == "Short_t*":
644
648
  return (
@@ -685,6 +689,8 @@ def _parse_node(tokens, i, typename, file, quote, header, inner_header):
685
689
  return i + 1, _parse_maybe_quote('numpy.dtype(">u4")', quote)
686
690
  elif has2 and tokens[i].group(0) == "unsigned" and tokens[i + 1].group(0) == "int":
687
691
  return i + 2, _parse_maybe_quote('numpy.dtype(">u4")', quote)
692
+ elif has2 and tokens[i].group(0) == "signed" and tokens[i + 1].group(0) == "int":
693
+ return i + 2, _parse_maybe_quote('numpy.dtype(">i4")', quote)
688
694
 
689
695
  elif _simplify_token(tokens[i]) == "Int_t*":
690
696
  return (
@@ -744,6 +750,8 @@ def _parse_node(tokens, i, typename, file, quote, header, inner_header):
744
750
  return i + 1, _parse_maybe_quote('numpy.dtype(">u8")', quote)
745
751
  elif has2 and tokens[i].group(0) == "unsigned" and tokens[i + 1].group(0) == "long":
746
752
  return i + 2, _parse_maybe_quote('numpy.dtype(">u8")', quote)
753
+ elif has2 and tokens[i].group(0) == "signed" and tokens[i + 1].group(0) == "long":
754
+ return i + 2, _parse_maybe_quote('numpy.dtype(">i8")', quote)
747
755
 
748
756
  elif (
749
757
  has2
@@ -919,7 +919,12 @@ class Pandas(Library):
919
919
  )
920
920
 
921
921
  else:
922
- index = arrays.index.arrays
922
+ # arrays.index.values before Pandas 0.24 and again now;
923
+ # arrays.index.arrays from Pandas 0.24 through some time ago.
924
+ if hasattr(arrays.index, "values"):
925
+ index = arrays.index.values
926
+ else:
927
+ index = arrays.index.arrays
923
928
  numpy.add(index, global_offset, out=index)
924
929
 
925
930
  return arrays
@@ -516,6 +516,10 @@ class PythonLanguage(uproot.language.Language):
516
516
  else:
517
517
  output[name] = output[name][cut]
518
518
 
519
+ # clear dicts to get rid of big arrays.
520
+ # note: without this these arrays are not properly released from memory!
521
+ values.clear()
522
+ scope.clear()
519
523
  return output
520
524
 
521
525