(root: Path, extras: set[str])
| 17 | |
| 18 | |
| 19 | def resolve_extras_static(root: Path, extras: set[str]) -> list[Requirement] | None: |
| 20 | pyproject_file = root / "pyproject.toml" |
| 21 | if not pyproject_file.exists(): |
| 22 | return None |
| 23 | with pyproject_file.open("rb") as file_handler: |
| 24 | pyproject = tomllib.load(file_handler) |
| 25 | if "project" not in pyproject: |
| 26 | return None |
| 27 | project = pyproject["project"] |
| 28 | for dynamic in project.get("dynamic", []): |
| 29 | if dynamic == "dependencies" or (extras and dynamic == "optional-dependencies"): |
| 30 | return None |
| 31 | deps_with_markers: list[tuple[Requirement, set[str | None]]] = [ |
| 32 | (Requirement(i), {None}) for i in project.get("dependencies", []) |
| 33 | ] |
| 34 | optional_deps = project.get("optional-dependencies", {}) |
| 35 | for extra, reqs in optional_deps.items(): |
| 36 | deps_with_markers.extend((Requirement(req), {extra}) for req in (reqs or [])) |
| 37 | return dependencies_with_extras_from_markers( |
| 38 | deps_with_markers=deps_with_markers, |
| 39 | extras=extras, |
| 40 | package_name=project.get("name", "."), |
| 41 | available_extras=set(optional_deps.keys()), |
| 42 | ) |
| 43 | |
| 44 | |
| 45 | __all__ = [ |
searching dependent graphs…