uproot 5.2.2__tar.gz → 5.3.0__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.2.2 → uproot-5.3.0}/.all-contributorsrc +9 -0
- {uproot-5.2.2 → uproot-5.3.0}/.pre-commit-config.yaml +3 -3
- {uproot-5.2.2 → uproot-5.3.0}/PKG-INFO +4 -3
- {uproot-5.2.2 → uproot-5.3.0}/README.md +1 -0
- {uproot-5.2.2 → uproot-5.3.0}/dev/example-objects.py +1 -0
- {uproot-5.2.2 → uproot-5.3.0}/dev/make-models.py +1 -0
- {uproot-5.2.2 → uproot-5.3.0}/docs-sphinx/prepare_docstrings.py +3 -2
- {uproot-5.2.2 → uproot-5.3.0}/pyproject.toml +11 -11
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/_dask.py +107 -17
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/behaviors/TBranch.py +3 -2
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/compression.py +78 -38
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/extras.py +21 -27
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/interpretation/library.py +59 -30
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/interpretation/objects.py +42 -4
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/model.py +5 -3
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/models/RNTuple.py +3 -3
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/reading.py +2 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/source/fsspec.py +2 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/version.py +2 -2
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/writing/_cascade.py +2 -4
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/writing/_cascadetree.py +12 -12
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/writing/identify.py +4 -2
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0008_start_interpretation.py +5 -1
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0416_writing_compressed_data.py +64 -15
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0692_fsspec_writing.py +29 -2
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0962_RNTuple_update.py +1 -1
- uproot-5.3.0/tests/test_1114_fix_attempt_to_concatenate_numpy_with_awkward.py +21 -0
- uproot-5.3.0/tests/test_1120_check_decompression_executor_pass_for_dask.py +27 -0
- uproot-5.3.0/tests/test_1127_fix_allow_colon_in_key_names.py +26 -0
- {uproot-5.2.2 → uproot-5.3.0}/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/.github/dependabot.yml +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/.github/workflows/build-test.yml +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/.github/workflows/deploy.yml +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/.github/workflows/semantic-pr-title.yml +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/.gitignore +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/.readthedocs.yml +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/CITATION.cff +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/LICENSE +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/docs-img/.DS_Store +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/docs-img/diagrams/abstraction-layers.png +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/docs-img/diagrams/abstraction-layers.svg +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/docs-img/diagrams/example-dask-graph.png +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/docs-img/diagrams/uproot-awkward-timeline.png +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/docs-img/diagrams/uproot-awkward-timeline.svg +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/docs-img/logo/logo-300px-white.png +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/docs-img/logo/logo-300px.png +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/docs-img/logo/logo-600px.png +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/docs-img/logo/logo.svg +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/docs-img/photos/switcheroo.jpg +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/docs-sphinx/_templates/breadcrumbs.html +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/docs-sphinx/basic.rst +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/docs-sphinx/conf.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/docs-sphinx/index.rst +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/docs-sphinx/make_changelog.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/docs-sphinx/requirements.txt +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/docs-sphinx/uproot3-to-4.rst +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/__init__.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/_awkwardforth.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/_util.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/behavior.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/behaviors/RooCurve.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/behaviors/RooHist.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/behaviors/TAxis.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/behaviors/TBranchElement.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/behaviors/TDatime.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/behaviors/TGraph.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/behaviors/TGraphAsymmErrors.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/behaviors/TGraphErrors.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/behaviors/TH1.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/behaviors/TH2.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/behaviors/TH2Poly.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/behaviors/TH3.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/behaviors/TParameter.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/behaviors/TProfile.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/behaviors/TProfile2D.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/behaviors/TProfile3D.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/behaviors/TTree.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/behaviors/__init__.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/cache.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/const.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/containers.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/deserialization.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/dynamic.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/exceptions.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/interpretation/__init__.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/interpretation/grouped.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/interpretation/identify.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/interpretation/jagged.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/interpretation/numerical.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/interpretation/strings.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/language/__init__.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/language/python.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/models/TArray.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/models/TAtt.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/models/TBasket.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/models/TBranch.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/models/TClonesArray.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/models/TDatime.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/models/TGraph.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/models/TH.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/models/THashList.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/models/TLeaf.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/models/TList.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/models/TMatrixT.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/models/TNamed.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/models/TObjArray.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/models/TObjString.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/models/TObject.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/models/TRef.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/models/TString.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/models/TTable.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/models/TTree.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/models/__init__.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/pyroot.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/serialization.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/sink/__init__.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/sink/file.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/source/__init__.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/source/chunk.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/source/cursor.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/source/file.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/source/futures.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/source/http.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/source/object.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/source/s3.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/source/xrootd.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/streamers.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/writing/__init__.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/writing/_cascadentuple.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/writing/_dask_write.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/src/uproot/writing/writable.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/__init__.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/conftest.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/samples/h_dynamic.pkl +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0001_source_class.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0006_notify_when_downloaded.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0007_single_chunk_interface.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0009_nested_directories.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0010_start_streamers.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0011_generate_classes_from_streamers.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0013_rntuple_anchor.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0014_all_ttree_versions.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0016_interpretations.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0017_multi_basket_multi_branch_fetch.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0018_array_fetching_interface.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0022_number_of_branches.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0023_more_interpretations_1.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0023_ttree_versions.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0028_fallback_to_read_streamer.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0029_more_string_types.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0031_test_stl_containers.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0033_more_interpretations_2.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0034_generic_objects_in_ttrees.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0035_datatype_generality.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0038_memberwise_serialization.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0043_iterate_function.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0044_concatenate_function.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0046_histograms_bh_hist.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0053_parents_should_not_be_bases.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0058_detach_model_objects_from_files.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0066_fix_http_fallback_freeze.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0067_common_entry_offsets.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0081_dont_parse_colons.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0087_memberwise_splitting_not_implemented_messages.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0088_read_with_http.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0099_read_from_file_object.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0112_fix_pandas_with_cut.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0118_fix_name_fetch_again.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0123_atlas_issues.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0126_turn_unknown_emptyarrays_into_known_types.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0167_use_the_common_histogram_interface.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0172_allow_allocators_in_vector_typenames.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0173_empty_and_multiprocessing_bugs.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0182_complain_about_missing_files.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0194_fix_lost_cuts_in_iterate.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0220_contiguous_byte_ranges_in_http.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0228_read_TProfiles.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0240_read_TGraphAsymmErrors.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0278_specializations_for_TParameter.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0302_pickle.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0303_empty_jagged_array.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0320_start_working_on_ROOT_writing.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0322_writablefile_infrastructure.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0329_update_existing_root_files.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0335_empty_ttree_division_by_zero.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0341_manipulate_streamer_info.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0344_writabledirectory_can_read.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0345_bulk_copy_method.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0349_write_TObjString.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0350_read_RooCurve_RooHist.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0351_write_TList.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0352_write_THashList.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0384_move_behavior_of_and_fix_383.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0398_dimensions_in_leaflist.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0405_write_a_histogram.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0406_write_a_ttree.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0407_read_TDatime.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0412_write_multidimensional_numpy_to_ttree.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0414_write_jagged_arrays.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0418_read_TTable.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0420_pyroot_uproot_interoperability.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0422_hist_integration.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0430_global_index_for_tuples_of_DataFrames.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0438_TClonesArray_is_not_AsGrouped.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0439_check_awkward_before_numpy.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0442_regular_TClonesArray.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0472_tstreamerinfo_for_ttree.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0475_remember_to_update_freesegments.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0484_manually_add_model_for_TMatrixTSym_double_.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0487_implement_asdtypeinplace.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0498_create_leaf_branch_in_extend.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0519_remove_memmap_copy.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0520_dynamic_classes_cant_be_abc_subclasses.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0569_fBits_is_4_bytes.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0576_unicode_in_names.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0578_dask_for_numpy.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0580_round_trip_for_no_flow_histograms.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0589_explicitly_interpret_RVec_type.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0603_dask_delayed_open.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0609_num_enteries_func.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0610_awkward_form.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0630_rntuple_basics.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0637_setup_tests_for_AwkwardForth.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0643_reading_vector_pair_TLorentzVector_int.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0651_implement_transformed_axis.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0652_dask_for_awkward.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0662_rntuple_stl_containers.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0692_fsspec_reading.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0700_dask_empty_arrays.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0705_rntuple_writing_metadata.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0750_avoid_empty_TBasket_issue.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0755_dask_awkward_column_projection.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0791_protect_uproot_project_columns_from_dask_node_names.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0798_DAOD_PHYSLITE.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0808_fix_awkward_form_for_AsStridedObjects.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0816_separate_AwkwardForth_machines_by_TBranch.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0832_ak_add_doc_should_also_add_to_typetracer.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0840_support_tleafG.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0841_fix_814.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0844_fix_delete_hist_from_root.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0852_fix_strided_interp_extra_offsets.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0870_writing_arrays_of_type_unknown_fix_822.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0876_uproot_dask_blind_steps.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0886_fix_awkward_form_breadcrumbs.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0910_fix_906_members_non_numerical_branches.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0911_fix_interp_array_non_numerical_objs_issue_880.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0912_fix_pandas_and_double_nested_vectors_issue_885.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0916_read_from_s3.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0927_dont_assume_uproot_in_global_scope_in_TPython_Eval.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0930_expressions_in_pandas.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0940_feat_add_TLeafC_string_support.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0965_inverted_axes_variances_hist_888.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_0976_path_object_split.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_1000-write-TProfiles.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_1043_const_std_string.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_1058_dask_awkward_report.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_1063_dask_distributed.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_1070_pandas_dataframe_building_performance_fix.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_1085_dask_write.py +0 -0
- {uproot-5.2.2 → uproot-5.3.0}/tests/test_1102_any_locks_in_models_must_be_transient.py +0 -0
|
@@ -533,6 +533,15 @@
|
|
|
533
533
|
"contributions": [
|
|
534
534
|
"test"
|
|
535
535
|
]
|
|
536
|
+
},
|
|
537
|
+
{
|
|
538
|
+
"login": "YSelfTool",
|
|
539
|
+
"name": "Robin Sonnabend",
|
|
540
|
+
"avatar_url": "https://avatars.githubusercontent.com/u/1640386?v=4",
|
|
541
|
+
"profile": "http://tooldev.de",
|
|
542
|
+
"contributions": [
|
|
543
|
+
"code"
|
|
544
|
+
]
|
|
536
545
|
}
|
|
537
546
|
],
|
|
538
547
|
"contributorsPerLine": 7,
|
|
@@ -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:
|
|
21
|
+
rev: 24.2.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.2.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.15.
|
|
33
|
+
rev: v3.15.1
|
|
34
34
|
hooks:
|
|
35
35
|
- id: pyupgrade
|
|
36
36
|
args: [--py38-plus]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: uproot
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.3.0
|
|
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
|
|
@@ -31,6 +31,7 @@ Classifier: Topic :: Software Development
|
|
|
31
31
|
Classifier: Topic :: Utilities
|
|
32
32
|
Requires-Python: >=3.8
|
|
33
33
|
Requires-Dist: awkward>=2.4.6
|
|
34
|
+
Requires-Dist: cramjam>=2.8.1
|
|
34
35
|
Requires-Dist: fsspec
|
|
35
36
|
Requires-Dist: importlib-metadata; python_version < '3.8'
|
|
36
37
|
Requires-Dist: numpy
|
|
@@ -46,7 +47,7 @@ Requires-Dist: pandas; extra == 'dev'
|
|
|
46
47
|
Provides-Extra: test
|
|
47
48
|
Requires-Dist: aiohttp; extra == 'test'
|
|
48
49
|
Requires-Dist: fsspec-xrootd; extra == 'test'
|
|
49
|
-
Requires-Dist:
|
|
50
|
+
Requires-Dist: isal; extra == 'test'
|
|
50
51
|
Requires-Dist: minio; extra == 'test'
|
|
51
52
|
Requires-Dist: paramiko; extra == 'test'
|
|
52
53
|
Requires-Dist: pytest-rerunfailures; extra == 'test'
|
|
@@ -57,7 +58,6 @@ Requires-Dist: requests; extra == 'test'
|
|
|
57
58
|
Requires-Dist: s3fs; extra == 'test'
|
|
58
59
|
Requires-Dist: scikit-hep-testdata; extra == 'test'
|
|
59
60
|
Requires-Dist: xxhash; extra == 'test'
|
|
60
|
-
Requires-Dist: zstandard; extra == 'test'
|
|
61
61
|
Description-Content-Type: text/markdown
|
|
62
62
|
|
|
63
63
|
<img src="https://raw.githubusercontent.com/scikit-hep/uproot5/main/docs-img/logo/logo.svg" width="300px">
|
|
@@ -245,6 +245,7 @@ Thanks especially to the gracious help of Uproot contributors (including the [or
|
|
|
245
245
|
</tr>
|
|
246
246
|
<tr>
|
|
247
247
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/bnavigator"><img src="https://avatars.githubusercontent.com/u/4623504?v=4?s=100" width="100px;" alt="Ben Greiner"/><br /><sub><b>Ben Greiner</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=bnavigator" title="Tests">⚠️</a></td>
|
|
248
|
+
<td align="center" valign="top" width="14.28%"><a href="http://tooldev.de"><img src="https://avatars.githubusercontent.com/u/1640386?v=4?s=100" width="100px;" alt="Robin Sonnabend"/><br /><sub><b>Robin Sonnabend</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=YSelfTool" title="Code">💻</a></td>
|
|
248
249
|
</tr>
|
|
249
250
|
</tbody>
|
|
250
251
|
</table>
|
|
@@ -183,6 +183,7 @@ Thanks especially to the gracious help of Uproot contributors (including the [or
|
|
|
183
183
|
</tr>
|
|
184
184
|
<tr>
|
|
185
185
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/bnavigator"><img src="https://avatars.githubusercontent.com/u/4623504?v=4?s=100" width="100px;" alt="Ben Greiner"/><br /><sub><b>Ben Greiner</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=bnavigator" title="Tests">⚠️</a></td>
|
|
186
|
+
<td align="center" valign="top" width="14.28%"><a href="http://tooldev.de"><img src="https://avatars.githubusercontent.com/u/1640386?v=4?s=100" width="100px;" alt="Robin Sonnabend"/><br /><sub><b>Robin Sonnabend</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=YSelfTool" title="Code">💻</a></td>
|
|
186
187
|
</tr>
|
|
187
188
|
</tbody>
|
|
188
189
|
</table>
|
|
@@ -107,7 +107,7 @@ def ensure(filename, content):
|
|
|
107
107
|
|
|
108
108
|
def handle_module(modulename, module):
|
|
109
109
|
if any(x.startswith("_") for x in modulename.split(".")) and not any(
|
|
110
|
-
x == "_dask" for x in modulename.split(".")
|
|
110
|
+
x == "_dask" or x == "_dask_write" for x in modulename.split(".")
|
|
111
111
|
):
|
|
112
112
|
return
|
|
113
113
|
|
|
@@ -125,7 +125,8 @@ def handle_module(modulename, module):
|
|
|
125
125
|
toctree2.write(" " + modulename + " (module) <" + modulename + ">\n")
|
|
126
126
|
|
|
127
127
|
if modulename != "uproot" and all(
|
|
128
|
-
not x.startswith("_") or x == "_dask"
|
|
128
|
+
not x.startswith("_") or x == "_dask" or x == "_dask_write"
|
|
129
|
+
for x in modulename.split(".")
|
|
129
130
|
):
|
|
130
131
|
|
|
131
132
|
def good(obj):
|
|
@@ -5,6 +5,9 @@ requires = [
|
|
|
5
5
|
"hatch-vcs"
|
|
6
6
|
]
|
|
7
7
|
|
|
8
|
+
[lint.mccabe]
|
|
9
|
+
max-complexity = 100
|
|
10
|
+
|
|
8
11
|
[project]
|
|
9
12
|
authors = [
|
|
10
13
|
{name = "Jim Pivarski", email = "pivarski@princeton.edu"}
|
|
@@ -35,6 +38,7 @@ classifiers = [
|
|
|
35
38
|
]
|
|
36
39
|
dependencies = [
|
|
37
40
|
"awkward>=2.4.6",
|
|
41
|
+
"cramjam>=2.8.1",
|
|
38
42
|
"importlib-metadata;python_version<\"3.8\"",
|
|
39
43
|
"numpy",
|
|
40
44
|
"fsspec",
|
|
@@ -60,9 +64,8 @@ dev = [
|
|
|
60
64
|
"awkward-pandas"
|
|
61
65
|
]
|
|
62
66
|
test = [
|
|
63
|
-
"
|
|
67
|
+
"isal",
|
|
64
68
|
"xxhash",
|
|
65
|
-
"zstandard",
|
|
66
69
|
"minio",
|
|
67
70
|
"aiohttp",
|
|
68
71
|
"fsspec-xrootd",
|
|
@@ -114,6 +117,9 @@ exclude = [
|
|
|
114
117
|
"src/uproot/__init__.py",
|
|
115
118
|
"docs-sphinx/*.py"
|
|
116
119
|
]
|
|
120
|
+
src = ["src"]
|
|
121
|
+
|
|
122
|
+
[tool.ruff.lint]
|
|
117
123
|
ignore = [
|
|
118
124
|
"E501",
|
|
119
125
|
"E722",
|
|
@@ -122,7 +128,7 @@ ignore = [
|
|
|
122
128
|
"SIM118", # key in dict, broken since uproot doesn't behave like a dict
|
|
123
129
|
"PGH003", # too-broad type ignore
|
|
124
130
|
"SIM114", # combine `if` branches using logical `or` operator
|
|
125
|
-
"
|
|
131
|
+
"S307", # no eval allowed
|
|
126
132
|
"PLC1901", # empty string is falsey (but I don't want to rely on such weak typing)
|
|
127
133
|
"RUF012" # enforces type annotations on a codebase that lacks type annotations
|
|
128
134
|
]
|
|
@@ -146,16 +152,10 @@ select = [
|
|
|
146
152
|
"UP", # pyupgrade
|
|
147
153
|
"YTT" # flake8-2020
|
|
148
154
|
]
|
|
149
|
-
src = ["src"]
|
|
150
|
-
|
|
151
|
-
[tool.ruff.lint]
|
|
152
155
|
isort.required-imports = ["from __future__ import annotations"]
|
|
153
156
|
|
|
154
|
-
[tool.ruff.
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
[tool.ruff.per-file-ignores]
|
|
158
|
-
"dev/*" = ["T20"]
|
|
157
|
+
[tool.ruff.lint.per-file-ignores]
|
|
158
|
+
"dev/*" = ["T20", "T201"]
|
|
159
159
|
"src/uproot/*/file.py" = ["SIM115"]
|
|
160
160
|
|
|
161
161
|
[tool.setuptools_scm]
|
|
@@ -43,6 +43,8 @@ def dask(
|
|
|
43
43
|
form_mapping=None,
|
|
44
44
|
allow_read_errors_with_report=False,
|
|
45
45
|
known_base_form=None,
|
|
46
|
+
decompression_executor=None,
|
|
47
|
+
interpretation_executor=None,
|
|
46
48
|
**options,
|
|
47
49
|
):
|
|
48
50
|
"""
|
|
@@ -104,6 +106,15 @@ def dask(
|
|
|
104
106
|
report dask-awkward collection.
|
|
105
107
|
known_base_form (awkward.forms.Form | None): If not none use this form instead of opening
|
|
106
108
|
one file to determine the dataset's form. Only available with open_files=False.
|
|
109
|
+
decompression_executor (None or Executor with a ``submit`` method): The
|
|
110
|
+
executor that is used to decompress ``TBaskets``; if None, a
|
|
111
|
+
:doc:`uproot.source.futures.TrivialExecutor` is created.
|
|
112
|
+
Executors attached to a file are ``shutdown`` when the file is closed.
|
|
113
|
+
interpretation_executor (None or Executor with a ``submit`` method): The
|
|
114
|
+
executor that is used to interpret uncompressed ``TBasket`` data as
|
|
115
|
+
arrays; if None, a :doc:`uproot.source.futures.TrivialExecutor`
|
|
116
|
+
is created.
|
|
117
|
+
Executors attached to a file are ``shutdown`` when the file is closed.
|
|
107
118
|
options: See below.
|
|
108
119
|
|
|
109
120
|
Returns dask equivalents of the backends supported by uproot. If ``library='np'``,
|
|
@@ -239,6 +250,8 @@ def dask(
|
|
|
239
250
|
real_options,
|
|
240
251
|
interp_options,
|
|
241
252
|
steps_per_file,
|
|
253
|
+
decompression_executor,
|
|
254
|
+
interpretation_executor,
|
|
242
255
|
)
|
|
243
256
|
else:
|
|
244
257
|
return _get_dask_array_delay_open(
|
|
@@ -253,6 +266,8 @@ def dask(
|
|
|
253
266
|
real_options,
|
|
254
267
|
interp_options,
|
|
255
268
|
steps_per_file,
|
|
269
|
+
decompression_executor,
|
|
270
|
+
interpretation_executor,
|
|
256
271
|
)
|
|
257
272
|
elif library.name == "ak":
|
|
258
273
|
if open_files:
|
|
@@ -271,6 +286,8 @@ def dask(
|
|
|
271
286
|
form_mapping,
|
|
272
287
|
steps_per_file,
|
|
273
288
|
allow_read_errors_with_report,
|
|
289
|
+
decompression_executor,
|
|
290
|
+
interpretation_executor,
|
|
274
291
|
)
|
|
275
292
|
else:
|
|
276
293
|
return _get_dak_array_delay_open(
|
|
@@ -288,6 +305,8 @@ def dask(
|
|
|
288
305
|
steps_per_file,
|
|
289
306
|
allow_read_errors_with_report,
|
|
290
307
|
known_base_form,
|
|
308
|
+
decompression_executor,
|
|
309
|
+
interpretation_executor,
|
|
291
310
|
)
|
|
292
311
|
else:
|
|
293
312
|
raise NotImplementedError()
|
|
@@ -438,10 +457,19 @@ def _dask_array_from_map(
|
|
|
438
457
|
|
|
439
458
|
|
|
440
459
|
class _UprootReadNumpy:
|
|
441
|
-
def __init__(
|
|
460
|
+
def __init__(
|
|
461
|
+
self,
|
|
462
|
+
ttrees,
|
|
463
|
+
key,
|
|
464
|
+
interp_options,
|
|
465
|
+
decompression_executor=None,
|
|
466
|
+
interpretation_executor=None,
|
|
467
|
+
) -> None:
|
|
442
468
|
self.ttrees = ttrees
|
|
443
469
|
self.key = key
|
|
444
470
|
self.interp_options = interp_options
|
|
471
|
+
self.decompression_executor = decompression_executor
|
|
472
|
+
self.interpretation_executor = interpretation_executor
|
|
445
473
|
|
|
446
474
|
def __call__(self, i_start_stop):
|
|
447
475
|
i, start, stop = i_start_stop
|
|
@@ -450,18 +478,29 @@ class _UprootReadNumpy:
|
|
|
450
478
|
entry_stop=stop,
|
|
451
479
|
library="np",
|
|
452
480
|
ak_add_doc=self.interp_options["ak_add_doc"],
|
|
481
|
+
decompression_executor=self.decompression_executor,
|
|
482
|
+
interpretation_executor=self.interpretation_executor,
|
|
453
483
|
)
|
|
454
484
|
|
|
455
485
|
|
|
456
486
|
class _UprootOpenAndReadNumpy:
|
|
457
487
|
def __init__(
|
|
458
|
-
self,
|
|
488
|
+
self,
|
|
489
|
+
custom_classes,
|
|
490
|
+
allow_missing,
|
|
491
|
+
real_options,
|
|
492
|
+
key,
|
|
493
|
+
interp_options,
|
|
494
|
+
decompression_executor=None,
|
|
495
|
+
interpretation_executor=None,
|
|
459
496
|
):
|
|
460
497
|
self.custom_classes = custom_classes
|
|
461
498
|
self.allow_missing = allow_missing
|
|
462
499
|
self.real_options = real_options
|
|
463
500
|
self.key = key
|
|
464
501
|
self.interp_options = interp_options
|
|
502
|
+
self.decompression_executor = decompression_executor
|
|
503
|
+
self.interpretation_executor = interpretation_executor
|
|
465
504
|
|
|
466
505
|
def __call__(self, file_path_object_path_istep_nsteps_ischunk):
|
|
467
506
|
(
|
|
@@ -503,6 +542,8 @@ which has {num_entries} entries"""
|
|
|
503
542
|
entry_start=start,
|
|
504
543
|
entry_stop=stop,
|
|
505
544
|
ak_add_doc=self.interp_options["ak_add_doc"],
|
|
545
|
+
decompression_executor=self.decompression_executor,
|
|
546
|
+
interpretation_executor=self.interpretation_executor,
|
|
506
547
|
)
|
|
507
548
|
|
|
508
549
|
|
|
@@ -519,6 +560,8 @@ def _get_dask_array(
|
|
|
519
560
|
real_options,
|
|
520
561
|
interp_options,
|
|
521
562
|
steps_per_file,
|
|
563
|
+
decompression_executor,
|
|
564
|
+
interpretation_executor,
|
|
522
565
|
):
|
|
523
566
|
ttrees = []
|
|
524
567
|
explicit_chunks = []
|
|
@@ -670,7 +713,13 @@ which has {entry_stop} entries"""
|
|
|
670
713
|
chunk_args.append((0, 0, 0))
|
|
671
714
|
|
|
672
715
|
dask_dict[key] = _dask_array_from_map(
|
|
673
|
-
_UprootReadNumpy(
|
|
716
|
+
_UprootReadNumpy(
|
|
717
|
+
ttrees,
|
|
718
|
+
key,
|
|
719
|
+
interp_options,
|
|
720
|
+
decompression_executor,
|
|
721
|
+
interpretation_executor,
|
|
722
|
+
),
|
|
674
723
|
chunk_args,
|
|
675
724
|
chunks=(tuple(chunks),),
|
|
676
725
|
dtype=dt,
|
|
@@ -692,6 +741,8 @@ def _get_dask_array_delay_open(
|
|
|
692
741
|
real_options,
|
|
693
742
|
interp_options,
|
|
694
743
|
steps_per_file,
|
|
744
|
+
decompression_executor,
|
|
745
|
+
interpretation_executor,
|
|
695
746
|
):
|
|
696
747
|
ffile_path, fobject_path = files[0][0:2]
|
|
697
748
|
obj = uproot._util.regularize_object_path(
|
|
@@ -750,7 +801,13 @@ def _get_dask_array_delay_open(
|
|
|
750
801
|
|
|
751
802
|
dask_dict[key] = _dask_array_from_map(
|
|
752
803
|
_UprootOpenAndReadNumpy(
|
|
753
|
-
custom_classes,
|
|
804
|
+
custom_classes,
|
|
805
|
+
allow_missing,
|
|
806
|
+
real_options,
|
|
807
|
+
key,
|
|
808
|
+
interp_options,
|
|
809
|
+
decompression_executor,
|
|
810
|
+
interpretation_executor,
|
|
754
811
|
),
|
|
755
812
|
partition_args,
|
|
756
813
|
chunks=(tuple(partitions),),
|
|
@@ -762,16 +819,13 @@ def _get_dask_array_delay_open(
|
|
|
762
819
|
|
|
763
820
|
class ImplementsFormMappingInfo(Protocol):
|
|
764
821
|
@property
|
|
765
|
-
def behavior(self) -> dict | None:
|
|
766
|
-
...
|
|
822
|
+
def behavior(self) -> dict | None: ...
|
|
767
823
|
|
|
768
824
|
buffer_key: str | Callable
|
|
769
825
|
|
|
770
|
-
def parse_buffer_key(self, buffer_key: str) -> tuple[str, str]:
|
|
771
|
-
...
|
|
826
|
+
def parse_buffer_key(self, buffer_key: str) -> tuple[str, str]: ...
|
|
772
827
|
|
|
773
|
-
def keys_for_buffer_keys(self, buffer_keys: frozenset[str]) -> frozenset[str]:
|
|
774
|
-
...
|
|
828
|
+
def keys_for_buffer_keys(self, buffer_keys: frozenset[str]) -> frozenset[str]: ...
|
|
775
829
|
|
|
776
830
|
def load_buffers(
|
|
777
831
|
self,
|
|
@@ -780,13 +834,11 @@ class ImplementsFormMappingInfo(Protocol):
|
|
|
780
834
|
start: int,
|
|
781
835
|
stop: int,
|
|
782
836
|
options: Any,
|
|
783
|
-
) -> Mapping[str, AwkArray]:
|
|
784
|
-
...
|
|
837
|
+
) -> Mapping[str, AwkArray]: ...
|
|
785
838
|
|
|
786
839
|
|
|
787
840
|
class ImplementsFormMapping(Protocol):
|
|
788
|
-
def __call__(self, form: Form) -> tuple[Form, ImplementsFormMappingInfo]:
|
|
789
|
-
...
|
|
841
|
+
def __call__(self, form: Form) -> tuple[Form, ImplementsFormMappingInfo]: ...
|
|
790
842
|
|
|
791
843
|
|
|
792
844
|
class TrivialFormMappingInfo(ImplementsFormMappingInfo):
|
|
@@ -851,6 +903,8 @@ class TrivialFormMappingInfo(ImplementsFormMappingInfo):
|
|
|
851
903
|
keys: frozenset[str],
|
|
852
904
|
start: int,
|
|
853
905
|
stop: int,
|
|
906
|
+
decompression_executor,
|
|
907
|
+
interpretation_executor,
|
|
854
908
|
options: Any,
|
|
855
909
|
) -> Mapping[str, AwkArray]:
|
|
856
910
|
# First, let's read the arrays as a tuple (to associate with each key)
|
|
@@ -859,6 +913,8 @@ class TrivialFormMappingInfo(ImplementsFormMappingInfo):
|
|
|
859
913
|
entry_start=start,
|
|
860
914
|
entry_stop=stop,
|
|
861
915
|
ak_add_doc=options["ak_add_doc"],
|
|
916
|
+
decompression_executor=decompression_executor,
|
|
917
|
+
interpretation_executor=interpretation_executor,
|
|
862
918
|
how=tuple,
|
|
863
919
|
)
|
|
864
920
|
|
|
@@ -928,7 +984,13 @@ class UprootReadMixin:
|
|
|
928
984
|
# buffer mapping in __call__, such that the high-level form can be
|
|
929
985
|
# used in `from_buffers`
|
|
930
986
|
mapping = self.form_mapping_info.load_buffers(
|
|
931
|
-
tree,
|
|
987
|
+
tree,
|
|
988
|
+
self.common_keys,
|
|
989
|
+
start,
|
|
990
|
+
stop,
|
|
991
|
+
self.decompression_executor,
|
|
992
|
+
self.interpretation_executor,
|
|
993
|
+
self.interp_options,
|
|
932
994
|
)
|
|
933
995
|
|
|
934
996
|
# Populate container with placeholders if keys aren't required
|
|
@@ -1102,6 +1164,8 @@ class _UprootRead(UprootReadMixin):
|
|
|
1102
1164
|
expected_form: Form,
|
|
1103
1165
|
form_mapping_info: ImplementsFormMappingInfo,
|
|
1104
1166
|
allow_read_errors_with_report: bool | tuple[type[BaseException], ...],
|
|
1167
|
+
decompression_executor,
|
|
1168
|
+
interpretation_executor,
|
|
1105
1169
|
) -> None:
|
|
1106
1170
|
self.ttrees = ttrees
|
|
1107
1171
|
self.common_keys = frozenset(common_keys)
|
|
@@ -1110,6 +1174,8 @@ class _UprootRead(UprootReadMixin):
|
|
|
1110
1174
|
self.expected_form = expected_form
|
|
1111
1175
|
self.form_mapping_info = form_mapping_info
|
|
1112
1176
|
self.allow_read_errors_with_report = allow_read_errors_with_report
|
|
1177
|
+
self.decompression_executor = decompression_executor
|
|
1178
|
+
self.interpretation_executor = interpretation_executor
|
|
1113
1179
|
|
|
1114
1180
|
def project_keys(self: T, keys: frozenset[str]) -> T:
|
|
1115
1181
|
return _UprootRead(
|
|
@@ -1120,6 +1186,8 @@ class _UprootRead(UprootReadMixin):
|
|
|
1120
1186
|
self.expected_form,
|
|
1121
1187
|
self.form_mapping_info,
|
|
1122
1188
|
self.allow_read_errors_with_report,
|
|
1189
|
+
self.decompression_executor,
|
|
1190
|
+
self.interpretation_executor,
|
|
1123
1191
|
)
|
|
1124
1192
|
|
|
1125
1193
|
def __call__(self, i_start_stop):
|
|
@@ -1152,7 +1220,11 @@ class _UprootRead(UprootReadMixin):
|
|
|
1152
1220
|
return self._call_impl(i, start, stop)
|
|
1153
1221
|
|
|
1154
1222
|
def _call_impl(self, i, start, stop):
|
|
1155
|
-
return self.read_tree(
|
|
1223
|
+
return self.read_tree(
|
|
1224
|
+
self.ttrees[i],
|
|
1225
|
+
start,
|
|
1226
|
+
stop,
|
|
1227
|
+
)
|
|
1156
1228
|
|
|
1157
1229
|
|
|
1158
1230
|
class _UprootOpenAndRead(UprootReadMixin):
|
|
@@ -1167,6 +1239,8 @@ class _UprootOpenAndRead(UprootReadMixin):
|
|
|
1167
1239
|
expected_form: Form,
|
|
1168
1240
|
form_mapping_info: ImplementsFormMappingInfo,
|
|
1169
1241
|
allow_read_errors_with_report: bool | tuple[type[BaseException], ...],
|
|
1242
|
+
decompression_executor,
|
|
1243
|
+
interpretation_executor,
|
|
1170
1244
|
) -> None:
|
|
1171
1245
|
self.custom_classes = custom_classes
|
|
1172
1246
|
self.allow_missing = allow_missing
|
|
@@ -1177,6 +1251,8 @@ class _UprootOpenAndRead(UprootReadMixin):
|
|
|
1177
1251
|
self.expected_form = expected_form
|
|
1178
1252
|
self.form_mapping_info = form_mapping_info
|
|
1179
1253
|
self.allow_read_errors_with_report = allow_read_errors_with_report
|
|
1254
|
+
self.decompression_executor = decompression_executor
|
|
1255
|
+
self.interpretation_executor = interpretation_executor
|
|
1180
1256
|
|
|
1181
1257
|
def _call_impl(
|
|
1182
1258
|
self, file_path, object_path, i_step_or_start, n_steps_or_stop, is_chunk
|
|
@@ -1211,7 +1287,11 @@ which has {num_entries} entries"""
|
|
|
1211
1287
|
|
|
1212
1288
|
assert start <= stop
|
|
1213
1289
|
|
|
1214
|
-
return self.read_tree(
|
|
1290
|
+
return self.read_tree(
|
|
1291
|
+
ttree,
|
|
1292
|
+
start,
|
|
1293
|
+
stop,
|
|
1294
|
+
)
|
|
1215
1295
|
|
|
1216
1296
|
def __call__(self, blockwise_args):
|
|
1217
1297
|
(
|
|
@@ -1268,6 +1348,8 @@ which has {num_entries} entries"""
|
|
|
1268
1348
|
self.expected_form,
|
|
1269
1349
|
self.form_mapping_info,
|
|
1270
1350
|
self.allow_read_errors_with_report,
|
|
1351
|
+
self.decompression_executor,
|
|
1352
|
+
self.interpretation_executor,
|
|
1271
1353
|
)
|
|
1272
1354
|
|
|
1273
1355
|
|
|
@@ -1305,6 +1387,8 @@ def _get_dak_array(
|
|
|
1305
1387
|
form_mapping,
|
|
1306
1388
|
steps_per_file,
|
|
1307
1389
|
allow_read_errors_with_report,
|
|
1390
|
+
decompression_executor,
|
|
1391
|
+
interpretation_executor,
|
|
1308
1392
|
):
|
|
1309
1393
|
dask_awkward = uproot.extras.dask_awkward()
|
|
1310
1394
|
awkward = uproot.extras.awkward()
|
|
@@ -1468,6 +1552,8 @@ which has {entry_stop} entries"""
|
|
|
1468
1552
|
expected_form=expected_form,
|
|
1469
1553
|
form_mapping_info=form_mapping_info,
|
|
1470
1554
|
allow_read_errors_with_report=allow_read_errors_with_report,
|
|
1555
|
+
decompression_executor=decompression_executor,
|
|
1556
|
+
interpretation_executor=interpretation_executor,
|
|
1471
1557
|
)
|
|
1472
1558
|
|
|
1473
1559
|
return dask_awkward.from_map(
|
|
@@ -1493,6 +1579,8 @@ def _get_dak_array_delay_open(
|
|
|
1493
1579
|
steps_per_file,
|
|
1494
1580
|
allow_read_errors_with_report,
|
|
1495
1581
|
known_base_form,
|
|
1582
|
+
decompression_executor,
|
|
1583
|
+
interpretation_executor,
|
|
1496
1584
|
):
|
|
1497
1585
|
dask_awkward = uproot.extras.dask_awkward()
|
|
1498
1586
|
awkward = uproot.extras.awkward()
|
|
@@ -1568,6 +1656,8 @@ def _get_dak_array_delay_open(
|
|
|
1568
1656
|
expected_form=expected_form,
|
|
1569
1657
|
form_mapping_info=form_mapping_info,
|
|
1570
1658
|
allow_read_errors_with_report=allow_read_errors_with_report,
|
|
1659
|
+
decompression_executor=decompression_executor,
|
|
1660
|
+
interpretation_executor=interpretation_executor,
|
|
1571
1661
|
)
|
|
1572
1662
|
|
|
1573
1663
|
return dask_awkward.from_map(
|
|
@@ -2788,7 +2788,8 @@ def _regularize_expression(
|
|
|
2788
2788
|
)
|
|
2789
2789
|
|
|
2790
2790
|
else:
|
|
2791
|
-
|
|
2791
|
+
# the value of `expression` is either what we want to compute or a lookup value for it
|
|
2792
|
+
to_compute = aliases.get(expression, expression)
|
|
2792
2793
|
|
|
2793
2794
|
is_jagged = False
|
|
2794
2795
|
expression_branches = []
|
|
@@ -3028,7 +3029,7 @@ def _ranges_or_baskets_to_arrays(
|
|
|
3028
3029
|
else:
|
|
3029
3030
|
notifications.put(range_or_basket)
|
|
3030
3031
|
|
|
3031
|
-
original_index += 1
|
|
3032
|
+
original_index += 1 # noqa: SIM113 (don't use `enumerate` for `original_index`)
|
|
3032
3033
|
|
|
3033
3034
|
branchid_to_branch[branch.cache_key] = branch
|
|
3034
3035
|
|