Release history

Unreleased (main branch on GitHub)

  • PR #893: chore: update pre-commit hooks.

  • PR #886: fix: awkward_form breadcrumbs class issue 880.

  • PR #887: chore(deps): bump pypa/gh-action-pypi-publish from 1.8.5 to 1.8.6.

  • PR #892: fix: adapt to scikit-hep/awkward#2437.

  • PR #889: chore: update pre-commit hooks.

  • PR #882: fix: bugs caught by a Ruff update.

  • PR #884: fix: histograms from Geant4.

  • PR #876: feat: add in capability for blindly splitting files into chunks for dask.

  • PR #874: [pre-commit.ci] pre-commit autoupdate.

  • PR #873: chore(deps): bump pypa/gh-action-pypi-publish from 1.8.4 to 1.8.5.

  • PR #867: ci: [pre-commit.ci] pre-commit autoupdate.

  • PR #869: chore(deps): bump pypa/gh-action-pypi-publish from 1.8.1 to 1.8.4.

  • PR #870: feat: have unknown type become float64 when in array context.

  • PR #871: feat: add support for pandas is_numeric API change.

  • PR #868: feat: add pyodide support for jupyter-lite for files opened via HTTP.

  • PR #852: fix: strided interpretation for data with extra offsets.

  • PR #865: ci: [pre-commit.ci] pre-commit autoupdate.

  • PR #864: chore(deps): bump pypa/gh-action-pypi-publish from 1.7.1 to 1.8.1.

  • PR #842: [pre-commit.ci] pre-commit autoupdate.

  • PR #856: chore(deps): bump pypa/gh-action-pypi-publish from 1.6.4 to 1.7.1.

  • PR #855: fix: AwkwardForth was nesting the same ListOffsetArray (same node name) multiple times.

  • PR #844: fix: unable to delete hist from ROOT file.

  • PR #851: fix: replaced incorrect AwkwardForth var_set logic with a check to see if the Form is complete.

  • PR #846: fix: update licence url for tests. (also: #845)

  • PR #845: fix: test 0814 name.

  • PR #843: chore: don’t repeat awkward dependency.

  • PR #848: docs: add ioanaif as a contributor for code.

  • PR #847: docs: add lgray as a contributor for code.

  • PR #834: fix: let form mappings apply a behavior.

  • PR #840: feat: add support for TLeafG.

  • PR #841: fix: models should not be wrapped in a ListOffsetForm.

  • PR #839: [pre-commit.ci] pre-commit autoupdate.

  • PR #838: fix: complain about CannotBeAwkward earlier, before reading data.

  • PR #836: fix: add ttree title to __doc__ of top level record.

  • PR #831: fix: Uproot should be able to run without Awkward.

  • PR #832: fix: ak_add_doc should add docs to both the lazy and the materialized array.

  • PR #830: feat: allow uproot.dask to re-map forms at the data source.

  • PR #825: chore: move to Ruff.

  • PR #827: fix: _awkward_forth.symbol_dict was missing np.dtype(">i1")

  • PR #829: docs: add renyhp as a contributor for code.

  • PR #828: fix: separate ZstdDecompressor for each thread (re-do) (also: #820)

  • PR #813: feat: [WIP] RNTuple Basic Writing.

  • PR #820: fix: separate ZstdDecompressor for each thread.

  • PR #821: ci: pre-commit autoupdate.

  • PR #819: fix: separate AwkwardForth machine for each TBranch context.

  • PR #810: [pre-commit.ci] pre-commit autoupdate.

  • PR #812: fix: an uproot.dask test was wrong; revealed by new dask-awkward.

  • PR #705: feat: Support writing of RNTuple.

  • PR #807: [pre-commit.ci] pre-commit autoupdate.

  • PR #808: fix: AsStridedObjects.awkward_form was still including the ‘@’ members.

  • PR #806: fix: uproot.dask: Protect against branches=None in project_columns

  • PR #801: fix: protect Uproot’s ‘project_columns’ from Dask node names.

  • PR #802: docs: update documentation about Pandas; we don’t do MultiIndex anymore.

  • PR #799: [pre-commit.ci] pre-commit autoupdate.

  • PR #797: chore(deps): bump pypa/gh-action-pypi-publish from 1.6.1 to 1.6.4.

  • PR #795: fix: Uproot tests now work with Awkward 2.0.0.

  • PR #788: feat: adjust for name change in scikit-hep/awkward#1919.

  • PR #793: [pre-commit.ci] pre-commit autoupdate.

  • PR #792: chore(deps): bump pypa/gh-action-pypi-publish from 1.5.1 to 1.6.1.

  • PR #790: fix: all AwkwardForth Forms now agree with awkward_form method output.

  • PR #787: feat: made ‘very optional’ arguments keyword-only.

  • PR #789: [pre-commit.ci] pre-commit autoupdate.

  • PR #786: test: make tests parallelizable (custom_classes in uproot.open).

  • PR #702: docs: uproot.dask docs.

  • PR #734: feat: Use awkward pandas, instead of the existing code that explodes Pandas Dataframes. (also: #784)

  • PR #784: feat: add ‘interp_options’ mechanism and ak_add_doc.

  • PR #783: [pre-commit.ci] pre-commit autoupdate.

  • PR #782: docs: fix TRef.py doc urls.

  • PR #780: fix: ensure fallback path is tested without history.

  • PR #779: feat: any Mapping assigned to a WritableDirectory is interpreted as a TTree or failure, no fall-through.

  • PR #772: perf: streamline metadata handling for TBranch name lookup and uproot.dask.

  • PR #749: refactor: final refactoring for Forth generation. (also: #710)

  • PR #776: feat: warn about TBranch name, alias name conflict.

  • PR #764: feat: support categorical axes on boost histograms. (also: #722)

  • PR #774: fix: histogram weights not handled correctly in hist / boost conversion. (also: #722)

  • PR #773: [pre-commit.ci] pre-commit autoupdate.

  • PR #770: chore: remove Identifier and "uproot" parameter.

  • PR #710: refactor: refactor Forth generation.

  • PR #771: docs: add lobis as a contributor for code.

  • PR #763: fix: working TList serialization.

  • PR #766: git ls-files -z – ‘.github/workflows/*.yml’ | xargs -0 sed -i ‘s/3.11-dev/3.11/g’

  • PR #765: chore: update Uproot to require Awkward 2.0.0rc1.

  • PR #757: chore(deps): bump amannn/action-semantic-pull-request from 4 to 5.

  • PR #737: [pre-commit.ci] pre-commit autoupdate.

  • PR #755: feat: Added column_projection optimization.

  • PR #753: fix: don’t use Awkward in test_0751 that doesn’t need it.

  • PR #751: fix: avoid empty TBasket issue in embedded TBasket.

  • PR #746: feat: implemented NON-memberwise deserialization for AsMap.

  • PR #745: chore: some cleanup inpsired by refurb.

  • PR #743: ci: remove GHA workaround for macOS Python 3.11.

  • PR #742: chore: drop Python 3.6.

  • PR #726: docs: add a CITATION.cff for Uproot.

  • PR #733: add agoose77 as a contributor.

  • PR #732: add beojan as a contributor.

  • PR #731: add dcervenkov as a contributor.

  • PR #730: add klieret as a contributor.

  • PR #729: add nikoladze as a contributor.

  • PR #728: add veprbl as a contributor.

  • PR #716: [pre-commit.ci] pre-commit autoupdate.

  • PR #717: fix: regularize ROOT type aliases to C fundamental type names.

  • PR #715: fix: ReadOnlyDirectory should provide the largest abs(cycle) when cycle is unspecified, not the largest cycle.

  • PR #719: test: adjust for boost-histogram 1.3.2’s _storage_type deprecation.

  • PR #713: fix: use ctx manager to ensure sources are freed.

  • PR #714: chore: dask_awkward.test_utils moved in ContinuumIO/dask-awkward#76.

  • PR #706: [pre-commit.ci] pre-commit autoupdate.

  • PR #708: Add image for dask docs.

  • PR #644: feat: Finalizing AwkwardForth reader for Uproot.

  • PR #703: fix: Use from_map optimization for delayed numpy arrays and add tests with empty branches for the same.

  • PR #700: fix: Fixes uproot.dask bug with empty branches.

  • PR #698: fix: Do not write incorrect fSumw2 in histograms (v5).

  • PR #679: feat: from_map like optimization for dask arrays. (also: #680)

  • PR #691: ci: use concurrency group for semantic-pr-title

  • PR #694: fix: Avoid triggering temporary dask-awkward/awkward incompatibility.

  • PR #690: Redo #680, starting from main

  • PR #689: ci: Lint PR titles according to conventional commits.

