Spaces:
Runtime error
Runtime error
| from typing import Dict, Optional | |
| import pytest | |
| from langchain_cli.constants import ( | |
| DEFAULT_GIT_REF, | |
| DEFAULT_GIT_REPO, | |
| DEFAULT_GIT_SUBDIRECTORY, | |
| ) | |
| from langchain_cli.utils.git import DependencySource, parse_dependency_string | |
| def _assert_dependency_equals( | |
| dep: DependencySource, | |
| *, | |
| git: Optional[str] = None, | |
| ref: Optional[str] = None, | |
| subdirectory: Optional[str] = None, | |
| event_metadata: Optional[Dict] = None, | |
| ) -> None: | |
| assert dep["git"] == git | |
| assert dep["ref"] == ref | |
| assert dep["subdirectory"] == subdirectory | |
| if event_metadata is not None: | |
| assert dep["event_metadata"] == event_metadata | |
| def test_dependency_string() -> None: | |
| _assert_dependency_equals( | |
| parse_dependency_string( | |
| "git+ssh://git@github.com/efriis/myrepo.git", None, None, None | |
| ), | |
| git="ssh://git@github.com/efriis/myrepo.git", | |
| ref=None, | |
| subdirectory=None, | |
| ) | |
| _assert_dependency_equals( | |
| parse_dependency_string( | |
| "git+https://github.com/efriis/myrepo.git#subdirectory=src", | |
| None, | |
| None, | |
| None, | |
| ), | |
| git="https://github.com/efriis/myrepo.git", | |
| subdirectory="src", | |
| ref=None, | |
| ) | |
| _assert_dependency_equals( | |
| parse_dependency_string( | |
| "git+ssh://git@github.com:efriis/myrepo.git#develop", None, None, None | |
| ), | |
| git="ssh://git@github.com:efriis/myrepo.git", | |
| ref="develop", | |
| subdirectory=None, | |
| ) | |
| # also support a slash in ssh | |
| _assert_dependency_equals( | |
| parse_dependency_string( | |
| "git+ssh://git@github.com/efriis/myrepo.git#develop", None, None, None | |
| ), | |
| git="ssh://git@github.com/efriis/myrepo.git", | |
| ref="develop", | |
| subdirectory=None, | |
| ) | |
| # looks like poetry supports both an @ and a # | |
| _assert_dependency_equals( | |
| parse_dependency_string( | |
| "git+ssh://git@github.com:efriis/myrepo.git@develop", None, None, None | |
| ), | |
| git="ssh://git@github.com:efriis/myrepo.git", | |
| ref="develop", | |
| subdirectory=None, | |
| ) | |
| _assert_dependency_equals( | |
| parse_dependency_string("simple-pirate", None, None, None), | |
| git=DEFAULT_GIT_REPO, | |
| subdirectory=f"{DEFAULT_GIT_SUBDIRECTORY}/simple-pirate", | |
| ref=DEFAULT_GIT_REF, | |
| ) | |
| def test_dependency_string_both() -> None: | |
| _assert_dependency_equals( | |
| parse_dependency_string( | |
| "git+https://github.com/efriis/myrepo.git@branch#subdirectory=src", | |
| None, | |
| None, | |
| None, | |
| ), | |
| 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", | |
| None, | |
| None, | |
| None, | |
| ) | |
| # 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_dependency_equals( | |
| parse_dependency_string("git+ssh://a@b", None, None, None), | |
| git="ssh://a@b", | |
| subdirectory=None, | |
| ref=None, | |
| ) | |
| # weird one that is actually valid | |
| _assert_dependency_equals( | |
| parse_dependency_string( | |
| "git+https://github.com/efriis/myrepo.git@subdirectory=src", | |
| None, | |
| None, | |
| None, | |
| ), | |
| git="https://github.com/efriis/myrepo.git", | |
| subdirectory=None, | |
| ref="subdirectory=src", | |
| ) | |