I find it's clearer to store all pinned dependencies in requirements.txt using pip-compile (or pip freeze). There's no finagling in trying to determine which file contains the dependency snapshot for installing an application. High level dependencies can be defined in requirements.in or pyproject.toml.
If you write out `requirements.txt` by hand, do you also need to resolve deps and transitive deps by hand?
This is what pushed me to use Poetry.
That's what I meant, I just call my requirements.in requirements.txt, and the pinned versions go in requirements.txt.frozen or pyproject.toml. As long as there's one file with high level and one file with pinned