Henry Schreiner
@henryiii.bsky.social
Princeton RSE. Scikit-HEP, Scikit-build, PyPA/build, PyPA/cibuildwheel, pybind11, CLI11, & plumbum. Also on @henryiii@fosstodon.org and @henryschreiner3 (X).
I've just finished uhi 1.0, following boost-histogram 1.6 and hist 2.9, with support for serializing histograms into JSON/ZIP/HDF5. There's also a new testing helper (libraries implementing UHI can get dozens of tests with a few lines), and much more! iscinumpy.dev/post/uhi-1-0/
UHI 1.0: histogram serialization
UHI 1.0 is out, with a major new feature: a new histogram serialization
spec! This spec supports multiple formats (HDF5, zip, and JSON initially), and
can be supported by multiple libraries (Boost-his...
iscinumpy.dev
August 20, 2025 at 9:20 PM
I've just finished uhi 1.0, following boost-histogram 1.6 and hist 2.9, with support for serializing histograms into JSON/ZIP/HDF5. There's also a new testing helper (libraries implementing UHI can get dozens of tests with a few lines), and much more! iscinumpy.dev/post/uhi-1-0/
cibuildwheel π is out! (3.1.4). A few nice things, like --clean-cache, Android fixes, and new versions of things like CPython 3.14rc2. Note for iOS on GHA/Azure, you need macOS-14, Microsoft broke macOS-15 images for iOS (WRT CPython's test runner, anyway) github.com/pypa/cibuild...
Release v3.1.4 · pypa/cibuildwheel
✨ Add a --clean-cache command to clean up our cache (#2489)
🛠 Update Python to 3.14rc2 and other patch version bumps (#2542, #2556)
🛠 Update Pyodide to 0.28.2 (#2562, #2558)
🐛 Fix resolution with p...
github.com
August 20, 2025 at 5:22 AM
cibuildwheel π is out! (3.1.4). A few nice things, like --clean-cache, Android fixes, and new versions of things like CPython 3.14rc2. Note for iOS on GHA/Azure, you need macOS-14, Microsoft broke macOS-15 images for iOS (WRT CPython's test runner, anyway) github.com/pypa/cibuild...
PSA: You can't use `pip install -U pip` to upgrade to pip 25.2 on Windows. You have to use `python -m pip install -U pip`. That's always been better, but now the entrypoint scripts were optimized to be faster (I've wanted this for years!), Windows doesn't PIP.EXE modify itself!
July 31, 2025 at 4:39 AM
PSA: You can't use `pip install -U pip` to upgrade to pip 25.2 on Windows. You have to use `python -m pip install -U pip`. That's always been better, but now the entrypoint scripts were optimized to be faster (I've wanted this for years!), Windows doesn't PIP.EXE modify itself!
We just released cibuildwheel 3.1, which builds Python 3.14/3.14t wheels by default (with yesterday's RC 1)! Also we added Android support, Pyodide 0.28 (3.13), 32-bit modern manylinux, riscv64 defaults, and beautiful new summaries! github.com/pypa/cibuild...
Release v3.1.0 · pypa/cibuildwheel
🌟 CPython 3.14 wheels are now built by default - without the "cpython-prerelease" enable set. It's time to build and upload these wheels to PyPI! This release includes CPython 3.14.0rc1, which is g...
github.com
July 24, 2025 at 3:45 AM
We just released cibuildwheel 3.1, which builds Python 3.14/3.14t wheels by default (with yesterday's RC 1)! Also we added Android support, Pyodide 0.28 (3.13), 32-bit modern manylinux, riscv64 defaults, and beautiful new summaries! github.com/pypa/cibuild...
pybind11 3.0 is out (in time for #scipy2025)! Support for Python 3.14, 3.14t, GraalPy, PyPy 3.11, and iOS have been added. smart-holder merged, native enums, multiphase init, subinterpreters (with per-interp GIL), better typing, C++23, and much more! See iscinumpy.dev/post/pybind1...
pybind11 3.0.0
Pybind11 3.0 has been released! I would like to highlight some of the key
changes below; be sure to check out the changelog and upgrade guide for
more information! This release includes an ABI bump, t...
iscinumpy.dev
July 10, 2025 at 10:06 PM
pybind11 3.0 is out (in time for #scipy2025)! Support for Python 3.14, 3.14t, GraalPy, PyPy 3.11, and iOS have been added. smart-holder merged, native enums, multiphase init, subinterpreters (with per-interp GIL), better typing, C++23, and much more! See iscinumpy.dev/post/pybind1...
I've updated my Python 3.14 post with the new additions in 3.14.0b3: free-threading is no longer experimental, and concurrent.interpreters has been added! I've added a couple of examples: iscinumpy.dev/post/python-...
Python π
Python π (3.14) beta 3 is out, which means the features are locked in (normally
beta 1, but two additions were made exceptionally in beta 3!). The big feature
this time around is template strings. The...
iscinumpy.dev
June 18, 2025 at 7:36 PM
I've updated my Python 3.14 post with the new additions in 3.14.0b3: free-threading is no longer experimental, and concurrent.interpreters has been added! I've added a couple of examples: iscinumpy.dev/post/python-...
cibuildwheel 3.0 is out! New support for Python 3.14 (and 3.14t) betas, GraalPy, and iOS! New defaults, new config options, beautiful docs updates, and more! iscinumpy.dev/post/cibuild...
🎡 cibuildwheel 3.0
cibuildwheel 3.0.0 is out, with some very big additions. We’ve added
GraalPy, Python 3.14 (and 3.14t) betas, and iOS support! We’ve got several new
options: test-sources, test-environment, and (experi...
iscinumpy.dev
June 11, 2025 at 3:19 PM
cibuildwheel 3.0 is out! New support for Python 3.14 (and 3.14t) betas, GraalPy, and iOS! New defaults, new config options, beautiful docs updates, and more! iscinumpy.dev/post/cibuild...
If you are updating for Python π (Python 3.14) and are using argparse, remember to conditionally add `color=True` and, if using choices or subcommands, `suggest_on_error=True`!
May 13, 2025 at 7:38 PM
If you are updating for Python π (Python 3.14) and are using argparse, remember to conditionally add `color=True` and, if using choices or subcommands, `suggest_on_error=True`!
The beta is out, so it's time for What's new in Python π: iscinumpy.dev/post/python-... (also it's time to start adding it to CI and adding classifiers if it works!)
Python π
Python π (3.14) beta 1 is out, which means the features are locked in.
iscinumpy.dev
May 8, 2025 at 7:12 PM
The beta is out, so it's time for What's new in Python π: iscinumpy.dev/post/python-... (also it's time to start adding it to CI and adding classifiers if it works!)
The Scientific-Python Development Guide has been updated with SPDX licenses (PEP 639) and dependency-groups (PEP 735)! There's more uv, too; the cookiecutter/copier template now sets up uv everywhere for ultra fast CI. New repo-review checks, too. learn.scientific-python.org/development/...
Topical Guides
This guide is maintained by the scientific Python community for the benefit of fellow scientists and research software engineers.
learn.scientific-python.org
May 2, 2025 at 8:03 PM
The Scientific-Python Development Guide has been updated with SPDX licenses (PEP 639) and dependency-groups (PEP 735)! There's more uv, too; the cookiecutter/copier template now sets up uv everywhere for ultra fast CI. New repo-review checks, too. learn.scientific-python.org/development/...
I've just released nox 2025.05.01 with support for uv 0.7+! Lots of other small fixes and polish. Sorry for the breakage, but uv broke accessing the version of uv without warning. And you need the version of uv to know which method to use to get the version. 🤣
May 1, 2025 at 4:54 PM
I've just released nox 2025.05.01 with support for uv 0.7+! Lots of other small fixes and polish. Sorry for the breakage, but uv broke accessing the version of uv without warning. And you need the version of uv to know which method to use to get the version. 🤣
I've just released the #Python wheels for today's release of #CMake 4.0! pypi.org/project/cmake/ Remember to set your CMake minimum version to at least 3.5 (3.15 or better preferred) and set a maximum version too (newer CMake follows the policies of the maximum version) #release
cmake
CMake is an open-source, cross-platform family of tools designed to build, test and package software
pypi.org
March 28, 2025 at 3:57 AM
I've just released the #Python wheels for today's release of #CMake 4.0! pypi.org/project/cmake/ Remember to set your CMake minimum version to at least 3.5 (3.15 or better preferred) and set a maximum version too (newer CMake follows the policies of the maximum version) #release
If you have an issue with a dependency breaking due to setuptools 78's setup.cfg change, and you use uv, it's just:
[tool.uv]
build-constraint-dependencies = ["setuptools<78"]
to fix. Otherwise:
echo "setuptools<78" > constraints.txt
PIP_CONSTRAINT=constrants.txt pip ...
[tool.uv]
build-constraint-dependencies = ["setuptools<78"]
to fix. Otherwise:
echo "setuptools<78" > constraints.txt
PIP_CONSTRAINT=constrants.txt pip ...
March 24, 2025 at 8:15 PM
If you have an issue with a dependency breaking due to setuptools 78's setup.cfg change, and you use uv, it's just:
[tool.uv]
build-constraint-dependencies = ["setuptools<78"]
to fix. Otherwise:
echo "setuptools<78" > constraints.txt
PIP_CONSTRAINT=constrants.txt pip ...
[tool.uv]
build-constraint-dependencies = ["setuptools<78"]
to fix. Otherwise:
echo "setuptools<78" > constraints.txt
PIP_CONSTRAINT=constrants.txt pip ...
Scikit-build-core 0.11 is out, with PEP 639 support (license expressions and files), METADATA 2.2+ as the default (supporting faster SDist metadata access for tools like uv), and quite a few smaller additions and expanded configurability. github.com/scikit-build...
Release Version 0.11.0 · scikit-build/scikit-build-core
This version adds support for PEP 639 (license expressions) and updates the default METADATA version 2.2. Support for Python 3.7 has been removed. You can use build.requires to inject build require...
github.com
February 28, 2025 at 6:51 PM
Scikit-build-core 0.11 is out, with PEP 639 support (license expressions and files), METADATA 2.2+ as the default (supporting faster SDist metadata access for tools like uv), and quite a few smaller additions and expanded configurability. github.com/scikit-build...
New release of CLI11 out, the most powerful C++ CLI parser! Version 2.5 has a new formatter following UNIX standards more closely (help2man support), non-standard "-flag" opt-in support, and fixes and polish. github.com/CLIUtils/CLI...
Release Version 2.5.0: Formatter · CLIUtils/CLI11
This version add a new formatter with improved control capabilities and output aligned with standards for help output. It also add a modifier to enable use of non-standard option names. Along with ...
github.com
February 27, 2025 at 2:40 PM
New release of CLI11 out, the most powerful C++ CLI parser! Version 2.5 has a new formatter following UNIX standards more closely (help2man support), non-standard "-flag" opt-in support, and fixes and polish. github.com/CLIUtils/CLI...
Just released repo-review 0.12, with support for adding skip reasons to configuration! Also has a new --extend-ignore CLI flag. WASM versions updated to show skip reasons: learn.scientific-python.org/development/...
Repo-Review
This guide is maintained by the scientific Python community for the benefit of fellow scientists and research software engineers.
learn.scientific-python.org
February 5, 2025 at 4:45 PM
Just released repo-review 0.12, with support for adding skip reasons to configuration! Also has a new --extend-ignore CLI flag. WASM versions updated to show skip reasons: learn.scientific-python.org/development/...
I just completed all 25 days of Advent of Code 2024 (Rust again this year)! #AdventOfCode adventofcode.com
Advent of Code 2024
adventofcode.com
December 25, 2024 at 7:17 AM
I just completed all 25 days of Advent of Code 2024 (Rust again this year)! #AdventOfCode adventofcode.com
I've just released cibuildwheel 2.22, with [dependency-groups] (PEP 735) support, a new simpler enable option, experimental manylinux ARMv7l support, and lots of fixes and updates! This is the final release (other than patches) before cibuildwheel 3.0! github.com/pypa/cibuild... #python
Release Version 2.22.0 · pypa/cibuildwheel
🌟 Added a new CIBW_ENABLE/enable feature that replaces CIBW_FREETHREADED_SUPPORT/free-threaded-support and CIBW_PRERELEASE_PYTHONS with a system that supports both. In cibuildwheel 3, this will als...
github.com
November 23, 2024 at 7:00 AM
I've just released cibuildwheel 2.22, with [dependency-groups] (PEP 735) support, a new simpler enable option, experimental manylinux ARMv7l support, and lots of fixes and updates! This is the final release (other than patches) before cibuildwheel 3.0! github.com/pypa/cibuild... #python