CLI Git Improvements (#12311)

- delete repo sources like pip
- git dep fixes
- error messaging
This commit is contained in:
Erick Friis
2023-10-25 18:30:02 -07:00
committed by GitHub
parent 1d568e1add
commit 43257a295c
5 changed files with 221 additions and 176 deletions

View File

@@ -1,9 +1,14 @@
from langchain_cli.utils.git import _parse_dependency_string, DependencySource
from langchain_cli.constants import DEFAULT_GIT_REPO, DEFAULT_GIT_SUBDIRECTORY
import pytest
from langchain_cli.utils.git import parse_dependency_string, DependencySource
from langchain_cli.constants import (
DEFAULT_GIT_REPO,
DEFAULT_GIT_SUBDIRECTORY,
DEFAULT_GIT_REF,
)
def test_dependency_string() -> None:
assert _parse_dependency_string(
assert parse_dependency_string(
"git+ssh://git@github.com/efriis/myrepo.git"
) == DependencySource(
git="ssh://git@github.com/efriis/myrepo.git",
@@ -11,7 +16,7 @@ def test_dependency_string() -> None:
subdirectory=None,
)
assert _parse_dependency_string(
assert parse_dependency_string(
"git+https://github.com/efriis/myrepo.git#subdirectory=src"
) == DependencySource(
git="https://github.com/efriis/myrepo.git",
@@ -19,14 +24,69 @@ def test_dependency_string() -> None:
ref=None,
)
assert _parse_dependency_string(
assert parse_dependency_string(
"git+ssh://git@github.com:efriis/myrepo.git#develop"
) == DependencySource(
git="ssh://git@github.com:efriis/myrepo.git", ref="develop", subdirectory=None
)
assert _parse_dependency_string("simple-pirate") == DependencySource(
# also support a slash in ssh
assert parse_dependency_string(
"git+ssh://git@github.com/efriis/myrepo.git#develop"
) == DependencySource(
git="ssh://git@github.com/efriis/myrepo.git", ref="develop", subdirectory=None
)
# looks like poetry supports both an @ and a #
assert parse_dependency_string(
"git+ssh://git@github.com:efriis/myrepo.git@develop"
) == DependencySource(
git="ssh://git@github.com:efriis/myrepo.git", ref="develop", subdirectory=None
)
assert parse_dependency_string("simple-pirate") == DependencySource(
git=DEFAULT_GIT_REPO,
subdirectory=f"{DEFAULT_GIT_SUBDIRECTORY}/simple-pirate",
ref=DEFAULT_GIT_REF,
)
def test_dependency_string_both() -> None:
assert parse_dependency_string(
"git+https://github.com/efriis/myrepo.git@branch#subdirectory=src"
) == DependencySource(
git="https://github.com/efriis/myrepo.git",
subdirectory="src",
ref="branch",
)
def test_dependency_string_invalids() -> None:
# expect error for wrong order
with pytest.raises(ValueError):
parse_dependency_string(
"git+https://github.com/efriis/myrepo.git#subdirectory=src@branch"
)
# expect error for @subdirectory
def test_dependency_string_edge_case() -> None:
# weird unsolvable edge case of
# git+ssh://a@b
# this could be a ssh dep with user=a, and default ref
# or a ssh dep at a with ref=b.
# in this case, assume the first case (be greedy with the '@')
assert parse_dependency_string("git+ssh://a@b") == DependencySource(
git="ssh://a@b",
subdirectory=None,
ref=None,
)
# weird one that is actually valid
assert parse_dependency_string(
"git+https://github.com/efriis/myrepo.git@subdirectory=src"
) == DependencySource(
git="https://github.com/efriis/myrepo.git",
subdirectory=None,
ref="subdirectory=src",
)