diff --git a/src/poetry_plugin_export/exporter.py b/src/poetry_plugin_export/exporter.py index f4dafc1..e086f2c 100644 --- a/src/poetry_plugin_export/exporter.py +++ b/src/poetry_plugin_export/exporter.py @@ -101,6 +101,7 @@ def _export_generic_txt( for dependency_package in get_project_dependency_packages( self._poetry.locker, project_requires=root.all_requires, + root_package_name=root.name, project_python_marker=root.python_marker, extras=self._extras, ): diff --git a/src/poetry_plugin_export/walker.py b/src/poetry_plugin_export/walker.py index 8ec5ab9..fb97a9d 100644 --- a/src/poetry_plugin_export/walker.py +++ b/src/poetry_plugin_export/walker.py @@ -52,6 +52,7 @@ def get_python_version_region_markers(packages: list[Package]) -> list[BaseMarke def get_project_dependency_packages( locker: Locker, project_requires: list[Dependency], + root_package_name: str, project_python_marker: BaseMarker | None = None, extras: bool | Sequence[NormalizedName] | None = None, ) -> Iterator[DependencyPackage]: @@ -103,6 +104,7 @@ def get_project_dependency_packages( for package, dependency in get_project_dependencies( project_requires=selected, locked_packages=repository.packages, + root_package_name=root_package_name, ): yield DependencyPackage(dependency=dependency, package=package) @@ -110,6 +112,7 @@ def get_project_dependency_packages( def get_project_dependencies( project_requires: list[Dependency], locked_packages: list[Package], + root_package_name: str, ) -> Iterable[tuple[Package, Dependency]]: # group packages entries by name, this is required because requirement might use # different constraints. @@ -129,6 +132,7 @@ def get_project_dependencies( nested_dependencies = walk_dependencies( dependencies=project_requires, packages_by_name=packages_by_name, + root_package_name=root_package_name, ) return nested_dependencies.items() @@ -137,6 +141,7 @@ def get_project_dependencies( def walk_dependencies( dependencies: list[Dependency], packages_by_name: dict[str, list[Package]], + root_package_name: str, ) -> dict[Package, Dependency]: nested_dependencies: dict[Package, Dependency] = {} @@ -145,6 +150,8 @@ def walk_dependencies( requirement = dependencies.pop(0) if (requirement, requirement.marker) in visited: continue + if requirement.name == root_package_name: + continue visited.add((requirement, requirement.marker)) locked_package = get_locked_package(