<!-- .slide: data-background="https://github.com/noirbizarre/slides-paris.py/raw/master/images/python.jpg" -->

---
Python project management done right
<https://pdm.fming.dev/>
---
<!-- .slide: data-background="https://github.com/noirbizarre/slides-paris.py/raw/master/images/python2.jpg" -->
## Features highlight
----
### Fast dependency resolver
Way faster than pip, Pipenv and poetry
----
### Full PEP621 support
`pyproject.toml [project]` section
<!-- .element: class="fragment" -->
`project.dependencies`
<!-- .element: class="fragment" -->
`project.optional-dependencies`
<!-- .element: class="fragment" -->
Any PEP621 compatible tool will work
<!-- .element: class="fragment" -->
----
### PNPM-like centralization
central cache
<!-- .element: class="fragment" -->
link instead of copy
<!-- .element: class="fragment" -->
----
### Extensive scripting support
classic inline commands (with or without shell)
<!-- .element: class="fragment" -->
Python snippets with `package.module:function` syntax
<!-- .element: class="fragment" -->
reuse scripts from others
<!-- .element: class="fragment" -->
composition
<!-- .element: class="fragment" -->
hooks
<!-- .element: class="fragment" -->
----
### Optional PEP582 support
[you don't need a virtualenv](https://dev.to/frostming/you-don-t-really-need-a-virtualenv-4bae)
<!-- .element: class="fragment" -->
PEP582 is a draft
<!-- .element: class="fragment" -->
but multiple tools support it
<!-- .element: class="fragment" -->
----
### Miscellaneous and ecosystem
Dedicated github action
<!-- .element: class="fragment" -->
pre-commit hooks
<!-- .element: class="fragment" -->
PDM plugins
<!-- .element: class="fragment" -->
IDE and tools integration
<!-- .element: class="fragment" -->
---
## Comparison
| | `setuptools` | `pipenv` | `poetry` | `PDM` |
| ------- | ------------ | -------- | -------- | ----- |
| PEP517 | โ
| โ | โ
| โ
|
| PEP621 | ๐งช | โ | โ | โ
|
| caching | โ | โ | โ
| โ
|
| publication | ๐ | โ | โ
| โ
|
| scripts | โ | ๐ | ๐ | โ
|
| lockfile | โ | โ
| โ
| โ
|
๐: external | ๐งช: experimental | ๐: limited
---
<!-- .slide: data-background="https://github.com/noirbizarre/slides-paris.py/raw/master/images/python2.jpg" -->
## Questions ?
{"metaMigratedAt":"2023-06-17T14:00:39.373Z","metaMigratedFrom":"YAML","title":"PDM","breaks":true,"image":"https://www.python.org/static/community_logos/python-logo-master-v3-TM.png","slideOptions":"{\"theme\":\"moon\"}","contributors":"[{\"id\":\"ccb66f62-527e-4f67-aebf-99b8ba78ddd3\",\"add\":3590,\"del\":839}]"}