Release 5.0.0rc2

(pip)

  • PR #688: feat: move to hatchling.

  • PR #683: ci: use mamba.

  • PR #685: ci: autocancel repeated runs.

  • PR #684: fix: depend on packaging, not setuptools vendored packaging.

  • PR #686: ci: Get test dependencies from one source.

  • PR #682: Multiple clusters support for RNTuple.

  • PR #662: Implement stl containers for RNTuple.

  • PR #657: [pre-commit.ci] pre-commit autoupdate.

  • PR #677: Fixed TTree write_anew in a subdirectory (consistent caches).

  • PR #674: AsDynamic has no self._header.

  • PR #675: Implement transformed axis from boost-histogram/hist.

  • PR #673: Prevent std::pair from being AsStridedObjects.

  • PR #671: Gets the number of overflow bins for hist.axis.IntCategory, at least.

  • PR #670: pathlib.Path drops ‘//’ (naturally), but it’s sometimes used for URLs.

  • PR #652: Dask awkward support for uproot.dask.

  • PR #663: docs: add kakwok as a contributor for code.

  • PR #660: Set ReadOnlyDirectory attributes when fSeekKeys == 0.

  • PR #630: Primitive Support for RNTuple.

  • PR #656: Bump pypa/gh-action-pypi-publish from 1.5.0 to 1.5.1.

  • PR #654: [pre-commit.ci] pre-commit autoupdate.

