uproot 5.3.2rc1__tar.gz → 5.3.4__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.3.2rc1 → uproot-5.3.4}/.all-contributorsrc +9 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/.github/workflows/build-test.yml +24 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/.pre-commit-config.yaml +5 -5
- {uproot-5.3.2rc1 → uproot-5.3.4}/PKG-INFO +2 -1
- {uproot-5.3.2rc1 → uproot-5.3.4}/README.md +1 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/__init__.py +1 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/_dask.py +9 -25
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/_util.py +6 -1
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/behaviors/TBranch.py +60 -111
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/behaviors/TTree.py +1 -3
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/compression.py +6 -14
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/const.py +4 -4
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/containers.py +166 -23
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/deserialization.py +1 -3
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/extras.py +2 -6
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/interpretation/identify.py +16 -1
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/interpretation/library.py +2 -6
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/interpretation/numerical.py +10 -29
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/interpretation/objects.py +21 -17
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/language/python.py +1 -3
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/model.py +11 -21
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/models/RNTuple.py +201 -166
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/models/TArray.py +1 -1
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/models/TBasket.py +1 -3
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/models/TClonesArray.py +1 -3
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/models/TGraph.py +3 -9
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/models/TMatrixT.py +1 -3
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/models/TRef.py +1 -1
- uproot-5.3.4/src/uproot/models/TTime.py +109 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/reading.py +14 -8
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/sink/file.py +2 -10
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/source/chunk.py +1 -3
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/source/cursor.py +3 -5
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/source/http.py +17 -33
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/streamers.py +1 -1
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/version.py +2 -2
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/writing/_cascade.py +15 -101
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/writing/_cascadentuple.py +10 -38
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/writing/_cascadetree.py +7 -20
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/writing/identify.py +2 -6
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/writing/writable.py +2 -4
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0008_start_interpretation.py +2 -1
- uproot-5.3.4/tests/test_0013_rntuple_anchor.py +80 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0416_writing_compressed_data.py +14 -7
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0630_rntuple_basics.py +1 -2
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0692_fsspec_reading.py +9 -8
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0692_fsspec_writing.py +13 -6
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0705_rntuple_writing_metadata.py +6 -1
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0962_RNTuple_update.py +4 -9
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_1070_pandas_dataframe_building_performance_fix.py +4 -1
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_1120_check_decompression_executor_pass_for_dask.py +4 -1
- uproot-5.3.4/tests/test_1180_read_free_floating_vector_issue_1179.py +25 -0
- uproot-5.3.4/tests/test_1181_support_for_stl_list.py +71 -0
- uproot-5.3.4/tests/test_1182_add_support_for_bitset.py +40 -0
- uproot-5.3.4/tests/test_1183_ttime_custom.py +17 -0
- uproot-5.3.4/tests/test_1186_dtype_might_raise_ValueError.py +23 -0
- uproot-5.3.4/tests/test_1189_dask_failing_on_duplicate_keys.py +24 -0
- uproot-5.3.4/tests/test_1191_rntuple_fixes.py +83 -0
- uproot-5.3.2rc1/tests/test_0013_rntuple_anchor.py +0 -78
- {uproot-5.3.2rc1 → uproot-5.3.4}/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/.github/dependabot.yml +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/.github/workflows/build-distributions.yml +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/.github/workflows/deploy.yml +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/.github/workflows/semantic-pr-title.yml +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/.github/workflows/upload-nightly-wheels.yml +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/.gitignore +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/.readthedocs.yml +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/CITATION.cff +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/LICENSE +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/dev/example-objects.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/dev/make-models.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/docs-img/diagrams/abstraction-layers.png +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/docs-img/diagrams/abstraction-layers.svg +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/docs-img/diagrams/example-dask-graph.png +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/docs-img/diagrams/uproot-awkward-timeline.png +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/docs-img/diagrams/uproot-awkward-timeline.svg +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/docs-img/logo/logo-300px-white.png +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/docs-img/logo/logo-300px.png +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/docs-img/logo/logo-600px.png +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/docs-img/logo/logo.svg +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/docs-img/photos/switcheroo.jpg +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/docs-sphinx/_templates/breadcrumbs.html +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/docs-sphinx/basic.rst +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/docs-sphinx/conf.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/docs-sphinx/index.rst +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/docs-sphinx/make_changelog.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/docs-sphinx/prepare_docstrings.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/docs-sphinx/requirements.txt +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/docs-sphinx/uproot3-to-4.rst +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/pyproject.toml +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/_awkwardforth.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/behavior.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/behaviors/RooCurve.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/behaviors/RooHist.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/behaviors/TAxis.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/behaviors/TBranchElement.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/behaviors/TDatime.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/behaviors/TGraph.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/behaviors/TGraphAsymmErrors.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/behaviors/TGraphErrors.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/behaviors/TH1.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/behaviors/TH2.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/behaviors/TH2Poly.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/behaviors/TH3.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/behaviors/TParameter.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/behaviors/TProfile.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/behaviors/TProfile2D.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/behaviors/TProfile3D.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/behaviors/__init__.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/cache.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/dynamic.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/exceptions.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/interpretation/__init__.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/interpretation/grouped.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/interpretation/jagged.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/interpretation/strings.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/language/__init__.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/models/TAtt.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/models/TBranch.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/models/TDatime.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/models/TH.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/models/THashList.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/models/TLeaf.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/models/TList.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/models/TNamed.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/models/TObjArray.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/models/TObjString.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/models/TObject.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/models/TString.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/models/TTable.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/models/TTree.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/models/__init__.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/pyroot.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/serialization.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/sink/__init__.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/source/__init__.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/source/file.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/source/fsspec.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/source/futures.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/source/object.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/source/s3.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/source/xrootd.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/writing/__init__.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/src/uproot/writing/_dask_write.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/__init__.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/conftest.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/samples/h_dynamic.pkl +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0001_source_class.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0006_notify_when_downloaded.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0007_single_chunk_interface.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0009_nested_directories.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0010_start_streamers.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0011_generate_classes_from_streamers.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0014_all_ttree_versions.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0016_interpretations.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0017_multi_basket_multi_branch_fetch.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0018_array_fetching_interface.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0022_number_of_branches.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0023_more_interpretations_1.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0023_ttree_versions.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0028_fallback_to_read_streamer.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0029_more_string_types.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0031_test_stl_containers.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0033_more_interpretations_2.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0034_generic_objects_in_ttrees.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0035_datatype_generality.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0038_memberwise_serialization.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0043_iterate_function.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0044_concatenate_function.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0046_histograms_bh_hist.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0053_parents_should_not_be_bases.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0058_detach_model_objects_from_files.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0066_fix_http_fallback_freeze.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0067_common_entry_offsets.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0081_dont_parse_colons.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0087_memberwise_splitting_not_implemented_messages.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0088_read_with_http.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0099_read_from_file_object.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0112_fix_pandas_with_cut.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0118_fix_name_fetch_again.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0123_atlas_issues.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0126_turn_unknown_emptyarrays_into_known_types.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0167_use_the_common_histogram_interface.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0172_allow_allocators_in_vector_typenames.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0173_empty_and_multiprocessing_bugs.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0182_complain_about_missing_files.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0194_fix_lost_cuts_in_iterate.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0220_contiguous_byte_ranges_in_http.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0228_read_TProfiles.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0240_read_TGraphAsymmErrors.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0278_specializations_for_TParameter.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0302_pickle.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0303_empty_jagged_array.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0320_start_working_on_ROOT_writing.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0322_writablefile_infrastructure.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0329_update_existing_root_files.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0335_empty_ttree_division_by_zero.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0341_manipulate_streamer_info.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0344_writabledirectory_can_read.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0345_bulk_copy_method.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0349_write_TObjString.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0350_read_RooCurve_RooHist.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0351_write_TList.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0352_write_THashList.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0384_move_behavior_of_and_fix_383.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0398_dimensions_in_leaflist.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0405_write_a_histogram.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0406_write_a_ttree.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0407_read_TDatime.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0412_write_multidimensional_numpy_to_ttree.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0414_write_jagged_arrays.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0418_read_TTable.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0420_pyroot_uproot_interoperability.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0422_hist_integration.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0430_global_index_for_tuples_of_DataFrames.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0438_TClonesArray_is_not_AsGrouped.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0439_check_awkward_before_numpy.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0442_regular_TClonesArray.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0472_tstreamerinfo_for_ttree.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0475_remember_to_update_freesegments.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0484_manually_add_model_for_TMatrixTSym_double_.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0487_implement_asdtypeinplace.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0498_create_leaf_branch_in_extend.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0519_remove_memmap_copy.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0520_dynamic_classes_cant_be_abc_subclasses.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0569_fBits_is_4_bytes.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0576_unicode_in_names.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0578_dask_for_numpy.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0580_round_trip_for_no_flow_histograms.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0589_explicitly_interpret_RVec_type.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0603_dask_delayed_open.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0609_num_enteries_func.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0610_awkward_form.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0637_setup_tests_for_AwkwardForth.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0643_reading_vector_pair_TLorentzVector_int.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0651_implement_transformed_axis.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0652_dask_for_awkward.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0662_rntuple_stl_containers.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0700_dask_empty_arrays.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0750_avoid_empty_TBasket_issue.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0755_dask_awkward_column_projection.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0791_protect_uproot_project_columns_from_dask_node_names.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0798_DAOD_PHYSLITE.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0808_fix_awkward_form_for_AsStridedObjects.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0816_separate_AwkwardForth_machines_by_TBranch.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0832_ak_add_doc_should_also_add_to_typetracer.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0840_support_tleafG.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0841_fix_814.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0844_fix_delete_hist_from_root.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0852_fix_strided_interp_extra_offsets.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0870_writing_arrays_of_type_unknown_fix_822.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0876_uproot_dask_blind_steps.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0886_fix_awkward_form_breadcrumbs.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0910_fix_906_members_non_numerical_branches.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0911_fix_interp_array_non_numerical_objs_issue_880.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0912_fix_pandas_and_double_nested_vectors_issue_885.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0916_read_from_s3.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0927_dont_assume_uproot_in_global_scope_in_TPython_Eval.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0930_expressions_in_pandas.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0940_feat_add_TLeafC_string_support.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0965_inverted_axes_variances_hist_888.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_0976_path_object_split.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_1000-write-TProfiles.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_1043_const_std_string.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_1058_dask_awkward_report.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_1063_dask_distributed.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_1085_dask_write.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_1102_any_locks_in_models_must_be_transient.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_1114_fix_attempt_to_concatenate_numpy_with_awkward.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_1127_fix_allow_colon_in_key_names.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_1146_split_ranges_for_large_files_over_http.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_1154_classof_using_relative_path.py +0 -0
- {uproot-5.3.2rc1 → uproot-5.3.4}/tests/test_1160_std_string_in_TDirectory.py +0 -0
|
@@ -560,6 +560,15 @@
|
|
|
560
560
|
"contributions": [
|
|
561
561
|
"code"
|
|
562
562
|
]
|
|
563
|
+
},
|
|
564
|
+
{
|
|
565
|
+
"login": "djw9497",
|
|
566
|
+
"name": "djw9497",
|
|
567
|
+
"avatar_url": "https://avatars.githubusercontent.com/u/51672890?v=4",
|
|
568
|
+
"profile": "https://github.com/djw9497",
|
|
569
|
+
"contributions": [
|
|
570
|
+
"code"
|
|
571
|
+
]
|
|
563
572
|
}
|
|
564
573
|
],
|
|
565
574
|
"contributorsPerLine": 7,
|
|
@@ -92,3 +92,27 @@ jobs:
|
|
|
92
92
|
- name: Run pytest
|
|
93
93
|
run: |
|
|
94
94
|
python -m pytest -vv tests --reruns 10 --reruns-delay 30 --only-rerun "(?i)http|ssl|timeout|expired|connection|socket"
|
|
95
|
+
|
|
96
|
+
numpy2-build:
|
|
97
|
+
strategy:
|
|
98
|
+
fail-fast: false
|
|
99
|
+
matrix:
|
|
100
|
+
platform: [windows-latest, ubuntu-latest, macos-latest]
|
|
101
|
+
python-version: ['3.11']
|
|
102
|
+
|
|
103
|
+
runs-on: ${{ matrix.platform }}
|
|
104
|
+
timeout-minutes: 30
|
|
105
|
+
|
|
106
|
+
steps:
|
|
107
|
+
- uses: actions/checkout@v4
|
|
108
|
+
|
|
109
|
+
- uses: actions/setup-python@v5
|
|
110
|
+
with:
|
|
111
|
+
python-version: ${{ matrix.python-version }}
|
|
112
|
+
|
|
113
|
+
- name: Pip install the package
|
|
114
|
+
run: python -m pip install 'numpy>=2.0.0b1' .[test]
|
|
115
|
+
|
|
116
|
+
- name: Run pytest
|
|
117
|
+
run: |
|
|
118
|
+
python -m pytest -vv tests --reruns 10 --reruns-delay 30 --only-rerun "(?i)http|ssl|timeout|expired|connection|socket"
|
|
@@ -4,7 +4,7 @@ ci:
|
|
|
4
4
|
|
|
5
5
|
repos:
|
|
6
6
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
7
|
-
rev: v4.
|
|
7
|
+
rev: v4.6.0
|
|
8
8
|
hooks:
|
|
9
9
|
- id: check-added-large-files
|
|
10
10
|
- id: check-case-conflict
|
|
@@ -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: 24.2
|
|
21
|
+
rev: 24.4.2
|
|
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.4.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.2
|
|
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.13.0
|
|
40
40
|
hooks:
|
|
41
41
|
- id: pretty-format-toml
|
|
42
42
|
args: [--autofix]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: uproot
|
|
3
|
-
Version: 5.3.
|
|
3
|
+
Version: 5.3.4
|
|
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
|
|
@@ -254,6 +254,7 @@ Thanks especially to the gracious help of Uproot contributors (including the [or
|
|
|
254
254
|
<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>
|
|
255
255
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/bojohnson5"><img src="https://avatars.githubusercontent.com/u/20647190?v=4?s=100" width="100px;" alt="Bo Johnson"/><br /><sub><b>Bo Johnson</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=bojohnson5" title="Code">💻</a></td>
|
|
256
256
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/milesgranger"><img src="https://avatars.githubusercontent.com/u/13764397?v=4?s=100" width="100px;" alt="Miles"/><br /><sub><b>Miles</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=milesgranger" title="Code">💻</a></td>
|
|
257
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/djw9497"><img src="https://avatars.githubusercontent.com/u/51672890?v=4?s=100" width="100px;" alt="djw9497"/><br /><sub><b>djw9497</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=djw9497" title="Code">💻</a></td>
|
|
257
258
|
</tr>
|
|
258
259
|
</tbody>
|
|
259
260
|
</table>
|
|
@@ -186,6 +186,7 @@ Thanks especially to the gracious help of Uproot contributors (including the [or
|
|
|
186
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
187
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/bojohnson5"><img src="https://avatars.githubusercontent.com/u/20647190?v=4?s=100" width="100px;" alt="Bo Johnson"/><br /><sub><b>Bo Johnson</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=bojohnson5" title="Code">💻</a></td>
|
|
188
188
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/milesgranger"><img src="https://avatars.githubusercontent.com/u/13764397?v=4?s=100" width="100px;" alt="Miles"/><br /><sub><b>Miles</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=milesgranger" title="Code">💻</a></td>
|
|
189
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/djw9497"><img src="https://avatars.githubusercontent.com/u/51672890?v=4?s=100" width="100px;" alt="djw9497"/><br /><sub><b>djw9497</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=djw9497" title="Code">💻</a></td>
|
|
189
190
|
</tr>
|
|
190
191
|
</tbody>
|
|
191
192
|
</table>
|
|
@@ -606,6 +606,7 @@ def _get_dask_array(
|
|
|
606
606
|
filter_typename=filter_typename,
|
|
607
607
|
filter_branch=real_filter_branch,
|
|
608
608
|
full_paths=full_paths,
|
|
609
|
+
ignore_duplicates=True,
|
|
609
610
|
)
|
|
610
611
|
|
|
611
612
|
if common_keys is None:
|
|
@@ -627,12 +628,7 @@ def _get_dask_array(
|
|
|
627
628
|
raise ValueError(
|
|
628
629
|
"allow_missing=True and no TTrees found in\n\n {}".format(
|
|
629
630
|
"\n ".join(
|
|
630
|
-
"{"
|
|
631
|
-
+ "{}: {}".format(
|
|
632
|
-
repr(f.file_path if isinstance(f, HasBranches) else f),
|
|
633
|
-
repr(f.object_path if isinstance(f, HasBranches) else o),
|
|
634
|
-
)
|
|
635
|
-
+ "}"
|
|
631
|
+
f"{{{f.file_path if isinstance(f, HasBranches) else f!r}: {f.object_path if isinstance(f, HasBranches) else o!r}}}"
|
|
636
632
|
for f, o in files
|
|
637
633
|
)
|
|
638
634
|
)
|
|
@@ -642,12 +638,7 @@ def _get_dask_array(
|
|
|
642
638
|
raise ValueError(
|
|
643
639
|
"TTrees in\n\n {}\n\nhave no TBranches in common".format(
|
|
644
640
|
"\n ".join(
|
|
645
|
-
"{"
|
|
646
|
-
+ "{}: {}".format(
|
|
647
|
-
repr(f.file_path if isinstance(f, HasBranches) else f),
|
|
648
|
-
repr(f.object_path if isinstance(f, HasBranches) else o),
|
|
649
|
-
)
|
|
650
|
-
+ "}"
|
|
641
|
+
f"{{{f.file_path if isinstance(f, HasBranches) else f!r}: {f.object_path if isinstance(f, HasBranches) else o!r}}}"
|
|
651
642
|
for f, o in files
|
|
652
643
|
)
|
|
653
644
|
)
|
|
@@ -757,6 +748,7 @@ def _get_dask_array_delay_open(
|
|
|
757
748
|
filter_typename=filter_typename,
|
|
758
749
|
filter_branch=filter_branch,
|
|
759
750
|
full_paths=full_paths,
|
|
751
|
+
ignore_duplicates=True,
|
|
760
752
|
)
|
|
761
753
|
|
|
762
754
|
dask_dict = {}
|
|
@@ -1451,6 +1443,7 @@ def _get_dak_array(
|
|
|
1451
1443
|
filter_typename=filter_typename,
|
|
1452
1444
|
filter_branch=real_filter_branch,
|
|
1453
1445
|
full_paths=full_paths,
|
|
1446
|
+
ignore_duplicates=True,
|
|
1454
1447
|
)
|
|
1455
1448
|
|
|
1456
1449
|
if common_keys is None:
|
|
@@ -1472,12 +1465,7 @@ def _get_dak_array(
|
|
|
1472
1465
|
raise ValueError(
|
|
1473
1466
|
"allow_missing=True and no TTrees found in\n\n {}".format(
|
|
1474
1467
|
"\n ".join(
|
|
1475
|
-
"{"
|
|
1476
|
-
+ "{}: {}".format(
|
|
1477
|
-
repr(f.file_path if isinstance(f, HasBranches) else f),
|
|
1478
|
-
repr(f.object_path if isinstance(f, HasBranches) else o),
|
|
1479
|
-
)
|
|
1480
|
-
+ "}"
|
|
1468
|
+
f"{{{f.file_path if isinstance(f, HasBranches) else f!r}: {f.object_path if isinstance(f, HasBranches) else o!r}}}"
|
|
1481
1469
|
for f, o in files
|
|
1482
1470
|
)
|
|
1483
1471
|
)
|
|
@@ -1487,12 +1475,7 @@ def _get_dak_array(
|
|
|
1487
1475
|
raise ValueError(
|
|
1488
1476
|
"TTrees in\n\n {}\n\nhave no TBranches in common".format(
|
|
1489
1477
|
"\n ".join(
|
|
1490
|
-
"{"
|
|
1491
|
-
+ "{}: {}".format(
|
|
1492
|
-
repr(f.file_path if isinstance(f, HasBranches) else f),
|
|
1493
|
-
repr(f.object_path if isinstance(f, HasBranches) else o),
|
|
1494
|
-
)
|
|
1495
|
-
+ "}"
|
|
1478
|
+
f"{{{f.file_path if isinstance(f, HasBranches) else f!r}: {f.object_path if isinstance(f, HasBranches) else o!r}}}"
|
|
1496
1479
|
for f, o in files
|
|
1497
1480
|
)
|
|
1498
1481
|
)
|
|
@@ -1606,7 +1589,7 @@ def _get_dak_array_delay_open(
|
|
|
1606
1589
|
ffile_path, fobject_path = files[0][0:2]
|
|
1607
1590
|
|
|
1608
1591
|
if known_base_form is not None:
|
|
1609
|
-
common_keys = list(known_base_form.fields)
|
|
1592
|
+
common_keys = list(dict.fromkeys(known_base_form.fields))
|
|
1610
1593
|
base_form = known_base_form
|
|
1611
1594
|
else:
|
|
1612
1595
|
obj = uproot._util.regularize_object_path(
|
|
@@ -1618,6 +1601,7 @@ def _get_dak_array_delay_open(
|
|
|
1618
1601
|
filter_typename=filter_typename,
|
|
1619
1602
|
filter_branch=filter_branch,
|
|
1620
1603
|
full_paths=full_paths,
|
|
1604
|
+
ignore_duplicates=True,
|
|
1621
1605
|
)
|
|
1622
1606
|
base_form = _get_ttree_form(
|
|
1623
1607
|
awkward, obj, common_keys, interp_options.get("ak_add_doc")
|
|
@@ -13,6 +13,7 @@ import itertools
|
|
|
13
13
|
import numbers
|
|
14
14
|
import os
|
|
15
15
|
import re
|
|
16
|
+
import sys
|
|
16
17
|
import warnings
|
|
17
18
|
from collections.abc import Iterable
|
|
18
19
|
from pathlib import Path
|
|
@@ -27,6 +28,8 @@ import uproot.source.chunk
|
|
|
27
28
|
import uproot.source.fsspec
|
|
28
29
|
import uproot.source.object
|
|
29
30
|
|
|
31
|
+
macos = sys.platform == "darwin"
|
|
32
|
+
|
|
30
33
|
|
|
31
34
|
def tobytes(array):
|
|
32
35
|
"""
|
|
@@ -80,7 +83,9 @@ def ensure_numpy(array, types=(numpy.bool_, numpy.integer, numpy.floating)):
|
|
|
80
83
|
|
|
81
84
|
awkward = uproot.extras.awkward()
|
|
82
85
|
with warnings.catch_warnings():
|
|
83
|
-
warnings.simplefilter(
|
|
86
|
+
warnings.simplefilter(
|
|
87
|
+
"error", getattr(numpy, "exceptions", numpy).VisibleDeprecationWarning
|
|
88
|
+
)
|
|
84
89
|
if isinstance(array, awkward.contents.Content):
|
|
85
90
|
out = awkward.to_numpy(array)
|
|
86
91
|
else:
|
|
@@ -627,11 +627,7 @@ class HasBranches(Mapping):
|
|
|
627
627
|
if interpretation_width < 3:
|
|
628
628
|
raise ValueError("'interpretation_width' must be at least 3")
|
|
629
629
|
|
|
630
|
-
formatter = "{{0:{
|
|
631
|
-
name_width,
|
|
632
|
-
typename_width,
|
|
633
|
-
interpretation_width,
|
|
634
|
-
)
|
|
630
|
+
formatter = f"{{0:{name_width}.{name_width}}} | {{1:{typename_width}.{typename_width}}} | {{2:{interpretation_width}.{interpretation_width}}}"
|
|
635
631
|
|
|
636
632
|
stream.write(formatter.format("name", "typename", "interpretation"))
|
|
637
633
|
stream.write(
|
|
@@ -792,14 +788,7 @@ class HasBranches(Mapping):
|
|
|
792
788
|
|
|
793
789
|
def get_from_cache(branchname, interpretation):
|
|
794
790
|
if array_cache is not None:
|
|
795
|
-
cache_key = "{}:{}:{}:{}-{}:{}"
|
|
796
|
-
self.cache_key,
|
|
797
|
-
branchname,
|
|
798
|
-
interpretation.cache_key,
|
|
799
|
-
entry_start,
|
|
800
|
-
entry_stop,
|
|
801
|
-
library.name,
|
|
802
|
-
)
|
|
791
|
+
cache_key = f"{self.cache_key}:{branchname}:{interpretation.cache_key}:{entry_start}-{entry_stop}:{library.name}"
|
|
803
792
|
return array_cache.get(cache_key)
|
|
804
793
|
else:
|
|
805
794
|
return None
|
|
@@ -865,14 +854,7 @@ class HasBranches(Mapping):
|
|
|
865
854
|
checked.add(branch.cache_key)
|
|
866
855
|
interpretation = branchid_interpretation[branch.cache_key]
|
|
867
856
|
if branch is not None:
|
|
868
|
-
cache_key = "{}:{}:{}:{}-{}:{}"
|
|
869
|
-
self.cache_key,
|
|
870
|
-
expression,
|
|
871
|
-
interpretation.cache_key,
|
|
872
|
-
entry_start,
|
|
873
|
-
entry_stop,
|
|
874
|
-
library.name,
|
|
875
|
-
)
|
|
857
|
+
cache_key = f"{self.cache_key}:{expression}:{interpretation.cache_key}:{entry_start}-{entry_stop}:{library.name}"
|
|
876
858
|
array_cache[cache_key] = arrays[branch.cache_key]
|
|
877
859
|
|
|
878
860
|
output = language.compute_expressions(
|
|
@@ -1144,6 +1126,7 @@ class HasBranches(Mapping):
|
|
|
1144
1126
|
filter_branch=no_filter,
|
|
1145
1127
|
recursive=True,
|
|
1146
1128
|
full_paths=True,
|
|
1129
|
+
ignore_duplicates=False,
|
|
1147
1130
|
):
|
|
1148
1131
|
"""
|
|
1149
1132
|
Args:
|
|
@@ -1161,6 +1144,7 @@ class HasBranches(Mapping):
|
|
|
1161
1144
|
full_paths (bool): If True, include the full path to each subbranch
|
|
1162
1145
|
with slashes (``/``); otherwise, use the descendant's name as
|
|
1163
1146
|
the output name.
|
|
1147
|
+
ignore_duplicates (bool): If True, return a set of the keys; otherwise, return the full list of keys.
|
|
1164
1148
|
|
|
1165
1149
|
Returns the names of the subbranches as a list of strings.
|
|
1166
1150
|
"""
|
|
@@ -1171,6 +1155,7 @@ class HasBranches(Mapping):
|
|
|
1171
1155
|
filter_branch=filter_branch,
|
|
1172
1156
|
recursive=recursive,
|
|
1173
1157
|
full_paths=full_paths,
|
|
1158
|
+
ignore_duplicates=ignore_duplicates,
|
|
1174
1159
|
)
|
|
1175
1160
|
)
|
|
1176
1161
|
|
|
@@ -1297,6 +1282,7 @@ class HasBranches(Mapping):
|
|
|
1297
1282
|
filter_branch=no_filter,
|
|
1298
1283
|
recursive=True,
|
|
1299
1284
|
full_paths=True,
|
|
1285
|
+
ignore_duplicates=False,
|
|
1300
1286
|
):
|
|
1301
1287
|
"""
|
|
1302
1288
|
Args:
|
|
@@ -1314,6 +1300,8 @@ class HasBranches(Mapping):
|
|
|
1314
1300
|
full_paths (bool): If True, include the full path to each subbranch
|
|
1315
1301
|
with slashes (``/``); otherwise, use the descendant's name as
|
|
1316
1302
|
the output name.
|
|
1303
|
+
ignore_duplicates (bool): If True, return a set of the keys; otherwise, return the full list of keys.
|
|
1304
|
+
|
|
1317
1305
|
|
|
1318
1306
|
Returns the names of the subbranches as an iterator over strings.
|
|
1319
1307
|
"""
|
|
@@ -1323,6 +1311,7 @@ class HasBranches(Mapping):
|
|
|
1323
1311
|
filter_branch=filter_branch,
|
|
1324
1312
|
recursive=recursive,
|
|
1325
1313
|
full_paths=full_paths,
|
|
1314
|
+
ignore_duplicates=ignore_duplicates,
|
|
1326
1315
|
):
|
|
1327
1316
|
yield k
|
|
1328
1317
|
|
|
@@ -1371,6 +1360,7 @@ class HasBranches(Mapping):
|
|
|
1371
1360
|
filter_branch=no_filter,
|
|
1372
1361
|
recursive=True,
|
|
1373
1362
|
full_paths=True,
|
|
1363
|
+
ignore_duplicates=False,
|
|
1374
1364
|
):
|
|
1375
1365
|
"""
|
|
1376
1366
|
Args:
|
|
@@ -1388,6 +1378,8 @@ class HasBranches(Mapping):
|
|
|
1388
1378
|
full_paths (bool): If True, include the full path to each subbranch
|
|
1389
1379
|
with slashes (``/``) in the name; otherwise, use the descendant's
|
|
1390
1380
|
name as the name without modification.
|
|
1381
|
+
ignore_duplicates (bool): If True, return a set of the keys; otherwise, return the full list of keys.
|
|
1382
|
+
|
|
1391
1383
|
|
|
1392
1384
|
Returns (name, branch) pairs of the subbranches as an iterator over
|
|
1393
1385
|
2-tuples of (str, :doc:`uproot.behaviors.TBranch.TBranch`).
|
|
@@ -1400,11 +1392,11 @@ class HasBranches(Mapping):
|
|
|
1400
1392
|
pass
|
|
1401
1393
|
else:
|
|
1402
1394
|
raise TypeError(
|
|
1403
|
-
"filter_branch must be None or a function: TBranch -> bool, not {}"
|
|
1404
|
-
repr(filter_branch)
|
|
1405
|
-
)
|
|
1395
|
+
f"filter_branch must be None or a function: TBranch -> bool, not {filter_branch!r}"
|
|
1406
1396
|
)
|
|
1407
1397
|
|
|
1398
|
+
keys_set = set()
|
|
1399
|
+
|
|
1408
1400
|
for branch in self.branches:
|
|
1409
1401
|
if (
|
|
1410
1402
|
(
|
|
@@ -1414,7 +1406,11 @@ class HasBranches(Mapping):
|
|
|
1414
1406
|
and (filter_typename is no_filter or filter_typename(branch.typename))
|
|
1415
1407
|
and (filter_branch is no_filter or filter_branch(branch))
|
|
1416
1408
|
):
|
|
1417
|
-
|
|
1409
|
+
if ignore_duplicates and branch.name in keys_set:
|
|
1410
|
+
pass
|
|
1411
|
+
else:
|
|
1412
|
+
keys_set.add(branch.name)
|
|
1413
|
+
yield branch.name, branch
|
|
1418
1414
|
|
|
1419
1415
|
if recursive:
|
|
1420
1416
|
for k1, v in branch.iteritems(
|
|
@@ -1428,7 +1424,11 @@ class HasBranches(Mapping):
|
|
|
1428
1424
|
if filter_name is no_filter or _filter_name_deep(
|
|
1429
1425
|
filter_name, self, v
|
|
1430
1426
|
):
|
|
1431
|
-
|
|
1427
|
+
if ignore_duplicates and branch.name in keys_set:
|
|
1428
|
+
pass
|
|
1429
|
+
else:
|
|
1430
|
+
keys_set.add(k2)
|
|
1431
|
+
yield k2, v
|
|
1432
1432
|
|
|
1433
1433
|
def itertypenames(
|
|
1434
1434
|
self,
|
|
@@ -1701,9 +1701,7 @@ class TBranch(HasBranches):
|
|
|
1701
1701
|
if len(self) == 0:
|
|
1702
1702
|
return f"<{self.classname} {self.name!r} at 0x{id(self):012x}>"
|
|
1703
1703
|
else:
|
|
1704
|
-
return "<{} {} ({} subbranches) at 0x{:012x}>"
|
|
1705
|
-
self.classname, repr(self.name), len(self), id(self)
|
|
1706
|
-
)
|
|
1704
|
+
return f"<{self.classname} {self.name!r} ({len(self)} subbranches) at 0x{id(self):012x}>"
|
|
1707
1705
|
|
|
1708
1706
|
def array(
|
|
1709
1707
|
self,
|
|
@@ -1781,14 +1779,7 @@ class TBranch(HasBranches):
|
|
|
1781
1779
|
|
|
1782
1780
|
def get_from_cache(branchname, interpretation):
|
|
1783
1781
|
if array_cache is not None:
|
|
1784
|
-
cache_key = "{}:{}:{}:{}-{}:{}"
|
|
1785
|
-
self.cache_key,
|
|
1786
|
-
branchname,
|
|
1787
|
-
interpretation.cache_key,
|
|
1788
|
-
entry_start,
|
|
1789
|
-
entry_stop,
|
|
1790
|
-
library.name,
|
|
1791
|
-
)
|
|
1782
|
+
cache_key = f"{self.cache_key}:{branchname}:{interpretation.cache_key}:{entry_start}-{entry_stop}:{library.name}"
|
|
1792
1783
|
return array_cache.get(cache_key)
|
|
1793
1784
|
else:
|
|
1794
1785
|
return None
|
|
@@ -1849,14 +1840,7 @@ class TBranch(HasBranches):
|
|
|
1849
1840
|
)
|
|
1850
1841
|
|
|
1851
1842
|
if array_cache is not None:
|
|
1852
|
-
cache_key = "{}:{}:{}:{}-{}:{}"
|
|
1853
|
-
self.cache_key,
|
|
1854
|
-
self.name,
|
|
1855
|
-
interpretation.cache_key,
|
|
1856
|
-
entry_start,
|
|
1857
|
-
entry_stop,
|
|
1858
|
-
library.name,
|
|
1859
|
-
)
|
|
1843
|
+
cache_key = f"{self.cache_key}:{self.name}:{interpretation.cache_key}:{entry_start}-{entry_stop}:{library.name}"
|
|
1860
1844
|
array_cache[cache_key] = arrays[self.cache_key]
|
|
1861
1845
|
|
|
1862
1846
|
return arrays[self.cache_key]
|
|
@@ -2004,14 +1988,9 @@ class TBranch(HasBranches):
|
|
|
2004
1988
|
)
|
|
2005
1989
|
):
|
|
2006
1990
|
raise ValueError(
|
|
2007
|
-
"""entries in normal baskets ({}) plus embedded baskets ({}) """
|
|
2008
|
-
"""don't add up to expected number of entries ({})
|
|
2009
|
-
in file {}"""
|
|
2010
|
-
num_entries_normal,
|
|
2011
|
-
sum(basket.num_entries for basket in self.embedded_baskets),
|
|
2012
|
-
self.num_entries,
|
|
2013
|
-
self._file.file_path,
|
|
2014
|
-
)
|
|
1991
|
+
f"""entries in normal baskets ({num_entries_normal}) plus embedded baskets ({sum(basket.num_entries for basket in self.embedded_baskets)}) """
|
|
1992
|
+
f"""don't add up to expected number of entries ({self.num_entries})
|
|
1993
|
+
in file {self._file.file_path}"""
|
|
2015
1994
|
)
|
|
2016
1995
|
else:
|
|
2017
1996
|
return out
|
|
@@ -2041,11 +2020,9 @@ in file {}""".format(
|
|
|
2041
2020
|
|
|
2042
2021
|
else:
|
|
2043
2022
|
raise IndexError(
|
|
2044
|
-
"""branch {} has {} baskets; cannot get starting entry """
|
|
2045
|
-
"""for basket {}
|
|
2046
|
-
in file {}"""
|
|
2047
|
-
repr(self.name), self.num_baskets, basket_num, self._file.file_path
|
|
2048
|
-
)
|
|
2023
|
+
f"""branch {self.name!r} has {self.num_baskets} baskets; cannot get starting entry """
|
|
2024
|
+
f"""for basket {basket_num}
|
|
2025
|
+
in file {self._file.file_path}"""
|
|
2049
2026
|
)
|
|
2050
2027
|
|
|
2051
2028
|
@property
|
|
@@ -2260,10 +2237,8 @@ in file {}""".format(
|
|
|
2260
2237
|
return self.embedded_baskets[basket_num - self._num_normal_baskets]
|
|
2261
2238
|
else:
|
|
2262
2239
|
raise IndexError(
|
|
2263
|
-
"""branch {} has {} baskets; cannot get basket {}
|
|
2264
|
-
in file {}"""
|
|
2265
|
-
repr(self.name), self.num_baskets, basket_num, self._file.file_path
|
|
2266
|
-
)
|
|
2240
|
+
f"""branch {self.name!r} has {self.num_baskets} baskets; cannot get basket {basket_num}
|
|
2241
|
+
in file {self._file.file_path}"""
|
|
2267
2242
|
)
|
|
2268
2243
|
|
|
2269
2244
|
def basket_chunk_cursor(self, basket_num):
|
|
@@ -2286,22 +2261,15 @@ in file {}""".format(
|
|
|
2286
2261
|
return chunk, cursor
|
|
2287
2262
|
elif 0 <= basket_num < self.num_baskets:
|
|
2288
2263
|
raise IndexError(
|
|
2289
|
-
"""branch {} has {} normal baskets; cannot get chunk and """
|
|
2290
|
-
"""cursor for basket {} because only normal baskets have cursors
|
|
2291
|
-
in file {}"""
|
|
2292
|
-
repr(self.name),
|
|
2293
|
-
self._num_normal_baskets,
|
|
2294
|
-
basket_num,
|
|
2295
|
-
self._file.file_path,
|
|
2296
|
-
)
|
|
2264
|
+
f"""branch {self.name!r} has {self._num_normal_baskets} normal baskets; cannot get chunk and """
|
|
2265
|
+
f"""cursor for basket {basket_num} because only normal baskets have cursors
|
|
2266
|
+
in file {self._file.file_path}"""
|
|
2297
2267
|
)
|
|
2298
2268
|
else:
|
|
2299
2269
|
raise IndexError(
|
|
2300
|
-
"""branch {} has {} baskets; cannot get cursor and chunk """
|
|
2301
|
-
"""for basket {}
|
|
2302
|
-
in file {}"""
|
|
2303
|
-
repr(self.name), self.num_baskets, basket_num, self._file.file_path
|
|
2304
|
-
)
|
|
2270
|
+
f"""branch {self.name!r} has {self.num_baskets} baskets; cannot get cursor and chunk """
|
|
2271
|
+
f"""for basket {basket_num}
|
|
2272
|
+
in file {self._file.file_path}"""
|
|
2305
2273
|
)
|
|
2306
2274
|
|
|
2307
2275
|
def basket_compressed_bytes(self, basket_num):
|
|
@@ -2321,10 +2289,8 @@ in file {}""".format(
|
|
|
2321
2289
|
].compressed_bytes
|
|
2322
2290
|
else:
|
|
2323
2291
|
raise IndexError(
|
|
2324
|
-
"""branch {} has {} baskets; cannot get basket chunk {}
|
|
2325
|
-
in file {}"""
|
|
2326
|
-
repr(self.name), self.num_baskets, basket_num, self._file.file_path
|
|
2327
|
-
)
|
|
2292
|
+
f"""branch {self.name!r} has {self.num_baskets} baskets; cannot get basket chunk {basket_num}
|
|
2293
|
+
in file {self._file.file_path}"""
|
|
2328
2294
|
)
|
|
2329
2295
|
|
|
2330
2296
|
def basket_uncompressed_bytes(self, basket_num):
|
|
@@ -2363,17 +2329,13 @@ in file {}""".format(
|
|
|
2363
2329
|
|
|
2364
2330
|
elif 0 <= basket_num < self.num_baskets:
|
|
2365
2331
|
raise ValueError(
|
|
2366
|
-
"branch {} basket {} is an embedded basket, which has no TKey"
|
|
2367
|
-
repr(self.name), basket_num
|
|
2368
|
-
)
|
|
2332
|
+
f"branch {self.name!r} basket {basket_num} is an embedded basket, which has no TKey"
|
|
2369
2333
|
)
|
|
2370
2334
|
|
|
2371
2335
|
else:
|
|
2372
2336
|
raise IndexError(
|
|
2373
|
-
"""branch {} has {} baskets; cannot get basket chunk {}
|
|
2374
|
-
in file {}"""
|
|
2375
|
-
repr(self.name), self.num_baskets, basket_num, self._file.file_path
|
|
2376
|
-
)
|
|
2337
|
+
f"""branch {self.name!r} has {self.num_baskets} baskets; cannot get basket chunk {basket_num}
|
|
2338
|
+
in file {self._file.file_path}"""
|
|
2377
2339
|
)
|
|
2378
2340
|
|
|
2379
2341
|
@property
|
|
@@ -2495,19 +2457,14 @@ in file {}""".format(
|
|
|
2495
2457
|
interpretation.awkward_form(self.file)
|
|
2496
2458
|
except uproot.interpretation.objects.CannotBeAwkward as err:
|
|
2497
2459
|
raise ValueError(
|
|
2498
|
-
"""cannot produce Awkward Arrays for interpretation {} because
|
|
2460
|
+
f"""cannot produce Awkward Arrays for interpretation {interpretation!r} because
|
|
2499
2461
|
|
|
2500
|
-
{}
|
|
2462
|
+
{err.because}
|
|
2501
2463
|
|
|
2502
2464
|
instead, try library="np" rather than library="ak" or globally set uproot.default_library
|
|
2503
2465
|
|
|
2504
|
-
in file {}
|
|
2505
|
-
in object {}"""
|
|
2506
|
-
repr(interpretation),
|
|
2507
|
-
err.because,
|
|
2508
|
-
self.file.file_path,
|
|
2509
|
-
self.object_path,
|
|
2510
|
-
)
|
|
2466
|
+
in file {self.file.file_path}
|
|
2467
|
+
in object {self.object_path}"""
|
|
2511
2468
|
) from err
|
|
2512
2469
|
|
|
2513
2470
|
def debug(
|
|
@@ -2751,10 +2708,7 @@ def _regularize_branchname(
|
|
|
2751
2708
|
):
|
|
2752
2709
|
raise ValueError(
|
|
2753
2710
|
"a branch cannot be loaded with multiple interpretations: "
|
|
2754
|
-
"{} and {}"
|
|
2755
|
-
repr(branchid_interpretation[branch.cache_key]),
|
|
2756
|
-
repr(interpretation),
|
|
2757
|
-
)
|
|
2711
|
+
f"{branchid_interpretation[branch.cache_key]!r} and {interpretation!r}"
|
|
2758
2712
|
)
|
|
2759
2713
|
else:
|
|
2760
2714
|
branchid_interpretation[branch.cache_key] = interpretation
|
|
@@ -3053,8 +3007,10 @@ def _ranges_or_baskets_to_arrays(
|
|
|
3053
3007
|
)
|
|
3054
3008
|
|
|
3055
3009
|
# check for CannotBeAwkward errors on the main thread before reading any data
|
|
3056
|
-
if
|
|
3057
|
-
|
|
3010
|
+
if (
|
|
3011
|
+
isinstance(library, uproot.interpretation.library.Awkward)
|
|
3012
|
+
and isinstance(interpretation, uproot.interpretation.objects.AsObjects)
|
|
3013
|
+
and cache_key in branchid_to_branch
|
|
3058
3014
|
):
|
|
3059
3015
|
branchid_to_branch[cache_key]._awkward_check(interpretation)
|
|
3060
3016
|
|
|
@@ -3107,16 +3063,9 @@ def _ranges_or_baskets_to_arrays(
|
|
|
3107
3063
|
)
|
|
3108
3064
|
if basket.num_entries != len(basket_arrays[basket.basket_num]):
|
|
3109
3065
|
raise ValueError(
|
|
3110
|
-
"""basket {} in tree/branch {} has the wrong number of entries """
|
|
3111
|
-
"""(expected {}, obtained {}) when interpreted as {}
|
|
3112
|
-
in file {}"""
|
|
3113
|
-
basket.basket_num,
|
|
3114
|
-
branch.object_path,
|
|
3115
|
-
basket.num_entries,
|
|
3116
|
-
len(basket_arrays[basket.basket_num]),
|
|
3117
|
-
interpretation,
|
|
3118
|
-
branch.file.file_path,
|
|
3119
|
-
)
|
|
3066
|
+
f"""basket {basket.basket_num} in tree/branch {branch.object_path} has the wrong number of entries """
|
|
3067
|
+
f"""(expected {basket.num_entries}, obtained {len(basket_arrays[basket.basket_num])}) when interpreted as {interpretation}
|
|
3068
|
+
in file {branch.file.file_path}"""
|
|
3120
3069
|
)
|
|
3121
3070
|
|
|
3122
3071
|
basket = None
|
|
@@ -29,9 +29,7 @@ class TTree(uproot.behaviors.TBranch.HasBranches):
|
|
|
29
29
|
if len(self) == 0:
|
|
30
30
|
return f"<TTree {self.name!r} at 0x{id(self):012x}>"
|
|
31
31
|
else:
|
|
32
|
-
return "<TTree {} ({} branches) at 0x{:012x}>"
|
|
33
|
-
repr(self.name), len(self), id(self)
|
|
34
|
-
)
|
|
32
|
+
return f"<TTree {self.name!r} ({len(self)} branches) at 0x{id(self):012x}>"
|
|
35
33
|
|
|
36
34
|
@property
|
|
37
35
|
def name(self):
|
|
@@ -434,10 +434,8 @@ def decompress(
|
|
|
434
434
|
computed_checksum = xxhash.xxh64(data).intdigest()
|
|
435
435
|
if computed_checksum != expected_checksum:
|
|
436
436
|
raise ValueError(
|
|
437
|
-
"""computed checksum {} didn't match expected checksum {}
|
|
438
|
-
in file {}"""
|
|
439
|
-
computed_checksum, expected_checksum, chunk.source.file_path
|
|
440
|
-
)
|
|
437
|
+
f"""computed checksum {computed_checksum} didn't match expected checksum {expected_checksum}
|
|
438
|
+
in file {chunk.source.file_path}"""
|
|
441
439
|
)
|
|
442
440
|
|
|
443
441
|
elif algo == _decompress_ZSTD._2byte:
|
|
@@ -468,16 +466,10 @@ in file {chunk.source.file_path}"""
|
|
|
468
466
|
|
|
469
467
|
if len(uncompressed_bytestring) != block_uncompressed_bytes:
|
|
470
468
|
raise ValueError(
|
|
471
|
-
"""after successfully decompressing {} blocks, a block of """
|
|
472
|
-
"""compressed size {} decompressed to {} bytes, but the """
|
|
473
|
-
"""block header expects {} bytes.
|
|
474
|
-
in file {}"""
|
|
475
|
-
num_blocks,
|
|
476
|
-
block_compressed_bytes,
|
|
477
|
-
len(uncompressed_bytestring),
|
|
478
|
-
block_uncompressed_bytes,
|
|
479
|
-
chunk.source.file_path,
|
|
480
|
-
)
|
|
469
|
+
f"""after successfully decompressing {num_blocks} blocks, a block of """
|
|
470
|
+
f"""compressed size {block_compressed_bytes} decompressed to {len(uncompressed_bytestring)} bytes, but the """
|
|
471
|
+
f"""block header expects {block_uncompressed_bytes} bytes.
|
|
472
|
+
in file {chunk.source.file_path}"""
|
|
481
473
|
)
|
|
482
474
|
|
|
483
475
|
uncompressed_array = numpy.frombuffer(
|