This is actually a pretty hard problem to solve. The issue is that indirect dependencies are not a concrete thing and can depend on what version of direct dependencies get installed (or are already installed).
For instance:
tahoe-lafs depends on foo, foo 1.0 depends on bar, foo 2.0 depends on wat
In the above example there isn't a single set of requirements, it's a tree where the final set depends on what version of foo ends up being selected for installation. It *can* be expressed of course but it can be a very confusing representation if the version specifiers of anything but the root of the tree varies. If they are static then you can collapse the branches into a single branch and you may (in a simple case) get a single set because every combination of dependencies ends up having the same requirement specifiers.