def test_search_for_vcs_read_setup_raises_error_if_no_version( provider: Provider, mocker: MockerFixture): mocker.patch( "poetry.inspection.info.PackageInfo._pep517_metadata", return_value=PackageInfo(name="demo", version=None), ) dependency = VCSDependency("demo", "git", "https://github.com/demo/no-version.git") with pytest.raises(RuntimeError): provider.search_for_vcs(dependency)
def test_search_for_vcs_retains_develop_flag(provider: Provider, value: bool): dependency = VCSDependency("demo", "git", "https://github.com/demo/demo.git", develop=value) package = provider.search_for_vcs(dependency)[0] assert package.develop == value
def find_latest_package(self, package, include_dev): from clikit.io import NullIO from poetry.puzzle.provider import Provider from poetry.version.version_selector import VersionSelector # find the latest version allowed in this pool if package.source_type in ("git", "file", "directory"): requires = self.poetry.package.requires if include_dev: requires = requires + self.poetry.package.dev_requires for dep in requires: if dep.name == package.name: provider = Provider(self.poetry.package, self.poetry.pool, NullIO()) if dep.is_vcs(): return provider.search_for_vcs(dep)[0] if dep.is_file(): return provider.search_for_file(dep)[0] if dep.is_directory(): return provider.search_for_directory(dep)[0] name = package.name selector = VersionSelector(self.poetry.pool) return selector.find_best_candidate( name, ">={}".format(package.pretty_version))
def find_latest_package(self, package: "Package", root: "ProjectPackage") -> Union["Package", bool]: from cleo.io.null_io import NullIO from poetry.puzzle.provider import Provider from poetry.version.version_selector import VersionSelector # find the latest version allowed in this pool if package.source_type in ("git", "file", "directory"): requires = root.all_requires for dep in requires: if dep.name == package.name: provider = Provider(root, self.poetry.pool, NullIO()) if dep.is_vcs(): return provider.search_for_vcs(dep)[0] if dep.is_file(): return provider.search_for_file(dep)[0] if dep.is_directory(): return provider.search_for_directory(dep)[0] name = package.name selector = VersionSelector(self.poetry.pool) return selector.find_best_candidate( name, ">={}".format(package.pretty_version))
def find_latest_package( self, package: Package, root: ProjectPackage ) -> Package | None: from cleo.io.null_io import NullIO from poetry.puzzle.provider import Provider from poetry.version.version_selector import VersionSelector # find the latest version allowed in this pool if package.source_type in ("git", "file", "directory"): requires = root.all_requires for dep in requires: if dep.name == package.name: provider = Provider(root, self.poetry.pool, NullIO()) if dep.is_vcs(): dep = cast(VCSDependency, dep) return provider.search_for_vcs(dep)[0] if dep.is_file(): dep = cast(FileDependency, dep) return provider.search_for_file(dep)[0] if dep.is_directory(): dep = cast(DirectoryDependency, dep) return provider.search_for_directory(dep)[0] name = package.name selector = VersionSelector(self.poetry.pool) return selector.find_best_candidate(name, f">={package.pretty_version}")
def test_search_for_vcs_setup_egg_info(provider: Provider): dependency = VCSDependency("demo", "git", "https://github.com/demo/demo.git") package = provider.search_for_vcs(dependency)[0] assert package.name == "demo" assert package.version.text == "0.1.2" required = [r for r in package.requires if not r.is_optional()] optional = [r for r in package.requires if r.is_optional()] assert required == [get_dependency("pendulum", ">=1.4.4")] assert optional == [get_dependency("tomlkit"), get_dependency("cleo")] assert package.extras == { "foo": [get_dependency("cleo")], "bar": [get_dependency("tomlkit")], }
def test_search_for_vcs_read_setup_with_extras(provider: Provider, mocker: MockerFixture): mocker.patch("poetry.utils.env.EnvManager.get", return_value=MockEnv()) dependency = VCSDependency("demo", "git", "https://github.com/demo/demo.git", extras=["foo"]) package = provider.search_for_vcs(dependency)[0] assert package.name == "demo" assert package.version.text == "0.1.2" required = [r for r in package.requires if not r.is_optional()] optional = [r for r in package.requires if r.is_optional()] assert required == [get_dependency("pendulum", ">=1.4.4")] assert optional == [get_dependency("tomlkit"), get_dependency("cleo")]