uproot 5.7.0__tar.gz → 5.7.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {uproot-5.7.0 → uproot-5.7.2}/.all-contributorsrc +18 -0
- {uproot-5.7.0 → uproot-5.7.2}/.github/workflows/build-test.yml +67 -0
- {uproot-5.7.0 → uproot-5.7.2}/.github/workflows/deploy.yml +2 -2
- {uproot-5.7.0 → uproot-5.7.2}/.github/workflows/upload-nightly-wheels.yml +1 -1
- {uproot-5.7.0 → uproot-5.7.2}/.pre-commit-config.yaml +3 -3
- {uproot-5.7.0 → uproot-5.7.2}/CONTRIBUTING.md +17 -0
- {uproot-5.7.0 → uproot-5.7.2}/PKG-INFO +10 -16
- {uproot-5.7.0 → uproot-5.7.2}/README.md +3 -11
- uproot-5.7.2/codecov.yml +22 -0
- {uproot-5.7.0 → uproot-5.7.2}/dev/make-models.py +10 -20
- {uproot-5.7.0 → uproot-5.7.2}/docs-sphinx/basic.rst +22 -0
- {uproot-5.7.0 → uproot-5.7.2}/docs-sphinx/make_changelog.py +2 -4
- {uproot-5.7.0 → uproot-5.7.2}/docs-sphinx/prepare_docstrings.py +10 -28
- {uproot-5.7.0 → uproot-5.7.2}/pyproject.toml +15 -7
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/_awkwardforth.py +5 -4
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/_dask.py +8 -18
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/_util.py +8 -12
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/behavior.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/behaviors/RNTuple.py +30 -23
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/behaviors/RooCurve.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/behaviors/RooHist.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/behaviors/TAxis.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/behaviors/TBranch.py +2 -3
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/behaviors/TBranchElement.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/behaviors/TDatime.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/behaviors/TGraph.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/behaviors/TGraphAsymmErrors.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/behaviors/TGraphErrors.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/behaviors/TH1.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/behaviors/TH2.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/behaviors/TH2Poly.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/behaviors/TH3.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/behaviors/TParameter.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/behaviors/TProfile.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/behaviors/TProfile2D.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/behaviors/TProfile3D.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/behaviors/TTree.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/cache.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/compression.py +8 -12
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/const.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/containers.py +3 -6
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/deserialization.py +2 -3
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/dynamic.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/exceptions.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/extras.py +19 -94
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/interpretation/__init__.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/interpretation/custom.py +2 -3
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/interpretation/grouped.py +3 -1
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/interpretation/identify.py +3 -6
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/interpretation/jagged.py +2 -1
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/interpretation/known_forth/__init__.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/interpretation/library.py +11 -4
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/interpretation/numerical.py +2 -3
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/interpretation/objects.py +6 -14
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/interpretation/strings.py +2 -2
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/language/__init__.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/language/python.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/model.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/models/RNTuple.py +284 -88
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/models/TArray.py +2 -1
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/models/TAtt.py +2 -5
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/models/TBasket.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/models/TBranch.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/models/TClonesArray.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/models/TDatime.py +2 -1
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/models/TGraph.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/models/TH.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/models/THashList.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/models/TLeaf.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/models/TList.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/models/TMatrixT.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/models/TNamed.py +2 -1
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/models/TObjArray.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/models/TObjString.py +3 -1
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/models/TObject.py +2 -1
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/models/TRef.py +2 -2
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/models/TString.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/models/TTable.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/models/TTime.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/models/TTree.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/pyroot.py +30 -19
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/reading.py +3 -5
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/serialization.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/source/chunk.py +4 -8
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/source/fsspec.py +4 -11
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/source/http.py +11 -3
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/source/xrootd.py +2 -2
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/streamers.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/version.py +2 -2
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/writing/__init__.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/writing/_cascade.py +1 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/writing/_cascadentuple.py +31 -1
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/writing/_cascadetree.py +33 -74
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/writing/identify.py +9 -6
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/writing/writable.py +27 -40
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0010_start_streamers.py +28 -56
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0011_generate_classes_from_streamers.py +2 -4
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0014_all_ttree_versions.py +1 -4
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0016_interpretations.py +16 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0406_write_a_ttree.py +1 -1
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0412_write_multidimensional_numpy_to_ttree.py +6 -6
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0420_pyroot_uproot_interoperability.py +21 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0916_read_from_s3.py +1 -1
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0962_rntuple_update.py +27 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1058_dask_awkward_report.py +1 -2
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1395_rntuple_writing_lists_and_structs.py +5 -1
- uproot-5.7.2/tests/test_1510_rntuple_v1010.py +96 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1556_default_rntuple_writing.py +23 -4
- uproot-5.7.2/tests/test_1573_out_of_bounds_slicing.py +142 -0
- uproot-5.7.2/tests/test_1589_rntuple_inheritance.py +116 -0
- uproot-5.7.2/tests/test_1591_rntuple_read_to_numpy.py +28 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests-cuda/test_0962_rntuple_update.py +4 -2
- {uproot-5.7.0 → uproot-5.7.2}/tests-cuda/test_1191_rntuple_fixes.py +1 -1
- {uproot-5.7.0 → uproot-5.7.2}/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/.github/dependabot.yml +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/.github/workflows/build-distributions.yml +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/.github/workflows/semantic-pr-title.yml +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/.gitignore +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/.readthedocs.yml +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/CITATION.cff +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/LICENSE +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/dev/custom-interpretation/README.md +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/dev/example-objects.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/docs-img/diagrams/abstraction-layers.png +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/docs-img/diagrams/abstraction-layers.svg +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/docs-img/diagrams/example-dask-graph.png +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/docs-img/diagrams/uproot-awkward-timeline.png +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/docs-img/diagrams/uproot-awkward-timeline.svg +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/docs-img/logo/logo-300px-white.png +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/docs-img/logo/logo-300px.png +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/docs-img/logo/logo-600px.png +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/docs-img/logo/logo.svg +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/docs-img/photos/switcheroo.jpg +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/docs-sphinx/_templates/breadcrumbs.html +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/docs-sphinx/conf.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/docs-sphinx/index.rst +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/docs-sphinx/requirements.txt +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/docs-sphinx/uproot3-to-4.rst +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/__init__.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/behaviors/__init__.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/interpretation/known_forth/atlas.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/models/__init__.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/sink/__init__.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/sink/file.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/source/__init__.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/source/coalesce.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/source/cufile_interface.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/source/cursor.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/source/file.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/source/futures.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/source/object.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/writing/_dask_write.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/src/uproot/writing/interpret.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/__init__.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/conftest.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/samples/h_dynamic.pkl +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0001_source_class.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0006_notify_when_downloaded.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0007_single_chunk_interface.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0008_start_interpretation.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0009_nested_directories.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0013_rntuple_anchor.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0017_multi_basket_multi_branch_fetch.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0018_array_fetching_interface.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0022_number_of_branches.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0023_more_interpretations_1.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0023_ttree_versions.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0028_fallback_to_read_streamer.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0029_more_string_types.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0031_test_stl_containers.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0033_more_interpretations_2.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0034_generic_objects_in_ttrees.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0035_datatype_generality.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0038_memberwise_serialization.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0043_iterate_function.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0044_concatenate_function.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0046_histograms_bh_hist.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0053_parents_should_not_be_bases.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0058_detach_model_objects_from_files.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0066_fix_http_fallback_freeze.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0067_common_entry_offsets.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0081_dont_parse_colons.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0087_memberwise_splitting_not_implemented_messages.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0088_read_with_http.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0099_read_from_file_object.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0112_fix_pandas_with_cut.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0118_fix_name_fetch_again.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0123_atlas_issues.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0126_turn_unknown_emptyarrays_into_known_types.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0167_use_the_common_histogram_interface.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0172_allow_allocators_in_vector_typenames.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0173_empty_and_multiprocessing_bugs.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0182_complain_about_missing_files.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0194_fix_lost_cuts_in_iterate.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0220_contiguous_byte_ranges_in_http.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0228_read_TProfiles.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0240_read_TGraphAsymmErrors.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0278_specializations_for_TParameter.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0302_pickle.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0303_empty_jagged_array.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0320_start_working_on_ROOT_writing.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0322_writablefile_infrastructure.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0329_update_existing_root_files.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0335_empty_ttree_division_by_zero.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0341_manipulate_streamer_info.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0344_writabledirectory_can_read.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0345_bulk_copy_method.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0349_write_TObjString.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0350_read_RooCurve_RooHist.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0351_write_TList.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0352_write_THashList.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0384_move_behavior_of_and_fix_383.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0398_dimensions_in_leaflist.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0405_write_a_histogram.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0407_read_TDatime.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0414_write_jagged_arrays.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0416_writing_compressed_data.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0418_read_TTable.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0422_hist_integration.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0430_global_index_for_tuples_of_DataFrames.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0438_TClonesArray_is_not_AsGrouped.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0439_check_awkward_before_numpy.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0442_regular_TClonesArray.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0472_tstreamerinfo_for_ttree.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0475_remember_to_update_freesegments.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0484_manually_add_model_for_TMatrixTSym_double_.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0487_implement_asdtypeinplace.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0498_create_leaf_branch_in_extend.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0519_remove_memmap_copy.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0520_dynamic_classes_cant_be_abc_subclasses.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0569_fBits_is_4_bytes.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0576_unicode_in_names.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0578_dask_for_numpy.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0580_round_trip_for_no_flow_histograms.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0589_explicitly_interpret_RVec_type.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0603_dask_delayed_open.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0609_num_enteries_func.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0610_awkward_form.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0630_rntuple_basics.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0637_setup_tests_for_AwkwardForth.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0643_reading_vector_pair_TLorentzVector_int.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0651_implement_transformed_axis.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0652_dask_for_awkward.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0662_rntuple_stl_containers.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0692_fsspec_reading.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0692_fsspec_writing.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0700_dask_empty_arrays.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0705_rntuple_writing_metadata.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0750_avoid_empty_TBasket_issue.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0755_dask_awkward_column_projection.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0791_protect_uproot_project_columns_from_dask_node_names.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0798_DAOD_PHYSLITE.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0808_fix_awkward_form_for_AsStridedObjects.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0816_separate_AwkwardForth_machines_by_TBranch.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0832_ak_add_doc_should_also_add_to_typetracer.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0840_support_tleafG.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0841_fix_814.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0844_fix_delete_hist_from_root.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0852_fix_strided_interp_extra_offsets.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0870_writing_arrays_of_type_unknown_fix_822.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0876_uproot_dask_blind_steps.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0886_fix_awkward_form_breadcrumbs.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0910_fix_906_members_non_numerical_branches.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0911_fix_interp_array_non_numerical_objs_issue_880.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0912_fix_pandas_and_double_nested_vectors_issue_885.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0927_dont_assume_uproot_in_global_scope_in_TPython_Eval.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0930_expressions_in_pandas.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0940_feat_add_TLeafC_string_support.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0965_inverted_axes_variances_hist_888.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_0976_path_object_split.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1000-write-TProfiles.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1043_const_std_string.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1063_dask_distributed.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1070_pandas_dataframe_building_performance_fix.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1085_dask_write.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1102_any_locks_in_models_must_be_transient.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1114_fix_attempt_to_concatenate_numpy_with_awkward.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1120_check_decompression_executor_pass_for_dask.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1127_fix_allow_colon_in_key_names.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1128_TGraph_writing.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1146_split_ranges_for_large_files_over_http.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1154_classof_using_relative_path.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1159_rntuple_cluster_groups.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1160_std_string_in_TDirectory.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1180_read_free_floating_vector_issue_1179.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1181_support_for_stl_list.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1182_add_support_for_bitset.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1183_ttime_custom.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1186_dtype_might_raise_ValueError.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1189_dask_failing_on_duplicate_keys.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1191_rntuple_fixes.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1198_coalesce.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1207_fix_title_of_TBranch_with_counter.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1212_dont_let_update_mess_up_file_version.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1221_AwkwardForth_bug.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1223_more_rntuple_types.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1229_const_in_typename.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1250_rntuple_improvements.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1254_test_threadpool_executor_for_dask.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1264_write_NumPy_array_of_strings.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1275_fix_TStreamerLoop_code_generation.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1282_add_known_forth_for_atlas.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1285_rntuple_multicluster_concatenation.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1318_dont_compare_big_endian_in_awkward.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1321_pandas_changed_api_again.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1347_rntuple_floats_suppressed_cols.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1356_basic_rntuple_writing.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1375_extend_ak_add_doc.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1393_TTree_virtual_arrays.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1406_improved_rntuple_methods.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1411_rntuple_physlite_ATLAS.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1412_rntuple_dask.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1465_ignorecase_extension.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1467_rntuple_akform_construction.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1476_rntuple_jagged_subfields.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1477_custom_interpretation.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1492_rntuple_hidden_keys.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1496_rntuple_write_index_arrays.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests/test_1503_rntuple_virtual_arrays.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests-cuda/test_0630_rntuple_basics.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests-cuda/test_0662_rntuple_stl_containers.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests-cuda/test_1159_rntuple_cluster_groups.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests-cuda/test_1223_more_rntuple_types.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests-cuda/test_1250_rntuple_improvements.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests-cuda/test_1285_rntuple_multicluster_concatenation.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests-cuda/test_1347_rntuple_floats_suppressed_cols.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests-cuda/test_1411_rntuple_physlite_ATLAS.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests-wasm/__init__.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests-wasm/test_1272_basic_functionality.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests-wasm/test_1365_awkwardforth_reading.py +0 -0
- {uproot-5.7.0 → uproot-5.7.2}/tests-wasm/utils.py +0 -0
|
@@ -668,6 +668,24 @@
|
|
|
668
668
|
"contributions": [
|
|
669
669
|
"doc"
|
|
670
670
|
]
|
|
671
|
+
},
|
|
672
|
+
{
|
|
673
|
+
"login": "wdconinc",
|
|
674
|
+
"name": "Wouter Deconinck",
|
|
675
|
+
"avatar_url": "https://avatars.githubusercontent.com/u/4656391?v=4",
|
|
676
|
+
"profile": "https://github.com/wdconinc",
|
|
677
|
+
"contributions": [
|
|
678
|
+
"code"
|
|
679
|
+
]
|
|
680
|
+
},
|
|
681
|
+
{
|
|
682
|
+
"login": "KaranSinghDev",
|
|
683
|
+
"name": "Karan Singh",
|
|
684
|
+
"avatar_url": "https://avatars.githubusercontent.com/u/102300776?v=4",
|
|
685
|
+
"profile": "https://github.com/KaranSinghDev",
|
|
686
|
+
"contributions": [
|
|
687
|
+
"code"
|
|
688
|
+
]
|
|
671
689
|
}
|
|
672
690
|
],
|
|
673
691
|
"contributorsPerLine": 7,
|
|
@@ -200,6 +200,73 @@ jobs:
|
|
|
200
200
|
run: |
|
|
201
201
|
pytest -vv --dist-dir=./pyodide-dist/ --runner=selenium --runtime=firefox tests-wasm
|
|
202
202
|
|
|
203
|
+
gpu-build:
|
|
204
|
+
strategy:
|
|
205
|
+
fail-fast: false
|
|
206
|
+
matrix:
|
|
207
|
+
cuda-version: [12, 13]
|
|
208
|
+
|
|
209
|
+
runs-on: self-hosted
|
|
210
|
+
timeout-minutes: 30
|
|
211
|
+
|
|
212
|
+
# Required for miniconda to activate conda
|
|
213
|
+
defaults:
|
|
214
|
+
run:
|
|
215
|
+
shell: bash -l {0}
|
|
216
|
+
|
|
217
|
+
steps:
|
|
218
|
+
- name: Clean the workspace and mamba
|
|
219
|
+
run: |
|
|
220
|
+
rm -rf * .[!.]* || echo "Nothing to clean"
|
|
221
|
+
rm -rf ~/micromamba* || echo "Nothing to clean"
|
|
222
|
+
|
|
223
|
+
- uses: actions/checkout@v6
|
|
224
|
+
|
|
225
|
+
- name: Get micromamba
|
|
226
|
+
uses: mamba-org/setup-micromamba@v2
|
|
227
|
+
with:
|
|
228
|
+
environment-name: test-env
|
|
229
|
+
init-shell: bash
|
|
230
|
+
create-args: >-
|
|
231
|
+
-c rapidsai
|
|
232
|
+
-c nvidia
|
|
233
|
+
python=3.13
|
|
234
|
+
cuda-version=${{ matrix.cuda-version }}
|
|
235
|
+
cuda-toolkit
|
|
236
|
+
cuda-python
|
|
237
|
+
cccl-python
|
|
238
|
+
cupy
|
|
239
|
+
kvikio
|
|
240
|
+
nvcomp
|
|
241
|
+
pytest-cov
|
|
242
|
+
${{ matrix.cuda-version == 13 && 'root' || '' }}
|
|
243
|
+
|
|
244
|
+
- name: Pip install the package
|
|
245
|
+
run: pip install --group=dev .
|
|
246
|
+
|
|
247
|
+
- name: Run only GPU tests
|
|
248
|
+
if: matrix.cuda-version != 13
|
|
249
|
+
run: |
|
|
250
|
+
python -m pytest -vv tests-cuda --reruns 10 --reruns-delay 30 --only-rerun "(?i)http|ssl|timeout|expired|connection|socket"
|
|
251
|
+
|
|
252
|
+
- name: Run full test suite and collect coverage
|
|
253
|
+
if: matrix.cuda-version == 13
|
|
254
|
+
run: |
|
|
255
|
+
python -m pytest -vv tests tests-cuda --reruns 10 --reruns-delay 30 --only-rerun "(?i)http|ssl|timeout|expired|connection|socket"\
|
|
256
|
+
--cov=uproot --cov-branch --cov-report=xml --junitxml=junit.xml -o junit_family=legacy
|
|
257
|
+
|
|
258
|
+
- name: Upload coverage reports to Codecov
|
|
259
|
+
if: matrix.cuda-version == 13
|
|
260
|
+
uses: codecov/codecov-action@v5
|
|
261
|
+
with:
|
|
262
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
263
|
+
|
|
264
|
+
- name: Upload test results to Codecov
|
|
265
|
+
if: ${{ !cancelled() }}
|
|
266
|
+
uses: codecov/test-results-action@v1
|
|
267
|
+
with:
|
|
268
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
269
|
+
|
|
203
270
|
pass:
|
|
204
271
|
if: always()
|
|
205
272
|
needs: [build, vanilla-build, numpy1-build, pyodide-build]
|
|
@@ -29,7 +29,7 @@ jobs:
|
|
|
29
29
|
contents: read
|
|
30
30
|
|
|
31
31
|
steps:
|
|
32
|
-
- uses: actions/download-artifact@
|
|
32
|
+
- uses: actions/download-artifact@v8
|
|
33
33
|
with:
|
|
34
34
|
name: Packages
|
|
35
35
|
path: dist
|
|
@@ -38,7 +38,7 @@ jobs:
|
|
|
38
38
|
run: ls -lha dist/
|
|
39
39
|
|
|
40
40
|
- name: Generate artifact attestation for sdist and wheel
|
|
41
|
-
uses: actions/attest-build-provenance@
|
|
41
|
+
uses: actions/attest-build-provenance@a2bbfa25375fe432b6a289bc6b6cd05ecd0c4c32 # v4.1.0
|
|
42
42
|
with:
|
|
43
43
|
subject-path: dist/uproot-*
|
|
44
44
|
|
|
@@ -19,18 +19,18 @@ repos:
|
|
|
19
19
|
- id: trailing-whitespace
|
|
20
20
|
|
|
21
21
|
- repo: https://github.com/psf/black-pre-commit-mirror
|
|
22
|
-
rev:
|
|
22
|
+
rev: 26.1.0
|
|
23
23
|
hooks:
|
|
24
24
|
- id: black
|
|
25
25
|
|
|
26
26
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
27
|
-
rev: v0.
|
|
27
|
+
rev: v0.15.4
|
|
28
28
|
hooks:
|
|
29
29
|
- id: ruff-check
|
|
30
30
|
args: [--fix, --show-fixes]
|
|
31
31
|
|
|
32
32
|
- repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks
|
|
33
|
-
rev: v2.
|
|
33
|
+
rev: v2.16.0
|
|
34
34
|
hooks:
|
|
35
35
|
- id: pretty-format-toml
|
|
36
36
|
args: [--autofix]
|
|
@@ -107,6 +107,23 @@ Some tests may depend on having ROOT or XRootD installed. These are covered in t
|
|
|
107
107
|
|
|
108
108
|
---
|
|
109
109
|
|
|
110
|
+
## 🤖 AI-assisted contributions
|
|
111
|
+
|
|
112
|
+
We welcome the use of AI tools as part of the development process. They can be valuable aids for drafting, refactoring, documentation, and exploration. However, contributions to Uproot require human judgment, contextual understanding, and familiarity with the project’s structure, goals, and standards.
|
|
113
|
+
|
|
114
|
+
When using AI tools:
|
|
115
|
+
|
|
116
|
+
* **You remain the author of the contribution.** Review, understand, and test all AI-assisted code or documentation before submitting it under your name. You should be able to explain and defend the changes on request.
|
|
117
|
+
* **Avoid fully automated submissions.** Issues or pull requests generated end-to-end by automated tools, without meaningful human review or intent, are not appropriate.
|
|
118
|
+
* **Be respectful of reviewers’ time.** Ensure that both the content of the PR and its description reflect your own understanding. Reviewers should not be expected to infer authorship or unknowingly interact with an AI during review.
|
|
119
|
+
* **Disclose significant AI assistance.** If AI tools were used for a substantial portion of the contribution, please note this in the PR description. (This guide is an example of that: we used ChatGPT to help with the writing, and in this comment, we acknowledge that fact.)
|
|
120
|
+
|
|
121
|
+
Contributors are responsible for the correctness, maintainability, and long-term impact of all submitted changes, regardless of whether AI tools were used.
|
|
122
|
+
|
|
123
|
+
Pull requests that do not meet these expectations may be closed without review.
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
110
127
|
## 🐛 Reporting Bugs
|
|
111
128
|
|
|
112
129
|
1. Check if the bug is already reported on the [issue tracker](https://github.com/scikit-hep/uproot/issues).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: uproot
|
|
3
|
-
Version: 5.7.
|
|
3
|
+
Version: 5.7.2
|
|
4
4
|
Summary: ROOT I/O in pure Python and NumPy.
|
|
5
5
|
Project-URL: Download, https://github.com/scikit-hep/uproot5/releases
|
|
6
6
|
Project-URL: Homepage, https://github.com/scikit-hep/uproot5
|
|
@@ -31,15 +31,17 @@ Classifier: Topic :: Utilities
|
|
|
31
31
|
Requires-Python: >=3.10
|
|
32
32
|
Requires-Dist: awkward>=2.8.2
|
|
33
33
|
Requires-Dist: cramjam>=2.5.0
|
|
34
|
-
Requires-Dist: fsspec!=
|
|
34
|
+
Requires-Dist: fsspec!=2026.2.0
|
|
35
35
|
Requires-Dist: numpy
|
|
36
36
|
Requires-Dist: packaging
|
|
37
37
|
Requires-Dist: typing-extensions>=4.1.0; python_version < '3.11'
|
|
38
38
|
Requires-Dist: xxhash
|
|
39
|
-
Provides-Extra: gds-cu11
|
|
40
|
-
Requires-Dist: kvikio-cu11>=25.02.01; extra == 'gds-cu11'
|
|
41
39
|
Provides-Extra: gds-cu12
|
|
42
|
-
Requires-Dist: kvikio-cu12
|
|
40
|
+
Requires-Dist: kvikio-cu12; extra == 'gds-cu12'
|
|
41
|
+
Requires-Dist: nvidia-nvcomp-cu12; extra == 'gds-cu12'
|
|
42
|
+
Provides-Extra: gds-cu13
|
|
43
|
+
Requires-Dist: kvikio-cu13; extra == 'gds-cu13'
|
|
44
|
+
Requires-Dist: nvidia-nvcomp-cu13; extra == 'gds-cu13'
|
|
43
45
|
Provides-Extra: http
|
|
44
46
|
Requires-Dist: aiohttp; extra == 'http'
|
|
45
47
|
Provides-Extra: s3
|
|
@@ -115,20 +117,10 @@ If you need to develop Awkward Array as well, see its [installation for develope
|
|
|
115
117
|
|
|
116
118
|
# Dependencies
|
|
117
119
|
|
|
118
|
-
**Uproot's only strict dependencies are NumPy
|
|
119
|
-
|
|
120
|
-
**[Awkward Array](https://anaconda.org/conda-forge/awkward) is highly recommended** and is automatically installed by pip (or conda), though it is _possible_ to use Uproot without it. If you need a minimal installation, pass `--no-deps` to pip and pass `library="np"` to every array-fetching function, or globally set `uproot.default_library` to get NumPy arrays instead of Awkward Arrays.
|
|
121
|
-
|
|
122
|
-
* `awkward`: Uproot 5.x requires Awkward 2.x.
|
|
120
|
+
**Uproot's only strict dependencies are Awkward, Cramjam, xxhash, fsspec, NumPy, packaging.** Strict dependencies are automatically installed by pip (or conda).
|
|
123
121
|
|
|
124
122
|
The following libraries are also useful in conjunction with Uproot, but are not necessary. If you call a function that needs one, you'll be prompted to install it. (Conda installs most of these automatically.)
|
|
125
123
|
|
|
126
|
-
**For ROOT files, compressed different ways:**
|
|
127
|
-
|
|
128
|
-
* `lz4` and `xxhash`: if reading ROOT files that have been LZ4-compressed.
|
|
129
|
-
* `zstandard`: if reading ROOT files that have been ZSTD-compressed.
|
|
130
|
-
* ZLIB and LZMA are built in (Python standard library).
|
|
131
|
-
|
|
132
124
|
**For accessing remote files:**
|
|
133
125
|
|
|
134
126
|
* `s3fs`: if reading files with `s3://` URIs.
|
|
@@ -255,6 +247,8 @@ Thanks especially to the gracious help of Uproot contributors (including the [or
|
|
|
255
247
|
<tr>
|
|
256
248
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ianna"><img src="https://avatars.githubusercontent.com/u/1390682?v=4?s=100" width="100px;" alt="Ianna Osborne"/><br /><sub><b>Ianna Osborne</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=ianna" title="Code">💻</a></td>
|
|
257
249
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Rachit931"><img src="https://avatars.githubusercontent.com/u/199397286?v=4?s=100" width="100px;" alt="Rachit931"/><br /><sub><b>Rachit931</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=Rachit931" title="Documentation">📖</a></td>
|
|
250
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wdconinc"><img src="https://avatars.githubusercontent.com/u/4656391?v=4?s=100" width="100px;" alt="Wouter Deconinck"/><br /><sub><b>Wouter Deconinck</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=wdconinc" title="Code">💻</a></td>
|
|
251
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/KaranSinghDev"><img src="https://avatars.githubusercontent.com/u/102300776?v=4?s=100" width="100px;" alt="Karan Singh"/><br /><sub><b>Karan Singh</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=KaranSinghDev" title="Code">💻</a></td>
|
|
258
252
|
</tr>
|
|
259
253
|
</tbody>
|
|
260
254
|
</table>
|
|
@@ -65,20 +65,10 @@ If you need to develop Awkward Array as well, see its [installation for develope
|
|
|
65
65
|
|
|
66
66
|
# Dependencies
|
|
67
67
|
|
|
68
|
-
**Uproot's only strict dependencies are NumPy
|
|
69
|
-
|
|
70
|
-
**[Awkward Array](https://anaconda.org/conda-forge/awkward) is highly recommended** and is automatically installed by pip (or conda), though it is _possible_ to use Uproot without it. If you need a minimal installation, pass `--no-deps` to pip and pass `library="np"` to every array-fetching function, or globally set `uproot.default_library` to get NumPy arrays instead of Awkward Arrays.
|
|
71
|
-
|
|
72
|
-
* `awkward`: Uproot 5.x requires Awkward 2.x.
|
|
68
|
+
**Uproot's only strict dependencies are Awkward, Cramjam, xxhash, fsspec, NumPy, packaging.** Strict dependencies are automatically installed by pip (or conda).
|
|
73
69
|
|
|
74
70
|
The following libraries are also useful in conjunction with Uproot, but are not necessary. If you call a function that needs one, you'll be prompted to install it. (Conda installs most of these automatically.)
|
|
75
71
|
|
|
76
|
-
**For ROOT files, compressed different ways:**
|
|
77
|
-
|
|
78
|
-
* `lz4` and `xxhash`: if reading ROOT files that have been LZ4-compressed.
|
|
79
|
-
* `zstandard`: if reading ROOT files that have been ZSTD-compressed.
|
|
80
|
-
* ZLIB and LZMA are built in (Python standard library).
|
|
81
|
-
|
|
82
72
|
**For accessing remote files:**
|
|
83
73
|
|
|
84
74
|
* `s3fs`: if reading files with `s3://` URIs.
|
|
@@ -205,6 +195,8 @@ Thanks especially to the gracious help of Uproot contributors (including the [or
|
|
|
205
195
|
<tr>
|
|
206
196
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ianna"><img src="https://avatars.githubusercontent.com/u/1390682?v=4?s=100" width="100px;" alt="Ianna Osborne"/><br /><sub><b>Ianna Osborne</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=ianna" title="Code">💻</a></td>
|
|
207
197
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Rachit931"><img src="https://avatars.githubusercontent.com/u/199397286?v=4?s=100" width="100px;" alt="Rachit931"/><br /><sub><b>Rachit931</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=Rachit931" title="Documentation">📖</a></td>
|
|
198
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wdconinc"><img src="https://avatars.githubusercontent.com/u/4656391?v=4?s=100" width="100px;" alt="Wouter Deconinck"/><br /><sub><b>Wouter Deconinck</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=wdconinc" title="Code">💻</a></td>
|
|
199
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/KaranSinghDev"><img src="https://avatars.githubusercontent.com/u/102300776?v=4?s=100" width="100px;" alt="Karan Singh"/><br /><sub><b>Karan Singh</b></sub></a><br /><a href="https://github.com/scikit-hep/uproot5/commits?author=KaranSinghDev" title="Code">💻</a></td>
|
|
208
200
|
</tr>
|
|
209
201
|
</tbody>
|
|
210
202
|
</table>
|
uproot-5.7.2/codecov.yml
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
codecov:
|
|
2
|
+
require_ci_to_pass: true
|
|
3
|
+
|
|
4
|
+
comment:
|
|
5
|
+
layout: files
|
|
6
|
+
|
|
7
|
+
coverage:
|
|
8
|
+
status:
|
|
9
|
+
project:
|
|
10
|
+
default:
|
|
11
|
+
# 'auto' sets the target to our current coverage %
|
|
12
|
+
# 'threshold' allows a tiny 0.5% drop to prevent "flaky" failures
|
|
13
|
+
target: auto
|
|
14
|
+
threshold: 0.5%
|
|
15
|
+
patch:
|
|
16
|
+
default:
|
|
17
|
+
# Ensures 98% of NEW code added in the PR is covered
|
|
18
|
+
target: 98%
|
|
19
|
+
threshold: 0%
|
|
20
|
+
|
|
21
|
+
github_checks:
|
|
22
|
+
annotations: false
|
|
@@ -70,8 +70,7 @@ with uproot.open("example-objects.root") as f:
|
|
|
70
70
|
for classname, class_version in superclasses:
|
|
71
71
|
cls = f.file.class_named(classname, class_version)
|
|
72
72
|
print(cls.class_code)
|
|
73
|
-
print(
|
|
74
|
-
f"""
|
|
73
|
+
print(f"""
|
|
75
74
|
writable = True
|
|
76
75
|
|
|
77
76
|
def _serialize(self, out, header, name):
|
|
@@ -90,16 +89,13 @@ class {uproot.model.classname_encode(classname)}(uproot.model.DispatchByVersion)
|
|
|
90
89
|
\"\"\"
|
|
91
90
|
|
|
92
91
|
known_versions = {{{class_version}: {cls.__name__}}}
|
|
93
|
-
"""
|
|
94
|
-
)
|
|
92
|
+
""")
|
|
95
93
|
|
|
96
94
|
for key in keys:
|
|
97
95
|
obj = f[key]
|
|
98
96
|
print(type(obj).class_code)
|
|
99
|
-
print(
|
|
100
|
-
|
|
101
|
-
class_rawstreamers = ("""
|
|
102
|
-
)
|
|
97
|
+
print("""
|
|
98
|
+
class_rawstreamers = (""")
|
|
103
99
|
for streamer_name, streamer_version in f.file.streamer_dependencies(
|
|
104
100
|
obj.classname, obj.class_version
|
|
105
101
|
):
|
|
@@ -110,16 +106,13 @@ class {uproot.model.classname_encode(classname)}(uproot.model.DispatchByVersion)
|
|
|
110
106
|
).tobytes()
|
|
111
107
|
preamble = b"\xff\xff\xff\xffTStreamerInfo\x00"
|
|
112
108
|
full = header + preamble + inner + b"\x00"
|
|
113
|
-
print(
|
|
114
|
-
f""" uproot._writing.RawStreamerInfo(
|
|
109
|
+
print(f""" uproot._writing.RawStreamerInfo(
|
|
115
110
|
None,
|
|
116
111
|
{full},
|
|
117
112
|
{streamer_name!r},
|
|
118
113
|
{streamer_version},
|
|
119
|
-
),"""
|
|
120
|
-
|
|
121
|
-
print(
|
|
122
|
-
f""" )
|
|
114
|
+
),""")
|
|
115
|
+
print(f""" )
|
|
123
116
|
writable = True
|
|
124
117
|
|
|
125
118
|
def _serialize(self, out, header, name):
|
|
@@ -131,19 +124,16 @@ class {uproot.model.classname_encode(classname)}(uproot.model.DispatchByVersion)
|
|
|
131
124
|
num_bytes = sum(len(x) for x in out[where:])
|
|
132
125
|
version = {obj.class_version}
|
|
133
126
|
out.insert(where, uproot.serialization.numbytes_version(num_bytes, version))
|
|
134
|
-
"""
|
|
135
|
-
)
|
|
127
|
+
""")
|
|
136
128
|
|
|
137
|
-
print(
|
|
138
|
-
f"""
|
|
129
|
+
print(f"""
|
|
139
130
|
class {uproot.model.classname_encode(obj.classname)}(uproot.model.DispatchByVersion):
|
|
140
131
|
\"\"\"
|
|
141
132
|
A :doc:`uproot.model.DispatchByVersion` for ``{obj.classname}``.
|
|
142
133
|
\"\"\"
|
|
143
134
|
|
|
144
135
|
known_versions = {{{obj.class_version}: {type(obj).__name__}}}
|
|
145
|
-
"""
|
|
146
|
-
)
|
|
136
|
+
""")
|
|
147
137
|
|
|
148
138
|
for classname, _ in superclasses:
|
|
149
139
|
print(
|
|
@@ -965,6 +965,28 @@ Note that for the last input we used the ``filter_field`` argument instead of ``
|
|
|
965
965
|
|
|
966
966
|
There are still significant work required to achieve feature-parity with TTrees, but all the basic functionality is already implemented. We will continue to make the transition to RNTuples as seamless as possible.
|
|
967
967
|
|
|
968
|
+
GPU reading with CUDA support
|
|
969
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
970
|
+
Uproot supports GPU-based reading and processing of payload data on CUDA-capable GPUs for CUDA major versions 12 and 13. On systems that support GPU Direct Storage (GDS), raw payload data can be transferred directly from storage into GPU memory without a CPU bounce buffer. File metadata is still read by the CPU in both cases. GPU reading over HTTP is not supported.
|
|
971
|
+
|
|
972
|
+
For GPU reading of RNTuple data, the values ``backend="cuda"`` and ``interpreter="gpu"`` must be passed to ``RNTuple.arrays()``.
|
|
973
|
+
|
|
974
|
+
.. code-block:: python
|
|
975
|
+
|
|
976
|
+
>>> rntuple = uproot.open("ntpl001_staff_rntuple_v1-0-0-0.root:Staff")
|
|
977
|
+
>>> rntuple["Age"].array(backend="cuda", interpreter="gpu")
|
|
978
|
+
<Array [58, 63, 56, 61, 52, 60, ..., 51, 25, 35, 28, 43] type='3354 * int32'>
|
|
979
|
+
>>> rntuple.arrays(["Age", "Cost", "Nation"], backend="cuda", interpreter="gpu")
|
|
980
|
+
<Array [{Age: 58, Cost: 11975, ...}, ...] type='3354 * {Age: int32, Cost: i...'>
|
|
981
|
+
|
|
982
|
+
Uproot uses the ``kvikio`` library to perform GPU-efficient I/O using CuFile and POSIX APIs. ``kvikio`` provides runtime settings that can be configured, documented `here <https://docs.rapids.ai/api/kvikio/stable/runtime_settings/#>`__.
|
|
983
|
+
|
|
984
|
+
By default, ``KVIKIO_NTHREADS`` is 1. Increasing this value can improve I/O performance by allowing multiple threads to perform I/O concurrently (up to a system-dependent limit).
|
|
985
|
+
|
|
986
|
+
.. code-block:: python
|
|
987
|
+
|
|
988
|
+
>>> kvikio.defaults.set({"num_threads": 5})
|
|
989
|
+
|
|
968
990
|
Opening a file for writing
|
|
969
991
|
--------------------------
|
|
970
992
|
|
|
@@ -203,8 +203,7 @@ with open("changelog.rst", "w") as outfile:
|
|
|
203
203
|
|
|
204
204
|
first = False
|
|
205
205
|
|
|
206
|
-
outfile.write(
|
|
207
|
-
"""
|
|
206
|
+
outfile.write("""
|
|
208
207
|
Earlier releases
|
|
209
208
|
================
|
|
210
209
|
|
|
@@ -217,5 +216,4 @@ This was to allow users to transition from Awkward Array 0.x and Uproot 3.x, whi
|
|
|
217
216
|
|
|
218
217
|
.. image:: https://raw.githubusercontent.com/scikit-hep/uproot5/main/docs-img/diagrams/uproot-awkward-timeline.png
|
|
219
218
|
:width: 100%
|
|
220
|
-
"""
|
|
221
|
-
)
|
|
219
|
+
""")
|
|
@@ -74,23 +74,17 @@ latest_commit = (
|
|
|
74
74
|
)
|
|
75
75
|
|
|
76
76
|
main = open("main.toctree", "w")
|
|
77
|
-
main.write(
|
|
78
|
-
""".. toctree::
|
|
77
|
+
main.write(""".. toctree::
|
|
79
78
|
:caption: Main Interface
|
|
80
79
|
:hidden:
|
|
81
80
|
|
|
82
|
-
{}""".format(
|
|
83
|
-
"".join(f" {x}\n" for x in common)
|
|
84
|
-
)
|
|
85
|
-
)
|
|
81
|
+
{}""".format("".join(f" {x}\n" for x in common)))
|
|
86
82
|
toctree = open("uproot.toctree", "w")
|
|
87
|
-
toctree.write(
|
|
88
|
-
""".. toctree::
|
|
83
|
+
toctree.write(""".. toctree::
|
|
89
84
|
:caption: Detailed Reference
|
|
90
85
|
:hidden:
|
|
91
86
|
|
|
92
|
-
"""
|
|
93
|
-
)
|
|
87
|
+
""")
|
|
94
88
|
toctree2 = None
|
|
95
89
|
|
|
96
90
|
|
|
@@ -115,9 +109,7 @@ def handle_module(modulename, module):
|
|
|
115
109
|
{1}
|
|
116
110
|
|
|
117
111
|
.. automodule:: {0}
|
|
118
|
-
""".format(
|
|
119
|
-
modulename, "=" * len(modulename)
|
|
120
|
-
)
|
|
112
|
+
""".format(modulename, "=" * len(modulename))
|
|
121
113
|
ensure(modulename + ".rst", content)
|
|
122
114
|
if toctree2 is None:
|
|
123
115
|
toctree.write(" " + modulename + " (module) <" + modulename + ">\n")
|
|
@@ -241,13 +233,9 @@ def handle_class(classname, cls):
|
|
|
241
233
|
+-{}-+
|
|
242
234
|
| **Inheritance order:** {}|
|
|
243
235
|
+={}=+
|
|
244
|
-
| """.format(
|
|
245
|
-
"-" * longest_cell, " " * (longest_cell - 22), "=" * longest_cell
|
|
246
|
-
)
|
|
236
|
+
| """.format("-" * longest_cell, " " * (longest_cell - 22), "=" * longest_cell)
|
|
247
237
|
inheritance_footer = """ |
|
|
248
|
-
+-{}-+""".format(
|
|
249
|
-
"-" * longest_cell
|
|
250
|
-
)
|
|
238
|
+
+-{}-+""".format("-" * longest_cell)
|
|
251
239
|
inheritance = [x + " " * (longest_cell - len(x)) for x in inheritance]
|
|
252
240
|
inheritance_sep = """ |
|
|
253
241
|
| """
|
|
@@ -304,9 +292,7 @@ def handle_function(functionname, cls):
|
|
|
304
292
|
Defined in {} on {}.
|
|
305
293
|
|
|
306
294
|
.. autofunction:: {}
|
|
307
|
-
""".format(
|
|
308
|
-
title, "=" * len(title), link, linelink, functionname
|
|
309
|
-
)
|
|
295
|
+
""".format(title, "=" * len(title), link, linelink, functionname)
|
|
310
296
|
ensure(functionname + ".rst", content)
|
|
311
297
|
if upfront or toctree2 is None:
|
|
312
298
|
if functionname not in common:
|
|
@@ -321,15 +307,11 @@ for modulename in order:
|
|
|
321
307
|
|
|
322
308
|
if modulename != "uproot":
|
|
323
309
|
toctree2 = open(modulename + ".toctree", "w")
|
|
324
|
-
toctree2.write(
|
|
325
|
-
""".. toctree::
|
|
310
|
+
toctree2.write(""".. toctree::
|
|
326
311
|
:caption: {}
|
|
327
312
|
:hidden:
|
|
328
313
|
|
|
329
|
-
""".format(
|
|
330
|
-
modulename.replace("uproot.", "")
|
|
331
|
-
)
|
|
332
|
-
)
|
|
314
|
+
""".format(modulename.replace("uproot.", "")))
|
|
333
315
|
|
|
334
316
|
handle_module(modulename, module)
|
|
335
317
|
if module.__file__.endswith("__init__.py") and modulename != "uproot":
|
|
@@ -35,8 +35,14 @@ test-core = [
|
|
|
35
35
|
"pytest>=6",
|
|
36
36
|
"scikit-hep-testdata"
|
|
37
37
|
]
|
|
38
|
-
test-gpu = [
|
|
39
|
-
"kvikio-cu12
|
|
38
|
+
test-gpu-cu12 = [
|
|
39
|
+
"kvikio-cu12",
|
|
40
|
+
"nvidia-nvcomp-cu12",
|
|
41
|
+
{include-group = "test-core"}
|
|
42
|
+
]
|
|
43
|
+
test-gpu-cu13 = [
|
|
44
|
+
"kvikio-cu13",
|
|
45
|
+
"nvidia-nvcomp-cu13",
|
|
40
46
|
{include-group = "test-core"}
|
|
41
47
|
]
|
|
42
48
|
test-pyodide = [
|
|
@@ -76,7 +82,7 @@ dependencies = [
|
|
|
76
82
|
"cramjam>=2.5.0",
|
|
77
83
|
"xxhash",
|
|
78
84
|
"numpy",
|
|
79
|
-
"fsspec!=
|
|
85
|
+
"fsspec!=2026.2.0",
|
|
80
86
|
"packaging",
|
|
81
87
|
"typing_extensions>=4.1.0; python_version < '3.11'"
|
|
82
88
|
]
|
|
@@ -90,11 +96,13 @@ readme = "README.md"
|
|
|
90
96
|
requires-python = ">=3.10"
|
|
91
97
|
|
|
92
98
|
[project.optional-dependencies]
|
|
93
|
-
|
|
94
|
-
"kvikio-
|
|
99
|
+
gds-cu12 = [
|
|
100
|
+
"kvikio-cu12",
|
|
101
|
+
"nvidia-nvcomp-cu12"
|
|
95
102
|
]
|
|
96
|
-
|
|
97
|
-
"kvikio-
|
|
103
|
+
gds-cu13 = [
|
|
104
|
+
"kvikio-cu13",
|
|
105
|
+
"nvidia-nvcomp-cu13"
|
|
98
106
|
]
|
|
99
107
|
http = ["aiohttp"]
|
|
100
108
|
s3 = ["s3fs"]
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
"""
|
|
4
4
|
This module defines utilities for adding components to the forth reader.
|
|
5
5
|
"""
|
|
6
|
+
|
|
6
7
|
from __future__ import annotations
|
|
7
8
|
|
|
8
9
|
import json
|
|
@@ -165,10 +166,10 @@ class Node:
|
|
|
165
166
|
if len(self._children) != 0:
|
|
166
167
|
children = "\n" + indent + " " + children + "\n" + indent
|
|
167
168
|
return f"""Node({self._name!r},
|
|
168
|
-
{indent} pre={
|
|
169
|
-
{indent} post={
|
|
170
|
-
{indent} init={
|
|
171
|
-
{indent} header={
|
|
169
|
+
{indent} pre={"".join(self._pre_code)!r},
|
|
170
|
+
{indent} post={"".join(self._post_code)!r},
|
|
171
|
+
{indent} init={"".join(self._init_code)!r},
|
|
172
|
+
{indent} header={"".join(self._header_code)!r},
|
|
172
173
|
{indent} form_details={json.dumps(self._form_details)},
|
|
173
174
|
{indent} field_name={self._field_name!r},
|
|
174
175
|
{indent} children=[{children}])"""
|