#!/usr/bin/env python
"""List dependencies of a distribution.

The modern way to do this is with importlib.metadata but this does not support
legacy editables (because setuptools does not populate Requires-Dist metadata)
and the api is harder to use to discover dependencies.
"""

import pkg_resources


def main(project):
    res = set()
    seen = set()

    def add(deps):
        for dep in deps:
            seen_key = (dep.key, dep.extras)
            if seen_key in seen:
                continue
            seen.add(seen_key)
            res.add(dep.key)
            add(d for d in pkg_resources.get_distribution(dep).requires(dep.extras))

    add(d for d in pkg_resources.get_distribution(project).requires())

    for r in sorted(res):
        print(r)


if __name__ == "__main__":
    import sys
    main(sys.argv[1])
