uproot 5.3.2__tar.gz → 5.3.3__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.2 → uproot-5.3.3}/.github/workflows/build-test.yml +24 -0
- {uproot-5.3.2 → uproot-5.3.3}/.pre-commit-config.yaml +3 -3
- {uproot-5.3.2 → uproot-5.3.3}/PKG-INFO +1 -1
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/_dask.py +5 -1
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/_util.py +3 -1
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/behaviors/TBranch.py +22 -2
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/containers.py +76 -2
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/interpretation/identify.py +1 -1
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/interpretation/numerical.py +1 -1
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/source/cursor.py +1 -1
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/streamers.py +1 -1
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/version.py +2 -2
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0692_fsspec_reading.py +9 -8
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0692_fsspec_writing.py +13 -6
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_1070_pandas_dataframe_building_performance_fix.py +4 -1
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_1120_check_decompression_executor_pass_for_dask.py +4 -1
- uproot-5.3.3/tests/test_1182_add_support_for_bitset.py +40 -0
- uproot-5.3.3/tests/test_1189_dask_failing_on_duplicate_keys.py +24 -0
- {uproot-5.3.2 → uproot-5.3.3}/.all-contributorsrc +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/.github/dependabot.yml +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/.github/workflows/build-distributions.yml +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/.github/workflows/deploy.yml +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/.github/workflows/semantic-pr-title.yml +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/.github/workflows/upload-nightly-wheels.yml +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/.gitignore +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/.readthedocs.yml +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/CITATION.cff +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/LICENSE +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/README.md +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/dev/example-objects.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/dev/make-models.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/docs-img/diagrams/abstraction-layers.png +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/docs-img/diagrams/abstraction-layers.svg +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/docs-img/diagrams/example-dask-graph.png +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/docs-img/diagrams/uproot-awkward-timeline.png +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/docs-img/diagrams/uproot-awkward-timeline.svg +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/docs-img/logo/logo-300px-white.png +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/docs-img/logo/logo-300px.png +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/docs-img/logo/logo-600px.png +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/docs-img/logo/logo.svg +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/docs-img/photos/switcheroo.jpg +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/docs-sphinx/_templates/breadcrumbs.html +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/docs-sphinx/basic.rst +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/docs-sphinx/conf.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/docs-sphinx/index.rst +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/docs-sphinx/make_changelog.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/docs-sphinx/prepare_docstrings.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/docs-sphinx/requirements.txt +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/docs-sphinx/uproot3-to-4.rst +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/pyproject.toml +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/__init__.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/_awkwardforth.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/behavior.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/behaviors/RooCurve.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/behaviors/RooHist.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/behaviors/TAxis.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/behaviors/TBranchElement.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/behaviors/TDatime.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/behaviors/TGraph.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/behaviors/TGraphAsymmErrors.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/behaviors/TGraphErrors.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/behaviors/TH1.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/behaviors/TH2.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/behaviors/TH2Poly.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/behaviors/TH3.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/behaviors/TParameter.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/behaviors/TProfile.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/behaviors/TProfile2D.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/behaviors/TProfile3D.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/behaviors/TTree.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/behaviors/__init__.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/cache.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/compression.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/const.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/deserialization.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/dynamic.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/exceptions.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/extras.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/interpretation/__init__.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/interpretation/grouped.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/interpretation/jagged.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/interpretation/library.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/interpretation/objects.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/interpretation/strings.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/language/__init__.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/language/python.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/model.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/models/RNTuple.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/models/TArray.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/models/TAtt.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/models/TBasket.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/models/TBranch.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/models/TClonesArray.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/models/TDatime.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/models/TGraph.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/models/TH.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/models/THashList.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/models/TLeaf.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/models/TList.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/models/TMatrixT.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/models/TNamed.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/models/TObjArray.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/models/TObjString.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/models/TObject.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/models/TRef.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/models/TString.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/models/TTable.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/models/TTime.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/models/TTree.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/models/__init__.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/pyroot.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/reading.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/serialization.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/sink/__init__.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/sink/file.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/source/__init__.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/source/chunk.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/source/file.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/source/fsspec.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/source/futures.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/source/http.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/source/object.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/source/s3.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/source/xrootd.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/writing/__init__.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/writing/_cascade.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/writing/_cascadentuple.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/writing/_cascadetree.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/writing/_dask_write.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/writing/identify.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/src/uproot/writing/writable.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/__init__.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/conftest.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/samples/h_dynamic.pkl +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0001_source_class.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0006_notify_when_downloaded.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0007_single_chunk_interface.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0008_start_interpretation.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0009_nested_directories.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0010_start_streamers.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0011_generate_classes_from_streamers.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0013_rntuple_anchor.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0014_all_ttree_versions.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0016_interpretations.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0017_multi_basket_multi_branch_fetch.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0018_array_fetching_interface.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0022_number_of_branches.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0023_more_interpretations_1.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0023_ttree_versions.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0028_fallback_to_read_streamer.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0029_more_string_types.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0031_test_stl_containers.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0033_more_interpretations_2.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0034_generic_objects_in_ttrees.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0035_datatype_generality.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0038_memberwise_serialization.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0043_iterate_function.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0044_concatenate_function.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0046_histograms_bh_hist.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0053_parents_should_not_be_bases.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0058_detach_model_objects_from_files.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0066_fix_http_fallback_freeze.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0067_common_entry_offsets.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0081_dont_parse_colons.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0087_memberwise_splitting_not_implemented_messages.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0088_read_with_http.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0099_read_from_file_object.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0112_fix_pandas_with_cut.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0118_fix_name_fetch_again.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0123_atlas_issues.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0126_turn_unknown_emptyarrays_into_known_types.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0167_use_the_common_histogram_interface.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0172_allow_allocators_in_vector_typenames.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0173_empty_and_multiprocessing_bugs.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0182_complain_about_missing_files.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0194_fix_lost_cuts_in_iterate.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0220_contiguous_byte_ranges_in_http.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0228_read_TProfiles.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0240_read_TGraphAsymmErrors.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0278_specializations_for_TParameter.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0302_pickle.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0303_empty_jagged_array.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0320_start_working_on_ROOT_writing.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0322_writablefile_infrastructure.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0329_update_existing_root_files.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0335_empty_ttree_division_by_zero.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0341_manipulate_streamer_info.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0344_writabledirectory_can_read.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0345_bulk_copy_method.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0349_write_TObjString.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0350_read_RooCurve_RooHist.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0351_write_TList.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0352_write_THashList.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0384_move_behavior_of_and_fix_383.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0398_dimensions_in_leaflist.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0405_write_a_histogram.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0406_write_a_ttree.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0407_read_TDatime.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0412_write_multidimensional_numpy_to_ttree.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0414_write_jagged_arrays.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0416_writing_compressed_data.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0418_read_TTable.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0420_pyroot_uproot_interoperability.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0422_hist_integration.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0430_global_index_for_tuples_of_DataFrames.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0438_TClonesArray_is_not_AsGrouped.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0439_check_awkward_before_numpy.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0442_regular_TClonesArray.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0472_tstreamerinfo_for_ttree.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0475_remember_to_update_freesegments.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0484_manually_add_model_for_TMatrixTSym_double_.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0487_implement_asdtypeinplace.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0498_create_leaf_branch_in_extend.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0519_remove_memmap_copy.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0520_dynamic_classes_cant_be_abc_subclasses.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0569_fBits_is_4_bytes.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0576_unicode_in_names.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0578_dask_for_numpy.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0580_round_trip_for_no_flow_histograms.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0589_explicitly_interpret_RVec_type.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0603_dask_delayed_open.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0609_num_enteries_func.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0610_awkward_form.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0630_rntuple_basics.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0637_setup_tests_for_AwkwardForth.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0643_reading_vector_pair_TLorentzVector_int.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0651_implement_transformed_axis.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0652_dask_for_awkward.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0662_rntuple_stl_containers.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0700_dask_empty_arrays.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0705_rntuple_writing_metadata.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0750_avoid_empty_TBasket_issue.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0755_dask_awkward_column_projection.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0791_protect_uproot_project_columns_from_dask_node_names.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0798_DAOD_PHYSLITE.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0808_fix_awkward_form_for_AsStridedObjects.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0816_separate_AwkwardForth_machines_by_TBranch.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0832_ak_add_doc_should_also_add_to_typetracer.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0840_support_tleafG.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0841_fix_814.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0844_fix_delete_hist_from_root.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0852_fix_strided_interp_extra_offsets.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0870_writing_arrays_of_type_unknown_fix_822.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0876_uproot_dask_blind_steps.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0886_fix_awkward_form_breadcrumbs.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0910_fix_906_members_non_numerical_branches.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0911_fix_interp_array_non_numerical_objs_issue_880.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0912_fix_pandas_and_double_nested_vectors_issue_885.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0916_read_from_s3.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0927_dont_assume_uproot_in_global_scope_in_TPython_Eval.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0930_expressions_in_pandas.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0940_feat_add_TLeafC_string_support.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0962_RNTuple_update.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0965_inverted_axes_variances_hist_888.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_0976_path_object_split.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_1000-write-TProfiles.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_1043_const_std_string.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_1058_dask_awkward_report.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_1063_dask_distributed.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_1085_dask_write.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_1102_any_locks_in_models_must_be_transient.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_1114_fix_attempt_to_concatenate_numpy_with_awkward.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_1127_fix_allow_colon_in_key_names.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_1146_split_ranges_for_large_files_over_http.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_1154_classof_using_relative_path.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_1160_std_string_in_TDirectory.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_1180_read_free_floating_vector_issue_1179.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_1181_support_for_stl_list.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_1183_ttime_custom.py +0 -0
- {uproot-5.3.2 → uproot-5.3.3}/tests/test_1186_dtype_might_raise_ValueError.py +0 -0
|
@@ -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
|
|
@@ -23,7 +23,7 @@ repos:
|
|
|
23
23
|
- id: black
|
|
24
24
|
|
|
25
25
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
26
|
-
rev: v0.3.
|
|
26
|
+
rev: v0.3.5
|
|
27
27
|
hooks:
|
|
28
28
|
- id: ruff
|
|
29
29
|
args: [--fix, --show-fixes]
|
|
@@ -36,7 +36,7 @@ repos:
|
|
|
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]
|
|
@@ -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:
|
|
@@ -747,6 +748,7 @@ def _get_dask_array_delay_open(
|
|
|
747
748
|
filter_typename=filter_typename,
|
|
748
749
|
filter_branch=filter_branch,
|
|
749
750
|
full_paths=full_paths,
|
|
751
|
+
ignore_duplicates=True,
|
|
750
752
|
)
|
|
751
753
|
|
|
752
754
|
dask_dict = {}
|
|
@@ -1441,6 +1443,7 @@ def _get_dak_array(
|
|
|
1441
1443
|
filter_typename=filter_typename,
|
|
1442
1444
|
filter_branch=real_filter_branch,
|
|
1443
1445
|
full_paths=full_paths,
|
|
1446
|
+
ignore_duplicates=True,
|
|
1444
1447
|
)
|
|
1445
1448
|
|
|
1446
1449
|
if common_keys is None:
|
|
@@ -1586,7 +1589,7 @@ def _get_dak_array_delay_open(
|
|
|
1586
1589
|
ffile_path, fobject_path = files[0][0:2]
|
|
1587
1590
|
|
|
1588
1591
|
if known_base_form is not None:
|
|
1589
|
-
common_keys = list(known_base_form.fields)
|
|
1592
|
+
common_keys = list(dict.fromkeys(known_base_form.fields))
|
|
1590
1593
|
base_form = known_base_form
|
|
1591
1594
|
else:
|
|
1592
1595
|
obj = uproot._util.regularize_object_path(
|
|
@@ -1598,6 +1601,7 @@ def _get_dak_array_delay_open(
|
|
|
1598
1601
|
filter_typename=filter_typename,
|
|
1599
1602
|
filter_branch=filter_branch,
|
|
1600
1603
|
full_paths=full_paths,
|
|
1604
|
+
ignore_duplicates=True,
|
|
1601
1605
|
)
|
|
1602
1606
|
base_form = _get_ttree_form(
|
|
1603
1607
|
awkward, obj, common_keys, interp_options.get("ak_add_doc")
|
|
@@ -80,7 +80,9 @@ def ensure_numpy(array, types=(numpy.bool_, numpy.integer, numpy.floating)):
|
|
|
80
80
|
|
|
81
81
|
awkward = uproot.extras.awkward()
|
|
82
82
|
with warnings.catch_warnings():
|
|
83
|
-
warnings.simplefilter(
|
|
83
|
+
warnings.simplefilter(
|
|
84
|
+
"error", getattr(numpy, "exceptions", numpy).VisibleDeprecationWarning
|
|
85
|
+
)
|
|
84
86
|
if isinstance(array, awkward.contents.Content):
|
|
85
87
|
out = awkward.to_numpy(array)
|
|
86
88
|
else:
|
|
@@ -1126,6 +1126,7 @@ class HasBranches(Mapping):
|
|
|
1126
1126
|
filter_branch=no_filter,
|
|
1127
1127
|
recursive=True,
|
|
1128
1128
|
full_paths=True,
|
|
1129
|
+
ignore_duplicates=False,
|
|
1129
1130
|
):
|
|
1130
1131
|
"""
|
|
1131
1132
|
Args:
|
|
@@ -1143,6 +1144,7 @@ class HasBranches(Mapping):
|
|
|
1143
1144
|
full_paths (bool): If True, include the full path to each subbranch
|
|
1144
1145
|
with slashes (``/``); otherwise, use the descendant's name as
|
|
1145
1146
|
the output name.
|
|
1147
|
+
ignore_duplicates (bool): If True, return a set of the keys; otherwise, return the full list of keys.
|
|
1146
1148
|
|
|
1147
1149
|
Returns the names of the subbranches as a list of strings.
|
|
1148
1150
|
"""
|
|
@@ -1153,6 +1155,7 @@ class HasBranches(Mapping):
|
|
|
1153
1155
|
filter_branch=filter_branch,
|
|
1154
1156
|
recursive=recursive,
|
|
1155
1157
|
full_paths=full_paths,
|
|
1158
|
+
ignore_duplicates=ignore_duplicates,
|
|
1156
1159
|
)
|
|
1157
1160
|
)
|
|
1158
1161
|
|
|
@@ -1279,6 +1282,7 @@ class HasBranches(Mapping):
|
|
|
1279
1282
|
filter_branch=no_filter,
|
|
1280
1283
|
recursive=True,
|
|
1281
1284
|
full_paths=True,
|
|
1285
|
+
ignore_duplicates=False,
|
|
1282
1286
|
):
|
|
1283
1287
|
"""
|
|
1284
1288
|
Args:
|
|
@@ -1296,6 +1300,8 @@ class HasBranches(Mapping):
|
|
|
1296
1300
|
full_paths (bool): If True, include the full path to each subbranch
|
|
1297
1301
|
with slashes (``/``); otherwise, use the descendant's name as
|
|
1298
1302
|
the output name.
|
|
1303
|
+
ignore_duplicates (bool): If True, return a set of the keys; otherwise, return the full list of keys.
|
|
1304
|
+
|
|
1299
1305
|
|
|
1300
1306
|
Returns the names of the subbranches as an iterator over strings.
|
|
1301
1307
|
"""
|
|
@@ -1305,6 +1311,7 @@ class HasBranches(Mapping):
|
|
|
1305
1311
|
filter_branch=filter_branch,
|
|
1306
1312
|
recursive=recursive,
|
|
1307
1313
|
full_paths=full_paths,
|
|
1314
|
+
ignore_duplicates=ignore_duplicates,
|
|
1308
1315
|
):
|
|
1309
1316
|
yield k
|
|
1310
1317
|
|
|
@@ -1353,6 +1360,7 @@ class HasBranches(Mapping):
|
|
|
1353
1360
|
filter_branch=no_filter,
|
|
1354
1361
|
recursive=True,
|
|
1355
1362
|
full_paths=True,
|
|
1363
|
+
ignore_duplicates=False,
|
|
1356
1364
|
):
|
|
1357
1365
|
"""
|
|
1358
1366
|
Args:
|
|
@@ -1370,6 +1378,8 @@ class HasBranches(Mapping):
|
|
|
1370
1378
|
full_paths (bool): If True, include the full path to each subbranch
|
|
1371
1379
|
with slashes (``/``) in the name; otherwise, use the descendant's
|
|
1372
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
|
+
|
|
1373
1383
|
|
|
1374
1384
|
Returns (name, branch) pairs of the subbranches as an iterator over
|
|
1375
1385
|
2-tuples of (str, :doc:`uproot.behaviors.TBranch.TBranch`).
|
|
@@ -1385,6 +1395,8 @@ class HasBranches(Mapping):
|
|
|
1385
1395
|
f"filter_branch must be None or a function: TBranch -> bool, not {filter_branch!r}"
|
|
1386
1396
|
)
|
|
1387
1397
|
|
|
1398
|
+
keys_set = set()
|
|
1399
|
+
|
|
1388
1400
|
for branch in self.branches:
|
|
1389
1401
|
if (
|
|
1390
1402
|
(
|
|
@@ -1394,7 +1406,11 @@ class HasBranches(Mapping):
|
|
|
1394
1406
|
and (filter_typename is no_filter or filter_typename(branch.typename))
|
|
1395
1407
|
and (filter_branch is no_filter or filter_branch(branch))
|
|
1396
1408
|
):
|
|
1397
|
-
|
|
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
|
|
1398
1414
|
|
|
1399
1415
|
if recursive:
|
|
1400
1416
|
for k1, v in branch.iteritems(
|
|
@@ -1408,7 +1424,11 @@ class HasBranches(Mapping):
|
|
|
1408
1424
|
if filter_name is no_filter or _filter_name_deep(
|
|
1409
1425
|
filter_name, self, v
|
|
1410
1426
|
):
|
|
1411
|
-
|
|
1427
|
+
if ignore_duplicates and branch.name in keys_set:
|
|
1428
|
+
pass
|
|
1429
|
+
else:
|
|
1430
|
+
keys_set.add(k2)
|
|
1431
|
+
yield k2, v
|
|
1412
1432
|
|
|
1413
1433
|
def itertypenames(
|
|
1414
1434
|
self,
|
|
@@ -864,7 +864,9 @@ class AsVectorLike(AsContainer):
|
|
|
864
864
|
|
|
865
865
|
def __init__(self, header, values):
|
|
866
866
|
self.header = header
|
|
867
|
-
if isinstance(
|
|
867
|
+
if isinstance(self, uproot.containers.AsBitSet):
|
|
868
|
+
self._items = numpy.dtype(numpy.bool_)
|
|
869
|
+
elif isinstance(values, AsContainer):
|
|
868
870
|
self._items = values
|
|
869
871
|
elif isinstance(values, type) and issubclass(
|
|
870
872
|
values, (uproot.model.Model, uproot.model.DispatchByVersion)
|
|
@@ -1117,7 +1119,6 @@ class AsList(AsVectorLike):
|
|
|
1117
1119
|
header (bool): Sets the :ref:`uproot.containers.AsContainer.header`.
|
|
1118
1120
|
values (:doc:`uproot.model.Model` or :doc:`uproot.containers.Container`): Data
|
|
1119
1121
|
type for data nested in the container.
|
|
1120
|
-
|
|
1121
1122
|
A :doc:`uproot.containers.AsContainer` for ``std::list``.
|
|
1122
1123
|
"""
|
|
1123
1124
|
|
|
@@ -1139,6 +1140,36 @@ class AsList(AsVectorLike):
|
|
|
1139
1140
|
return STLList
|
|
1140
1141
|
|
|
1141
1142
|
|
|
1143
|
+
class AsBitSet(AsVectorLike):
|
|
1144
|
+
"""
|
|
1145
|
+
Args:
|
|
1146
|
+
header (bool): Sets the :ref:`uproot.containers.AsContainer.header`.
|
|
1147
|
+
keys (:doc:`uproot.model.Model` or :doc:`uproot.containers.Container`): Data
|
|
1148
|
+
type for data nested in the container.
|
|
1149
|
+
|
|
1150
|
+
A :doc:`uproot.containers.AsContainer` for ``std::bitset``.
|
|
1151
|
+
"""
|
|
1152
|
+
|
|
1153
|
+
_specialpathitem_name = "bitset"
|
|
1154
|
+
|
|
1155
|
+
@property
|
|
1156
|
+
def typename(self):
|
|
1157
|
+
return f"std::bitset<{_content_typename(self.keys)}>"
|
|
1158
|
+
|
|
1159
|
+
@property
|
|
1160
|
+
def keys(self):
|
|
1161
|
+
"""
|
|
1162
|
+
Data type for data nested in the container.
|
|
1163
|
+
"""
|
|
1164
|
+
return self._items
|
|
1165
|
+
|
|
1166
|
+
_form_parameters = {"__array__": "bitset"}
|
|
1167
|
+
|
|
1168
|
+
@property
|
|
1169
|
+
def _container_type(self):
|
|
1170
|
+
return STLBitSet
|
|
1171
|
+
|
|
1172
|
+
|
|
1142
1173
|
class AsSet(AsVectorLike):
|
|
1143
1174
|
"""
|
|
1144
1175
|
Args:
|
|
@@ -1633,6 +1664,49 @@ class STLVector(Container, Sequence):
|
|
|
1633
1664
|
]
|
|
1634
1665
|
|
|
1635
1666
|
|
|
1667
|
+
class STLBitSet(Container, Sequence):
|
|
1668
|
+
"""
|
|
1669
|
+
Args:
|
|
1670
|
+
values (``numpy.ndarray`` or iterable): Contents of the ``std::vector``.
|
|
1671
|
+
|
|
1672
|
+
Representation of a C++ ``std::bitset`` as a Python ``Sequence``.
|
|
1673
|
+
"""
|
|
1674
|
+
|
|
1675
|
+
def __init__(self, numbytes):
|
|
1676
|
+
self._numbytes = numpy.asarray(numbytes)
|
|
1677
|
+
|
|
1678
|
+
def __str__(self, limit=85):
|
|
1679
|
+
def tostring(i):
|
|
1680
|
+
return _tostring(self._values[i])
|
|
1681
|
+
|
|
1682
|
+
return _str_with_ellipsis(tostring, len(self), "[", "]", limit)
|
|
1683
|
+
|
|
1684
|
+
def __repr__(self, limit=85):
|
|
1685
|
+
return f"<STLBitSet {self.__str__(limit=limit - 30)} at 0x{id(self):012x}>"
|
|
1686
|
+
|
|
1687
|
+
def __getitem__(self, where):
|
|
1688
|
+
return self._numbytes[where]
|
|
1689
|
+
|
|
1690
|
+
def __len__(self):
|
|
1691
|
+
return self._numbytes
|
|
1692
|
+
|
|
1693
|
+
def __iter__(self):
|
|
1694
|
+
return iter(self._numbytes)
|
|
1695
|
+
|
|
1696
|
+
def __eq__(self, other):
|
|
1697
|
+
if isinstance(other, STLBitSet):
|
|
1698
|
+
return self._numbytes == other._numbytes
|
|
1699
|
+
elif isinstance(other, Sequence):
|
|
1700
|
+
return self._numbytes == other
|
|
1701
|
+
else:
|
|
1702
|
+
return False
|
|
1703
|
+
|
|
1704
|
+
def tolist(self):
|
|
1705
|
+
return [
|
|
1706
|
+
x.tolist() if isinstance(x, (Container, numpy.ndarray)) else x for x in self
|
|
1707
|
+
]
|
|
1708
|
+
|
|
1709
|
+
|
|
1636
1710
|
class STLSet(Container, Set):
|
|
1637
1711
|
"""
|
|
1638
1712
|
Args:
|
|
@@ -964,7 +964,7 @@ def _parse_node(tokens, i, typename, file, quote, header, inner_header):
|
|
|
964
964
|
return (
|
|
965
965
|
i + 4,
|
|
966
966
|
_parse_maybe_quote(
|
|
967
|
-
f
|
|
967
|
+
f"uproot.containers.AsBitSet({header}, {num_bits})",
|
|
968
968
|
quote,
|
|
969
969
|
),
|
|
970
970
|
)
|
|
@@ -106,7 +106,7 @@ class Numerical(uproot.interpretation.Interpretation):
|
|
|
106
106
|
|
|
107
107
|
start = stop
|
|
108
108
|
|
|
109
|
-
output = output.newbyteorder("=")
|
|
109
|
+
output = output.view(output.dtype.newbyteorder("="))
|
|
110
110
|
self.hook_before_library_finalize(
|
|
111
111
|
basket_arrays=basket_arrays,
|
|
112
112
|
entry_start=entry_start,
|
|
@@ -386,7 +386,7 @@ class Cursor:
|
|
|
386
386
|
length_data = chunk.get(start, stop, self, context)
|
|
387
387
|
length = numpy.frombuffer(length_data, dtype=self._u1).view(self._i4)[0]
|
|
388
388
|
start = stop
|
|
389
|
-
stop = start + length
|
|
389
|
+
stop = start + int(length)
|
|
390
390
|
if move:
|
|
391
391
|
self._index = stop
|
|
392
392
|
return uproot._util.tobytes(chunk.get(start, stop, self, context))
|
|
@@ -1128,7 +1128,7 @@ class Model_TStreamerBasicType(Model_TStreamerElement):
|
|
|
1128
1128
|
uproot.const.kULong,
|
|
1129
1129
|
uproot.const.kLong,
|
|
1130
1130
|
):
|
|
1131
|
-
self._bases[0]._members["fSize"] = numpy.dtype(numpy.
|
|
1131
|
+
self._bases[0]._members["fSize"] = numpy.dtype(numpy.int64).itemsize
|
|
1132
1132
|
|
|
1133
1133
|
elif self._bases[0]._members["fType"] in (
|
|
1134
1134
|
uproot.const.kULong64,
|
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
# BSD 3-Clause License; see https://github.com/scikit-hep/uproot4/blob/main/LICENSE
|
|
2
2
|
|
|
3
|
-
import pytest
|
|
4
|
-
import uproot
|
|
5
|
-
import uproot.source.fsspec
|
|
6
|
-
import uproot.source.file
|
|
7
|
-
import uproot.source.xrootd
|
|
8
|
-
import uproot.source.s3
|
|
9
|
-
|
|
10
3
|
from typing import BinaryIO
|
|
11
4
|
import skhep_testdata
|
|
12
5
|
import queue
|
|
@@ -15,6 +8,14 @@ import requests
|
|
|
15
8
|
import os
|
|
16
9
|
import sys
|
|
17
10
|
|
|
11
|
+
import pytest
|
|
12
|
+
|
|
13
|
+
import uproot
|
|
14
|
+
import uproot.source.fsspec
|
|
15
|
+
import uproot.source.file
|
|
16
|
+
import uproot.source.xrootd
|
|
17
|
+
import uproot.source.s3
|
|
18
|
+
|
|
18
19
|
is_windows = sys.platform.startswith("win")
|
|
19
20
|
|
|
20
21
|
|
|
@@ -243,7 +244,7 @@ def test_fsspec_chunks(http_server):
|
|
|
243
244
|
chunk = notifications.get()
|
|
244
245
|
expected.pop((chunk.start, chunk.stop))
|
|
245
246
|
|
|
246
|
-
chunk_data_sum = {sum(chunk.raw_data) for chunk in chunks}
|
|
247
|
+
chunk_data_sum = {sum(map(int, chunk.raw_data)) for chunk in chunks}
|
|
247
248
|
assert chunk_data_sum == {3967, 413, 10985}, "Chunk data does not match"
|
|
248
249
|
|
|
249
250
|
|
|
@@ -51,12 +51,19 @@ def test_fsspec_writing_local(tmp_path, scheme):
|
|
|
51
51
|
"slash_prefix",
|
|
52
52
|
[""] if is_windows else ["", "/"],
|
|
53
53
|
)
|
|
54
|
-
def test_fsspec_writing_local_uri(tmp_path, scheme, slash_prefix, filename):
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
54
|
+
def test_fsspec_writing_local_uri(tmp_path, scheme, slash_prefix, filename, request):
|
|
55
|
+
os.chdir(tmp_path)
|
|
56
|
+
|
|
57
|
+
try:
|
|
58
|
+
uri = scheme + slash_prefix + os.path.join(tmp_path, "some", "path", filename)
|
|
59
|
+
|
|
60
|
+
with uproot.create(uri) as f:
|
|
61
|
+
f["tree"] = {"x": np.array([1, 2, 3])}
|
|
62
|
+
with uproot.open(uri) as f:
|
|
63
|
+
assert f["tree"]["x"].array().tolist() == [1, 2, 3]
|
|
64
|
+
|
|
65
|
+
finally:
|
|
66
|
+
os.chdir(request.config.invocation_params.dir)
|
|
60
67
|
|
|
61
68
|
|
|
62
69
|
@pytest.mark.parametrize(
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
# BSD 3-Clause License; see https://github.com/scikit-hep/uproot5/blob/main/LICENSE
|
|
2
2
|
|
|
3
3
|
import pytest
|
|
4
|
-
import uproot
|
|
5
4
|
import skhep_testdata
|
|
6
5
|
|
|
6
|
+
import uproot
|
|
7
|
+
|
|
8
|
+
pytest.importorskip("pandas")
|
|
9
|
+
|
|
7
10
|
|
|
8
11
|
def test_pandas_performance_many_branches(tmp_path):
|
|
9
12
|
for array in uproot.iterate(
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# BSD 3-Clause License; see https://github.com/scikit-hep/uproot5/blob/main/LICENSE
|
|
2
|
+
|
|
3
|
+
import uproot
|
|
4
|
+
import skhep_testdata
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def test_add_support_for_bitset():
|
|
8
|
+
with uproot.open(skhep_testdata.data_path("uproot-issue-40.root")) as f:
|
|
9
|
+
assert (
|
|
10
|
+
repr(f["tree"]["bitset8"].interpretation)
|
|
11
|
+
== "AsObjects(AsBitSet(True, dtype('bool')))"
|
|
12
|
+
)
|
|
13
|
+
assert (
|
|
14
|
+
repr(f["tree"]["bitset16"].interpretation)
|
|
15
|
+
== "AsObjects(AsBitSet(True, dtype('bool')))"
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
assert f["tree"]["bitset8"].array().tolist() == [
|
|
19
|
+
[True, False, True, False, True, False, False, False]
|
|
20
|
+
]
|
|
21
|
+
assert f["tree"]["bitset16"].array().tolist() == [
|
|
22
|
+
[
|
|
23
|
+
False,
|
|
24
|
+
True,
|
|
25
|
+
False,
|
|
26
|
+
True,
|
|
27
|
+
False,
|
|
28
|
+
True,
|
|
29
|
+
True,
|
|
30
|
+
True,
|
|
31
|
+
True,
|
|
32
|
+
False,
|
|
33
|
+
True,
|
|
34
|
+
False,
|
|
35
|
+
True,
|
|
36
|
+
False,
|
|
37
|
+
False,
|
|
38
|
+
False,
|
|
39
|
+
]
|
|
40
|
+
]
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# BSD 3-Clause License; see https://github.com/scikit-hep/uproot5/blob/main/LICENSE
|
|
2
|
+
|
|
3
|
+
import pytest
|
|
4
|
+
import skhep_testdata
|
|
5
|
+
|
|
6
|
+
import uproot
|
|
7
|
+
|
|
8
|
+
pytest.importorskip("pandas")
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def test_dask_duplicated_keys():
|
|
12
|
+
|
|
13
|
+
lazy = uproot.dask(
|
|
14
|
+
skhep_testdata.data_path("uproot-metadata-performance.root") + ":Events"
|
|
15
|
+
)
|
|
16
|
+
materialized = lazy.FatJet_btagDDBvLV2.compute()
|
|
17
|
+
|
|
18
|
+
lazy = uproot.dask(skhep_testdata.data_path("uproot-issue513.root") + ":Delphes")
|
|
19
|
+
materialized = lazy.Particle.compute()
|
|
20
|
+
|
|
21
|
+
lazy = uproot.dask(
|
|
22
|
+
skhep_testdata.data_path("uproot-issue443.root") + ":muonDataTree"
|
|
23
|
+
)
|
|
24
|
+
materialized = lazy.hitEnd.compute()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|