Features
- Python 3.15 wheels, including free-threading and Pyodide, by @henryiii in #1163
- Support
flow=Falsein histogram projections by @Rishabh-git10 in #1109 - Add
Histogram.allclosefor approximate histogram comparison by @gohil-jay in #778 - Add a pytest plugin with rich assertion reporting for histogram comparisons by @gohil-jay in #763
Changes
- Support subtraction for the
MultiCellstorage by @henryiii in #1131 - Support vectorized NumPy-array indexing for getting and setting bins by @henryiii in #1134
- Support addition for
Mean/WeightedMeanviews by @henryiii in #1137 - Add reflected
__rsub__and__rtruediv__operators by @henryiii in #1155 - Accept a scalar
sampleargument infillby @henryiii in #1124 - Rebin with groups:
MultiCellsupport, flow handling, and agroup_mappingprotocol by @henryiii in #1148
Fixes
- Reject arithmetic with mismatched storages by @divyanshu-iitian in #1166
- Return a zero-filled vector from
MultiCellsum()over zero bins instead of an empty list by @henryiii in #1132 - Raise
TypeErrorinstead ofValueErrorfor a non-integer locatoroffsetand a stringsample=by @henryiii in #1163 - Clear error for unsupported histogram in-place operations by @henryiii in #1130
- Support common transformed axes in the
numpyshortcuts by @henryiii in #1122 - Correct
Meanstorage string rejection and__setitem__error message by @henryiii in #1117 - Several fixes from automated review by @henryiii in #1116 and #1118
- Promote integer storages to double on division by @henryiii in #1138
- Do not mutate input edges and validate
histogramdddimensions in thenumpymodule by @henryiii in #1144 - Fix
out=handling, scalar division, and broadcasting in structured views by @henryiii in #1146 - Fix non-contiguous array handling and memory safety in the C++ bindings by @henryiii in #1147
- Fix indexing,
__setitem__flow transfer, and fill edge cases by @henryiii in #1149 - Avoid Boost indexed-range UB in rank-0
sum()/empty()by @henryiii in #1153 - Normalize negative integer slice bounds in indexing by @henryiii in #1156
- Remove ODR-violating
operator<<foraccumulators::sumby @henryiii in #1161
Performance
Documentation
- Cleanup, modernization, and gap-filling in the user guide by @henryiii in #1141
- Note that fancy indexing on views returns a copy by @henryiii in #1136
- Correct the wheel table and add a version-support checklist by @henryiii in #1168
Tests
- Use
pytest.approxinstead of NumPy assertion helpers by @gohil-jay in #780 - Validate UHI serialization against the uhi JSON schema by @henryiii in #1140
- Broaden
MultiCellstorage coverage by @henryiii in #1127 - Add regression test for scalar-broadcast fill on non-inclusive axes by @henryiii in #1125
- Add ND projection test for
flow=Falseby @Rishabh-git10 in #1111 - Disable cloudpickle tests on PyPy by @henryiii in #1120
- Skip the pytest plugin end-to-end test on Emscripten by @henryiii in #1152
Internal
- Bump to Boost 1.91 by @henryiii in #1112
- Bump setup-uv to the maintained tag scheme by @henryiii in #1110
- Update cibuildwheel to v4.0 by @henryiii in #1119
- Update AGENTS instructions and ignore the CLAUDE symlink by @henryiii in #1121
- Make the nox
histsession fail on a missing dir and mypy override errors by @henryiii in #1135 - Set up uv cache keys by @henryiii in #1142
- pybind11 v3 pin, MSVC
/WX, config and stub cleanups by @henryiii in #1145 - Remove dead code and minor C++ cleanups by @henryiii in #1151
- Remove the needs-changelog labeler by @henryiii in #1164
New Contributors
- @Rishabh-git10 made their first contribution in #1109
- @divyanshu-iitian made their first contribution in #1166
Full Changelog: v1.7.2...v1.8.0