Release 5.0.0rc1

(pip)

  • PR #650: [pre-commit.ci] pre-commit autoupdate.

  • PR #527: chore: cleanup flake8.

  • PR #647: docs: add Moelf as a contributor for code.

  • PR #646: docs: add kkothari2001 as a contributor for code.

  • PR #645: docs: add aryan26roy as a contributor for code.

  • PR #620: Awkward v2 update.

  • PR #641: [pre-commit.ci] pre-commit autoupdate.

  • PR #638: Iterate over objects in TDirectory in linear time.

  • PR #637: Set up tests for AsObjects, for the AwkwardForth reader.

  • PR #636: Forth based ROOT reader (revised)

  • PR #635: Bump actions/download-artifact from 2 to 3.

  • PR #634: Bump pypa/gh-action-pypi-publish from 1.4.2 to 1.5.0.

  • PR #633: Bump actions/upload-artifact from 2 to 3.

  • PR #632: Bump actions/checkout from 2 to 3.

  • PR #631: chore: add dependabot for actions.

  • PR #629: Cleaning up string generation in streamers.py.

  • PR #625: Fix annoying gaps in test files.

  • PR #622: Actually pass user-specified ‘awkward_form’ arguments into context.

  • PR #616: Completed the Forth based AsStrings reader.

  • PR #617: changed arguments for awkward_form.

  • PR #615: Updating docs and test in response to the removal of uproot.lazy in Uproot5.

  • PR #484: Manually add a Model for TMatrixTSym<double>.

Release 4.2.4

(pip)

  • PR #609: Add the uproot4.num_entries function.

  • PR #611: awkward_form arguments are now (self, file, context).

  • PR #612: Adjust for ROOT TStreamerInfo change.

  • PR #608: [pre-commit.ci] pre-commit autoupdate.

  • PR #603: Basic code for delay in opening files.

  • PR #578: GSoC uproot.dask.

Release 4.2.3

(pip)

  • PR #595: Put an upper limit on the time KeyInFileError takes to print itself (about 20 ms) by limiting damerau_levenshtein to 1000 strings.

  • PR #594: Recover from the HTTP error in #507 (with fallback).

  • PR #593: Add explicit interpreter for ROOT::VecOps::RVec.

  • PR #592: [pre-commit.ci] pre-commit autoupdate.

  • PR #584: [pre-commit.ci] pre-commit autoupdate.

  • PR #582: In hist, flow=True only has flow bins if the histogram object has them.

  • PR #581: [pre-commit.ci] pre-commit autoupdate.

  • PR #579: fix: bump black to 22.3.0 due to click 8.1 release.

  • PR #577: Test file-writing with Unicode names and fix it.

  • PR #575: [pre-commit.ci] pre-commit autoupdate.

Release 4.2.2

(pip)

  • PR #573: Restore performance hack for AsArray(True, False, AsVector(False, dtype)).

Release 4.2.1

