Features & Improvements
- Add the
--venvoption topdm outdated, like the other commands that read the installed packages. (#3904)
Bug Fixes
- Fix isolated PEP 517 builds skipping packages that are only visible via the host venv's
--system-site-packages. (#3895) - Fix
pdm importof Poetry projects dropping optional dependencies whose extras entry is spelled differently, and importing optional dependencies with multiple constraints as required ones. (#3899) - Keep the plain requirement in
pdm exportwhen the same package is also locked with extras under a narrower marker, so it is no longer missing fromrequirements.txton the other platforms. (#3900) - Fix
python_version <= "X.Y"markers excluding the patch releases ofX.Y, sopdm installskipped such dependencies. (#3902) - Fix environment variables set by one task of a composite script, via
envorenv_file, leaking into the tasks that run after it. (#3903) - Convert flit's comma-separated
keywordsand obsoletedev-requiresinto valid PEP 621 fields when importing a flit project. (#3907) - Import custom Pipfile package categories, such as
[docs], as dependency groups instead of dropping them. (#3909) - Keep editable requirements in
[tool.pdm.dev-dependencies]onpdm import, so the written[dependency-groups]table stays valid per PEP 735. (#3910) - Keep Poetry's
develop = trueas an editable requirement when importing dependency groups. (#3913) - Fix
pdm importof the project's own Poetrypyproject.tomlwriting each dependency group to both[tool.pdm.dev-dependencies]and[dependency-groups]. (#3915) - Import Pipfile packages declared with a
fileURL, such as{file = "https://..."}, as URL requirements instead of dropping the URL. (#3918) - Preserve Poetry platform restrictions as environment markers when importing dependencies. (#3920)
- Read an
exclude-newertimestamp without a UTC offset as UTC, sopdm lockno longer fails with aTypeErrorcomparing naive and aware datetimes. (#3922) - Do not write empty dependency groups, such as
dev = []from an empty[dev-packages]table, when importing from another format. (#3925) - Strip every leading and trailing
.,_and-whenpdm initderives the project name from the directory, so a folder like__demo__no longer produces the invalid name_demo_. (#3927) pdm initnow writesproject.licenseas a license expression string instead of a{text = ...}table, and no longer rewrites an existing{file = ...}table or license expression into a value the build backend rejects. (#3929)- Read the inline metadata of a script that starts with a UTF-8 BOM, which
pdm runignored. (#3931) - Convert a space-separated Poetry version constraint such as
>=1.0 <2.0like the comma-separated form instead of aborting the import. (#3934) - Resolve relative
pathentries in aPipfileagainst the directory of thePipfilewhen importing, instead of the current working directory. (#3935)
Documentation
- Document what to cache and which install command to use when running PDM on CI platforms other than GitHub Actions. (#2472)