Pdm

Latest version: v2.23.0

Safety actively analyzes 723158 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 37

2.21.0

Features & Improvements

- Pass original working directory as env variable to pdm scripts ([3179](https://github.com/pdm-project/pdm/issues/3179))
- Output similar commands or script command when the input command is not correct ([3270](https://github.com/pdm-project/pdm/issues/3270))
- improve readability of Python interpreter validation message ([3276](https://github.com/pdm-project/pdm/issues/3276))
- Print task name by default when using `pdm run` ([3277](https://github.com/pdm-project/pdm/issues/3277))
- Make `OrderedSet.__contains__` run in O(1) ([3280](https://github.com/pdm-project/pdm/issues/3280))
- Emit `post_lock` after writing pyproject.toml and pdm.lock in add/update ([3285](https://github.com/pdm-project/pdm/issues/3285))
- Drop support of Python 3.8 ([3298](https://github.com/pdm-project/pdm/issues/3298))

Bug Fixes

- Fix the name normalization issue for optional dependency groups. ([3271](https://github.com/pdm-project/pdm/issues/3271))
- Don't use uv when installing plugins in project. ([3283](https://github.com/pdm-project/pdm/issues/3283))
- Fix the bug that pdm plugins are invalid after installation on ubuntu system python. ([3289](https://github.com/pdm-project/pdm/issues/3289))

2.20.1

Features & Improvements

- Add a fixer to remove the deprecated `cross_platform` strategy from lock file. ([3259](https://github.com/pdm-project/pdm/issues/3259))

Bug Fixes

- Fix the bug that `pdm build` would fail when `use_uv` is true. ([3231](https://github.com/pdm-project/pdm/issues/3231))
- Fix group name normalization when comparing groups. ([3247](https://github.com/pdm-project/pdm/issues/3247))
- Inherit file descriptors instead of closing when running child processes in `pdm run`. ([3252](https://github.com/pdm-project/pdm/issues/3252))
- Fix using `no_proxy` when `all_proxy` is set. ([3254](https://github.com/pdm-project/pdm/issues/3254))
- Preserve multiline arrays and don't add empty tool.pdm table header when updating the pyproject.toml. ([3258](https://github.com/pdm-project/pdm/issues/3258))
- Fix compatibility of `ErrorArgumentParser` for Python 3.12 and above. ([3264](https://github.com/pdm-project/pdm/issues/3264))

2.20.0

Features & Improvements

- Support dependency groups as standardized by [PEP 735](https://peps.python.org/pep-0735/). By default, dev dependencies will be written to `[dependency-groups]` table. ([#3230](https://github.com/pdm-project/pdm/issues/3230))

Bug Fixes

- Fix a bug that `strategy.inherit_metadata` config is not honored when using `--lockfile` option. ([3232](https://github.com/pdm-project/pdm/issues/3232))
- Always perform install-time resolution when `use_uv` is on. ([3233](https://github.com/pdm-project/pdm/issues/3233))

Miscellany

- Update `resolvelib` to 1.1.0. ([3235](https://github.com/pdm-project/pdm/issues/3235))

2.19.3

Features & Improvements

- Allow linking existing Python interpreters to PDM's managed location. ([3215](https://github.com/pdm-project/pdm/issues/3215))

Bug Fixes

- Fix a bug that overrides provided by environment variables do not work. ([3182](https://github.com/pdm-project/pdm/issues/3182))
- Allow prereleases when the requirement is pinned even if disabled by project ([3202](https://github.com/pdm-project/pdm/issues/3202))
- Pass the python path to the uv venv command. ([3204](https://github.com/pdm-project/pdm/issues/3204))
- Fix the infinite loop when running in uv mode if the current project has dynamic metadata. ([3207](https://github.com/pdm-project/pdm/issues/3207))
- Add `--no-frozen-deps` option to `install-pdm.py` script to allow installing newer versions of dependencies. ([3213](https://github.com/pdm-project/pdm/issues/3213))
- `pdm self update` now prefers the locked dependencies unless `--no-frozen-deps` is specified. ([3216](https://github.com/pdm-project/pdm/issues/3216))
- By default, `pdm outdated` will only list direct dependencies. This can be changed by adding the `--include-sub` option. ([3218](https://github.com/pdm-project/pdm/issues/3218))

Documentation

- Show users the way to uninstall pdm in a more obvious way ([2470](https://github.com/pdm-project/pdm/issues/2470))

2.19.2

Features & Improvements

- Support installing free-threaded Python interpreters with the `t` suffix. ([3201](https://github.com/pdm-project/pdm/issues/3201))

Bug Fixes

- `use_uv` fails to lock when there are non-ascii characters in pyproject.toml on Windows. ([3181](https://github.com/pdm-project/pdm/issues/3181))
- Fix the `pre_install` and `post_install` signals receiving an exhausted generator, instead of a list of packages. ([3190](https://github.com/pdm-project/pdm/issues/3190))
- Create backup file with random filename to avoid conflicts. ([3193](https://github.com/pdm-project/pdm/issues/3193))
- Fix the logic error in the `uv` format marker matching. ([3197](https://github.com/pdm-project/pdm/issues/3197))
- `pdm lock --check` on a lockfile generated with older PDM version has a 0 exit code when there's a change in `pyproject.toml`. ([3199](https://github.com/pdm-project/pdm/issues/3199))

Documentation

- Fixed *Bash Completion* suggestion so it doesn't require root privileges ([3183](https://github.com/pdm-project/pdm/issues/3183))

2.19.1

Bug Fixes

- PDM libraries are not loaded correctly for in-process scripts when installed in the user site. ([3178](https://github.com/pdm-project/pdm/issues/3178))

Page 2 of 37

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.