uproot 5.4.0__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.
- {uproot-5.4.0 → uproot-5.4.2}/.all-contributorsrc +18 -0
- {uproot-5.4.0 → uproot-5.4.2}/.github/workflows/build-test.yml +24 -7
- {uproot-5.4.0 → uproot-5.4.2}/.github/workflows/upload-nightly-wheels.yml +1 -1
- {uproot-5.4.0 → uproot-5.4.2}/.pre-commit-config.yaml +4 -4
- {uproot-5.4.0 → uproot-5.4.2}/PKG-INFO +7 -1
- {uproot-5.4.0 → uproot-5.4.2}/README.md +4 -0
- {uproot-5.4.0 → uproot-5.4.2}/pyproject.toml +2 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/behaviors/TBranch.py +33 -11
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/const.py +51 -7
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/containers.py +2 -2
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/interpretation/identify.py +8 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/interpretation/library.py +6 -1
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/language/python.py +4 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/models/RNTuple.py +456 -104
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/source/coalesce.py +9 -2
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/version.py +2 -2
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/writing/_cascadentuple.py +5 -5
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/writing/_cascadetree.py +3 -1
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0013_rntuple_anchor.py +1 -1
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_1191_rntuple_fixes.py +1 -1
- uproot-5.4.2/tests/test_1250_rntuple_improvements.py +85 -0
- uproot-5.4.2/tests/test_1285_rntuple_multicluster_concatenation.py +20 -0
- uproot-5.4.2/tests/test_1318_dont_compare_big_endian_in_awkward.py +18 -0
- uproot-5.4.2/tests/test_1321_pandas_changed_api_again.py +20 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests-wasm/test_1272_basic_functionality.py +13 -7
- {uproot-5.4.0 → uproot-5.4.2}/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/.github/dependabot.yml +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/.github/workflows/build-distributions.yml +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/.github/workflows/deploy.yml +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/.github/workflows/semantic-pr-title.yml +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/.gitignore +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/.readthedocs.yml +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/CITATION.cff +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/LICENSE +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/dev/example-objects.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/dev/make-models.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/docs-img/diagrams/abstraction-layers.png +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/docs-img/diagrams/abstraction-layers.svg +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/docs-img/diagrams/example-dask-graph.png +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/docs-img/diagrams/uproot-awkward-timeline.png +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/docs-img/diagrams/uproot-awkward-timeline.svg +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/docs-img/logo/logo-300px-white.png +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/docs-img/logo/logo-300px.png +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/docs-img/logo/logo-600px.png +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/docs-img/logo/logo.svg +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/docs-img/photos/switcheroo.jpg +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/docs-sphinx/_templates/breadcrumbs.html +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/docs-sphinx/basic.rst +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/docs-sphinx/conf.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/docs-sphinx/index.rst +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/docs-sphinx/make_changelog.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/docs-sphinx/prepare_docstrings.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/docs-sphinx/requirements.txt +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/docs-sphinx/uproot3-to-4.rst +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/__init__.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/_awkwardforth.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/_dask.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/_util.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/behavior.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/behaviors/RooCurve.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/behaviors/RooHist.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/behaviors/TAxis.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/behaviors/TBranchElement.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/behaviors/TDatime.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/behaviors/TGraph.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/behaviors/TGraphAsymmErrors.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/behaviors/TGraphErrors.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/behaviors/TH1.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/behaviors/TH2.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/behaviors/TH2Poly.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/behaviors/TH3.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/behaviors/TParameter.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/behaviors/TProfile.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/behaviors/TProfile2D.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/behaviors/TProfile3D.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/behaviors/TTree.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/behaviors/__init__.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/cache.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/compression.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/deserialization.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/dynamic.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/exceptions.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/extras.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/interpretation/__init__.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/interpretation/grouped.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/interpretation/jagged.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/interpretation/numerical.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/interpretation/objects.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/interpretation/strings.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/language/__init__.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/model.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/models/TArray.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/models/TAtt.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/models/TBasket.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/models/TBranch.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/models/TClonesArray.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/models/TDatime.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/models/TGraph.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/models/TH.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/models/THashList.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/models/TLeaf.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/models/TList.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/models/TMatrixT.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/models/TNamed.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/models/TObjArray.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/models/TObjString.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/models/TObject.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/models/TRef.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/models/TString.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/models/TTable.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/models/TTime.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/models/TTree.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/models/__init__.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/pyroot.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/reading.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/serialization.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/sink/__init__.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/sink/file.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/source/__init__.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/source/chunk.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/source/cursor.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/source/file.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/source/fsspec.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/source/futures.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/source/http.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/source/object.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/source/s3.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/source/xrootd.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/streamers.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/writing/__init__.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/writing/_cascade.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/writing/_dask_write.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/writing/identify.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/writing/interpret.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/src/uproot/writing/writable.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/__init__.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/conftest.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/samples/h_dynamic.pkl +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0001_source_class.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0006_notify_when_downloaded.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0007_single_chunk_interface.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0008_start_interpretation.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0009_nested_directories.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0010_start_streamers.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0011_generate_classes_from_streamers.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0014_all_ttree_versions.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0016_interpretations.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0017_multi_basket_multi_branch_fetch.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0018_array_fetching_interface.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0022_number_of_branches.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0023_more_interpretations_1.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0023_ttree_versions.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0028_fallback_to_read_streamer.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0029_more_string_types.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0031_test_stl_containers.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0033_more_interpretations_2.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0034_generic_objects_in_ttrees.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0035_datatype_generality.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0038_memberwise_serialization.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0043_iterate_function.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0044_concatenate_function.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0046_histograms_bh_hist.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0053_parents_should_not_be_bases.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0058_detach_model_objects_from_files.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0066_fix_http_fallback_freeze.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0067_common_entry_offsets.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0081_dont_parse_colons.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0087_memberwise_splitting_not_implemented_messages.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0088_read_with_http.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0099_read_from_file_object.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0112_fix_pandas_with_cut.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0118_fix_name_fetch_again.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0123_atlas_issues.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0126_turn_unknown_emptyarrays_into_known_types.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0167_use_the_common_histogram_interface.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0172_allow_allocators_in_vector_typenames.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0173_empty_and_multiprocessing_bugs.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0182_complain_about_missing_files.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0194_fix_lost_cuts_in_iterate.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0220_contiguous_byte_ranges_in_http.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0228_read_TProfiles.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0240_read_TGraphAsymmErrors.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0278_specializations_for_TParameter.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0302_pickle.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0303_empty_jagged_array.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0320_start_working_on_ROOT_writing.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0322_writablefile_infrastructure.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0329_update_existing_root_files.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0335_empty_ttree_division_by_zero.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0341_manipulate_streamer_info.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0344_writabledirectory_can_read.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0345_bulk_copy_method.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0349_write_TObjString.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0350_read_RooCurve_RooHist.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0351_write_TList.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0352_write_THashList.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0384_move_behavior_of_and_fix_383.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0398_dimensions_in_leaflist.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0405_write_a_histogram.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0406_write_a_ttree.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0407_read_TDatime.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0412_write_multidimensional_numpy_to_ttree.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0414_write_jagged_arrays.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0416_writing_compressed_data.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0418_read_TTable.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0420_pyroot_uproot_interoperability.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0422_hist_integration.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0430_global_index_for_tuples_of_DataFrames.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0438_TClonesArray_is_not_AsGrouped.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0439_check_awkward_before_numpy.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0442_regular_TClonesArray.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0472_tstreamerinfo_for_ttree.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0475_remember_to_update_freesegments.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0484_manually_add_model_for_TMatrixTSym_double_.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0487_implement_asdtypeinplace.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0498_create_leaf_branch_in_extend.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0519_remove_memmap_copy.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0520_dynamic_classes_cant_be_abc_subclasses.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0569_fBits_is_4_bytes.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0576_unicode_in_names.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0578_dask_for_numpy.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0580_round_trip_for_no_flow_histograms.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0589_explicitly_interpret_RVec_type.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0603_dask_delayed_open.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0609_num_enteries_func.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0610_awkward_form.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0630_rntuple_basics.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0637_setup_tests_for_AwkwardForth.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0643_reading_vector_pair_TLorentzVector_int.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0651_implement_transformed_axis.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0652_dask_for_awkward.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0662_rntuple_stl_containers.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0692_fsspec_reading.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0692_fsspec_writing.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0700_dask_empty_arrays.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0705_rntuple_writing_metadata.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0750_avoid_empty_TBasket_issue.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0755_dask_awkward_column_projection.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0791_protect_uproot_project_columns_from_dask_node_names.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0798_DAOD_PHYSLITE.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0808_fix_awkward_form_for_AsStridedObjects.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0816_separate_AwkwardForth_machines_by_TBranch.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0832_ak_add_doc_should_also_add_to_typetracer.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0840_support_tleafG.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0841_fix_814.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0844_fix_delete_hist_from_root.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0852_fix_strided_interp_extra_offsets.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0870_writing_arrays_of_type_unknown_fix_822.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0876_uproot_dask_blind_steps.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0886_fix_awkward_form_breadcrumbs.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0910_fix_906_members_non_numerical_branches.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0911_fix_interp_array_non_numerical_objs_issue_880.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0912_fix_pandas_and_double_nested_vectors_issue_885.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0916_read_from_s3.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0927_dont_assume_uproot_in_global_scope_in_TPython_Eval.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0930_expressions_in_pandas.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0940_feat_add_TLeafC_string_support.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0962_RNTuple_update.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0965_inverted_axes_variances_hist_888.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_0976_path_object_split.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_1000-write-TProfiles.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_1043_const_std_string.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_1058_dask_awkward_report.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_1063_dask_distributed.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_1070_pandas_dataframe_building_performance_fix.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_1085_dask_write.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_1102_any_locks_in_models_must_be_transient.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_1114_fix_attempt_to_concatenate_numpy_with_awkward.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_1120_check_decompression_executor_pass_for_dask.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_1127_fix_allow_colon_in_key_names.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_1128_TGraph_writing.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_1146_split_ranges_for_large_files_over_http.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_1154_classof_using_relative_path.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_1160_std_string_in_TDirectory.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_1180_read_free_floating_vector_issue_1179.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_1181_support_for_stl_list.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_1182_add_support_for_bitset.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_1183_ttime_custom.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_1186_dtype_might_raise_ValueError.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_1189_dask_failing_on_duplicate_keys.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_1198_coalesce.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_1207_fix_title_of_TBranch_with_counter.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_1212_dont_let_update_mess_up_file_version.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_1221_AwkwardForth_bug.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_1223_more_rntuple_types.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_1254_test_threadpool_executor_for_dask.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_1264_write_NumPy_array_of_strings.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests/test_1275_fix_TStreamerLoop_code_generation.py +0 -0
- {uproot-5.4.0 → uproot-5.4.2}/tests-wasm/__init__.py +0 -0
- {uproot-5.4.0 → 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,
|
|
@@ -34,9 +34,12 @@ jobs:
|
|
|
34
34
|
with:
|
|
35
35
|
auto-update-conda: true
|
|
36
36
|
python-version: ${{ matrix.python-version }}
|
|
37
|
-
miniforge-
|
|
37
|
+
miniforge-version: latest
|
|
38
38
|
use-mamba: true
|
|
39
39
|
|
|
40
|
+
- name: Check active Python version
|
|
41
|
+
run: python -c "import sys; assert '.'.join(str(s) for s in sys.version_info[:2]) == '${{ matrix.python-version }}', f'{version} incorrect!'"
|
|
42
|
+
|
|
40
43
|
- name: Install ROOT
|
|
41
44
|
if: matrix.python-version == 3.8 && runner.os != 'macOS' && runner.os != 'Windows'
|
|
42
45
|
run: |
|
|
@@ -45,7 +48,7 @@ jobs:
|
|
|
45
48
|
conda list
|
|
46
49
|
|
|
47
50
|
- name: Install sshd for fsspec ssh tests
|
|
48
|
-
if: runner.os != 'macOS'
|
|
51
|
+
if: runner.os != 'macOS' && runner.os != 'Windows'
|
|
49
52
|
run: |
|
|
50
53
|
sudo apt-get install -y openssh-server
|
|
51
54
|
sudo service ssh restart
|
|
@@ -56,7 +59,7 @@ jobs:
|
|
|
56
59
|
ssh -o StrictHostKeyChecking=no localhost echo "ssh connection successful"
|
|
57
60
|
|
|
58
61
|
- name: Install XRootD
|
|
59
|
-
if: runner.os != 'macOS'
|
|
62
|
+
if: runner.os != 'macOS' && runner.os != 'Windows'
|
|
60
63
|
run: |
|
|
61
64
|
conda env list
|
|
62
65
|
mamba install xrootd
|
|
@@ -74,7 +77,7 @@ jobs:
|
|
|
74
77
|
fail-fast: false
|
|
75
78
|
matrix:
|
|
76
79
|
platform: [windows-latest, ubuntu-latest, macos-latest]
|
|
77
|
-
python-version: ['3.
|
|
80
|
+
python-version: ['3.13']
|
|
78
81
|
|
|
79
82
|
runs-on: ${{ matrix.platform }}
|
|
80
83
|
timeout-minutes: 30
|
|
@@ -85,9 +88,12 @@ jobs:
|
|
|
85
88
|
- uses: actions/setup-python@v5
|
|
86
89
|
with:
|
|
87
90
|
python-version: ${{ matrix.python-version }}
|
|
91
|
+
allow-prereleases: true
|
|
92
|
+
|
|
93
|
+
- uses: astral-sh/setup-uv@v3
|
|
88
94
|
|
|
89
95
|
- name: Pip install the package
|
|
90
|
-
run:
|
|
96
|
+
run: uv pip install --system .[test,dev]
|
|
91
97
|
|
|
92
98
|
- name: Run pytest
|
|
93
99
|
run: |
|
|
@@ -160,13 +166,13 @@ jobs:
|
|
|
160
166
|
rm -rf dependencies/
|
|
161
167
|
|
|
162
168
|
- name: Download Pyodide
|
|
163
|
-
uses: pyodide/pyodide-actions/download-pyodide@
|
|
169
|
+
uses: pyodide/pyodide-actions/download-pyodide@v2
|
|
164
170
|
with:
|
|
165
171
|
version: ${{ env.PYODIDE_VERSION }}
|
|
166
172
|
to: pyodide-dist
|
|
167
173
|
|
|
168
174
|
- name: Install browser
|
|
169
|
-
uses: pyodide/pyodide-actions/install-browser@
|
|
175
|
+
uses: pyodide/pyodide-actions/install-browser@v2
|
|
170
176
|
with:
|
|
171
177
|
runner: selenium
|
|
172
178
|
browser: chrome
|
|
@@ -179,3 +185,14 @@ jobs:
|
|
|
179
185
|
- name: Run pytest
|
|
180
186
|
run: |
|
|
181
187
|
pytest -vv --dist-dir=./pyodide-dist/ --runner=selenium --runtime=chrome tests-wasm
|
|
188
|
+
|
|
189
|
+
pass:
|
|
190
|
+
if: always()
|
|
191
|
+
needs: [build, vanilla-build, numpy1-build, pyodide-build]
|
|
192
|
+
runs-on: ubuntu-latest
|
|
193
|
+
timeout-minutes: 2
|
|
194
|
+
steps:
|
|
195
|
+
- name: Decide whether the needed jobs succeeded or failed
|
|
196
|
+
uses: re-actors/alls-green@release/v1
|
|
197
|
+
with:
|
|
198
|
+
jobs: ${{ toJSON(needs) }}
|
|
@@ -33,7 +33,7 @@ jobs:
|
|
|
33
33
|
run: ls -lha dist/*.whl
|
|
34
34
|
|
|
35
35
|
- name: Upload wheel to Anaconda Cloud as nightly
|
|
36
|
-
uses: scientific-python/upload-nightly-action@
|
|
36
|
+
uses: scientific-python/upload-nightly-action@82396a2ed4269ba06c6b2988bb4fd568ef3c3d6b # 0.6.1
|
|
37
37
|
with:
|
|
38
38
|
artifacts_path: dist
|
|
39
39
|
anaconda_nightly_upload_token: ${{ secrets.ANACONDA_ORG_UPLOAD_TOKEN }}
|
|
@@ -4,7 +4,7 @@ ci:
|
|
|
4
4
|
|
|
5
5
|
repos:
|
|
6
6
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
7
|
-
rev:
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
@@ -23,6 +23,7 @@ Classifier: Programming Language :: Python :: 3.9
|
|
|
23
23
|
Classifier: Programming Language :: Python :: 3.10
|
|
24
24
|
Classifier: Programming Language :: Python :: 3.11
|
|
25
25
|
Classifier: Programming Language :: Python :: 3.12
|
|
26
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
26
27
|
Classifier: Topic :: Scientific/Engineering
|
|
27
28
|
Classifier: Topic :: Scientific/Engineering :: Information Analysis
|
|
28
29
|
Classifier: Topic :: Scientific/Engineering :: Mathematics
|
|
@@ -67,6 +68,7 @@ Requires-Dist: pytest-pyodide; extra == 'test-pyodide'
|
|
|
67
68
|
Requires-Dist: pytest-timeout; extra == 'test-pyodide'
|
|
68
69
|
Requires-Dist: pytest>=6; extra == 'test-pyodide'
|
|
69
70
|
Requires-Dist: scikit-hep-testdata; extra == 'test-pyodide'
|
|
71
|
+
Requires-Dist: selenium<=4.25.0; extra == 'test-pyodide'
|
|
70
72
|
Provides-Extra: xrootd
|
|
71
73
|
Requires-Dist: fsspec-xrootd; extra == 'xrootd'
|
|
72
74
|
Description-Content-Type: text/markdown
|
|
@@ -263,6 +265,10 @@ Thanks especially to the gracious help of Uproot contributors (including the [or
|
|
|
263
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>
|
|
264
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>
|
|
265
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>
|
|
266
272
|
</tbody>
|
|
267
273
|
</table>
|
|
268
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
|
|
|
@@ -29,6 +29,7 @@ classifiers = [
|
|
|
29
29
|
"Programming Language :: Python :: 3.10",
|
|
30
30
|
"Programming Language :: Python :: 3.11",
|
|
31
31
|
"Programming Language :: Python :: 3.12",
|
|
32
|
+
"Programming Language :: Python :: 3.13",
|
|
32
33
|
"Topic :: Scientific/Engineering",
|
|
33
34
|
"Topic :: Scientific/Engineering :: Information Analysis",
|
|
34
35
|
"Topic :: Scientific/Engineering :: Mathematics",
|
|
@@ -82,6 +83,7 @@ test = [
|
|
|
82
83
|
]
|
|
83
84
|
test-pyodide = [
|
|
84
85
|
"pytest>=6",
|
|
86
|
+
"selenium<=4.25.0", # unpin once >4.26.0 is available
|
|
85
87
|
"pytest-pyodide",
|
|
86
88
|
"pytest-timeout",
|
|
87
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
|
-
|
|
213
|
+
popper = [arrays]
|
|
214
|
+
del arrays
|
|
215
|
+
del item
|
|
216
|
+
yield popper.pop(), report
|
|
217
|
+
|
|
214
218
|
else:
|
|
215
|
-
|
|
216
|
-
|
|
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
|
|
1136
|
+
yield popper.pop(), Report(self, sub_entry_start, sub_entry_stop)
|
|
1124
1137
|
else:
|
|
1125
|
-
yield
|
|
1138
|
+
yield popper.pop()
|
|
1126
1139
|
|
|
1127
1140
|
def keys(
|
|
1128
1141
|
self,
|
|
@@ -2959,6 +2972,9 @@ def _regularize_expressions(
|
|
|
2959
2972
|
return arrays, expression_context, branchid_interpretation
|
|
2960
2973
|
|
|
2961
2974
|
|
|
2975
|
+
_basket_arrays_lock = threading.Lock()
|
|
2976
|
+
|
|
2977
|
+
|
|
2962
2978
|
def _ranges_or_baskets_to_arrays(
|
|
2963
2979
|
hasbranches,
|
|
2964
2980
|
ranges_or_baskets,
|
|
@@ -3057,7 +3073,7 @@ def _ranges_or_baskets_to_arrays(
|
|
|
3057
3073
|
context = dict(branch.context)
|
|
3058
3074
|
context["forth"] = forth_context[branch.cache_key]
|
|
3059
3075
|
|
|
3060
|
-
|
|
3076
|
+
basket_array = interpretation.basket_array(
|
|
3061
3077
|
basket.data,
|
|
3062
3078
|
basket.byte_offsets,
|
|
3063
3079
|
basket,
|
|
@@ -3067,16 +3083,21 @@ def _ranges_or_baskets_to_arrays(
|
|
|
3067
3083
|
library,
|
|
3068
3084
|
interp_options,
|
|
3069
3085
|
)
|
|
3070
|
-
if basket.num_entries != len(
|
|
3086
|
+
if basket.num_entries != len(basket_array):
|
|
3071
3087
|
raise ValueError(
|
|
3072
3088
|
f"""basket {basket.basket_num} in tree/branch {branch.object_path} has the wrong number of entries """
|
|
3073
|
-
f"""(expected {basket.num_entries}, obtained {len(
|
|
3089
|
+
f"""(expected {basket.num_entries}, obtained {len(basket_array)}) when interpreted as {interpretation}
|
|
3074
3090
|
in file {branch.file.file_path}"""
|
|
3075
3091
|
)
|
|
3076
3092
|
|
|
3093
|
+
basket_num = basket.basket_num
|
|
3077
3094
|
basket = None
|
|
3078
3095
|
|
|
3079
|
-
|
|
3096
|
+
with _basket_arrays_lock:
|
|
3097
|
+
basket_arrays[basket_num] = basket_array
|
|
3098
|
+
len_basket_arrays = len(basket_arrays)
|
|
3099
|
+
|
|
3100
|
+
if len_basket_arrays == branchid_num_baskets[branch.cache_key]:
|
|
3080
3101
|
arrays[branch.cache_key] = interpretation.final_array(
|
|
3081
3102
|
basket_arrays,
|
|
3082
3103
|
entry_start,
|
|
@@ -3086,8 +3107,9 @@ def _ranges_or_baskets_to_arrays(
|
|
|
3086
3107
|
branch,
|
|
3087
3108
|
interp_options,
|
|
3088
3109
|
)
|
|
3089
|
-
|
|
3090
|
-
|
|
3110
|
+
with _basket_arrays_lock:
|
|
3111
|
+
# no longer needed, save memory
|
|
3112
|
+
basket_arrays.clear()
|
|
3091
3113
|
|
|
3092
3114
|
except Exception:
|
|
3093
3115
|
notifications.put(sys.exc_info())
|
|
@@ -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
|
|
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
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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
|
|