Source code for idiap_devtools.python
# Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
#
# SPDX-License-Identifier: BSD-3-Clause
import pathlib
import packaging.requirements
import tomli
[docs]
def dependencies_from_pyproject_toml(
path: pathlib.Path,
) -> tuple[str, list[packaging.requirements.Requirement]]:
"""Return a list with all ``project.optional-dependencies``.
Arguments:
path: The path to a ``pyproject.toml`` file to load
Returns
-------
A list of optional dependencies (if any exist) on the provided python
project.
"""
data = tomli.load(path.open("rb"))
deps = data.get("project", {}).get("dependencies", [])
optional_deps = data.get("project", {}).get("optional-dependencies", {})
retval = [packaging.requirements.Requirement(k) for k in deps]
for v in optional_deps.values():
retval += [packaging.requirements.Requirement(k) for k in v]
return data.get("project", {}).get("name", "UNKNOWN"), retval