(pip)

  • PR #570: fBits is 4 bytes.

  • PR #565: chore: wheel not required for setuptools PEP 517 (all-repos)

  • PR #564: Remove references to deprecated ‘distutils’ and Pandas ‘Int64Index’.

  • PR #561: If the title of Float16/Double32 is not parsable, assume defaults.

Release 4.2.0

(pip)

  • PR #557: Centralize ‘from_module’ checking and check the whole mro.

  • PR #551: [pre-commit.ci] pre-commit autoupdate.

  • PR #547: Fixed Tree-extending with ‘record’ in the ‘Tree._branch_data’.

  • PR #538: Allow reading and writing from/to already opened files.

  • PR #537: Instance version == 0 might differ from streamer version. Don’t compile a new class in that case.

  • PR #534: Add test with Python 3.10.

  • PR #533: [pre-commit.ci] pre-commit autoupdate.

  • PR #532: [pre-commit.ci] pre-commit autoupdate.

  • PR #530: Corner case: cut string is a Pandas MultiIndex but column to cut isn’t.

  • PR #526: chore: drop Python 2 syntax.

  • PR #525: Remove Python 2 and 3.5 support.

Release 4.1.9

(pip)

  • PR #523: docs: add pfackeldey as a contributor for code.

  • PR #522: [pre-commit.ci] pre-commit autoupdate.

  • PR #506: add uproot.model.TTable.data getter.

  • PR #521: Dynamic classes can’t be ABC subclasses, such as Sequence.

  • PR #519: [MemmapSource] Remove unnecessary(?) copies.

  • PR #517: Be more careful about identifying pd.DataFrame.

  • PR #512: [pre-commit.ci] pre-commit autoupdate.

  • PR #509: [pre-commit.ci] pre-commit autoupdate.

  • PR #503: [pre-commit.ci] pre-commit autoupdate.

Release 4.1.8

(pip)

  • PR #501: Detect XRootD versions before 4.11.1. (also: #486)

  • PR #500: uproot.lazy with no TTree specification should pick the one with max cycle.

  • PR #499: Handle arrays passed both explicitly and generated as counters.

  • PR #493: [pre-commit.ci] pre-commit autoupdate.

Release 4.1.7

(pip)

  • PR #489: docs: add duncanmmacleod as a contributor for infra.

  • PR #491: docs: add mpad as a contributor for code.

  • PR #487: Implement asdtypeinplace.

Release 4.1.6

(pip)

  • PR #488: Bug-fixes in writing TTrees to preexisting files (“update” mode).

  • PR #481: Add @btovar manually because the allcontributors bot is broken or something.

  • PR #480: Pass exceptions to main thread in xrootd. (also: #456)

  • PR #478: Restrict Uproot 4.x to Awkward 1.x.

  • PR #477: include the tests suite in source distributions.

Release 4.1.5

(pip)

  • PR #475: Remember to update FreeSegments when writing TBaskets.

Release 4.1.4

(pip)

  • PR #472: Add TTree TStreamerInfo when writing a TTree.

  • PR #468: [pre-commit.ci] pre-commit autoupdate.

  • PR #467: Add an implementation of non-split TClonesArray.

  • PR #463: RNTuple needs to be in the must_be_attached list.

  • PR #458: Set leaf title to ‘branchname[countername]’ for jagged arrays.

Release 4.1.3

(pip)

  • PR #454: Fixes both bugs in issue #438.

  • PR #453: Fixes #439 by checking for an Awkward Array before NumPy.

  • PR #451: Fixed lazy for empty TTrees (#450) and boost-histogram with no title.

  • PR #446: [pre-commit.ci] pre-commit autoupdate.

  • PR #452: Turn off eospublic-dependent tests for now.

  • PR #449: Leaf-lists (structs) and non-leaf-lists in the same Pandas DataFrame.

  • PR #442: Implement regular array support for TClonesArray.

  • PR #441: Recursively fix forms for objects that require ak.from_iter.

Release 4.1.2

(pip)

  • PR #437: Fixes KeyError in #436.

  • PR #434: Fix for STAR PicoDST, which has multidimensional Float16_t.

  • PR #432: Fix #430, global_index for tuples of DataFrames.

  • PR #431: Recreate truncates if file exists.

Release 4.1.1

