Features & Improvements
- Allow specifying
lock.formatinpyproject.tomlvia the[tool.pdm.lock]table. (#3958)
Bug Fixes
- Import a requirements file that starts with a UTF-8 BOM, which failed with a
RequirementError. (#3937) - Treat a
Pipfileversion without an operator, such asrequests = "2.31.0", as an exact==pin when importing, like pipenv does, instead of failing with an invalid specifier error. (#3939) - Preserve Poetry include entries targeting both source and wheel distributions when importing a project. (#3941)
- Preserve version and description when importing Flit projects with a
src/layout or an annotated__version__. (#3942) - Require
certifi>=2026.10.19, which removes theemSign ECC Root CA - G3root whose eMudhra intermediates had their private keys compromised. (#3944) pdm outdatedno longer lists a package whose installed version is newer than the latest one found on the index, such as an installed pre-release or local build. (#3945)- Fix
pdm lock --checkreporting an outdated lockfile when a group is declared in both[dependency-groups]and[tool.pdm.dev-dependencies]. (#3947) - Show the license from
License-Expression(PEP 639) inpdm showandpdm list --fields licenses. (#3948) - Stop
pdm lockfrom excluding packages from a lock target when another target shares its OS and architecture, e.g. manylinux and musllinux. (#3950) - Fix a crash when a
python_versionmarker compares against a wildcard version such aspython_version == "3.*". (#3951) - Send
License-ExpressionandLicense-Filewith the upload inpdm publish, so PyPI shows the license of PEP 639 packages. (#3952) - Preserve the subdirectory fragment in source archive requirements when resolving dependencies and serializing requirement URLs. (#3954)
- Preserve archive hashes when reading pylock.toml so they remain available for exports. (#3956)
- Fix detection of responses served from the HTTP cache, so cached downloads and index pages are reported as cached again. (#3961)
Dependencies
- Install the download dependencies of pbs-installer so Python installation works with its latest releases. (#3959)
- Upgrade
unearthto>=0.19and migrate the HTTP client fromhttpxtohttpx2.pdm.models.session.PDMPyPIClientand the transports inpdm.pytestare now built onhttpx2, so plugins interacting with them should importhttpx2instead ofhttpx. (#3962)