Bug Fixes
- Fix the uv mode failing when
pyproject.tomloruv.lockcannot be renamed, as happens when they are bind mounts in a container, by falling back to restoring their content in place. (#3292) - Percent-encode the source username and password in the index URLs passed to uv, so
use_uvworks with credentials that contain characters like#,/or%. (#3974) - Honor local wheel and sdist paths in pylock.toml, preferring them over URLs while preserving explicit artifact filenames. (#3975)
- Fix the Python range pdm derives from a
python_versionmarker that compares against a three-part version, such aspython_version >= "3.8.1". (#3978) - Save prompted credentials only after a successful package upload response. (#3982)
- Keep the version from
pyproject.tomlorsetup.cfgwhen a latersetup.cfgorsetup.pysets none, instead of resetting it to0.0.0while parsing project files. (#3983) - Allow
pdm configto set an explicitly provided empty string value instead of treating it as a read operation. (#3984) - Fix PEP 582 setup for Bash-compatible shells when the installation path contains an apostrophe. (#3986)
- Remove the downloaded archive after
pdm python installinstalls an interpreter, instead of leaving it in the temporary directory. (#3988) - Quote Poetry platform constraints verbatim instead of using
repr()when converting them to environment markers, so they stay valid under stricter marker string parsing. (#3993)
Documentation
- Fix two dead links in the project and template usage docs. (#3976)
Miscellany
- Publish releases with
pypa/gh-action-pypi-publishto attach PEP 740 provenance attestations on PyPI. (#3979)