(pip)

  • PR #428: Final tweaks, bug fixes, and performance checks for this stage of Uproot-writing.

  • PR #418: Add TTable support.

  • PR #427: [pre-commit.ci] pre-commit autoupdate.

  • PR #426: Replaced DirectoryData.keys list with O(1) search structures and replaced all-keys rewriting with just-new-keys rewriting.

  • PR #425: The ‘xrootd_handler’ key must be set regardless of whether there’s a warning about its choice of value.

Release 4.1.0

(pip)

  • PR #422: Integration with the hist library, which completes the file-writing sprint.

  • PR #421: Documenting the writing interface.

  • PR #420: Start working on PyROOT/Uproot interoperability.

  • PR #416: Start developing compression for Uproot writing.

  • PR #415: Refactor all of the writing code.

  • PR #414: Write a jagged array.

  • PR #407: Add support for reading TDatime.

  • PR #413: CI: rerun tests on network errors.

  • PR #412: Multidimensional NumPy arrays.

  • PR #411: Float16_t with up to 32 bits is allowed (not just 16).

  • PR #410: Fix links to source in sphinx.

  • PR #409: Write a TTree 3.

  • PR #408: Write a TTree 2. (also: #405)

  • PR #406: Write a TTree. (also: #405)

  • PR #404: [pre-commit.ci] pre-commit autoupdate.

  • PR #405: Write a histogram.

  • PR #403: Revert “Remove ‘@’ fields from lazy Forms (fixes lazy TLorentzVector).

  • PR #403: Remove ‘@’ fields from lazy Forms (fixes lazy TLorentzVector).

  • PR #399: Handle dimensions in a leaf-list.

  • PR #397: [pre-commit.ci] pre-commit autoupdate.

  • PR #396: mark test 0220 with network tag.

  • PR #395: Treat self-built XRootD version strings. (also: #394)

  • PR #393: [pre-commit.ci] pre-commit autoupdate.

  • PR #388: Avoid warning when XRootD is installed but not used.

Release 4.0.11

(pip)

  • PR #384: Fixed #383 and moved behavior_of to its own module.

Release 4.0.10

(pip)

  • PR #350: Add TGraph, RooCurve, and RooHist behaviours.

  • PR #381: [pre-commit.ci] pre-commit autoupdate.

  • PR #379: [pre-commit.ci] pre-commit autoupdate.

Release 4.0.9

(pip)

  • PR #372: Fixed issue #371: TH3 with dd=True.

  • PR #376: Fixes for 2021 tutorials.

  • PR #373: [pre-commit.ci] pre-commit autoupdate.

  • PR #369: Corner case (issue #368): jagged arrays have the same prefix but not the same number of entries.

Release 4.0.8

(pip)

  • PR #366: ci: use guidelines for deploy.

  • PR #358: Conditionally apply XRootD workarounds based on it’s version.

  • PR #361: docs: add peguerosdc as a contributor.

  • PR #363: Explicit models need explicit behaviors.

  • PR #362: [pre-commit.ci] pre-commit autoupdate.

  • PR #357: [pre-commit.ci] pre-commit autoupdate.

  • PR #352: Make TH* and TGraph* models as a step toward making them writable.

  • PR #349: Added ability to write TObjStrings.

  • PR #348: [pre-commit.ci] pre-commit autoupdate.

  • PR #347: [pre-commit.ci] pre-commit autoupdate.

  • PR #346: Touch-ups to the bulk copy method (renaming regex syntax and exclude TTree/RNtuple).

  • PR #345: Implemented and tested the bulk copy method.

  • PR #344: Add file-reading methods to WritableDirectory, so it can be mostly interchangeable with ReadOnlyDirectory.

  • PR #343: Use real datetimes in TDirectories and TKeys.

  • PR #342: docs: add cozzyd as a contributor.

  • PR #341: File writing: manipulating TStreamerInfo.

  • PR #339: Add support for basic HTTP authentication.

  • PR #340: [pre-commit.ci] pre-commit autoupdate.

  • PR #338: Shutdown the ThreadPoolExecutor in XRootDSource on exit (stop leaking threads in XRootDSource)

  • PR #337: Adjust to the new scikit-hep-testdata.

  • PR #336: Avoid division by zero in calculating the number of entries.

  • PR #334: Stop leaking threads in HTTP (through the fallback mechanism).

Release 4.0.7

