Changelog for python3-pdm: 2.28.0 -> 2.28.2 Source: CHANGELOG.md ## Release v2.28.2 (2026-08-18) ### Bug Fixes - Keep environment inspection working for Python 3.9 targets when PDM uses dep-logic 0.7 or newer. ([#3838](https://github.com/pdm-project/pdm/issues/3838)) - Cache the update check timestamp even when the version lookup fails, so that pdm no longer appears to hang on every command when PyPI is unreachable. ([#3840](https://github.com/pdm-project/pdm/issues/3840)) - Don't crash with an `IndexError` when listing scripts and one of them is blank. A blank script is now listed as ``. ([#3842](https://github.com/pdm-project/pdm/issues/3842)) - Keep the whole template URL when `pdm new` is given an `ssh://` or credentialed Git URL, instead of truncating it at the userinfo `@`. ([#3843](https://github.com/pdm-project/pdm/issues/3843)) - Strip comments preceded by any whitespace, not only a plain space, when importing a `requirements.txt` file. ([#3844](https://github.com/pdm-project/pdm/issues/3844)) - Match `--trusted-host` on host and port when importing a `requirements.txt` file, and keep the port when exporting one. ([#3845](https://github.com/pdm-project/pdm/issues/3845)) - Expand a `~` prefix in the `venv.location` config so `pdm venv list/remove/activate/purge` find virtualenvs created under it. ([#3847](https://github.com/pdm-project/pdm/issues/3847)) - Convert a Poetry caret constraint on a `0.x` version to the upper bound Poetry documents, so `^0.2.3` becomes `<0.3.0` and `^0.0.3` becomes `<0.0.4` instead of `<1.0.0`. ([#3848](https://github.com/pdm-project/pdm/issues/3848)) - Fill in a placeholder `project.name` and `project.version` for the `pyproject.toml` generated for `uv`, so `pdm lock`/`pdm install` work with `use_uv` on a project that declares neither. ([#3849](https://github.com/pdm-project/pdm/issues/3849)) - Resolve nested requirement paths relative to remote requirements file URLs. ([#3850](https://github.com/pdm-project/pdm/issues/3850)) ## Release v2.28.1 (2026-08-11) ### Features & Improvements - Defer command action and Python installer imports until their corresponding runtime paths execute. ([#3673](https://github.com/pdm-project/pdm/issues/3673)) - Add `{run_cwd}` placeholder for scripts to reference the original working directory. ([#3734](https://github.com/pdm-project/pdm/issues/3734)) - Add opt-in canonical lock input freshness via `tool.pdm.resolution.lock_inputs` while retaining sticky lockfile behavior and legacy hash fallback for existing lock files. ([#3821](https://github.com/pdm-project/pdm/issues/3821)) - Integrate `argcomplete` for simplified command-line completion scripts. ([#3823](https://github.com/pdm-project/pdm/issues/3823)) ### Bug Fixes - Keep workspace members in their explicitly declared dependency groups instead of adding them to ``default`` in the lockfile. ([#3816](https://github.com/pdm-project/pdm/issues/3816)) - Keep the cached parsed version intact when stripping the local segment in `comparable_version()`. ([#3817](https://github.com/pdm-project/pdm/issues/3817)) - Make `use_uv` support adding local files. ([#3822](https://github.com/pdm-project/pdm/issues/3822)) - Add a Poetry optional dependency to every extra that lists it when importing, instead of only the first one. ([#3831](https://github.com/pdm-project/pdm/issues/3831)) - Do not write null values into the generated `pyproject.toml` when importing a flit project that omits `author-email`/`maintainer-email` or sets only one of `include` and `exclude` in `[tool.flit.sdist]`. ([#3832](https://github.com/pdm-project/pdm/issues/3832)) ### Miscellany - Add Python 3.15 preview version to the CI matrix. ([#3827](https://github.com/pdm-project/pdm/issues/3827))