Quoting myself from here
My current assumption is: […] you put your (mostly unpinned) dependencies to pyproject.toml instead of setup.py, so you library can be installed as a dependency of something else without causing much troubles because of issues resolving version constraints.
On top of that, for “deployable applications” (for lack of a better term), you still want to maintain a separate requirements.txt with exact version pinning.
Which has been confirmed by a Python Packaging Authority (PyPA) member and clarification of PyPA’s recommendations should be updated accordingly at some point.