(pip)

  • PR #323: [pre-commit.ci] pre-commit autoupdate.

  • PR #329: Update existing ROOT files and update ROOT -> Uproot -> ROOT.

  • PR #328: Fixes #325, file:// on Windows, and handles %-encoded URIs.

  • PR #322: Starting the infrastructure for writing files.

  • PR #320: Start working on ROOT writing.

  • PR #319: fix: restore support for old Pythons.

  • PR #317: Cleaning up Uproot 2.

  • PR #316: Cleaning up Uproot.

  • PR #315: fix typo events -> uproot.

  • PR #305: Histograms should be part of the regular tests.

  • PR #304: Empty jagged arrays need to be finalized before return.

  • PR #302: Allow all sources and caches to be pickled.

  • PR #301: add bytecount mask as part of read_object_any.

  • PR #298: feat: Memberwise for std::pair<>

Release 4.0.6

(pip)

  • PR #297: Remove more cycles and release heavy stuff early.

  • PR #296: Remove Future attributes once done with them.

Release 4.0.5

(pip)

  • PR #295: Make MultithreadedXRootDSource the default for xrootd files. (also: #294)

  • PR #293: Add timeout to vector_read. (also: #292)

  • PR #289: feat: to boost histogram interface support.

  • PR #286: XRootD: raise an exception if read_vector failed.

  • PR #281: Trim the memory usage, especially for the case of a flat Pandas DataFrame.

  • PR #278: Add specialized behaviors for TParameter, including generic dispatch for ‘<number>’ templates.

  • PR #280: Fixes #252 by interpreting leaf dimensions and only passing a length to ak.layout.RecordArray when it’s ambiguous.

  • PR #279: Remove ‘library=cp’ (CuPy) support because we can’t test it in CI. Arrays can be moved to the GPU after they’ve been read (it’s not a big performance difference).

  • PR #272: Tighten the rule that assigns streamers to branches. Issue #268 provides an example in which the name alone is not unique.

Release 4.0.4

(pip)

  • PR #270: Probably fixes #265; please test TAxis.__getitem__ and TAxis.intervals, @nsmith-.

  • PR #269: Skip some tests because HEPData isn’t producing the source file anymore.

Release 4.0.3

(pip)

  • PR #264: docs: add ChristopheRappold as a contributor.

  • PR #263: The allow_missing parameter of uproot.concatenate and uproot.iterate should permit missing TBranches, as it already permits missing files.

  • PR #262: Minor fixes for CMS AOD (Run I) listing.

  • PR #260: Update basic.rst with conditional cut example.

  • PR #258: Cast start and length to int before passing to pyxrootd.client.File.read.

Release 4.0.2

(pip)

(no pull requests)

Release 4.0.2rc2

(pip)

  • PR #256: Re-enable Python 3.5 CI.

  • PR #255: docs: add ryuwd as a contributor.

  • PR #254: Prevent the xrootd server readv_iov_max limit from being exceeded.

  • PR #251: DispatchByVersion doesn’t need num_bytes. (Also remove unnecessary start_cursor.)

Release 4.0.2rc1

(pip)

  • PR #243: Split vector reads into smaller chunk when single requests are larger than max_element_size

  • PR #247: Include hooks in the decompression process, TBranch.compression, and TBasket.block_compression_info for more information.

  • PR #246: Black and flake8.

  • PR #245: Use ak.Array dict constructor instead of ak.zip with depth_limit=1.

Release 4.0.1

(pip)

(no pull requests)

Release 4.0.1rc3

(pip)

  • PR #241: docs: add kratsg as a contributor.

  • PR #239: Fix TH3’s ‘to_numpy’ (https://stackoverflow.com/q/65632670/1623645).

  • PR #240: feat: Add TGraphAsymmErrors.

  • PR #237: Hide ReferenceError in XRootD atexit.

  • PR #236: fix: kind was not implemented on normal histograms.

  • PR #228: Fixed bug that prevented to read TProfile2D/TProfile3D.

  • PR #231: refactor: modernize setup.

Release 4.0.1rc2

(pip)

  • PR #232: Test two rows of badges.

  • PR #226: Fix warnings associated with NumPy deprecations.

Release 4.0.1rc1

(pip)

  • PR #223: Fix variable binning in histograms (off by one error in check).

  • PR #221: Some HTTP servers combine contiguous byte ranges.

Release 4.0.0

(pip)

  • PR #219: Catch up to the latest histogram protocol.

  • PR #218: Fix the way we determine if an embedded TBasket is jagged.

  • PR #217: Fix EmptyArrays for all cases in _awkward_json_to_array.

  • PR #216: Fix infinite recursion in strided_interpretation and awkward_form.

