--- /dev/null
+Title: Free software activity in December 2025
+Slug: activity-2025-12
+Date: 2026-01-05 13:08:53 +00:00
+Category: columbiform
+Tags: activity, columbiform, freexian, planet-debian
+Summary: Mostly chasing Python 3.14 problems.
+Mastodon-ID: 115842649787747857
+
+About 95% of my Debian contributions this month were
+[sponsored](https://www.freexian.com/about/debian-contributions/) by
+Freexian.
+
+You can also support my work directly via
+[Liberapay](https://liberapay.com/cjwatson) or [GitHub
+Sponsors](https://github.com/sponsors/cjwatson).
+
+## Python packaging
+
+I upgraded these packages to new upstream versions:
+
+* [pygments](https://bugs.debian.org/1117224) (prepared transition in
+ Debusine with diff-cover, pydata-sphinx-theme, pymdown-extensions,
+ python-readme-renderer, and python-stack-data; [contributed
+ python-stack-data fix
+ upstream](https://github.com/alexmojaki/stack_data/pull/63))
+* aiosmtplib
+* astroid (fixing a [build failure with Python
+ 3.14](https://bugs.debian.org/1123098), as I wrote about recently in
+ [Preparing a transition in Debusine]({filename}/debusine-transitions.md))
+* billiard (fixing a [syntax warning with Python
+ 3.14](https://bugs.debian.org/1121668))
+* celery ([contributed follow-up fix
+ upstream](https://github.com/celery/celery/pull/10033))
+* cloudpickle (fixing a [build failure with Python
+ 3.14](https://bugs.debian.org/1121743))
+* csvkit
+* deepdiff (fixing a [build failure with Python
+ 3.14](https://bugs.debian.org/1123114))
+* django-auditlog
+* django-phonenumber-field
+* flake8-builtins
+* flufl.lock
+* kombu
+* peewee
+* psycopg2
+* pydantic-extra-types
+* pylint (fixing a [build failure with Python
+ 3.14](https://bugs.debian.org/1123172))
+* pymdown-extensions
+* python-aiojobs (fixing a [build failure](https://bugs.debian.org/1114291))
+* python-aiostream
+* python-asttokens (fixing a [build failure with astroid
+ 4](https://bugs.debian.org/1124194))
+* python-auditwheel
+* python-blockbuster
+* python-boolean.py
+* python-confluent-kafka
+* python-django-crispy-forms
+* python-django-pgbulk
+* python-django-pgtransaction
+* python-django-pgtrigger (fixing a [build failure with
+ mkdocstrings-python-handlers >= 2](https://bugs.debian.org/1122461))
+* python-evalidate
+* python-exchangelib (fixing a [build failure with Python
+ 3.14](https://bugs.debian.org/1123237))
+* python-holidays
+* python-lsp-server
+* python-lz4
+* python-mashumaro (fixing many build failures in other packages with Python
+ 3.14)
+* python-moto
+* python-persistent
+* python-pytest-run-parallel
+* python-roman
+* python-rx (fixing a [build failure with Python
+ 3.14](https://bugs.debian.org/1123306))
+* python-telethon
+* python-uvicorn (fixing a [test failure with current
+ uvloop](https://bugs.debian.org/1122099))
+* python-wheezy.template
+* python-wslink
+* rpds-py
+* sphinx-autoapi
+* sqlparse
+* zope.testing (fixing a [build failure with Python
+ 3.14](https://bugs.debian.org/1123370))
+
+Python 3.14 is now a supported version in unstable, and we're working to get
+that into testing. As usual this is a pretty arduous effort because it
+requires going round and fixing lots of odds and ends across the whole
+ecosystem. We can deal with a fair number of problems by keeping up with
+upstream (see above), but there tends to be a long tail of packages whose
+upstreams are less active and where we need to chase them, or where problems
+only show up in Debian for one reason or another. I spent a lot of time
+working on this:
+
+* [actdiag's autopkgtests failed when there are multiple supported Python
+ versions](https://salsa.debian.org/python-team/packages/actdiag/-/commit/f566f601862a54b96c92d66874da9440351bf2a4)
+* [khard: FTBFS: dh\_auto\_test: error: pybuild --test -i python{version} -p
+ "3.14 3.13" returned exit code 13](https://bugs.debian.org/1123143)
+ ([contributed upstream](https://github.com/lucc/khard/pull/348))
+* [pydantic-settings: FTBFS: example.py: error: unrecognized arguments:
+ --bad-arg](https://bugs.debian.org/1123433) ([forwarded
+ upstream](https://github.com/pydantic/pydantic-settings/issues/733) and
+ cherry-picked their fix)
+* [pydantic: FTBFS: dh\_auto\_test: error: pybuild --test --test-pytest -i
+ python{version} -p "3.14 3.13" returned exit code
+ 13](https://bugs.debian.org/1123166)
+* [pygame: FTBFS with Python 3.14: sys.getrefcount()
+ AssertionError](https://bugs.debian.org/1121999)
+* [python-auditwheel: FTBFS: dh\_auto\_test: error: pybuild --test
+ --test-pytest -i python{version} -p "3.14 3.13" returned exit code
+ 13](https://bugs.debian.org/1123194) ([contributed
+ upstream](https://github.com/pypa/auditwheel/pull/661))
+* [python-charset-normalizer could silently build without support for some
+ supported Python versions](https://bugs.debian.org/1121820)
+* [python-confluent-kafka: FTBFS with Python 3.14: Segmentation fault in
+ test\_create\_topics\_api](https://bugs.debian.org/1117901) ([forwarded
+ upstream](https://github.com/confluentinc/confluent-kafka-python/issues/2146)
+ and
+ [fixed](https://github.com/confluentinc/confluent-kafka-python/pull/2151)
+ after a debugging hint from them)
+* [python-django: FTBFS with Python 3.14](https://bugs.debian.org/1122185)
+ (also fixing many build failures in other packages)
+* [python-memray: FTBFS with Python 3.14: Segmentation
+ fault](https://bugs.debian.org/1122076) (some initial debugging; [upstream
+ has since got a lot
+ further](https://github.com/bloomberg/memray/issues/863))
+* [python-telethon: FTBFS: dh\_auto\_test: error: pybuild --test
+ --test-pytest -i python{version} -p "3.14 3.13" returned exit code
+ 13](https://bugs.debian.org/1123319) ([contributed
+ upstream](https://github.com/LonamiWebs/Telethon/pull/4722))
+* [python-typing-extensions: FTBFS: dh\_auto\_test: error: pybuild --test -i
+ python{version} -p "3.14 3.13" returned exit code
+ 13](https://bugs.debian.org/1123325)
+* [python-wheezy.template: FTBFS with Python
+ 3.14](https://bugs.debian.org/1122023) ([contributed
+ upstream](https://github.com/akornatskyy/wheezy.template/pull/117),
+ although they opted for doing it a bit differently)
+* storm ([made an upstream release with Python 3.14
+ support](https://launchpad.net/storm/trunk/1.1))
+* [twisted: Autopkgtests fail with Python 3.14: builtins.RuntimeError: There
+ is no current event loop in thread
+ 'MainThread'](https://bugs.debian.org/1122044) ([forwarded
+ upstream](https://github.com/twisted/twisted/issues/12549) and
+ cherry-picked their fix)
+* zope.proxy and zope.security had a bootstrapping loop when adding new
+ supported Python versions; I [broke this
+ loop](https://salsa.debian.org/python-team/packages/zope.proxy/-/commit/6b8071330546d58da5465a75deb2a152172cf13f)
+ so it shouldn't bother us again in the future.
+
+Fixes for pytest 9:
+
+* [celery](https://bugs.debian.org/1123105) ([contributed
+ upstream](https://github.com/celery/celery/pull/10032))
+* [pytest-pylint](https://bugs.debian.org/1122932) ([contributed
+ upstream](https://github.com/carsongee/pytest-pylint/pull/196))
+* [python-expandvars](https://bugs.debian.org/1123239) ([contributed
+ upstream](https://github.com/sayanarijit/expandvars/pull/74))
+* [python-inline-snapshot](https://bugs.debian.org/1124083)
+
+I filed [lintian: Report Python egg-info
+files/directories](https://bugs.debian.org/1121735) to help us track the
+[migration to
+pybuild-plugin-pyproject](https://wiki.debian.org/Python/PybuildPluginPyproject).
+
+I did some work on dh-python: [Normalize names in pydist
+lookups](https://salsa.debian.org/python-team/tools/dh-python/-/merge_requests/64)
+and [pyproject plugin: Support
+headers](https://salsa.debian.org/python-team/tools/dh-python/-/merge_requests/65)
+(the latter of which allowed converting python-persistent and zope.proxy to
+pybuild-plugin-pyproject, although it needed a [follow-up
+fix](https://salsa.debian.org/python-team/tools/dh-python/-/merge_requests/66)).
+
+I fixed or helped to fix several other build/test failures:
+
+* [dpath-python](https://bugs.debian.org/1122304)
+* [flask-bcrypt: FTBFS: E ValueError: password cannot be longer than 72
+ bytes, truncate manually if necessary (e.g.
+ my\_password[:72])](https://bugs.debian.org/1120247)
+* [python-aiosmtpd](https://bugs.debian.org/1123187)
+* [python-aiostream](https://bugs.debian.org/1122302)
+* python-auditwheel on i386 ([contributed
+ upstream](https://github.com/pypa/auditwheel/pull/640))
+* python-auditwheel on riscv64 ([contributed
+ upstream](https://github.com/pypa/auditwheel/pull/662))
+* python-bcrypt: [Accept pyo3
+ 0.27](https://salsa.debian.org/python-team/packages/python-bcrypt/-/commit/4a2bdbde672889c6cddacd49cd6569d0c372e780)
+* [python-django-crum](https://bugs.debian.org/1123215)
+* [python-django-guid](https://bugs.debian.org/1123217)
+* [python-inline-snapshot](https://bugs.debian.org/1123449)
+* [python-laspy](https://bugs.debian.org/1123260)
+* [python-mnemonic](https://bugs.debian.org/1123270)
+* python-ncls on 32-bit architectures ([contributed
+ upstream](https://github.com/pyranges/ncls/pull/67))
+* [python-papermill](https://bugs.debian.org/1122323)
+* [python-phonenumbers](https://bugs.debian.org/1124201)
+* [python-pluggy](https://bugs.debian.org/1123290)
+* python-pycddl: [Accept pyo3
+ 0.27](https://salsa.debian.org/python-team/packages/python-pycddl/-/commit/a80f0ccb611998b7b8a3c0cee94b0184cfba4ab8)
+* python-sphinx-autodoc2 ([contributed
+ upstream](https://github.com/sphinx-extensions2/sphinx-autodoc2/pull/93))
+* [python-structlog](https://bugs.debian.org/1123318)
+* [python-wikkid: FTBFS: AttributeError: 'TestBaseParent' object has no
+ attribute 'assertEquals'](https://bugs.debian.org/1124205) ([contributed
+ follow-up fix upstream](https://github.com/wikkid-team/wikkid/pull/59))
+* [python-wslink](https://bugs.debian.org/1122311)
+
+Other bugs:
+
+* [python-bcrypt: ValueError: password cannot be longer than 72 bytes,
+ truncate manually if necessary](https://bugs.debian.org/1122147)
+* [python-notify2: Directly Build-Depends on
+ dbus](https://bugs.debian.org/1122703)
+* [python-packaging: Mark python3-packaging Multi-Arch:
+ foreign](https://bugs.debian.org/1122261)
+* [python-pyproject-parser: python3-pyproject-parser needs a dependency on
+ python3-consolekit](https://bugs.debian.org/1115482)
+* [sphinx: Please backport upstream's fix on
+ roman-numerals](https://bugs.debian.org/1123782)
+
+## Other bits and pieces
+
+* [db1-compat: Please remove/replace usage of
+ dh\_movetousr](https://bugs.debian.org/1122798)
+* [debmirror: Refresh mirror\_size
+ documentation](https://salsa.debian.org/debian/debmirror/-/commit/fe4e902c90b637b1b91d33d9d246ae44bde65e85)
+* [groff: FTBFS randomly](https://bugs.debian.org/1121570)
+* [openssh: Misleading verbose output for local-to-local or standard
+ remote-to-remote
+ copies](https://bugzilla.mindrot.org/show_bug.cgi?id=3900) (upstreamed an
+ improved version of a patch we've been carrying since 2008)
+* [pcmciautils: Please remove/replace usage of
+ dh\_movetousr](https://bugs.debian.org/1122768)
+
+## Code reviews
+
+* [openssh: Fix binary name in
+ ssh-askpass-gnome.desktop](https://salsa.debian.org/ssh-team/openssh/-/merge_requests/36)
+ (still in discussion)
+* [python-lsp-server: Increase tests timeout
+ further](https://salsa.debian.org/python-team/packages/python-lsp-server/-/merge_requests/1)
+* [rope: New upstream version
+ 1.14.0](https://salsa.debian.org/python-team/packages/rope/-/merge_requests/4)
+ (merged and uploaded)
+* [trn4: Update/add Catalan po-debconf
+ translation](https://salsa.debian.org/debian/trn4/-/merge_requests/4)
+ (merged)