Releases: pdm-project/pdm
Releases · pdm-project/pdm
v2.13.0
Features & Improvements
- Add option to exclude group(s) when running
pdm sync/install -G:all
by adding flag--without group1,group2,...
#2258 - Default to log to user home and make logs directory configurable. #2398
- Add an option
keep_going
to continue on errors for composite scripts and return the last failing exit code. #2582 - Add an option
working_dir
for PDM's scripts to set the current working directory. #2620 - Allow updating specific sub-dependencies (i.e., transitive dependencies) in the lock file. #2628
- Add
--config-setting
option toadd/install/sync/update/remove/export
commands, the config settings dictionary will be shared by all packages. #2636 - Cache the decompressed contents of wheels for faster access. #2660
- Add configuration for timeout for network requests. #2680
- Reuse the request sesison within the environment. #2697
- Caches can be disabled by using the
--no-cache
option or setting thePDM_NO_CACHE
environment variable. #2702 - Switch to
httpx.Client
for HTTP requests, droprequests
dependency. #2709 - We have timemachine now! You can exclude packages published newer than a certain date via
pdm lock --exclude-newer=<date>
, allowing reproduction of resolutions regardless of new package releases. #2712 - Add command
pdm outdated
to check the outdated packages and list the latest versions. #2718 - When
python.use_venv
is on, always try to create a virtualenv when usingpdm use
to switch the Python interpreter. #2720 - Support installing Pythons from python-build-standalone. Add command group
pdm python
to manage Python installations. Andpdm use
can automatically install the Python interpreter if it's not found. #2721 - Supports custom distribution files path via
-d/--dest
option forpdm publish
. #2723
Bug Fixes
- Don't modify TOML tables that are not related to PDM. #2666
- Made
--without
imply--with :all
. #2670 - Expand user path for
venv.location
and other path-like config values. #2672 - Give a default version when it's missing in
pyproject.toml
when parsing candidate's metadata. #2677 - Fix the issue that ANSI codes are shown in the output of
pdm --help
on Windows. #2678 - Don't show empty configuration sections in
pdm config
. #2683
Documentation
- Document the difference between
[tool.pdm.scripts]
and[project.scripts]
#2121
Removals and Deprecations
- Remove the support of
pth
cache method. Andsymlink
cache method now behaves the same assymlink_individual
cache method. #2660 - Remove
pdm.models.environment
module deprecated before. Also remove the renamed members frompdm.environments
. #2710
Miscellany
- Delete
setup.cfg
, move tool configurations under it topyproject.toml
#2703
v2.12.4
Features & Improvements
- Use env PDM_NO_EDITABLE as the default value for --no-editable option. #2613
Bug Fixes
- Reset project.environment when importing from setup.py, to fix resolution error. #2608
- Do not fetch package hashes when
--frozen-lockfile
is passed. #2630 - Make sure non-venv interpreters are used by venv creator. #2631
- Don't cause a hard failure if the local directory doesn't exist. #2650
Documentation
v2.12.3
Bug Fixes
- fix the package-type fixer won't update toml properly for "Nested Section Ordering Issue in TOML". #2578
- Unable to force override a package if the package is required with extras. #2586
- Failed to clone template repository if the URL contains the rev part. #2597
- Handle legacy specifiers when converting from poetry project. #2599
Documentation
- Fix typo in template docs #2588
v2.12.2
v2.12.1
v2.12.0
Features & Improvements
- Allow excluding packages from the lockfile via
tool.pdm.resolution.excludes
setting, the dependencies will also be skipped. #1316 - Rename
--no-lock
option to--frozen-lockfile
. #2496 - Add
--no-hashes
as the recommended option name in favor of--without-hashes
forpdm export
command. #2497 - Add
--no-markers
toexport
command to exclude markers from the output. #2497 - Allow initializing a project without extra project files, with a new builtin template "minimal". Run it with
pdm init minimal
. #2543 - Change the warning category emitted by
deprecated_warning()
toPDMDeprecationWarning
. #2547 - Prereleases will be allowed if a prerelease version is pinned in the lockfile. This can be disabled by passing
--stable
option. #2552 - Change
tracked_names
argument to keyword-only. Moveallow_prereleases
setting totool.pdm.resolution
table. #2552 - Rename the
preferred_pins
argument of provider classes tolocked_candidates
, and deprecate the old name. #2552 - Rename the
package-type
field undertool.pdm
settings table todistribution
to make it more clear. #2564
Bug Fixes
tool.pdm.resolution
settings won't be honored when installing dependencies into the build environment. #1316- Fixed pdm list output containing full license text in some cases #2538
- Fix the environment variable substitution for
cmd
scripts. #2542 - Allow normal extension modules in wheel tags when the python is debug build. #2548
- Don't use pypi.org when pypi.url is set. #2560
Removals and Deprecations
- Remove deprecated methods from
Project
. Remove deprecated helper functions fromactions.py
. #2547
v2.11.2
Bug Fixes
- Fix a KeyError raised when resolving a URL dependency without package name given. #2488
pdm update --update-eager
can hit InconsistentCandidate error when dependency is included both through default dependencies and extra. #2495pdm install
should not warn when overwriting its own symlinks oninstall
/update
. #2502- Fix a bug that candidates without local version are rejected when the local version is pinned. #2507
Documentation
- Add maturin as a compatible build backend in the docs. #2510
v2.11.1
v2.11.0
Features & Improvements
- Officially drop the support for Python 3.7.
- Allow exporting current project as editable dependency with
pdm export
. #1910 - Improve the lockfile compatibility checking by using 3-digit version numbers. This can distinguish forward-compatibility and backward-compatibility. #2164
- Add
--skip-existing
topdm publish
to ignore the uploading error if the package already exists. #2362 - Use
==major.minor.*
as default requires python for application projects. #2382 - We now use the
package-type
field in thetool.pdm
table to differentiate between library and application projects. #2394 - Add support for {pdm} placeholder in script definitions to call the same PDM entrypoint #2408
- When exporting requirements, record the environment markers from all parents for each requirement. This allows the exported requirements to work on different platforms and Python versions. #2418
pdm lock
now supports--update-reuse
option to keep the pinned versions in the lockfile if possible. #2419- Introduce a new lock strategy
inherit_metadata
to inherit and merge markers from parent requirements. This is enabled by default when creating a new lockfile. #2421 - New cache methods:
symlink_individual
for creating a symlink for each individual package file andhardlink
for creating hardlinks. #2425 - Add "pdm sync" pre-commit hook #2474
- New update strategy:
reuse-installed
. When this strategy is enabled, PDM will try to reuse the versions already installed in the environment, even if the package names are given in the command line followingadd
orupdate
. This strategy is supported byadd
,update
andlock
commands. #2479 - Show subcommand's help info when passing unrecognized arguments. #2480
- add
PDM_CACHE_DIR
environment variable to configure cache directory location. #2485
Bug Fixes
- Use the same order of Python interpreters as interactive mode in
pdm init -n
. #2436 pdm init
now implies--lib
if--backend
is passed. #2437- Fix a bug that link collection ignores package-index-binding. #2442
- Fix the wrong installation candidates for different architectures on Windows. #2464
- Fix installing PEP 561 stub-only packages with
install.cache_method = "symlink"
. #2466 - Fix a
KeyError
raised bypdm update --unconstrained
when the project itself is listed as a dependency. #2483
v2.10.4
Bug Fixes
- Do not detect as requirements.txt if the file is a python script. #2416
- Provide information of the original line when parsing requirement fails. #2417
- Resolve
-r
requirements paths relative to the requirement file they are specified in #2422 - Updating package now overwrites the old files instead of removing before installing. #2423