Release 4.0.0rc4

(pip)

  • PR #215: Rename ‘master’ branch to ‘main’.

Release 4.0.0rc3

(pip)

Release 4.0.0rc2

(pip)

(no pull requests)

Release 4.0.0rc1

  • PR #211: The great name change: uproot4 -> uproot.

  • PR #207: feat: support TProfile 1D conversion.

  • PR #202: Start writing the Uproot 3 to 4 cheat sheet.

  • PR #196: Use the common histogram interface. (also: #198)

  • PR #206: Fixed #205.

  • PR #203: Fixed #176 and made tests run in Python 2.7 (which is what the #176 bug was about).

  • PR #201: Minimally fix HTTP issues. (also: #177)

  • PR #200: Turn unknown EmptyArrays into known types.

  • PR #199: Add fallback for wrong class version.

  • PR #195: Fixes lost cuts in iterate.

  • PR #189: fix: warning about GHA security.

  • PR #184: Complain about missing files, if they’re not wildcards.

  • PR #187: Fixed a serious memory leak in HasBranches.iterate.

  • PR #186: Fix TStreamerLoop code generation.

  • PR #185: Allow allocators in std::vector typenames.

  • PR #183: Pass through HTTP(S) query parameter if they exist.

  • PR #178: Updated to the new ak.Array constructor arguments in 0.4.2.

  • PR #175: Fix the empty ROOT file case.

  • PR #171: Fix .lazy() called on missing files.

  • PR #166: Tweaks to investigate #131, but it looks like it was just a bad file.

  • PR #165: docs: add alexander as a contributor.

  • PR #164: docs: add JMSchoeffmann as a contributor.

  • PR #163: docs: add EdoPro98 as a contributor.

  • PR #162: docs: add HealthyPear as a contributor.

  • PR #161: docs: add ast0815 as a contributor.

  • PR #160: docs: add asymmetry as a contributor.

  • PR #159: docs: add douglasdavis as a contributor.

  • PR #158: docs: add bendavid as a contributor.

  • PR #157: docs: add andrzejnovak as a contributor.

  • PR #156: docs: add raymondEhlers as a contributor.

  • PR #155: docs: add bfis as a contributor.

  • PR #154: docs: add jrueb as a contributor.

  • PR #153: docs: add wiso as a contributor.

  • PR #152: docs: add riga as a contributor.

  • PR #151: docs: add HDembinski as a contributor.

  • PR #150: docs: add benkrikler as a contributor.

  • PR #149: docs: add guitargeek as a contributor.

  • PR #148: docs: add masonproffitt as a contributor.

  • PR #147: docs: add henryiii as a contributor.

  • PR #146: docs: add oshadura as a contributor.

  • PR #145: docs: add nbiederbeck as a contributor.

  • PR #144: docs: add nsmith as a contributor.

  • PR #143: docs: add kreczko as a contributor.

  • PR #142: docs: add tamasgal as a contributor.

  • PR #141: docs: add matthewfeickert as a contributor.

  • PR #140: docs: add plexoos as a contributor.

  • PR #139: docs: add chrisburr as a contributor.

  • PR #138: docs: add reikdas as a contributor.

  • PR #136: docs: add jpivarski as a contributor.

  • PR #134: PR to set up allcontributors bot.

  • PR #135: docs: add jpivarski as a contributor.

  • PR #133: Point to documentation on README.

  • PR #132: Add Python 3.9 tests.

  • PR #127: feat: show similar keys first on KeyInFile error.

  • PR #124: Variety of issues raised by an ATLAS xAOD.

  • PR #118: Fix name fetch again.

  • PR #117: Recognize full paths of branch names in expressions if they are exact (don’t parse as division).

  • PR #116: Don’t assume branch names are expressions.

  • PR #113: ci: cleanup a bit.

  • PR #112: Pandas of flat data with a cut applied returned empty tuple; fixed.

  • PR #111: Implement TProfile2D’s values.

  • PR #110: Ensure that we don’t check in code with print statements.

  • PR #109: remove superfluous print statement.

  • PR #107: Fix memory leak in parallel processing.

  • PR #105: Check the type of the user-supplied *_handlers.

  • PR #101: Start writing the readthedocs.

  • PR #99: Read file-like objects as a new kind of Uproot Source.

  • PR #96: Set up interface between Uproot and Awkward so that Awkward can be used to optimize object-reading.

  • PR #97: Update TH* behaviors to match uproot3 expectations. (also: #93)

  • PR #95: Adjust HasBranches.show widths and add ‘…’ so that the ‘*’ at the end of a type doesn’t get truncated without fanfare.

  • PR #94: Homogenize uses of KeyInFileError.

  • PR #92: Fixes #90 and readies Uproot lazyarray for Awkward ArrayCache weakrefs.

  • PR #89: Put docstrings on everything.

  • PR #88: Fixes #36 by replacing range with xrange in Python 2.

  • PR #87: Check for memberwise serialization and raise NotImplementedError as needed.

  • PR #86: When searching for a streamer by member name, be sure to include a class’s base classes.

  • PR #81: Removed the colon-parsing and replaced it with dicts.

  • PR #84: Distinguish between 1-byte and 6-byte header in AsArray.

  • PR #83: Uproot4 seems to be handling ‘long long’ okay already, but I added it to the parser anyway.

  • PR #78: Get rid of the Dask backend (it puts too many constraints on Awkward; should be done differently, if at all).

  • PR #77: Minor tweak to regex to fix #74.

  • PR #73: Revamp physical layer to be sure it’s on a solid foundation. The things we didn’t use can be removed.

  • PR #70: Use correct memory units.

  • PR #67: Add function to retrieve common entry offsets among branches.

  • PR #68: Fix error from calling reshape on TArrayD that lives inside of a TH1D.

  • PR #66: Fix an issue where fallback HTTP doesn’t get told it should notify when done.

  • PR #65: Fixing #64; skip_over should be conditional.

  • PR #63: Fix some more NumPy ‘tostring’ -> ‘tobytes’ warnings.

  • PR #62: optimize handling of header bytes.

  • PR #59: XRootD improvements.

  • PR #58: Detach live, readable file objects from Model instances, replacing them with static DetachedFile objects.

  • PR #55: Replace id(branch) with branch.cache_key when coordinating basket-reads.

  • PR #53: Model.parent should point to the concrete instance, not the objects referring to base class data.

  • PR #49: Make to_numpy match boost-histogram’s flow=False default (and mplhep’s expectation).

  • PR #52: Parse multi-argument templates beyond just std::map. (also: #37)

  • PR #48: Bug-fixes for the PyHEP tutorial. (also: #47)

  • PR #46: Connect to boost-histogram and hist.

  • PR #45: Start implementing lazy arrays.

  • PR #44: Introduce a concatenate function to relieve user-pressure on lazyarrays for cases it isn’t intended for.

  • PR #43: Start working on the iterate method and function.

  • PR #35: Last data type/interpretation features before moving on to iteration.

  • PR #34: AsStridedObjects, such as TLorentzVectors.

  • PR #33: AsObjects.simplify, leaf-lists, and test Double32.

  • PR #31: Test STL containers.

  • PR #29: Implement STL containers.

  • PR #28: Fallback to reading streamer and raise better error messages on true failures.

  • PR #23: Develop more interpretations.

  • PR #22: Make the multi-branch ‘arrays’ function stable.

  • PR #21: Simplify Conda activate.

  • PR #19: Fixing bugs for HATS.

  • PR #18: Fill out the array-fetching interface.

  • PR #17: Multi-basket, multi-branch fetch.

  • PR #16: Start work on interpretations; read at least one basket.

  • PR #15: Separate the object_cache and array_cache.

  • PR #14: Read all TTree versions.

  • PR #13: Add RNTuple anchor, with test.

  • PR #11: Generate classes from streamers, versioning, and reuse them between files.

  • PR #10: Start streamers: deserializing them into objects on demand.

  • PR #9: Nested directories and the ‘uproot.open’ function.

  • PR #8: TFile headers, root directory, streamer info key. Developed a reading strategy. (also: scikit-hep/scikit-hep-testdata#31)

Earlier releases

Uproot versions 1 through 3 were in a different GitHub repository: scikit-hep/uproot3.

This was to allow users to transition from Awkward Array 0.x and Uproot 3.x, which had different interfaces (especially Awkward Array). The transition completed on December 1, 2020.

https://raw.githubusercontent.com/scikit-hep/uproot4/main/docs-img/diagrams/uproot-awkward-timeline.png