Repository navigation
v0.4.4
Fixed
-
The
.pthfile is ASCII again, so Python starts under the C locale.provide_testkit_init.pthcarried a literal emoji in its twoTESTKIT_PTH_LOGdebug messages.site.pyon Python 3.11 and 3.12 reads.pthfiles with the locale's encoding, which is ASCII under the C locale, so those bytes aborted interpreter startup for every program in the environment — before any user code ran:Fatal Python error: init_import_site: Failed to import the site module UnicodeDecodeError: 'ascii' codec can't decode byte 0xf0 in position 67python -c "print('hello')"failed the same way in any environment with testkit installed; it was not specific to running tests. Python 3.13 reads.pthfiles as UTF-8 and was never affected, which is why this repository's own environment never showed it.The emoji is kept, written as a
\U0001F50Cescape that the line's own Python parsing resolves, so the debug output is unchanged while the file itself is ASCII. Two tests hold it there: one rejects any byte above0x7F, the other resolves the escapes and requires the emoji to still be present, so satisfying the first by deleting the emoji fails the second.
Removed
-
The
fuzzingextra, and its entry inall. It could not be installed on any modern Python: pynguin >= 0.46 requirespytest>=8.3.5,<9.0.0, which this project's ownpytest>=9.0.2rules out, and the only pynguin loose enough to coexist with pytest 9 is 0.6.3 (2021), which depends on a jellyfish release with no cp313 wheels and an sdistuvrefuses to parse.uv sync --all-extrasfailed outright because of it. The reasoning is recorded inpyproject.tomlso the extra can be restored when pynguin supports pytest 9.This is a patch release rather than a minor one because nothing that worked before stops working — the extra was uninstallable for as long as the project has required pytest 9.
Changed
- Dependencies upgraded to their latest releases. Three mypy strict errors surfaced from newer stubs and are fixed: PyYAML now ships types, making two
type: ignore[import-untyped]comments dead, and memray now resolves as a module, so its optional-import sentinel needed the assignment suppressed. - The release pipeline was repaired and hardened: publishing jobs are gated on the release event, the SBOM runs in its own job away from the signing key and describes this package rather than the tool that generated it, extras are chosen by dependence, and a repair path exists for a release that lost its artifacts.
- Quality reports this package generates are no longer tracked in git.