Releases: pdm-project/pdm
v2.17.0
Breaking Changes
LockedRepository.all_candidates
now returns adict[str, list[Candidate]]
instead ofdict[str, Candidate]
. (#2995)post_lock
hook now receives a resolution result of typedict[str, list[Candidate]]
, instead ofdict[str, Candidate]
. (#2995)
Features & Improvements
-
Support reading requirement constraints from pip-style requirement files for "overriding" via
--override
option. (#2896) -
Add a
--non-interactive
option for automation scenarios, also interactive prompts will not show up when not running in an interactive terminal. (#2934) -
Add
--license
and--project-version
as CLI options to control and streamline them duringpdm init
- especially in automated scenarios with--non-interactive
(#2978) -
Run pdm sync in "post-rewrite" stage of pre-commit (#2994)
-
Project.get_dependencies()
now returns a list ofRequirement
instead of a mapping.
The first argument ofProject.add_dependencies()
now accepts a list ofRequirement
instead of a mapping.
The old usage will be kept working for a short period of time and will be removed in the future. (#2995) -
Support locking for specific target, which is a combination of (python, platform, implementation) triple. Bump lock file version to
4.5.0
.Example usage:
pdm lock --platform=linux --python="==3.8.*" --implementation=cpython
. See the docs for more details. (#2995) -
Rename
--reuse-env
to--recreate
forrun
command, and reverse the behavior. (#2999) -
PDM is now published with optional pinned dependencies using the pdm plugin pdm-build-locked.
To install pdm with its dependencies pinned to the versions it was tested with, run:
pipx install pdm[locked]
To install optional dependency group copier:
pipx install pdm[locked,copier-locked]
This feature is entirely optional. Installing pdm without the extra will work the same way as before this change. (#3001)
-
Added
--clean-unselected
alias for--only-keep
(#3007) -
Group options for update strategy and save strategy. (#3016)
Bug Fixes
- When locking dependencies that references the self project, the referenced groups should also be recorded in the lockfile. (#2976)
- Retry failed installation jobs if they are run sequentially, such as for editable dependencies. (#3005)
- Fix the local path issue when
-p
is passed to change the project root. (#3009) - Fix a bug that PDM can't install editable self package with non-isolated build in one go. (#3018)
- Add context when parsing version failed. (#3020)
- Fix a mistake in build env setup that will cause the
PATH
env var length to grow. (#3022)
Removals and Deprecations
- Remove the deprecation warning of
BaseCommand.__init__()
method. Now it doesn't take any arguments. (#2995) Provider.get_reuse_candidate()
method is deprecated in favor ofProvider.iter_reuse_candidates()
, to return an iterable of reuse candidates. (#2995)--no-markers
option inpdm export
command becomes a no-op and is marked as deprecated, because it doesn't make sense anymore. (#2995)ignore_compatibility
parameter ofProject.get_provider()
/Project.get_repository()
/Environment.get_finder()
is deprecated. Pass in aEnvSpec
viaenv_spec
parameter instead.
requires_python
parameter ofpdm.resolver.core.resolve()
function is deprecated and has no effect.
cross_platform
parameter ofpdm.cli.actions.resolve_candidates_from_lockfile()
function is deprecated and has no effect. (#2995)
v2.16.1
v2.16.0
Features & Improvements
- Add
--no-extras
topdm export
to strip extras from the requirements. Now the default behavior is to keep extras. (#2519) - Support PEP 723: running scripts with inline metadata in standalone environment with dependencies. (#2924)
pdm use
andpdm python install
now takerequires-python
into account (incl. from pyproject.toml) if python version
not specified andpdm use
provides auto installation by that. (#2943)--no-isolation
no longer installsbuild-requires
nor dynamic build dependencies, to be consistent withpip
. (#2944)- Add notifiers in CLI output when global project is being used. (#2952)
- Use
tool.pdm.resolution
table when calculating the content hash of project file, previously onlyoverrides
table was used.
This will change the hash already stored in the lockfile, so bump the lockfile version to4.4.2
. (#2956)
Bug Fixes
- Add max retries on read timeout or bad connection. (#2914)
- Don't update local files if they don't change. (#2966)
- Don't list python versions that don't have any installation link for the current platform. (#2970)
Documentation
v2.15.4
Bug Fixes
- Build wheel from sdist if available, to make sure sdist is built properly. This behavior is consistent with pypa/build. (#2843)
- Fix the issue of self-referencing extra dependencies failing to be resolved for local packages. (#2898)
- Fix an issue of max recursion depth error when parsing a poetry project with circular dependencies on local packages. (#2900)
- Fix a bug that VCS dependencies and
--self
don't work in the exported requirements.txt with hashes. (#2908) - Fix a cache miss when there exist built wheels for a given link. (#2912)
- Don't try to store caches when
--no-cache
is given. (#2913)
v2.15.3
Bug Fixes
- Fixed pdm venv activate, to also work for windows. And added documentation on how to authenticate to Azure Artifacts (#2851)
- Don't show unsupported formats in
pdm export
. (#2877) - Proxy (
HTTP_PROXY
env vars) settings are ignored for custom indexes. (#2880) - Fix the quoting of venv activate command for powershell. (#2881)
- Raise an error if the package given by
pdm update
does not exist in the select dependency group but in other groups. (#2885)
v2.15.2
Features & Improvements
- Use
get_runner()
method to build the task runner inrun
command.runner_cls
attribute is deprecated. (#2872)
Bug Fixes
- Expand
${PROJECT_ROOT}
in source URLs. (#2846) - Fix env and other options being inherited in nested composite scripts. (#2849)
- Keep the
${PROJECT_ROOT}
variable in dependencies after runningpdm lock --update-reuse
. (#2852) - Make
direct_minimal_versions
work on newly added dependencies. (#2853) - Fix a syntax error in the zsh completion script. (#2868)
v2.15.1
Bug Fixes
- Disable check update in
zsh
completion script. (#2838) - Fixes cached packages metadata files (
.referrers
) collisions onsync
when using avenv
withsymlink
cache method. (#2839)
Documentation
- Build docs with object inventory to support cross references from Sphinx documentation projects. (#2841)
v2.15.0
Features & Improvements
- Packages format preferences can now be defined in the project
pyproject.toml
using theno-binary
,only-binary
andprefer-binary
keys of thetool.pdm.resolution
section. (#2656)
Bug Fixes
- Don't create project and virtualenv when running
pdm python install
. (#2809) - Clean up the python installation directory if a previous download was unsuccessful. (#2810)
- Don't cache editable installations. (#2816)
- Fix a bug that installing in-project plugins with editable local paths doesn't work. (#2820)
- Don't create log directory until it's needed, to fix a PermissionError in docker environment. (#2825)
- Fix recursive script detection on multiple invocations. (#2829)
v2.14.0
Features & Improvements
- Revert the package cache introduced in 2.13. Don't cache the decompressed contents of wheels unless being told so. (#2803)
Bug Fixes
- Fix inconsistent logging when
pdm use
a different python interpreter (#2776) - Fix PDM unable to find Python interpreters when
PDM_IGNORE_ACTIVE_VENV
is set (#2779) - Check verify_ssl when trusting each source. (#2784)
- Fix name check for project itself in
pdm outdated
(#2785) - Fix a regression that proxy env vars are not respected. (#2788)
- Fix an issue that venv provider can't be found when providers are explicitly configured. (#2792)
- Fix a bug that
[tool.pdm.options]
are ignored if-c/--config CONFIG
is given. (#2793) - Make
--without
respect groups indev-dependencies
(#2799)
v2.13.3
Bug Fixes
- Per-source configuration for ca-certs and client-cert. #2754
- Remove all caches by removing individual cache types one by one. #2757
- Use the default HTTP client when downloading the pythons, to use the certificates settings. #2759
- Fix a race condition where pth files take effect when multiple packages are installed in parallel. #2762
- Refuse to run recursive composite scripts. #2766