From 6421e538612fcd561f3dd2514b2741593804e647 Mon Sep 17 00:00:00 2001 From: rht Date: Tue, 3 May 2022 05:31:47 -0400 Subject: [PATCH] fix: Pass in source_subdirectory to get_package_from_vcs Fixes #5521. With this commit, one can finally add a Git dependency with a subdirectory, e.g. ``` talon-core = {git = "https://github.com/zulip/talon.git", rev = "1711705c952806d4a704c7dbf58f21db8e11756a", subdirectory = "talon-core" } ``` --- src/poetry/puzzle/provider.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/poetry/puzzle/provider.py b/src/poetry/puzzle/provider.py index f14e83c50fd..e3d95bcb1ad 100644 --- a/src/poetry/puzzle/provider.py +++ b/src/poetry/puzzle/provider.py @@ -67,6 +67,7 @@ def _get_package_from_git( tag: str | None = None, rev: str | None = None, source_root: Path | None = None, + source_subdirectory: str | None = None, ) -> Package: source = Git.clone( url=url, @@ -78,7 +79,11 @@ def _get_package_from_git( ) revision = Git.get_revision(source) - package = Provider.get_package_from_directory(Path(source.path)) + directory = Path(source.path) + if source_subdirectory: + directory = directory / source_subdirectory + + package = Provider.get_package_from_directory(directory) package._source_type = "git" package._source_url = url package._source_reference = rev or tag or branch or "HEAD" @@ -214,6 +219,7 @@ def search_for_vcs(self, dependency: VCSDependency) -> list[Package]: rev=dependency.rev, source_root=self._source_root or (self._env.path.joinpath("src") if self._env else None), + source_subdirectory=dependency._source_subdirectory, ) self.validate_package_for_dependency(dependency=dependency, package=package) @@ -239,12 +245,18 @@ def get_package_from_vcs( tag: str | None = None, rev: str | None = None, source_root: Path | None = None, + source_subdirectory: str | None = None, ) -> Package: if vcs != "git": raise ValueError(f"Unsupported VCS dependency {vcs}") return _get_package_from_git( - url=url, branch=branch, tag=tag, rev=rev, source_root=source_root + url=url, + branch=branch, + tag=tag, + rev=rev, + source_root=source_root, + source_subdirectory=source_subdirectory, ) def search_for_file(self, dependency: FileDependency) -> list[Package]: