def test_search_for_directory_setup_with_base(provider: Provider, directory: str): dependency = DirectoryDependency( "demo", Path(__file__).parent.parent / "fixtures" / "git" / "github.com" / "demo" / directory, base=Path(__file__).parent.parent / "fixtures" / "git" / "github.com" / "demo" / directory, ) package = provider.search_for_directory(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")], } assert package.root_dir == (Path(__file__).parent.parent / "fixtures" / "git" / "github.com" / "demo" / directory)
def test_search_for_directory_poetry_with_extras(provider: Provider): dependency = DirectoryDependency( "project-with-extras", Path(__file__).parent.parent / "fixtures" / "project_with_extras", extras=["extras_a"], ) package = provider.search_for_directory(dependency)[0] assert package.name == "project-with-extras" assert package.version.text == "1.2.3" required = [ r for r in sorted(package.requires, key=lambda r: r.name) if not r.is_optional() ] optional = [ r for r in sorted(package.requires, key=lambda r: r.name) if r.is_optional() ] assert required == [] assert optional == [ get_dependency("cachy", ">=0.2.0"), get_dependency("pendulum", ">=1.4.4"), ] assert package.extras == { "extras_a": [get_dependency("pendulum", ">=1.4.4")], "extras_b": [get_dependency("cachy", ">=0.2.0")], }
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 test_search_for_directory_setup_read_setup_with_extras( provider: Provider, mocker: MockerFixture ): mocker.patch("poetry.utils.env.EnvManager.get", return_value=MockEnv()) dependency = DirectoryDependency( "demo", Path(__file__).parent.parent / "fixtures" / "git" / "github.com" / "demo" / "demo", extras=["foo"], ) package = provider.search_for_directory(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 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_directory_setup_read_setup_with_no_dependencies( provider: Provider): dependency = DirectoryDependency( "demo", Path(__file__).parent.parent / "fixtures" / "git" / "github.com" / "demo" / "no-dependencies", ) package = provider.search_for_directory(dependency)[0] assert package.name == "demo" assert package.version.text == "0.1.2" assert package.requires == [] assert package.extras == {}