Henry Schreiner's Avatar

Henry Schreiner

@henryiii

Princeton RSE. Scikit-HEP, Scikit-build, PyPA/build, PyPA/cibuildwheel, pybind11, CLI11, & plumbum. Also on @henryiii@fosstodon.org and @henryschreiner3 (X).

164
Followers
61
Following
27
Posts
20.11.2024
Joined
Posts Following

Latest posts by Henry Schreiner @henryiii

Great release of pip with 26.0! Colorful --help, --requirements-from-script, --uploaded-prior-to, and all the performance optimization work we did on packaging 26.0! New build environment option, too.

31.01.2026 02:10 πŸ‘ 4 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
Release 26.0 Β· pypa/packaging Read about the performance improvements here: https://iscinumpy.dev/post/packaging-faster. What's Changed Features: PEP 751: support pylock by @sbidoul in #900 PEP 794: import name metadata by @br...

Packaging 26.0 is out! Hopefully in time for pip 26.0. :) github.com/pypa/packagi...

21.01.2026 21:13 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
How we made Python's packaging library 3x faster Along with a pip (and now packaging) maintainer, Damian Shaw, I have been working on making packaging, the library behind almost all packaging related tools, faster at reading versions and specifiers,...

On behalf of the packaging maintainers, I’d like to announce packaging 26.0rc1 is out! Please try it out, as it's a huge release. If you'd like to read about the performance work making this the fastest version of packaging ever, see my post:
iscinumpy.dev/post/packagi...

09.01.2026 19:10 πŸ‘ 24 πŸ” 8 πŸ’¬ 2 πŸ“Œ 2
Preview
Advent of Code 2025 in Typescript After two years of Advent of Code in Rust, I thought I’d try TypeScript. I’ve always wanted to improve repo-review’s webapp, and that requires knowledge of the packaging systems for JavaScript, so I t...

I've written a post about my experience learning TypeScript and using AI for this year's Advent of Code (after learning Rust the last two years). iscinumpy.dev/post/aoc-2025 Merry Christmas!

26.12.2025 00:14 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
PEP 808 – Partially dynamic project metadata | peps.python.org This PEP relaxes the constraint on dynamic metadata listed in the [project] section in pyproject.toml to allow the static portion of mixed metadata to be defined in the normal location if the field is...

Partially dynamic project metadata: peps.python.org/pep-0808

14.11.2025 21:45 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
Release v3.3.0 Β· pypa/cibuildwheel πŸ› Fix an incompatibility with Docker v29 (#2660) ✨ Adds test-runtime option, to customise how tests on simulated/emulated environments are run (#2636) ✨ Adds support for new manylinux_2_35 images o...

cibuildwheel 3.3 out! Fix for docker 29 changing the capitalization of the version output, but also runner customization (for iOS on GHA macos-15), manylinux_2_35 on armv7l, build[uv] support on Android, removed build-system constraints, and more! github.com/pypa/cibuild...

12.11.2025 19:47 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
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...

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/

20.08.2025 21:20 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
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...

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...

20.08.2025 05:22 πŸ‘ 1 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0

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!

31.07.2025 04:39 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

NumPy picked it up and released 3.14(t) wheels within hours! (Largely due to the scientific python nightly wheels having them for a long time now!) Time to start producing those 3.14 wheels!

25.07.2025 05:07 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
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...

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...

24.07.2025 03:45 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Preview
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...

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...

10.07.2025 22:06 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
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...

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-...

18.06.2025 19:36 πŸ‘ 3 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
Preview
🎑 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...

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...

11.06.2025 15:19 πŸ‘ 1 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0

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`!

13.05.2025 19:38 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
Python Ο€ Python Ο€ (3.14) beta 1 is out, which means the features are locked in.

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!)

08.05.2025 19:12 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Topical Guides This guide is maintained by the scientific Python community for the benefit of fellow scientists and research software engineers.

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/...

02.05.2025 20:03 πŸ‘ 2 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0

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. 🀣

01.05.2025 16:54 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

And cliutils.gitlab.io/modern-cmake is updated for 4.0, as usual. :)

28.03.2025 03:59 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
cmake CMake is an open-source, cross-platform family of tools designed to build, test and package software

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

28.03.2025 03:57 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Actually, this was postponed till 2026 in 78.0.2, so it's fine for now. (No one reads build warnings, in fact pip hides them by default.) I'll probably add this as a repo-review check.

Another nice workaround anyway, though:

[tool.uv]
exclude-newer = "2025-03-24T00:00:00Z"

24.03.2025 20:22 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

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 ...

24.03.2025 20:15 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Preview
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...

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...

28.02.2025 18:51 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
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 ...

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...

27.02.2025 14:40 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Repo-Review This guide is maintained by the scientific Python community for the benefit of fellow scientists and research software engineers.

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/...

05.02.2025 16:45 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Advent of Code 2024

I just completed all 25 days of Advent of Code 2024 (Rust again this year)! #AdventOfCode adventofcode.com

25.12.2024 07:17 πŸ‘ 5 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
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...

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

23.11.2024 07:00 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0