Skip to content

Releases: pdm-project/pdm

v2.17.0

18 Jul 10:13
278f9bb
Compare
Choose a tag to compare

Breaking Changes

  • LockedRepository.all_candidates now returns a dict[str, list[Candidate]] instead of dict[str, Candidate]. (#2995)
  • post_lock hook now receives a resolution result of type dict[str, list[Candidate]], instead of dict[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 during pdm 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 of Requirement instead of a mapping.
    The first argument of Project.add_dependencies() now accepts a list of Requirement 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 for run 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 of Provider.iter_reuse_candidates(), to return an iterable of reuse candidates. (#2995)
  • --no-markers option in pdm export command becomes a no-op and is marked as deprecated, because it doesn't make sense anymore. (#2995)
  • ignore_compatibility parameter of Project.get_provider()/Project.get_repository()/Environment.get_finder() is deprecated. Pass in a EnvSpec via env_spec parameter instead.
    requires_python parameter of pdm.resolver.core.resolve() function is deprecated and has no effect.
    cross_platform parameter of pdm.cli.actions.resolve_candidates_from_lockfile() function is deprecated and has no effect. (#2995)

v2.16.1

26 Jun 04:29
0dd75ee
Compare
Choose a tag to compare

Bug Fixes

  • Fix new interface from pbs_installer regarding build_dir and best match auto-install strategy for pdm use
    (same as for pdm python install --list) (#2943)
  • Fix crash when pdm is used with importlib-metadata version 8.0. (#2974)

v2.16.0

25 Jun 07:55
7664d7b
Compare
Choose a tag to compare

Features & Improvements

  • Add --no-extras to pdm 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 and pdm python install now take requires-python into account (incl. from pyproject.toml) if python version
    not specified and pdm use provides auto installation by that. (#2943)
  • --no-isolation no longer installs build-requires nor dynamic build dependencies, to be consistent with pip. (#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 only overrides table was used.
    This will change the hash already stored in the lockfile, so bump the lockfile version to 4.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

  • Clarify the purposes of pdm outdated and --unconstrained option. (#2965)
  • Some clarifications on the interpreter selection and central package cache. (#2967)

v2.15.4

30 May 00:59
f429652
Compare
Choose a tag to compare

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

20 May 10:57
80594e4
Compare
Choose a tag to compare

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

08 May 08:28
f8717f1
Compare
Choose a tag to compare

Features & Improvements

  • Use get_runner() method to build the task runner in run 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 running pdm 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

25 Apr 01:56
ddaa420
Compare
Choose a tag to compare

Bug Fixes

  • Disable check update in zsh completion script. (#2838)
  • Fixes cached packages metadata files (.referrers) collisions on sync when using a venv with symlink cache method. (#2839)

Documentation

  • Build docs with object inventory to support cross references from Sphinx documentation projects. (#2841)

v2.15.0

19 Apr 08:54
712d7f9
Compare
Choose a tag to compare

Features & Improvements

  • Packages format preferences can now be defined in the project pyproject.toml
    using the no-binary, only-binary and prefer-binary keys of the tool.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

12 Apr 08:36
d475b6a
Compare
Choose a tag to compare

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 in dev-dependencies (#2799)

v2.13.3

08 Apr 11:20
4095ac1
Compare
Choose a tag to compare

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