Changelog#
WIP#
Features#
Fixes#
Return a zero-filled vector from
MultiCellsum()over zero bins instead of an empty list by @henryiii in #1132
Version 1.7#
Version 1.7.2#
Features#
No storage option/support for serialization, by @henryiii in #1098
Fixes#
Correct repr for MultiCell by @henryiii in #1087
Fix serialization round-trip for 3D histograms with empty axes by @Copilot in #1094
Fix
__setitem__axis index mismatch when slices are not leading indices by @Copilot in #1097Support 0D MeanView/WeightedMeanView by @Copilot in #1100
Broadcast scalar axis args to match array sample length in Mean/WeightedMean fill by @Copilot in #1101
Typing#
Slightly better getitem type by @henryiii in #1086
Internal#
Version 1.7.1#
Typing#
Version 1.7.0#
Features#
Bug fixes#
Internal#
Version 1.6#
Version 1.6.1#
This release fixes several issues with serialization as it’s being prepared in Hist/uhi.
Features#
Bug fixes#
Version 1.6.0#
This release adds support for UHI serialization for use with the uhi library,
supported in the next release of uhi. A new diagnostic test has been added
in the wheel, so you can quickly check your compile of boost-histogram without
the full test suite. Quite a few fixes are present, as well, including a fix
for *=, setting a range with a scalar, setting with a callable in a slice.
Backend changes include many new clang-tidy checks that reduce the number of
copies and refcount changes. We now build with pybind11 3.0.
This release drops support for Python 3.8, and adds Python 3.14(t), iOS, Windows ARM, and GraalPy.
Features#
Bug fixes#
Support setting ranges with histograms (fixes
*=too) [#1036][]Support a callable in range setting [#1036][]
Support setting a range with a scalar #1000
Account for fuzzy edge values in rebinning with edges #999
Rename C++ metadata to
raw_metadata#979Address lots of clang-tidy suggestions, should be faster with less copies/refcount bumps [#1009][], [#1010][], [#1011][], [#1012][], [#1013][], [#1014][], [#1015][]
CI and testing#
Add CMake presets for testing and clang-tidy [#1009][]
:[#1002]: https://github.com/scikit-hep/boost-histogram/pull/1002 [#1009]: https://github.com/scikit-hep/boost-histogram/pull/1009 [#1010]: https://github.com/scikit-hep/boost-histogram/pull/1010 [#1011]: https://github.com/scikit-hep/boost-histogram/pull/1011 [#1012]: https://github.com/scikit-hep/boost-histogram/pull/1012 [#1013]: https://github.com/scikit-hep/boost-histogram/pull/1013 [#1014]: https://github.com/scikit-hep/boost-histogram/pull/1014 [#1015]: https://github.com/scikit-hep/boost-histogram/pull/1015 [#1018]: https://github.com/scikit-hep/boost-histogram/pull/1018 [#1020]: https://github.com/scikit-hep/boost-histogram/pull/1020 [#1022]: https://github.com/scikit-hep/boost-histogram/pull/1022 [#1027]: https://github.com/scikit-hep/boost-histogram/pull/1027 [#1030]: https://github.com/scikit-hep/boost-histogram/pull/1030 [#1033]: https://github.com/scikit-hep/boost-histogram/pull/1033 [#1034]: https://github.com/scikit-hep/boost-histogram/pull/1034 [#1035]: https://github.com/scikit-hep/boost-histogram/pull/1035 [#1036]: https://github.com/scikit-hep/boost-histogram/pull/1036
Version 1.5#
Version 1.5.2#
Fix for axis metadata not passing though non-uniform rebinning correctly. Flow bins are now preserved when doing a non-uniform rebinning. Also adds the ability to rebin by edges or an existing axis.
This is expected to be the last release with Python 3.8 support. Manylinux
support will likely be bumped from 2024 to 2_28 soon, as well.
Features#
Bug fixes#
CI and testing#
Version 1.5.1#
Bug fixes#
Make non-uniform rebinning work for Weight() and friends #972
Version 1.5.0#
Features#
Backend and docs#
CI and testing#
Try cibuildwheel pyodide #935
Try to fix pyodide build #934
Update emscripten build #937
Bump to Pyodide 3.12 #938
Speed up pyodide job by a few seconds #941
Update jobs and noxfile #929
Use pylint 3.2 github formatter instead #932
Add some CI speedups #939
Faster cibuildwheel #942
Adapt to final release of NumPy 2.1.0 #951
Version 1.4#
Version 1.4.1#
Features#
Bugfixes#
Backend and docs#
Version 1.4.0#
Features#
overflow=Falseis now supported forIntCategoryandStrCategory. #883
Changes#
Bugfixes#
Backend and docs#
Version 1.3#
Version 1.3.2#
Changes#
Bug fixes#
Patch broken sum with fully empty (0 bin) axis. #718
Fix zero range
bh.numpy.histogramto matchnumpy.histogrambehavior. #721Avoid triggering
__init__when copying (better support for subclasses with custom init’s). #759IntCategory now supports numbers larger than 2^24 (now 2^53). #792
Pick a subset now supported inside a larger expression. #793
Backend and docs#
Version 1.3.1#
Bug fixes#
Fixed regression with invalid
.projectinput causing segfaults. #708Minor skips for specific tests on ppc64le, primarily for a NumPy bug. #707
Avoid using EH for program control, better on Pyodide. #709
Fix regression with exact float not being accepted for
.indexforIntCategoryin 1.3.0. Addhistnox session to check downstream (manually for the moment). #710
Version 1.3.0#
User changes#
Bug fixes#
Developer changes#
Version 1.2#
Version 1.2.1#
User changes#
musllinux wheels now provided along with manylinux #656
Bug fixes#
Fixed single-element negative growth fill #654
Developer changes#
Version 1.2.0#
User changes#
Bug fixes#
Support custom setters on AxesTuple subclasses. #627
Faster picking if slices are not also used #645 or if they are #648 (1000x or more in some cases)
Throw an error when an AxesTuple setter is the wrong length (inspired by zip strict in Python 3.10) #627
Fix error thrown on comparison with axis and non-axis object #631
Static typing no longer thinks
storage=is required #604
Developer changes#
Version 1.1#
Version 1.1.0#
User changes#
Bug fixes#
Developer changes#
Version 1.0#
Version 1.0.2#
Version 1.0.1#
Subclassing Histogram changes#
A
family=is no longer required if you only subclass Histogram. #533
Bug fixes#
Typing changes#
Version 1.0.0#
Dropped support for Python 2 and 3.5; removed large numbers of workarounds.
Fully statically typed. API compatible with the final 0.x release for most
uses, except for subclassing; subclassing histogram components now uses Python
3 class keyword syntax to set families.
User changes#
Subclassing Histogram changes#
Bug fixes#
Version 0.13#
Version 0.13.2#
Backport fix scaling a weighted storage
Backport fix partial summation over a Categorical axis
Version 0.13.1#
Backport fix for Mean/WeightedMean summing.
Backport fix for
boost_histogram.numpydensity.Backport missing metadata from the repr’s.
Ignore
family=on Histogram subclassing to make subclassing Histogram only possible in 1.x + 0.x code.
Version 0.13.0#
PlottableProtocol provides a way to plot in different libraries, and easy access to common quantities. This is expected to be the final release for Python 2, and mostly equivalent in API to 1.0.
User changes#
Support for PlottableProtocol. You can now access
.values(),.counts(), and.variances()on all storages; used by plotting libraries..kinddescribes the Kind of the histogram (bh.Kind.COUNTorbh.Kind.MEAN)..optionshas been renamed to.traits, and a few more useful traits were added, like.discrete. Most other portions of the Protocol were already present. #476Removed deprecated
.rankon histograms (since 0.8). Use.ndiminstead. #505Supports converting user histogram objects that provide a
_to_boost_histogram_method. #483A
view=Trueparameter must now be passed to get a View instead of a standard NumPy values array fromto_numpy(). #498
Bug fixes#
Developer changes#
Version 0.12#
Version 0.12.0#
Pressing forward to 1.0.
User changes#
Bug fixes#
Developer changes#
Upgrade warning#
If you are using Axis.options, please transition to Axis.traits. traits
includes all the old options, along with some new traits, and matches the
PlottableProtocol requirements.
Version 0.11#
Version 0.11.1#
Updating pybind11 to 2.6.0. #443 Features:
Python 3.9 support
PyPy2 / PyPy3.6 / PyPy3.7 support
Warnings on latest AppleClang fixed
40% faster accumulator fills, simpler implementation
Segfaults when passing an object with a throwing repr fixed
kwargs replaced older workarounds (partially at the moment)
Using new
py::typeinstead ofpybind11::detailusageEnhanced CMake support, finds conda and venv now, uses
pybind11_find_importUsing setuptools support from pybind11 (previously vendored, so benefits have been available since 0.11.0)
Also cleans up SDists a bit. #467
Version 0.11.0#
A release focused on preparing for the upcoming Hist 2.0 release.
User changes#
Bug fixes#
Developer changes#
Version 0.10#
Version 0.10.2#
Quick fix for extra print statement in fill.
Bug fixes#
Fixed debugging print statement in fill. #438
Developer changes#
Version 0.10.1#
Several fixes were made, mostly related to Weight storage histograms from Uproot 4.
Bug fixes#
Version 0.10.0#
This version was released during PyHEP 2020. Several improvements were made to usability when plotting and indexing.
User changes#
AxesTuple array now support operations via ArrayTuple #414
Support
sumandbh.rebinwithout slice #424Nicer error messages in some cases #415
Made a few properties hidden for accumulators that were not public #418
Boolean now supports reduction, faster compile #422
AxesTuple now available publicly for subprojects #419
Bug fixes#
Histograms support operations with arrays, no longer take the first element only #417
Version 0.9#
Version 0.9.0#
This version was released just before PyHEP 2020. Several important fixes were made, along with a few new features to better support downstream projects.
User changes#
Developer changes#
Bug fixes#
Version 0.8#
Version 0.8.0#
This version was released just before SciPy 2020 and Boost 1.74. Highlights include better accumulator views, simpler summing, better NumPy and Pandas compatibility, and sums on growing axes. Lots of backend work, including a new wheel building system, internal changes and better reliance on Boost.Histogram’s C++ tools for actions like cropping.
User changes#
Weighted histogram cells can now be assigned directly from iterables #375
Weighted views can be summed and added #368
Sum is now identical to the built-in sum function #365
Adding growing axis is better supported #358
Slicing an AxesTuple now keeps the type #384
ndimreplacesrankfor NumPy compatibility #385Any array-like supported in fill #391, any iterable can be used for Categories #392
Added Boolean axes, from Boost.Histogram 1.74 #390
Division between histograms is supported #393
More deprecated functionality removed
Bug fixes#
Support older versions of CloudPickle (issue also fixed upstream) #343
Drop extra printout #338
Throw an error instead of returning an incorrect result in more places #386
Developer changes#
Update Boost to 1.73 #359, pybind11 to 2.5.0 #351, Boost.Histogram to pre-1.74 #388
Cropping no longer uses workaround #373
Many more checks added to
pre-commit#366Deprecating
cppinterface #391Wheelbuilding migrated to
cibuildwheeland GHA #361
Version 0.7#
Version 0.7.0#
This version removes deprecated functionality, and has several backend improvements. The most noticeable user-facing change is the multithreaded fill feature, which can enable significant speedups when you have a dataset that is much larger than the number of bins in your histogram and have free cores to use. Several small bugs have been fixed.
User changes#
Bug fixes#
Developer changes#
Build system update, higher requirements for developers (only) #314
Version is now obtained from
setuptools_scm, no longer stored in repo
Removed
futuresrequirement for Python 2 testsUpdated Boost.Histogram, cleaner code with fewer workarounds
Version 0.6#
Version 0.6.2#
Common analysis tasks are now better supported. Much more complete documentation. Now using development branch of Boost.Histogram again.
Bug fixes#
Developer changes#
Now using scikit-hep/azure-wheel-helpers via subtree #292
Version 0.6.1#
Examples and notebooks are now up to date with the current state of the library. Using Boost 1.72 release.
User changes#
Bug fixes#
Version 0.6.0#
This version fills out most of the remaining features missing from the 0.5.x series. You can now use all the storages without the original caveats; even the accumulators can be accessed array-at-a-time without copy, pickled quickly, and set array-at-a-time, as well.
The API has changed considerably, providing a more consistent experience in Python. Most of the classic API still works in this release, but will issue a warning and will be removed from the next release. Please use this release to transition existing 0.5.x code to the new API.
User changes#
Histogram and Axis classes now follow PEP 8 naming scheme (
histogram->Histogram,regular->Regular,int->Int64etc.) #192, #255You can now view a histogram with accumulators, with property access such as
h.view().value#194Circular variable and integer axes added #231
Split Category into
StrCategoryandIntCategory, now allows empty categories whengrowth=True#221Added axes transforms #192
Function(forward, inverse)transform added, allowing ultra-fast C function pointer transforms #231You can now set histogram contents directly #250
You can now sum over a range with endpoints #185
h.axesnow has the functions from axis as well. #183bh.projecthas becomebh.sum#185.reduce(...)and the reducers inbh.algorithmhave been removed in favor of dictionary based UHI slicing #259bh.numpymodule interface updates,histogram=bh.Histogramreplaces crypticbh=True, anddensity=Trueis now supported in NumPy mode #256Signatures are much nicer in Python 3 #188
Reprs are better, various properties like
__module__are now set correctly #200
Bug fixes#
Developer changes#
The linux wheels are now 10-20x smaller #229
The hist/axis classes are now pure Python, with a C++ object inside #183
Most internal names changed,
core->_core, etc. #183The
uhimodule is nowtag. #183boost_histogram.cpp as bhprovides C++ high-compatibility mode. #183Indexing tags now use full UHI instead of workarounds #185
Removed log and sqrt special axes types#231
Family and registration added, new casting system #200
Version 0.5#
Version 0.5.2#
User changes:#
Bug fixes:#
Developer changes:#
Version 0.5.1#
User changes:#
Bug fixes:#
Version 0.5.0#
First beta release and beginning of the changelog.
Known issues:#
Unlimited storage does not support pickling or classic multiprocessing
Some non-simple storages do not support some forms of access, like
.viewIndexing and the array versions (such as centers) are incomplete and subject to change
The numpy module is provisional and subject to change
Docstrings and signatures will improve in later versions (especially on Python 3)