uproot 5.2.2rc1__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.2rc1 → uproot-5.3.0}/.all-contributorsrc +18 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/.github/workflows/deploy.yml +2 -2
- {uproot-5.2.2rc1 → uproot-5.3.0}/.gitignore +3 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/.pre-commit-config.yaml +4 -4
- {uproot-5.2.2rc1 → uproot-5.3.0}/.readthedocs.yml +5 -1
- {uproot-5.2.2rc1 → uproot-5.3.0}/PKG-INFO +7 -3
- {uproot-5.2.2rc1 → uproot-5.3.0}/README.md +4 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/dev/example-objects.py +1 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/dev/make-models.py +1 -0
- uproot-5.3.0/docs-img/.DS_Store +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/docs-sphinx/prepare_docstrings.py +4 -2
- uproot-5.3.0/docs-sphinx/requirements.txt +2 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/pyproject.toml +12 -11
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/__init__.py +1 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/_dask.py +119 -25
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/behaviors/TBranch.py +3 -2
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/behaviors/TProfile.py +3 -1
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/compression.py +78 -38
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/extras.py +21 -27
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/interpretation/library.py +64 -44
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/interpretation/objects.py +43 -5
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/model.py +17 -1
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/models/RNTuple.py +81 -43
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/reading.py +2 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/source/fsspec.py +2 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/version.py +2 -2
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/writing/__init__.py +2 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/writing/_cascade.py +2 -4
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/writing/_cascadetree.py +12 -12
- uproot-5.3.0/src/uproot/writing/_dask_write.py +185 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/writing/identify.py +136 -88
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0008_start_interpretation.py +5 -1
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0416_writing_compressed_data.py +64 -15
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0692_fsspec_writing.py +29 -2
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0962_RNTuple_update.py +29 -0
- uproot-5.3.0/tests/test_1000-write-TProfiles.py +112 -0
- uproot-5.3.0/tests/test_1058_dask_awkward_report.py +45 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_1063_dask_distributed.py +1 -0
- uproot-5.3.0/tests/test_1070_pandas_dataframe_building_performance_fix.py +14 -0
- uproot-5.3.0/tests/test_1085_dask_write.py +83 -0
- uproot-5.3.0/tests/test_1102_any_locks_in_models_must_be_transient.py +12 -0
- 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.2rc1/docs-sphinx/requirements.txt +0 -1
- uproot-5.2.2rc1/tests/test_1058_dask_awkward_report.py +0 -25
- {uproot-5.2.2rc1 → uproot-5.3.0}/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/.github/dependabot.yml +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/.github/workflows/build-test.yml +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/.github/workflows/semantic-pr-title.yml +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/CITATION.cff +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/LICENSE +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/docs-img/diagrams/abstraction-layers.png +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/docs-img/diagrams/abstraction-layers.svg +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/docs-img/diagrams/example-dask-graph.png +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/docs-img/diagrams/uproot-awkward-timeline.png +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/docs-img/diagrams/uproot-awkward-timeline.svg +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/docs-img/logo/logo-300px-white.png +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/docs-img/logo/logo-300px.png +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/docs-img/logo/logo-600px.png +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/docs-img/logo/logo.svg +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/docs-img/photos/switcheroo.jpg +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/docs-sphinx/_templates/breadcrumbs.html +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/docs-sphinx/basic.rst +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/docs-sphinx/conf.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/docs-sphinx/index.rst +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/docs-sphinx/make_changelog.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/docs-sphinx/uproot3-to-4.rst +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/_awkwardforth.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/_util.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/behavior.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/behaviors/RooCurve.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/behaviors/RooHist.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/behaviors/TAxis.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/behaviors/TBranchElement.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/behaviors/TDatime.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/behaviors/TGraph.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/behaviors/TGraphAsymmErrors.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/behaviors/TGraphErrors.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/behaviors/TH1.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/behaviors/TH2.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/behaviors/TH2Poly.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/behaviors/TH3.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/behaviors/TParameter.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/behaviors/TProfile2D.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/behaviors/TProfile3D.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/behaviors/TTree.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/behaviors/__init__.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/cache.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/const.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/containers.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/deserialization.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/dynamic.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/exceptions.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/interpretation/__init__.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/interpretation/grouped.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/interpretation/identify.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/interpretation/jagged.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/interpretation/numerical.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/interpretation/strings.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/language/__init__.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/language/python.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/models/TArray.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/models/TAtt.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/models/TBasket.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/models/TBranch.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/models/TClonesArray.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/models/TDatime.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/models/TGraph.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/models/TH.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/models/THashList.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/models/TLeaf.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/models/TList.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/models/TMatrixT.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/models/TNamed.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/models/TObjArray.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/models/TObjString.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/models/TObject.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/models/TRef.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/models/TString.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/models/TTable.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/models/TTree.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/models/__init__.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/pyroot.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/serialization.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/sink/__init__.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/sink/file.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/source/__init__.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/source/chunk.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/source/cursor.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/source/file.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/source/futures.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/source/http.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/source/object.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/source/s3.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/source/xrootd.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/streamers.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/writing/_cascadentuple.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/src/uproot/writing/writable.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/__init__.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/conftest.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/samples/h_dynamic.pkl +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0001_source_class.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0006_notify_when_downloaded.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0007_single_chunk_interface.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0009_nested_directories.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0010_start_streamers.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0011_generate_classes_from_streamers.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0013_rntuple_anchor.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0014_all_ttree_versions.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0016_interpretations.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0017_multi_basket_multi_branch_fetch.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0018_array_fetching_interface.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0022_number_of_branches.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0023_more_interpretations_1.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0023_ttree_versions.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0028_fallback_to_read_streamer.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0029_more_string_types.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0031_test_stl_containers.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0033_more_interpretations_2.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0034_generic_objects_in_ttrees.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0035_datatype_generality.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0038_memberwise_serialization.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0043_iterate_function.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0044_concatenate_function.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0046_histograms_bh_hist.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0053_parents_should_not_be_bases.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0058_detach_model_objects_from_files.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0066_fix_http_fallback_freeze.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0067_common_entry_offsets.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0081_dont_parse_colons.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0087_memberwise_splitting_not_implemented_messages.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0088_read_with_http.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0099_read_from_file_object.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0112_fix_pandas_with_cut.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0118_fix_name_fetch_again.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0123_atlas_issues.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0126_turn_unknown_emptyarrays_into_known_types.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0167_use_the_common_histogram_interface.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0172_allow_allocators_in_vector_typenames.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0173_empty_and_multiprocessing_bugs.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0182_complain_about_missing_files.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0194_fix_lost_cuts_in_iterate.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0220_contiguous_byte_ranges_in_http.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0228_read_TProfiles.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0240_read_TGraphAsymmErrors.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0278_specializations_for_TParameter.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0302_pickle.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0303_empty_jagged_array.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0320_start_working_on_ROOT_writing.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0322_writablefile_infrastructure.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0329_update_existing_root_files.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0335_empty_ttree_division_by_zero.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0341_manipulate_streamer_info.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0344_writabledirectory_can_read.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0345_bulk_copy_method.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0349_write_TObjString.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0350_read_RooCurve_RooHist.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0351_write_TList.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0352_write_THashList.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0384_move_behavior_of_and_fix_383.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0398_dimensions_in_leaflist.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0405_write_a_histogram.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0406_write_a_ttree.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0407_read_TDatime.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0412_write_multidimensional_numpy_to_ttree.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0414_write_jagged_arrays.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0418_read_TTable.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0420_pyroot_uproot_interoperability.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0422_hist_integration.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0430_global_index_for_tuples_of_DataFrames.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0438_TClonesArray_is_not_AsGrouped.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0439_check_awkward_before_numpy.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0442_regular_TClonesArray.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0472_tstreamerinfo_for_ttree.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0475_remember_to_update_freesegments.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0484_manually_add_model_for_TMatrixTSym_double_.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0487_implement_asdtypeinplace.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0498_create_leaf_branch_in_extend.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0519_remove_memmap_copy.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0520_dynamic_classes_cant_be_abc_subclasses.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0569_fBits_is_4_bytes.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0576_unicode_in_names.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0578_dask_for_numpy.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0580_round_trip_for_no_flow_histograms.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0589_explicitly_interpret_RVec_type.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0603_dask_delayed_open.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0609_num_enteries_func.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0610_awkward_form.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0630_rntuple_basics.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0637_setup_tests_for_AwkwardForth.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0643_reading_vector_pair_TLorentzVector_int.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0651_implement_transformed_axis.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0652_dask_for_awkward.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0662_rntuple_stl_containers.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0692_fsspec_reading.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0700_dask_empty_arrays.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0705_rntuple_writing_metadata.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0750_avoid_empty_TBasket_issue.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0755_dask_awkward_column_projection.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0791_protect_uproot_project_columns_from_dask_node_names.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0798_DAOD_PHYSLITE.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0808_fix_awkward_form_for_AsStridedObjects.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0816_separate_AwkwardForth_machines_by_TBranch.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0832_ak_add_doc_should_also_add_to_typetracer.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0840_support_tleafG.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0841_fix_814.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0844_fix_delete_hist_from_root.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0852_fix_strided_interp_extra_offsets.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0870_writing_arrays_of_type_unknown_fix_822.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0876_uproot_dask_blind_steps.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0886_fix_awkward_form_breadcrumbs.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0910_fix_906_members_non_numerical_branches.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0911_fix_interp_array_non_numerical_objs_issue_880.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0912_fix_pandas_and_double_nested_vectors_issue_885.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0916_read_from_s3.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0927_dont_assume_uproot_in_global_scope_in_TPython_Eval.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0930_expressions_in_pandas.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0940_feat_add_TLeafC_string_support.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0965_inverted_axes_variances_hist_888.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_0976_path_object_split.py +0 -0
- {uproot-5.2.2rc1 → uproot-5.3.0}/tests/test_1043_const_std_string.py +0 -0
|
@@ -524,6 +524,24 @@
|
|
|
524
524
|
"contributions": [
|
|
525
525
|
"code"
|
|
526
526
|
]
|
|
527
|
+
},
|
|
528
|
+
{
|
|
529
|
+
"login": "bnavigator",
|
|
530
|
+
"name": "Ben Greiner",
|
|
531
|
+
"avatar_url": "https://avatars.githubusercontent.com/u/4623504?v=4",
|
|
532
|
+
"profile": "https://github.com/bnavigator",
|
|
533
|
+
"contributions": [
|
|
534
|
+
"test"
|
|
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
|
+
]
|
|
527
545
|
}
|
|
528
546
|
],
|
|
529
547
|
"contributorsPerLine": 7,
|
|
@@ -18,7 +18,7 @@ jobs:
|
|
|
18
18
|
- name: Check metadata
|
|
19
19
|
run: pipx run twine check dist/*
|
|
20
20
|
|
|
21
|
-
- uses: actions/upload-artifact@
|
|
21
|
+
- uses: actions/upload-artifact@v4
|
|
22
22
|
with:
|
|
23
23
|
path: dist/*
|
|
24
24
|
|
|
@@ -29,7 +29,7 @@ jobs:
|
|
|
29
29
|
if: github.event_name == 'release' && github.event.action == 'published'
|
|
30
30
|
|
|
31
31
|
steps:
|
|
32
|
-
- uses: actions/download-artifact@
|
|
32
|
+
- uses: actions/download-artifact@v4
|
|
33
33
|
with:
|
|
34
34
|
name: artifact
|
|
35
35
|
path: dist
|
|
@@ -18,25 +18,25 @@ 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]
|
|
37
37
|
|
|
38
38
|
- repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks
|
|
39
|
-
rev: v2.
|
|
39
|
+
rev: v2.12.0
|
|
40
40
|
hooks:
|
|
41
41
|
- id: pretty-format-toml
|
|
42
42
|
args: [--autofix]
|
|
@@ -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">
|
|
@@ -243,6 +243,10 @@ Thanks especially to the gracious help of Uproot contributors (including the [or
|
|
|
243
243
|
<td align="center" valign="top" width="14.28%"><a href="http://glepage.com"><img src="https://avatars.githubusercontent.com/u/33058747?v=4?s=100" width="100px;" alt="Gaétan Lepage"/><br /><sub><b>Gaétan Lepage</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=GaetanLepage" title="Tests">⚠️</a></td>
|
|
244
244
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/HaarigerHarald"><img src="https://avatars.githubusercontent.com/u/8050292?v=4?s=100" width="100px;" alt="HaarigerHarald"/><br /><sub><b>HaarigerHarald</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=HaarigerHarald" title="Code">💻</a></td>
|
|
245
245
|
</tr>
|
|
246
|
+
<tr>
|
|
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>
|
|
249
|
+
</tr>
|
|
246
250
|
</tbody>
|
|
247
251
|
</table>
|
|
248
252
|
|
|
@@ -181,6 +181,10 @@ Thanks especially to the gracious help of Uproot contributors (including the [or
|
|
|
181
181
|
<td align="center" valign="top" width="14.28%"><a href="http://glepage.com"><img src="https://avatars.githubusercontent.com/u/33058747?v=4?s=100" width="100px;" alt="Gaétan Lepage"/><br /><sub><b>Gaétan Lepage</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=GaetanLepage" title="Tests">⚠️</a></td>
|
|
182
182
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/HaarigerHarald"><img src="https://avatars.githubusercontent.com/u/8050292?v=4?s=100" width="100px;" alt="HaarigerHarald"/><br /><sub><b>HaarigerHarald</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=HaarigerHarald" title="Code">💻</a></td>
|
|
183
183
|
</tr>
|
|
184
|
+
<tr>
|
|
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>
|
|
187
|
+
</tr>
|
|
184
188
|
</tbody>
|
|
185
189
|
</table>
|
|
186
190
|
|
|
Binary file
|
|
@@ -37,6 +37,7 @@ common = [
|
|
|
37
37
|
"uproot.behaviors.TBranch.iterate",
|
|
38
38
|
"uproot.behaviors.TBranch.concatenate",
|
|
39
39
|
"uproot._dask.dask",
|
|
40
|
+
"uproot.writing._dask_write.dask_write",
|
|
40
41
|
"uproot.writing.writable.create",
|
|
41
42
|
"uproot.writing.writable.recreate",
|
|
42
43
|
"uproot.writing.writable.update",
|
|
@@ -106,7 +107,7 @@ def ensure(filename, content):
|
|
|
106
107
|
|
|
107
108
|
def handle_module(modulename, module):
|
|
108
109
|
if any(x.startswith("_") for x in modulename.split(".")) and not any(
|
|
109
|
-
x == "_dask" for x in modulename.split(".")
|
|
110
|
+
x == "_dask" or x == "_dask_write" for x in modulename.split(".")
|
|
110
111
|
):
|
|
111
112
|
return
|
|
112
113
|
|
|
@@ -124,7 +125,8 @@ def handle_module(modulename, module):
|
|
|
124
125
|
toctree2.write(" " + modulename + " (module) <" + modulename + ">\n")
|
|
125
126
|
|
|
126
127
|
if modulename != "uproot" and all(
|
|
127
|
-
not x.startswith("_") or x == "_dask"
|
|
128
|
+
not x.startswith("_") or x == "_dask" or x == "_dask_write"
|
|
129
|
+
for x in modulename.split(".")
|
|
128
130
|
):
|
|
129
131
|
|
|
130
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",
|
|
@@ -100,6 +103,7 @@ log_cli_level = "info"
|
|
|
100
103
|
markers = [
|
|
101
104
|
"slow",
|
|
102
105
|
"network",
|
|
106
|
+
"distributed",
|
|
103
107
|
"xrootd"
|
|
104
108
|
]
|
|
105
109
|
minversion = "6.0"
|
|
@@ -113,6 +117,9 @@ exclude = [
|
|
|
113
117
|
"src/uproot/__init__.py",
|
|
114
118
|
"docs-sphinx/*.py"
|
|
115
119
|
]
|
|
120
|
+
src = ["src"]
|
|
121
|
+
|
|
122
|
+
[tool.ruff.lint]
|
|
116
123
|
ignore = [
|
|
117
124
|
"E501",
|
|
118
125
|
"E722",
|
|
@@ -121,7 +128,7 @@ ignore = [
|
|
|
121
128
|
"SIM118", # key in dict, broken since uproot doesn't behave like a dict
|
|
122
129
|
"PGH003", # too-broad type ignore
|
|
123
130
|
"SIM114", # combine `if` branches using logical `or` operator
|
|
124
|
-
"
|
|
131
|
+
"S307", # no eval allowed
|
|
125
132
|
"PLC1901", # empty string is falsey (but I don't want to rely on such weak typing)
|
|
126
133
|
"RUF012" # enforces type annotations on a codebase that lacks type annotations
|
|
127
134
|
]
|
|
@@ -145,16 +152,10 @@ select = [
|
|
|
145
152
|
"UP", # pyupgrade
|
|
146
153
|
"YTT" # flake8-2020
|
|
147
154
|
]
|
|
148
|
-
src = ["src"]
|
|
149
|
-
|
|
150
|
-
[tool.ruff.lint]
|
|
151
155
|
isort.required-imports = ["from __future__ import annotations"]
|
|
152
156
|
|
|
153
|
-
[tool.ruff.
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
[tool.ruff.per-file-ignores]
|
|
157
|
-
"dev/*" = ["T20"]
|
|
157
|
+
[tool.ruff.lint.per-file-ignores]
|
|
158
|
+
"dev/*" = ["T20", "T201"]
|
|
158
159
|
"src/uproot/*/file.py" = ["SIM115"]
|
|
159
160
|
|
|
160
161
|
[tool.setuptools_scm]
|
|
@@ -123,6 +123,7 @@ from uproot.writing import WritableDirectory
|
|
|
123
123
|
from uproot.writing import WritableTree
|
|
124
124
|
from uproot.writing import WritableBranch
|
|
125
125
|
from uproot.writing import to_writable
|
|
126
|
+
from uproot.writing import dask_write
|
|
126
127
|
|
|
127
128
|
import uproot.models.TObject
|
|
128
129
|
import uproot.models.TString
|
|
@@ -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
|
"""
|
|
@@ -96,12 +98,23 @@ def dask(
|
|
|
96
98
|
form_mapping (Callable[awkward.forms.Form] -> awkward.forms.Form | None): If not none
|
|
97
99
|
and library="ak" then apply this remapping function to the awkward form of the input
|
|
98
100
|
data. The form keys of the desired form should be available data in the input form.
|
|
99
|
-
allow_read_errors_with_report (bool): If True, catch OSError
|
|
100
|
-
empty array for these nodes in the task graph.
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
allow_read_errors_with_report (bool or tuple of exceptions): If True, catch OSError
|
|
102
|
+
exceptions and return an empty array for these nodes in the task graph. If a tuple,
|
|
103
|
+
catch any of those exceptions and return empty arrays for those nodes. In either of
|
|
104
|
+
those cases, The return of this function becomes a two element tuple, where the
|
|
105
|
+
first return is the dask-awkward collection of interest and the second return is a
|
|
106
|
+
report dask-awkward collection.
|
|
103
107
|
known_base_form (awkward.forms.Form | None): If not none use this form instead of opening
|
|
104
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.
|
|
105
118
|
options: See below.
|
|
106
119
|
|
|
107
120
|
Returns dask equivalents of the backends supported by uproot. If ``library='np'``,
|
|
@@ -237,6 +250,8 @@ def dask(
|
|
|
237
250
|
real_options,
|
|
238
251
|
interp_options,
|
|
239
252
|
steps_per_file,
|
|
253
|
+
decompression_executor,
|
|
254
|
+
interpretation_executor,
|
|
240
255
|
)
|
|
241
256
|
else:
|
|
242
257
|
return _get_dask_array_delay_open(
|
|
@@ -251,6 +266,8 @@ def dask(
|
|
|
251
266
|
real_options,
|
|
252
267
|
interp_options,
|
|
253
268
|
steps_per_file,
|
|
269
|
+
decompression_executor,
|
|
270
|
+
interpretation_executor,
|
|
254
271
|
)
|
|
255
272
|
elif library.name == "ak":
|
|
256
273
|
if open_files:
|
|
@@ -269,6 +286,8 @@ def dask(
|
|
|
269
286
|
form_mapping,
|
|
270
287
|
steps_per_file,
|
|
271
288
|
allow_read_errors_with_report,
|
|
289
|
+
decompression_executor,
|
|
290
|
+
interpretation_executor,
|
|
272
291
|
)
|
|
273
292
|
else:
|
|
274
293
|
return _get_dak_array_delay_open(
|
|
@@ -286,6 +305,8 @@ def dask(
|
|
|
286
305
|
steps_per_file,
|
|
287
306
|
allow_read_errors_with_report,
|
|
288
307
|
known_base_form,
|
|
308
|
+
decompression_executor,
|
|
309
|
+
interpretation_executor,
|
|
289
310
|
)
|
|
290
311
|
else:
|
|
291
312
|
raise NotImplementedError()
|
|
@@ -436,10 +457,19 @@ def _dask_array_from_map(
|
|
|
436
457
|
|
|
437
458
|
|
|
438
459
|
class _UprootReadNumpy:
|
|
439
|
-
def __init__(
|
|
460
|
+
def __init__(
|
|
461
|
+
self,
|
|
462
|
+
ttrees,
|
|
463
|
+
key,
|
|
464
|
+
interp_options,
|
|
465
|
+
decompression_executor=None,
|
|
466
|
+
interpretation_executor=None,
|
|
467
|
+
) -> None:
|
|
440
468
|
self.ttrees = ttrees
|
|
441
469
|
self.key = key
|
|
442
470
|
self.interp_options = interp_options
|
|
471
|
+
self.decompression_executor = decompression_executor
|
|
472
|
+
self.interpretation_executor = interpretation_executor
|
|
443
473
|
|
|
444
474
|
def __call__(self, i_start_stop):
|
|
445
475
|
i, start, stop = i_start_stop
|
|
@@ -448,18 +478,29 @@ class _UprootReadNumpy:
|
|
|
448
478
|
entry_stop=stop,
|
|
449
479
|
library="np",
|
|
450
480
|
ak_add_doc=self.interp_options["ak_add_doc"],
|
|
481
|
+
decompression_executor=self.decompression_executor,
|
|
482
|
+
interpretation_executor=self.interpretation_executor,
|
|
451
483
|
)
|
|
452
484
|
|
|
453
485
|
|
|
454
486
|
class _UprootOpenAndReadNumpy:
|
|
455
487
|
def __init__(
|
|
456
|
-
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,
|
|
457
496
|
):
|
|
458
497
|
self.custom_classes = custom_classes
|
|
459
498
|
self.allow_missing = allow_missing
|
|
460
499
|
self.real_options = real_options
|
|
461
500
|
self.key = key
|
|
462
501
|
self.interp_options = interp_options
|
|
502
|
+
self.decompression_executor = decompression_executor
|
|
503
|
+
self.interpretation_executor = interpretation_executor
|
|
463
504
|
|
|
464
505
|
def __call__(self, file_path_object_path_istep_nsteps_ischunk):
|
|
465
506
|
(
|
|
@@ -501,6 +542,8 @@ which has {num_entries} entries"""
|
|
|
501
542
|
entry_start=start,
|
|
502
543
|
entry_stop=stop,
|
|
503
544
|
ak_add_doc=self.interp_options["ak_add_doc"],
|
|
545
|
+
decompression_executor=self.decompression_executor,
|
|
546
|
+
interpretation_executor=self.interpretation_executor,
|
|
504
547
|
)
|
|
505
548
|
|
|
506
549
|
|
|
@@ -517,6 +560,8 @@ def _get_dask_array(
|
|
|
517
560
|
real_options,
|
|
518
561
|
interp_options,
|
|
519
562
|
steps_per_file,
|
|
563
|
+
decompression_executor,
|
|
564
|
+
interpretation_executor,
|
|
520
565
|
):
|
|
521
566
|
ttrees = []
|
|
522
567
|
explicit_chunks = []
|
|
@@ -668,7 +713,13 @@ which has {entry_stop} entries"""
|
|
|
668
713
|
chunk_args.append((0, 0, 0))
|
|
669
714
|
|
|
670
715
|
dask_dict[key] = _dask_array_from_map(
|
|
671
|
-
_UprootReadNumpy(
|
|
716
|
+
_UprootReadNumpy(
|
|
717
|
+
ttrees,
|
|
718
|
+
key,
|
|
719
|
+
interp_options,
|
|
720
|
+
decompression_executor,
|
|
721
|
+
interpretation_executor,
|
|
722
|
+
),
|
|
672
723
|
chunk_args,
|
|
673
724
|
chunks=(tuple(chunks),),
|
|
674
725
|
dtype=dt,
|
|
@@ -690,6 +741,8 @@ def _get_dask_array_delay_open(
|
|
|
690
741
|
real_options,
|
|
691
742
|
interp_options,
|
|
692
743
|
steps_per_file,
|
|
744
|
+
decompression_executor,
|
|
745
|
+
interpretation_executor,
|
|
693
746
|
):
|
|
694
747
|
ffile_path, fobject_path = files[0][0:2]
|
|
695
748
|
obj = uproot._util.regularize_object_path(
|
|
@@ -748,7 +801,13 @@ def _get_dask_array_delay_open(
|
|
|
748
801
|
|
|
749
802
|
dask_dict[key] = _dask_array_from_map(
|
|
750
803
|
_UprootOpenAndReadNumpy(
|
|
751
|
-
custom_classes,
|
|
804
|
+
custom_classes,
|
|
805
|
+
allow_missing,
|
|
806
|
+
real_options,
|
|
807
|
+
key,
|
|
808
|
+
interp_options,
|
|
809
|
+
decompression_executor,
|
|
810
|
+
interpretation_executor,
|
|
752
811
|
),
|
|
753
812
|
partition_args,
|
|
754
813
|
chunks=(tuple(partitions),),
|
|
@@ -760,16 +819,13 @@ def _get_dask_array_delay_open(
|
|
|
760
819
|
|
|
761
820
|
class ImplementsFormMappingInfo(Protocol):
|
|
762
821
|
@property
|
|
763
|
-
def behavior(self) -> dict | None:
|
|
764
|
-
...
|
|
822
|
+
def behavior(self) -> dict | None: ...
|
|
765
823
|
|
|
766
824
|
buffer_key: str | Callable
|
|
767
825
|
|
|
768
|
-
def parse_buffer_key(self, buffer_key: str) -> tuple[str, str]:
|
|
769
|
-
...
|
|
826
|
+
def parse_buffer_key(self, buffer_key: str) -> tuple[str, str]: ...
|
|
770
827
|
|
|
771
|
-
def keys_for_buffer_keys(self, buffer_keys: frozenset[str]) -> frozenset[str]:
|
|
772
|
-
...
|
|
828
|
+
def keys_for_buffer_keys(self, buffer_keys: frozenset[str]) -> frozenset[str]: ...
|
|
773
829
|
|
|
774
830
|
def load_buffers(
|
|
775
831
|
self,
|
|
@@ -778,13 +834,11 @@ class ImplementsFormMappingInfo(Protocol):
|
|
|
778
834
|
start: int,
|
|
779
835
|
stop: int,
|
|
780
836
|
options: Any,
|
|
781
|
-
) -> Mapping[str, AwkArray]:
|
|
782
|
-
...
|
|
837
|
+
) -> Mapping[str, AwkArray]: ...
|
|
783
838
|
|
|
784
839
|
|
|
785
840
|
class ImplementsFormMapping(Protocol):
|
|
786
|
-
def __call__(self, form: Form) -> tuple[Form, ImplementsFormMappingInfo]:
|
|
787
|
-
...
|
|
841
|
+
def __call__(self, form: Form) -> tuple[Form, ImplementsFormMappingInfo]: ...
|
|
788
842
|
|
|
789
843
|
|
|
790
844
|
class TrivialFormMappingInfo(ImplementsFormMappingInfo):
|
|
@@ -849,6 +903,8 @@ class TrivialFormMappingInfo(ImplementsFormMappingInfo):
|
|
|
849
903
|
keys: frozenset[str],
|
|
850
904
|
start: int,
|
|
851
905
|
stop: int,
|
|
906
|
+
decompression_executor,
|
|
907
|
+
interpretation_executor,
|
|
852
908
|
options: Any,
|
|
853
909
|
) -> Mapping[str, AwkArray]:
|
|
854
910
|
# First, let's read the arrays as a tuple (to associate with each key)
|
|
@@ -857,6 +913,8 @@ class TrivialFormMappingInfo(ImplementsFormMappingInfo):
|
|
|
857
913
|
entry_start=start,
|
|
858
914
|
entry_stop=stop,
|
|
859
915
|
ak_add_doc=options["ak_add_doc"],
|
|
916
|
+
decompression_executor=decompression_executor,
|
|
917
|
+
interpretation_executor=interpretation_executor,
|
|
860
918
|
how=tuple,
|
|
861
919
|
)
|
|
862
920
|
|
|
@@ -902,15 +960,17 @@ class UprootReadMixin:
|
|
|
902
960
|
form_mapping_info: ImplementsFormMappingInfo
|
|
903
961
|
common_keys: frozenset[str]
|
|
904
962
|
interp_options: dict[str, Any]
|
|
905
|
-
allow_read_errors_with_report: bool
|
|
963
|
+
allow_read_errors_with_report: bool | tuple[type[BaseException], ...]
|
|
906
964
|
|
|
907
965
|
@property
|
|
908
966
|
def allowed_exceptions(self):
|
|
967
|
+
if isinstance(self.allow_read_errors_with_report, tuple):
|
|
968
|
+
return self.allow_read_errors_with_report
|
|
909
969
|
return (OSError,)
|
|
910
970
|
|
|
911
971
|
@property
|
|
912
972
|
def return_report(self) -> bool:
|
|
913
|
-
return self.allow_read_errors_with_report
|
|
973
|
+
return bool(self.allow_read_errors_with_report)
|
|
914
974
|
|
|
915
975
|
def read_tree(self, tree: HasBranches, start: int, stop: int) -> AwkArray:
|
|
916
976
|
assert start <= stop
|
|
@@ -924,7 +984,13 @@ class UprootReadMixin:
|
|
|
924
984
|
# buffer mapping in __call__, such that the high-level form can be
|
|
925
985
|
# used in `from_buffers`
|
|
926
986
|
mapping = self.form_mapping_info.load_buffers(
|
|
927
|
-
tree,
|
|
987
|
+
tree,
|
|
988
|
+
self.common_keys,
|
|
989
|
+
start,
|
|
990
|
+
stop,
|
|
991
|
+
self.decompression_executor,
|
|
992
|
+
self.interpretation_executor,
|
|
993
|
+
self.interp_options,
|
|
928
994
|
)
|
|
929
995
|
|
|
930
996
|
# Populate container with placeholders if keys aren't required
|
|
@@ -1097,7 +1163,9 @@ class _UprootRead(UprootReadMixin):
|
|
|
1097
1163
|
base_form: Form,
|
|
1098
1164
|
expected_form: Form,
|
|
1099
1165
|
form_mapping_info: ImplementsFormMappingInfo,
|
|
1100
|
-
allow_read_errors_with_report: bool,
|
|
1166
|
+
allow_read_errors_with_report: bool | tuple[type[BaseException], ...],
|
|
1167
|
+
decompression_executor,
|
|
1168
|
+
interpretation_executor,
|
|
1101
1169
|
) -> None:
|
|
1102
1170
|
self.ttrees = ttrees
|
|
1103
1171
|
self.common_keys = frozenset(common_keys)
|
|
@@ -1106,6 +1174,8 @@ class _UprootRead(UprootReadMixin):
|
|
|
1106
1174
|
self.expected_form = expected_form
|
|
1107
1175
|
self.form_mapping_info = form_mapping_info
|
|
1108
1176
|
self.allow_read_errors_with_report = allow_read_errors_with_report
|
|
1177
|
+
self.decompression_executor = decompression_executor
|
|
1178
|
+
self.interpretation_executor = interpretation_executor
|
|
1109
1179
|
|
|
1110
1180
|
def project_keys(self: T, keys: frozenset[str]) -> T:
|
|
1111
1181
|
return _UprootRead(
|
|
@@ -1116,6 +1186,8 @@ class _UprootRead(UprootReadMixin):
|
|
|
1116
1186
|
self.expected_form,
|
|
1117
1187
|
self.form_mapping_info,
|
|
1118
1188
|
self.allow_read_errors_with_report,
|
|
1189
|
+
self.decompression_executor,
|
|
1190
|
+
self.interpretation_executor,
|
|
1119
1191
|
)
|
|
1120
1192
|
|
|
1121
1193
|
def __call__(self, i_start_stop):
|
|
@@ -1148,7 +1220,11 @@ class _UprootRead(UprootReadMixin):
|
|
|
1148
1220
|
return self._call_impl(i, start, stop)
|
|
1149
1221
|
|
|
1150
1222
|
def _call_impl(self, i, start, stop):
|
|
1151
|
-
return self.read_tree(
|
|
1223
|
+
return self.read_tree(
|
|
1224
|
+
self.ttrees[i],
|
|
1225
|
+
start,
|
|
1226
|
+
stop,
|
|
1227
|
+
)
|
|
1152
1228
|
|
|
1153
1229
|
|
|
1154
1230
|
class _UprootOpenAndRead(UprootReadMixin):
|
|
@@ -1162,7 +1238,9 @@ class _UprootOpenAndRead(UprootReadMixin):
|
|
|
1162
1238
|
base_form: Form,
|
|
1163
1239
|
expected_form: Form,
|
|
1164
1240
|
form_mapping_info: ImplementsFormMappingInfo,
|
|
1165
|
-
allow_read_errors_with_report: bool,
|
|
1241
|
+
allow_read_errors_with_report: bool | tuple[type[BaseException], ...],
|
|
1242
|
+
decompression_executor,
|
|
1243
|
+
interpretation_executor,
|
|
1166
1244
|
) -> None:
|
|
1167
1245
|
self.custom_classes = custom_classes
|
|
1168
1246
|
self.allow_missing = allow_missing
|
|
@@ -1173,6 +1251,8 @@ class _UprootOpenAndRead(UprootReadMixin):
|
|
|
1173
1251
|
self.expected_form = expected_form
|
|
1174
1252
|
self.form_mapping_info = form_mapping_info
|
|
1175
1253
|
self.allow_read_errors_with_report = allow_read_errors_with_report
|
|
1254
|
+
self.decompression_executor = decompression_executor
|
|
1255
|
+
self.interpretation_executor = interpretation_executor
|
|
1176
1256
|
|
|
1177
1257
|
def _call_impl(
|
|
1178
1258
|
self, file_path, object_path, i_step_or_start, n_steps_or_stop, is_chunk
|
|
@@ -1207,7 +1287,11 @@ which has {num_entries} entries"""
|
|
|
1207
1287
|
|
|
1208
1288
|
assert start <= stop
|
|
1209
1289
|
|
|
1210
|
-
return self.read_tree(
|
|
1290
|
+
return self.read_tree(
|
|
1291
|
+
ttree,
|
|
1292
|
+
start,
|
|
1293
|
+
stop,
|
|
1294
|
+
)
|
|
1211
1295
|
|
|
1212
1296
|
def __call__(self, blockwise_args):
|
|
1213
1297
|
(
|
|
@@ -1264,6 +1348,8 @@ which has {num_entries} entries"""
|
|
|
1264
1348
|
self.expected_form,
|
|
1265
1349
|
self.form_mapping_info,
|
|
1266
1350
|
self.allow_read_errors_with_report,
|
|
1351
|
+
self.decompression_executor,
|
|
1352
|
+
self.interpretation_executor,
|
|
1267
1353
|
)
|
|
1268
1354
|
|
|
1269
1355
|
|
|
@@ -1301,6 +1387,8 @@ def _get_dak_array(
|
|
|
1301
1387
|
form_mapping,
|
|
1302
1388
|
steps_per_file,
|
|
1303
1389
|
allow_read_errors_with_report,
|
|
1390
|
+
decompression_executor,
|
|
1391
|
+
interpretation_executor,
|
|
1304
1392
|
):
|
|
1305
1393
|
dask_awkward = uproot.extras.dask_awkward()
|
|
1306
1394
|
awkward = uproot.extras.awkward()
|
|
@@ -1464,6 +1552,8 @@ which has {entry_stop} entries"""
|
|
|
1464
1552
|
expected_form=expected_form,
|
|
1465
1553
|
form_mapping_info=form_mapping_info,
|
|
1466
1554
|
allow_read_errors_with_report=allow_read_errors_with_report,
|
|
1555
|
+
decompression_executor=decompression_executor,
|
|
1556
|
+
interpretation_executor=interpretation_executor,
|
|
1467
1557
|
)
|
|
1468
1558
|
|
|
1469
1559
|
return dask_awkward.from_map(
|
|
@@ -1489,6 +1579,8 @@ def _get_dak_array_delay_open(
|
|
|
1489
1579
|
steps_per_file,
|
|
1490
1580
|
allow_read_errors_with_report,
|
|
1491
1581
|
known_base_form,
|
|
1582
|
+
decompression_executor,
|
|
1583
|
+
interpretation_executor,
|
|
1492
1584
|
):
|
|
1493
1585
|
dask_awkward = uproot.extras.dask_awkward()
|
|
1494
1586
|
awkward = uproot.extras.awkward()
|
|
@@ -1564,6 +1656,8 @@ def _get_dak_array_delay_open(
|
|
|
1564
1656
|
expected_form=expected_form,
|
|
1565
1657
|
form_mapping_info=form_mapping_info,
|
|
1566
1658
|
allow_read_errors_with_report=allow_read_errors_with_report,
|
|
1659
|
+
decompression_executor=decompression_executor,
|
|
1660
|
+
interpretation_executor=interpretation_executor,
|
|
1567
1661
|
)
|
|
1568
1662
|
|
|
1569
1663
|
return dask_awkward.from_map(
|