2025-40: A week in conda-forge

This week was the week of PyData Paris and a public holiday in Germany. At the same time, my usual day-to-day work had to continue, so my conda-forge interactions were limited to simple (but many) reviews, fixes and merges. Larger changes have to wait for the next week(s).

As there was no maintainer response for a week, I merged grep-feedstock#17 and lxml-feedstock#105. As r-base-feedstock#386 was merged, we could trigger a re-run (and merge) on r-rjava-feedstock#50. After the latest merge, the nodejs build on osx-arm64 no longer fit into the six-hour timeframe on Azure Pipelines, so I started to look into a workaround in nodejs-feedstock#416. As the initial ideas didn’t lead to a good result, this will need to be reviewed again later. In the nodejs landscape, parceljs-feedstock#54 was not automerged because an outdated os_version broke the build. I cleaned up the feedstock and converted it to a v1 recipe. scorecard-feedstock#5 failed to build with invalid license issues. Here, we needed to manually download the license of a third-party dependency instead of automatically fetching it via go-licenses. On the positive side, conda-forge-pinning-feedstock#7822 was a straightforward merge.

The work on jaxlib 0.7.2 continued with the problem that the GCC headers can be different between build_platform and target_platform; thus, we needed bazel-toolchain-feedstock#26 to handle this.

Python 3.14

For the Python 3.14 migration, it was also quantity-over-quality this week as I wanted to ping some maintainers to merge PRs or at least get the clock started on PRs where I could use my conda-forge/core powers to merge after a week of no response.

During PyData Paris, the biggest currently blocker pandas-feedstock#233 was merged after upstream released a Python 3.14-compatible version. I pinged the maintainer on fastparquet-feedstock#78 directly, as this was the next one to get more nodes in the rebuild graph going. Sadly, not everything is fixable. For example, vowpalwabbit-feedstock#92 failed because it doesn’t build as it is not compatible with fmt>=11. However, moving the pin manually to fmt=10 only leads to the following error. Luckily, some easy ones can be directly merged, like tabmat-feedstock#56.

On pytorch-feedstock#420, I commented with a link to the upstream issue that we will need to wait for PyTorch 2.10. Still, it might also be possible here that we can backport some patches to the 2.9 release, as this might be simpler/faster than getting the whole of 2.10 building on conda-forge infrastructure.

In the list of larger nodes in the Python 3.14 graph, we also had pywinpty. As the PR was failing on the current version, I first tried to upgrade to the latest one in pywinpty-feedstock#64. Still, once I found out that this would require nuget and Windows Terminal to be build from source, I moved on an fixed pywinpty-feedstock#65 by setting PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 so that maturin builds for the new Python version.

numcodecs-feedstock#119 initially failed because of a missing Python 3.14 build for coverage. After a rerender of the feedstock, the build now passes, and thus I requested a review from the maintainers. This was also the case for pyfftw-feedstock#70. Similarly, I also asked a rerender for framel-feedstock#44. Sadly, in this case, Windows kept failing with MinGW compiler issues. These were solved by removing some old workarounds from conda_build_config.yaml. The build then passed, but framel’s unit tests failed, and I moved on for now. In srsly-feedstock#56 , the rerender revealed an upper pin in the package for python<=3.13. We concluded here to wait for a new release. As the thrift-feedstock looked a bit abandoned, I revived the version update in thrift-feedstock#42 and converted this to a v1 recipe to tackle the Python 3.14 migration afterwards.

There were several more small fixes I did, that I’m only summarising as bullets here:

Since the one week reaction period passed, I merged the following feedstock due to inactivity using my conda-forge/core powers:

These feedstocks were merged because @ocepaf gave me the 👍 to merge green Python 3.14 PRs where he is a maintainer:

There were also several PRs where the CI passed, so that I pinged the maintainers to make them aware: