Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-poetry-plugin-export for 
openSUSE:Factory checked in at 2023-04-25 16:42:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-poetry-plugin-export (Old)
 and      /work/SRC/openSUSE:Factory/.python-poetry-plugin-export.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-poetry-plugin-export"

Tue Apr 25 16:42:25 2023 rev:3 rq:1082594 version:1.3.1

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-poetry-plugin-export/python-poetry-plugin-export.changes
  2022-12-15 20:29:02.641540464 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-poetry-plugin-export.new.1533/python-poetry-plugin-export.changes
        2023-04-25 16:42:25.118087205 +0200
@@ -1,0 +2,13 @@
+Mon Apr 24 19:13:42 UTC 2023 - Torsten Gruner <[email protected]>
+
+- Update to 1.3.1
+  * This release mainly fixes test suite compatibility with
+    upcoming Poetry releases.
+  * Improve error message in some cases when the dependency walk fails (#184).
+- Version 1.3.0
+  * Drop some compatibility code and bump minimum required 
+    poetry version to 1.3.0 (#167).
+  * Fix an issue where the export failed if there was a circular
+    dependency on the root package (#118).
+
+------------------------------------------------------------------

Old:
----
  poetry_plugin_export-1.2.0.tar.gz

New:
----
  poetry_plugin_export-1.3.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-poetry-plugin-export.spec ++++++
--- /var/tmp/diff_new_pack.0KV8VQ/_old  2023-04-25 16:42:25.582089936 +0200
+++ /var/tmp/diff_new_pack.0KV8VQ/_new  2023-04-25 16:42:25.586089960 +0200
@@ -1,7 +1,7 @@
 #
 # spec file
 #
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -26,7 +26,7 @@
 %endif
 
 Name:           python-poetry-plugin-export%{psuffix}
-Version:        1.2.0
+Version:        1.3.1
 Release:        0
 Summary:        Poetry plugin to export the dependencies to various formats
 License:        MIT
@@ -37,13 +37,15 @@
 # No buildtime requirement of poetry: avoid build dep cycles!
 BuildRequires:  python-rpm-macros
 %if %{with test}
+BuildRequires:  %{python_module build}
+BuildRequires:  %{python_module installer}
 BuildRequires:  %{python_module poetry-plugin-export = %{version}}
 BuildRequires:  %{python_module pytest-mock}
 BuildRequires:  %{python_module pytest-xdist}
 BuildRequires:  %{python_module pytest}
 %endif
 BuildRequires:  fdupes
-Requires:       python-poetry >= 1.2.2
+Requires:       python-poetry >= 1.3.0
 Requires:       python-poetry-core >= 1.3.0
 Provides:       python-poetry_plugin_export = %{version}-%{release}
 BuildArch:      noarch

++++++ poetry_plugin_export-1.2.0.tar.gz -> poetry_plugin_export-1.3.1.tar.gz 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/poetry_plugin_export-1.2.0/PKG-INFO 
new/poetry_plugin_export-1.3.1/PKG-INFO
--- old/poetry_plugin_export-1.2.0/PKG-INFO     1970-01-01 01:00:00.000000000 
+0100
+++ new/poetry_plugin_export-1.3.1/PKG-INFO     1970-01-01 01:00:00.000000000 
+0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: poetry-plugin-export
-Version: 1.2.0
+Version: 1.3.1
 Summary: Poetry plugin to export the dependencies to various formats
 Home-page: https://python-poetry.org/
 License: MIT
@@ -14,7 +14,7 @@
 Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: 3.10
 Classifier: Programming Language :: Python :: 3.11
-Requires-Dist: poetry (>=1.2.2,<2.0.0)
+Requires-Dist: poetry (>=1.3.0,<2.0.0)
 Requires-Dist: poetry-core (>=1.3.0,<2.0.0)
 Project-URL: Repository, https://github.com/python-poetry/poetry-plugin-export
 Description-Content-Type: text/markdown
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/poetry_plugin_export-1.2.0/pyproject.toml 
new/poetry_plugin_export-1.3.1/pyproject.toml
--- old/poetry_plugin_export-1.2.0/pyproject.toml       2022-11-05 
14:30:22.819279200 +0100
+++ new/poetry_plugin_export-1.3.1/pyproject.toml       2023-04-17 
16:40:05.811764200 +0200
@@ -1,6 +1,6 @@
 [tool.poetry]
 name = "poetry-plugin-export"
-version = "1.2.0"
+version = "1.3.1"
 description = "Poetry plugin to export the dependencies to various formats"
 authors = ["Sébastien Eustace <[email protected]>"]
 license = "MIT"
@@ -18,7 +18,7 @@
 
 [tool.poetry.dependencies]
 python = "^3.7"
-poetry = "^1.2.2"
+poetry = "^1.3.0"
 poetry-core = "^1.3.0"
 
 [tool.poetry.group.dev.dependencies]
@@ -27,7 +27,7 @@
 pytest-cov = "^4.0"
 pytest-mock = "^3.9"
 pytest-randomly = "^3.12"
-pytest-xdist = { version = "^2.5", extras = ["psutil"] }
+pytest-xdist = { version = "^3.1", extras = ["psutil"] }
 mypy = ">=0.971"
 
 # only used in github actions
@@ -64,12 +64,6 @@
 files = ["src", "tests"]
 exclude = ["^tests/fixtures/"]
 
-[[tool.mypy.overrides]]
-module = [
-  'cleo.*',
-]
-ignore_missing_imports = true
-
 # use of importlib-metadata backport at python3.7 makes it impossible to
 # satisfy mypy without some ignores: but we get a different set of ignores at
 # different python versions.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/poetry_plugin_export-1.2.0/setup.py 
new/poetry_plugin_export-1.3.1/setup.py
--- old/poetry_plugin_export-1.2.0/setup.py     1970-01-01 01:00:00.000000000 
+0100
+++ new/poetry_plugin_export-1.3.1/setup.py     1970-01-01 01:00:00.000000000 
+0100
@@ -1,39 +0,0 @@
-# -*- coding: utf-8 -*-
-from setuptools import setup
-
-package_dir = \
-{'': 'src'}
-
-packages = \
-['poetry_plugin_export']
-
-package_data = \
-{'': ['*']}
-
-install_requires = \
-['poetry-core>=1.3.0,<2.0.0', 'poetry>=1.2.2,<2.0.0']
-
-entry_points = \
-{'poetry.application.plugin': ['export = '
-                               
'poetry_plugin_export.plugins:ExportApplicationPlugin']}
-
-setup_kwargs = {
-    'name': 'poetry-plugin-export',
-    'version': '1.2.0',
-    'description': 'Poetry plugin to export the dependencies to various 
formats',
-    'long_description': '# Poetry Plugin: Export\n\nThis package is a plugin 
that allows the export of locked packages to various formats.\n\n**Note**: For 
now, only the `constraints.txt` and `requirements.txt` formats are 
available.\n\nThis plugin provides the same features as the existing `export` 
command of Poetry which it will eventually replace.\n\n\n## Installation\n\nThe 
easiest way to install the `export` plugin is via the `self add` command of 
Poetry.\n\n```bash\npoetry self add poetry-plugin-export\n```\n\nIf you used 
`pipx` to install Poetry you can add the plugin via the `pipx inject` 
command.\n\n```bash\npipx inject poetry poetry-plugin-export\n```\n\nOtherwise, 
if you used `pip` to install Poetry you can add the plugin packages via the 
`pip install` command.\n\n```bash\npip install 
poetry-plugin-export\n```\n\n\n## Usage\n\nThe plugin provides an `export` 
command to export to the desired format.\n\n```bash\npoetry export -f 
requirements.txt --output requirements.txt\n`
 ``\n\n**Note**: Only the `constraints.txt` and `requirements.txt` formats are 
currently supported.\n\n### Available options\n\n* `--format (-f)`: The format 
to export to (default: `requirements.txt`). Currently, only `constraints.txt` 
and `requirements.txt` are supported.\n* `--output (-o)`: The name of the 
output file.  If omitted, print to standard output.\n* `--without`: The 
dependency groups to ignore when exporting.\n* `--with`: The optional 
dependency groups to include when exporting.\n* `--only`: The only dependency 
groups to include when exporting.\n* `--default`: Only export the main 
dependencies. (**Deprecated**)\n* `--dev`: Include development dependencies. 
(**Deprecated**)\n* `--extras (-E)`: Extra sets of dependencies to include.\n* 
`--without-hashes`: Exclude hashes from the exported file.\n* 
`--with-credentials`: Include credentials for extra indices.\n',
-    'author': 'Sébastien Eustace',
-    'author_email': '[email protected]',
-    'maintainer': 'None',
-    'maintainer_email': 'None',
-    'url': 'https://python-poetry.org/',
-    'package_dir': package_dir,
-    'packages': packages,
-    'package_data': package_data,
-    'install_requires': install_requires,
-    'entry_points': entry_points,
-    'python_requires': '>=3.7,<4.0',
-}
-
-
-setup(**setup_kwargs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/poetry_plugin_export-1.2.0/src/poetry_plugin_export/command.py 
new/poetry_plugin_export-1.3.1/src/poetry_plugin_export/command.py
--- old/poetry_plugin_export-1.2.0/src/poetry_plugin_export/command.py  
2022-11-05 14:30:22.819279200 +0100
+++ new/poetry_plugin_export-1.3.1/src/poetry_plugin_export/command.py  
2023-04-17 16:40:05.811764200 +0200
@@ -18,8 +18,10 @@
         option(
             "format",
             "f",
-            "Format to export to. Currently, only constraints.txt and 
requirements.txt"
-            " are supported.",
+            (
+                "Format to export to. Currently, only constraints.txt and"
+                " requirements.txt are supported."
+            ),
             flag=False,
             default=Exporter.FORMAT_REQUIREMENTS_TXT,
         ),
@@ -55,7 +57,7 @@
     def default_groups(self) -> set[str]:
         return {MAIN_GROUP}
 
-    def handle(self) -> None:
+    def handle(self) -> int:
         fmt = self.option("format")
 
         if not Exporter.is_format_supported(fmt):
@@ -105,3 +107,5 @@
         exporter.with_credentials(self.option("with-credentials"))
         exporter.with_urls(not self.option("without-urls"))
         exporter.export(fmt, Path.cwd(), output or self.io)
+
+        return 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/poetry_plugin_export-1.2.0/src/poetry_plugin_export/exporter.py 
new/poetry_plugin_export-1.3.1/src/poetry_plugin_export/exporter.py
--- old/poetry_plugin_export-1.2.0/src/poetry_plugin_export/exporter.py 
2022-11-05 14:30:22.819279200 +0100
+++ new/poetry_plugin_export-1.3.1/src/poetry_plugin_export/exporter.py 
2023-04-17 16:40:05.811764200 +0200
@@ -8,19 +8,13 @@
 
 from cleo.io.io import IO
 from poetry.core.packages.dependency_group import MAIN_GROUP
-
-
-try:
-    from poetry.repositories.http_repository import (  # type: ignore[import] 
# noqa: E501
-        HTTPRepository,
-    )
-except ImportError:  # poetry<1.3.0
-    from poetry.repositories.http import HTTPRepository
+from poetry.repositories.http_repository import HTTPRepository
 
 from poetry_plugin_export.walker import get_project_dependency_packages
 
 
 if TYPE_CHECKING:
+    from collections.abc import Collection
     from pathlib import Path
 
     from packaging.utils import NormalizedName
@@ -47,14 +41,14 @@
         self._with_hashes = True
         self._with_credentials = False
         self._with_urls = True
-        self._extras: bool | list[NormalizedName] | None = []
+        self._extras: Collection[NormalizedName] = ()
         self._groups: Iterable[str] = [MAIN_GROUP]
 
     @classmethod
     def is_format_supported(cls, fmt: str) -> bool:
         return fmt in cls.EXPORT_METHODS
 
-    def with_extras(self, extras: bool | list[NormalizedName] | None) -> 
Exporter:
+    def with_extras(self, extras: Collection[NormalizedName]) -> Exporter:
         self._extras = extras
 
         return self
@@ -101,6 +95,7 @@
         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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/poetry_plugin_export-1.2.0/src/poetry_plugin_export/walker.py 
new/poetry_plugin_export-1.3.1/src/poetry_plugin_export/walker.py
--- old/poetry_plugin_export-1.2.0/src/poetry_plugin_export/walker.py   
2022-11-05 14:30:22.819279200 +0100
+++ new/poetry_plugin_export-1.3.1/src/poetry_plugin_export/walker.py   
2023-04-17 16:40:05.811764200 +0200
@@ -11,9 +11,9 @@
 
 
 if TYPE_CHECKING:
+    from collections.abc import Collection
     from collections.abc import Iterable
     from collections.abc import Iterator
-    from collections.abc import Sequence
 
     from packaging.utils import NormalizedName
     from poetry.core.packages.dependency import Dependency
@@ -52,8 +52,9 @@
 def get_project_dependency_packages(
     locker: Locker,
     project_requires: list[Dependency],
+    root_package_name: NormalizedName,
     project_python_marker: BaseMarker | None = None,
-    extras: bool | Sequence[NormalizedName] | None = None,
+    extras: Collection[NormalizedName] = (),
 ) -> Iterator[DependencyPackage]:
     # Apply the project python marker to all requirements.
     if project_python_marker is not None:
@@ -67,22 +68,17 @@
     repository = locker.locked_repository()
 
     # Build a set of all packages required by our selected extras
-    extra_package_names: set[str] | None = None
-
-    if extras is not True:
-        locked_extras = {
-            canonicalize_name(extra): [
-                canonicalize_name(dependency) for dependency in dependencies
-            ]
-            for extra, dependencies in locker.lock_data.get("extras", 
{}).items()
-        }
-        extra_package_names = set(
-            get_extra_package_names(
-                repository.packages,
-                locked_extras,
-                extras or (),
-            )
-        )
+    locked_extras = {
+        canonicalize_name(extra): [
+            canonicalize_name(dependency) for dependency in dependencies
+        ]
+        for extra, dependencies in locker.lock_data.get("extras", {}).items()
+    }
+    extra_package_names = get_extra_package_names(
+        repository.packages,
+        locked_extras,
+        extras,
+    )
 
     # If a package is optional and we haven't opted in to it, do not select
     selected = []
@@ -92,9 +88,7 @@
         except IndexError:
             continue
 
-        if extra_package_names is not None and (
-            package.optional and package.name not in extra_package_names
-        ):
+        if package.optional and package.name not in extra_package_names:
             # a package is locked as optional, but is not activated via extras
             continue
 
@@ -103,6 +97,7 @@
     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 +105,7 @@
 def get_project_dependencies(
     project_requires: list[Dependency],
     locked_packages: list[Package],
+    root_package_name: NormalizedName,
 ) -> Iterable[tuple[Package, Dependency]]:
     # group packages entries by name, this is required because requirement 
might use
     # different constraints.
@@ -129,6 +125,7 @@
     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 +134,7 @@
 def walk_dependencies(
     dependencies: list[Dependency],
     packages_by_name: dict[str, list[Package]],
+    root_package_name: NormalizedName,
 ) -> dict[Package, Dependency]:
     nested_dependencies: dict[Package, Dependency] = {}
 
@@ -145,6 +143,8 @@
         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(
@@ -242,10 +242,27 @@
 
     # If we have an overlapping candidate, we must use it.
     if overlapping_candidates:
-        compatible_candidates = [
+        filtered_compatible_candidates = [
             package
             for package in compatible_candidates
             if package in overlapping_candidates
         ]
 
+        if not filtered_compatible_candidates:
+            # TODO: Support this case:
+            # https://github.com/python-poetry/poetry-plugin-export/issues/183
+            raise DependencyWalkerError(
+                f"The `{dependency.name}` package has the following compatible"
+                f" candidates `{compatible_candidates}`;  but, the exporter 
dependency"
+                f" walker previously elected `{overlapping_candidates.pop()}` 
which is"
+                f" not compatible with the dependency `{dependency}`. Please 
contribute"
+                " to `poetry-plugin-export` to solve this problem."
+            )
+
+        compatible_candidates = filtered_compatible_candidates
+
     return next(iter(compatible_candidates), None)
+
+
+class DependencyWalkerError(Exception):
+    pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/poetry_plugin_export-1.2.0/tests/command/conftest.py 
new/poetry_plugin_export-1.3.1/tests/command/conftest.py
--- old/poetry_plugin_export-1.2.0/tests/command/conftest.py    2022-11-05 
14:30:22.823279100 +0100
+++ new/poetry_plugin_export-1.3.1/tests/command/conftest.py    2023-04-17 
16:40:05.811764200 +0200
@@ -6,6 +6,8 @@
 
 from cleo.io.null_io import NullIO
 from cleo.testers.command_tester import CommandTester
+from poetry.console.commands.env_command import EnvCommand
+from poetry.console.commands.installer_command import InstallerCommand
 from poetry.installation import Installer
 from poetry.utils.env import MockEnv
 
@@ -64,12 +66,11 @@
             app._poetry = poetry
 
         poetry = app.poetry
-        cmd._pool = poetry.pool
 
-        if hasattr(cmd, "set_env"):
+        if isinstance(cmd, EnvCommand):
             cmd.set_env(environment or env)
 
-        if hasattr(cmd, "set_installer"):
+        if isinstance(cmd, InstallerCommand):
             installer = installer or Installer(
                 tester.io,
                 env,
@@ -80,7 +81,6 @@
                 executor=executor
                 or TestExecutor(env, poetry.pool, poetry.config, tester.io),
             )
-            installer.use_executor(True)
             cmd.set_installer(installer)
 
         return tester
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/poetry_plugin_export-1.2.0/tests/conftest.py 
new/poetry_plugin_export-1.3.1/tests/conftest.py
--- old/poetry_plugin_export-1.2.0/tests/conftest.py    2022-11-05 
14:30:22.823279100 +0100
+++ new/poetry_plugin_export-1.3.1/tests/conftest.py    2023-04-17 
16:40:05.811764200 +0200
@@ -5,7 +5,6 @@
 from pathlib import Path
 from typing import TYPE_CHECKING
 from typing import Any
-from typing import cast
 
 import pytest
 
@@ -15,15 +14,7 @@
 from poetry.factory import Factory
 from poetry.layouts import layout
 from poetry.repositories import Repository
-
-
-try:
-    from poetry.repositories.repository_pool import (  # type: ignore[import] 
# noqa: E501
-        RepositoryPool,
-    )
-except ImportError:  # poetry<1.3.0
-    from poetry.repositories.pool import Pool as RepositoryPool
-
+from poetry.repositories.repository_pool import RepositoryPool
 from poetry.utils.env import SystemEnv
 
 from tests.helpers import TestLocker
@@ -180,13 +171,7 @@
 
         poetry = Factory().create_poetry(project_dir)
 
-        lock = poetry.locker.lock
-        if isinstance(lock, Path):
-            lock_path = cast("Path", lock)
-        else:
-            # poetry < 1.3
-            lock_path = lock.path
-        locker = TestLocker(lock_path, poetry.locker._local_config)
+        locker = TestLocker(poetry.locker.lock, poetry.locker._local_config)
         locker.write()
 
         poetry.set_locker(locker)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/poetry_plugin_export-1.2.0/tests/fixtures/sample_project/pyproject.toml 
new/poetry_plugin_export-1.3.1/tests/fixtures/sample_project/pyproject.toml
--- old/poetry_plugin_export-1.2.0/tests/fixtures/sample_project/pyproject.toml 
2022-11-05 14:30:22.823279100 +0100
+++ new/poetry_plugin_export-1.3.1/tests/fixtures/sample_project/pyproject.toml 
2023-04-17 16:40:05.815764700 +0200
@@ -1,5 +1,5 @@
 [tool.poetry]
-name = "my-package"
+name = "sample-project"
 version = "1.2.3"
 description = "Some description."
 authors = [
@@ -51,7 +51,7 @@
 
 
 [tool.poetry.scripts]
-my-script = "my_package:main"
+my-script = "sample_project:main"
 
 
 [tool.poetry.plugins."blogtool.parsers"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/poetry_plugin_export-1.2.0/tests/helpers.py 
new/poetry_plugin_export-1.3.1/tests/helpers.py
--- old/poetry_plugin_export-1.2.0/tests/helpers.py     2022-11-05 
14:30:22.823279100 +0100
+++ new/poetry_plugin_export-1.3.1/tests/helpers.py     2023-04-17 
16:40:05.815764700 +0200
@@ -3,11 +3,9 @@
 import os
 
 from contextlib import contextmanager
-from pathlib import Path
 from typing import TYPE_CHECKING
 from typing import Any
 from typing import Iterator
-from typing import cast
 
 from poetry.console.application import Application
 from poetry.factory import Factory
@@ -16,6 +14,8 @@
 
 
 if TYPE_CHECKING:
+    from pathlib import Path
+
     from poetry.core.packages.package import Package
     from poetry.installation.operations.operation import Operation
     from poetry.poetry import Poetry
@@ -33,17 +33,13 @@
         self._poetry = Factory().create_poetry(poetry.file.path.parent)
         self._poetry.set_pool(poetry.pool)
         self._poetry.set_config(poetry.config)
-        lock = poetry.locker.lock
-        if isinstance(lock, Path):
-            lock_path = cast("Path", lock)
-        else:
-            # poetry < 1.3
-            lock_path = lock.path
-        self._poetry.set_locker(TestLocker(lock_path, 
self._poetry.local_config))
+        self._poetry.set_locker(
+            TestLocker(poetry.locker.lock, self._poetry.local_config)
+        )
 
 
 class TestLocker(Locker):
-    def __init__(self, lock: str | Path, local_config: dict[str, Any]) -> None:
+    def __init__(self, lock: Path, local_config: dict[str, Any]) -> None:
         super().__init__(lock, local_config)
         self._locked = False
         self._write = False
@@ -63,7 +59,7 @@
     def mock_lock_data(self, data: dict[str, Any]) -> None:
         self.locked()
 
-        self._lock_data = data  # type: ignore[assignment]
+        self._lock_data = data
 
     def is_fresh(self) -> bool:
         return True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/poetry_plugin_export-1.2.0/tests/test_exporter.py 
new/poetry_plugin_export-1.3.1/tests/test_exporter.py
--- old/poetry_plugin_export-1.2.0/tests/test_exporter.py       2022-11-05 
14:30:22.823279100 +0100
+++ new/poetry_plugin_export-1.3.1/tests/test_exporter.py       2023-04-17 
16:40:05.815764700 +0200
@@ -35,6 +35,7 @@
 
 
 if TYPE_CHECKING:
+    from collections.abc import Collection
     from pathlib import Path
 
     from packaging.utils import NormalizedName
@@ -54,7 +55,7 @@
         return self
 
     def mock_lock_data(self, data: dict[str, Any]) -> None:
-        self._lock_data = data  # type: ignore[assignment]
+        self._lock_data = data
 
     def is_locked(self) -> bool:
         return self._locked
@@ -79,14 +80,17 @@
     return p
 
 
-def set_package_requires(poetry: Poetry, skip: set[str] | None = None) -> None:
+def set_package_requires(
+    poetry: Poetry, skip: set[str] | None = None, dev: set[str] | None = None
+) -> None:
     skip = skip or set()
+    dev = dev or set()
     packages = poetry.locker.locked_repository().packages
     package = poetry.package.with_dependency_groups([], only=True)
     for pkg in packages:
         if pkg.name not in skip:
             dep = pkg.to_dependency()
-            if pkg.category == "dev":
+            if pkg.name in dev:
                 dep._groups = frozenset(["dev"])
             package.add_dependency(dep)
 
@@ -102,14 +106,12 @@
                 {
                     "name": "foo",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                 },
                 {
                     "name": "bar",
                     "version": "4.5.6",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                 },
@@ -146,7 +148,6 @@
                 {
                     "name": "foo",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "marker": "python_version < '3.7'",
@@ -154,7 +155,6 @@
                 {
                     "name": "bar",
                     "version": "4.5.6",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "marker": "extra =='foo'",
@@ -162,7 +162,6 @@
                 {
                     "name": "baz",
                     "version": "7.8.9",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "marker": "sys_platform == 'win32'",
@@ -203,7 +202,6 @@
                 {
                     "name": "poetry",
                     "version": "1.1.4",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "dependencies": {"keyring": "*"},
@@ -211,7 +209,6 @@
                 {
                     "name": "junit-xml",
                     "version": "1.9",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "dependencies": {"six": "*"},
@@ -219,7 +216,6 @@
                 {
                     "name": "keyring",
                     "version": "21.8.0",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "dependencies": {
@@ -232,7 +228,6 @@
                 {
                     "name": "secretstorage",
                     "version": "3.3.0",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "dependencies": {"cryptography": "*"},
@@ -240,7 +235,6 @@
                 {
                     "name": "cryptography",
                     "version": "3.2",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "dependencies": {"six": "*"},
@@ -248,7 +242,6 @@
                 {
                     "name": "six",
                     "version": "1.15.0",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                 },
@@ -324,7 +317,6 @@
                 {
                     "name": "pyinstaller",
                     "version": "4.0",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "dependencies": {
@@ -338,14 +330,12 @@
                 {
                     "name": "altgraph",
                     "version": "0.17",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                 },
                 {
                     "name": "macholib",
                     "version": "1.8",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "dependencies": {"altgraph": ">=0.15"},
@@ -404,7 +394,6 @@
                 {
                     "name": "a",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "marker": "python_version < '3.7'",
@@ -413,7 +402,6 @@
                 {
                     "name": "b",
                     "version": "4.5.6",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "marker": "platform_system == 'Windows'",
@@ -422,7 +410,6 @@
                 {
                     "name": "c",
                     "version": "7.8.9",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "marker": "sys_platform == 'win32'",
@@ -431,7 +418,6 @@
                 {
                     "name": "d",
                     "version": "0.0.1",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                 },
@@ -499,14 +485,12 @@
                 {
                     "name": "a",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                 },
                 {
                     "name": "b",
                     "version": "4.5.6",
-                    "category": "dev",
                     "optional": False,
                     "python-versions": "*",
                     "dependencies": {"a": ">=1.2.3"},
@@ -553,14 +537,12 @@
                 {
                     "name": "foo",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                 },
                 {
                     "name": "bar",
                     "version": "4.5.6",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                 },
@@ -602,14 +584,12 @@
                 {
                     "name": "foo",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                 },
                 {
                     "name": "bar",
                     "version": "4.5.6",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                 },
@@ -659,14 +639,12 @@
                 {
                     "name": "foo",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                 },
                 {
                     "name": "bar",
                     "version": "4.5.6",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                 },
@@ -707,14 +685,12 @@
                 {
                     "name": "foo",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                 },
                 {
                     "name": "bar",
                     "version": "4.5.6",
-                    "category": "dev",
                     "optional": False,
                     "python-versions": "*",
                 },
@@ -729,7 +705,7 @@
             },
         }
     )
-    set_package_requires(poetry)
+    set_package_requires(poetry, dev={"bar"})
 
     exporter = Exporter(poetry, NullIO())
     exporter.export("requirements.txt", tmp_path, "requirements.txt")
@@ -754,14 +730,12 @@
                 {
                     "name": "foo",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                 },
                 {
                     "name": "bar",
                     "version": "4.5.6",
-                    "category": "dev",
                     "optional": False,
                     "python-versions": "*",
                 },
@@ -776,7 +750,7 @@
             },
         }
     )
-    set_package_requires(poetry)
+    set_package_requires(poetry, dev={"bar"})
 
     exporter = Exporter(poetry, NullIO())
     exporter.only_groups([MAIN_GROUP, "dev"])
@@ -804,14 +778,12 @@
                 {
                     "name": "foo",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                 },
                 {
                     "name": "bar",
                     "version": "4.5.6",
-                    "category": "dev",
                     "optional": False,
                     "python-versions": "*",
                 },
@@ -826,7 +798,7 @@
             },
         }
     )
-    set_package_requires(poetry)
+    set_package_requires(poetry, dev={"bar"})
 
     exporter = Exporter(poetry, NullIO())
     exporter.only_groups([])
@@ -847,14 +819,12 @@
                 {
                     "name": "foo",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                 },
                 {
                     "name": "bar",
                     "version": "4.5.6",
-                    "category": "dev",
                     "optional": True,
                     "python-versions": "*",
                 },
@@ -869,7 +839,7 @@
             },
         }
     )
-    set_package_requires(poetry)
+    set_package_requires(poetry, dev={"bar"})
 
     exporter = Exporter(poetry, NullIO())
     exporter.only_groups([MAIN_GROUP, "dev"])
@@ -890,22 +860,6 @@
     ["extras", "lines"],
     [
         (
-            None,
-            [f"foo==1.2.3 ; {MARKER_PY}"],
-        ),
-        (
-            False,
-            [f"foo==1.2.3 ; {MARKER_PY}"],
-        ),
-        (
-            True,
-            [
-                f"bar==4.5.6 ; {MARKER_PY}",
-                f"foo==1.2.3 ; {MARKER_PY}",
-                f"spam==0.1.0 ; {MARKER_PY}",
-            ],
-        ),
-        (
             ["feature-bar"],
             [
                 f"bar==4.5.6 ; {MARKER_PY}",
@@ -918,7 +872,7 @@
 def test_exporter_exports_requirements_txt_with_optional_packages(
     tmp_path: Path,
     poetry: Poetry,
-    extras: bool | list[NormalizedName] | None,
+    extras: Collection[NormalizedName],
     lines: list[str],
 ) -> None:
     poetry.locker.mock_lock_data(  # type: ignore[attr-defined]
@@ -927,14 +881,12 @@
                 {
                     "name": "foo",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                 },
                 {
                     "name": "bar",
                     "version": "4.5.6",
-                    "category": "main",
                     "optional": True,
                     "python-versions": "*",
                     "dependencies": {"spam": ">=0.1"},
@@ -942,7 +894,6 @@
                 {
                     "name": "spam",
                     "version": "0.1.0",
-                    "category": "main",
                     "optional": True,
                     "python-versions": "*",
                 },
@@ -988,7 +939,6 @@
                 {
                     "name": "foo",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "source": {
@@ -1029,7 +979,6 @@
                 {
                     "name": "foo",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "source": {
@@ -1041,7 +990,6 @@
                 {
                     "name": "bar",
                     "version": "4.5.6",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "dependencies": {
@@ -1084,7 +1032,6 @@
                 {
                     "name": "foo",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "dependencies": {"bar": {"version": "4.5.6"}},
@@ -1092,7 +1039,6 @@
                 {
                     "name": "bar",
                     "version": "4.5.6",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "dependencies": {"baz": {"version": "7.8.9"}},
@@ -1100,7 +1046,6 @@
                 {
                     "name": "baz",
                     "version": "7.8.9",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "dependencies": {"foo": {"version": "1.2.3"}},
@@ -1130,6 +1075,42 @@
     assert content == expected
 
 
+def test_exporter_can_export_requirements_txt_with_circular_root_dependency(
+    tmp_path: Path, poetry: Poetry
+) -> None:
+    poetry.locker.mock_lock_data(  # type: ignore[attr-defined]
+        {
+            "package": [
+                {
+                    "name": "foo",
+                    "version": "1.2.3",
+                    "optional": False,
+                    "python-versions": "*",
+                    "dependencies": {poetry.package.pretty_name: {"version": 
"1.2.3"}},
+                },
+            ],
+            "metadata": {
+                "python-versions": "*",
+                "content-hash": "123456789",
+                "files": {"foo": []},
+            },
+        }
+    )
+    set_package_requires(poetry)
+
+    exporter = Exporter(poetry, NullIO())
+    exporter.export("requirements.txt", tmp_path, "requirements.txt")
+
+    with (tmp_path / "requirements.txt").open(encoding="utf-8") as f:
+        content = f.read()
+
+    expected = f"""\
+foo==1.2.3 ; {MARKER_PY}
+"""
+
+    assert content == expected
+
+
 def 
test_exporter_can_export_requirements_txt_with_nested_packages_and_multiple_markers(
     tmp_path: Path, poetry: Poetry
 ) -> None:
@@ -1139,7 +1120,6 @@
                 {
                     "name": "foo",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "dependencies": {
@@ -1158,7 +1138,6 @@
                 {
                     "name": "bar",
                     "version": "7.8.9",
-                    "category": "main",
                     "optional": True,
                     "python-versions": "*",
                     "dependencies": {
@@ -1171,7 +1150,6 @@
                 {
                     "name": "baz",
                     "version": "10.11.13",
-                    "category": "main",
                     "optional": True,
                     "python-versions": "*",
                 },
@@ -1213,7 +1191,6 @@
                 {
                     "name": "foo",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "marker": "python_version < '3.7'",
@@ -1255,7 +1232,6 @@
                 {
                     "name": "foo",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "source": {
@@ -1296,7 +1272,6 @@
                 {
                     "name": "foo",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "source": {
@@ -1308,7 +1283,6 @@
                 {
                     "name": "bar",
                     "version": "4.5.6",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "source": {
@@ -1320,7 +1294,6 @@
                 {
                     "name": "baz",
                     "version": "7.8.9",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "source": {
@@ -1363,7 +1336,6 @@
                 {
                     "name": "foo",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "marker": "python_version < '3.7'",
@@ -1406,7 +1378,6 @@
                 {
                     "name": "foo",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "source": {
@@ -1448,7 +1419,6 @@
                 {
                     "name": "foo",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "marker": "python_version < '3.7'",
@@ -1497,14 +1467,12 @@
                 {
                     "name": "foo",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                 },
                 {
                     "name": "bar",
                     "version": "4.5.6",
-                    "category": "dev",
                     "optional": False,
                     "python-versions": "*",
                     "source": {
@@ -1524,7 +1492,7 @@
             },
         }
     )
-    set_package_requires(poetry)
+    set_package_requires(poetry, dev={"bar"})
 
     exporter = Exporter(poetry, NullIO())
     exporter.only_groups([MAIN_GROUP, "dev"])
@@ -1560,14 +1528,12 @@
                 {
                     "name": "foo",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                 },
                 {
                     "name": "bar",
                     "version": "4.5.6",
-                    "category": "dev",
                     "optional": False,
                     "python-versions": "*",
                     "source": {
@@ -1587,7 +1553,7 @@
             },
         }
     )
-    set_package_requires(poetry)
+    set_package_requires(poetry, dev={"bar"})
 
     exporter = Exporter(poetry, NullIO())
     exporter.only_groups([MAIN_GROUP, "dev"])
@@ -1622,7 +1588,6 @@
                 {
                     "name": "bar",
                     "version": "4.5.6",
-                    "category": "dev",
                     "optional": False,
                     "python-versions": "*",
                     "source": {
@@ -1641,7 +1606,7 @@
             },
         }
     )
-    set_package_requires(poetry)
+    set_package_requires(poetry, dev={"bar"})
     exporter = Exporter(poetry, NullIO())
     exporter.only_groups([MAIN_GROUP, "dev"])
     exporter.export("requirements.txt", tmp_path, "requirements.txt")
@@ -1689,14 +1654,12 @@
                 {
                     "name": "foo",
                     "version": "1.2.1",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                 },
                 {
                     "name": "bar",
                     "version": "1.2.2",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "dependencies": {
@@ -1711,7 +1674,6 @@
                 {
                     "name": "baz",
                     "version": "1.2.3",
-                    "category": "dev",
                     "optional": False,
                     "python-versions": "*",
                 },
@@ -1723,7 +1685,7 @@
             },
         }
     )
-    set_package_requires(poetry)
+    set_package_requires(poetry, dev={"baz"})
 
     exporter = Exporter(poetry, NullIO())
     if dev:
@@ -1757,7 +1719,6 @@
                 {
                     "name": "foo",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "source": {
@@ -1769,7 +1730,6 @@
                 {
                     "name": "bar",
                     "version": "4.5.6",
-                    "category": "dev",
                     "optional": False,
                     "python-versions": "*",
                     "source": {
@@ -1781,7 +1741,6 @@
                 {
                     "name": "baz",
                     "version": "7.8.9",
-                    "category": "dev",
                     "optional": False,
                     "python-versions": "*",
                     "source": {
@@ -1802,7 +1761,7 @@
             },
         }
     )
-    set_package_requires(poetry)
+    set_package_requires(poetry, dev={"bar", "baz"})
 
     exporter = Exporter(poetry, NullIO())
     exporter.only_groups([MAIN_GROUP, "dev"])
@@ -1864,7 +1823,6 @@
                 {
                     "name": "foo",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "source": {
@@ -1876,7 +1834,6 @@
                 {
                     "name": "bar",
                     "version": "4.5.6",
-                    "category": "dev",
                     "optional": False,
                     "python-versions": "*",
                     "source": {
@@ -1888,7 +1845,6 @@
                 {
                     "name": "baz",
                     "version": "7.8.9",
-                    "category": "dev",
                     "optional": False,
                     "python-versions": "*",
                     "source": {
@@ -1909,7 +1865,7 @@
             },
         }
     )
-    set_package_requires(poetry)
+    set_package_requires(poetry, dev={"bar", "baz"})
 
     exporter = Exporter(poetry, NullIO())
     exporter.only_groups([MAIN_GROUP, "dev"])
@@ -1952,14 +1908,12 @@
                 {
                     "name": "foo",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                 },
                 {
                     "name": "bar",
                     "version": "4.5.6",
-                    "category": "dev",
                     "optional": False,
                     "python-versions": "*",
                     "source": {
@@ -1979,7 +1933,7 @@
             },
         }
     )
-    set_package_requires(poetry)
+    set_package_requires(poetry, dev={"bar"})
 
     exporter = Exporter(poetry, NullIO())
     exporter.only_groups([MAIN_GROUP, "dev"])
@@ -2014,14 +1968,12 @@
                 {
                     "name": "foo",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                 },
                 {
                     "name": "bar",
                     "version": "4.5.6",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                 },
@@ -2057,7 +2009,6 @@
                 {
                     "name": "celery",
                     "version": "5.1.2",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "<3.7",
                     "dependencies": {
@@ -2069,7 +2020,6 @@
                 {
                     "name": "celery",
                     "version": "5.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": ">=3.7",
                     "dependencies": {
@@ -2081,7 +2031,6 @@
                 {
                     "name": "click",
                     "version": "7.1.2",
-                    "category": "main",
                     "optional": False,
                     "python-versions": (
                         ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
@@ -2090,7 +2039,6 @@
                 {
                     "name": "click",
                     "version": "8.0.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": ">=3.6",
                     "dependencies": {},
@@ -2098,7 +2046,6 @@
                 {
                     "name": "click-didyoumean",
                     "version": "0.0.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "dependencies": {"click": "*"},
@@ -2106,7 +2053,6 @@
                 {
                     "name": "click-didyoumean",
                     "version": "0.3.0",
-                    "category": "main",
                     "optional": False,
                     "python-versions": ">=3.6.2,<4.0.0",
                     "dependencies": {"click": ">=7"},
@@ -2114,7 +2060,6 @@
                 {
                     "name": "click-plugins",
                     "version": "1.1.1",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "dependencies": {"click": ">=4.0"},
@@ -2154,7 +2099,7 @@
     io = BufferedIO()
     exporter.export("requirements.txt", tmp_path, io)
 
-    expected = f"""\
+    expected_legacy = f"""\
 celery==5.1.2 ; {MARKER_PY36_ONLY}
 celery==5.2.3 ; {MARKER_PY37}
 click-didyoumean==0.0.3 ; {MARKER_PY36_PY362}
@@ -2164,7 +2109,17 @@
 click==8.0.3 ; {MARKER_PY37}
 """
 
-    assert io.fetch_output() == expected
+    expected = f"""\
+celery==5.1.2 ; {MARKER_PY36_ONLY}
+celery==5.2.3 ; {MARKER_PY37}
+click-didyoumean==0.0.3 ; {MARKER_PY36_PY362}
+click-didyoumean==0.3.0 ; {MARKER_PY362_PY40}
+click-plugins==1.1.1 ; {MARKER_PY36}
+click==7.1.2 ; {MARKER_PY36_ONLY}
+click==8.0.3 ; {MARKER_PY37}
+"""
+
+    assert io.fetch_output() in {expected, expected_legacy}
 
 
 def test_exporter_handles_extras_next_to_non_extras(
@@ -2178,7 +2133,6 @@
                     "name": "localstack",
                     "python-versions": "*",
                     "version": "1.0.0",
-                    "category": "main",
                     "optional": False,
                     "dependencies": {
                         "localstack-ext": [
@@ -2196,7 +2150,6 @@
                     "name": "localstack-ext",
                     "python-versions": "*",
                     "version": "1.0.0",
-                    "category": "main",
                     "optional": False,
                     "dependencies": {
                         "something": "*",
@@ -2218,7 +2171,6 @@
                     "name": "something",
                     "python-versions": "*",
                     "version": "1.0.0",
-                    "category": "main",
                     "optional": False,
                     "dependencies": {},
                 },
@@ -2226,7 +2178,6 @@
                     "name": "something-else",
                     "python-versions": "*",
                     "version": "1.0.0",
-                    "category": "main",
                     "optional": False,
                     "dependencies": {},
                 },
@@ -2234,7 +2185,6 @@
                     "name": "another-thing",
                     "python-versions": "*",
                     "version": "1.0.0",
-                    "category": "main",
                     "optional": False,
                     "dependencies": {},
                 },
@@ -2291,7 +2241,6 @@
                     "name": "ipython",
                     "python-versions": ">=3.6",
                     "version": "7.16.3",
-                    "category": "main",
                     "optional": False,
                     "dependencies": {},
                 },
@@ -2299,7 +2248,6 @@
                     "name": "ipython",
                     "python-versions": ">=3.7",
                     "version": "7.34.0",
-                    "category": "main",
                     "optional": False,
                     "dependencies": {},
                 },
@@ -2307,7 +2255,6 @@
                     "name": "slash",
                     "python-versions": ">=3.6.*",
                     "version": "1.13.0",
-                    "category": "main",
                     "optional": False,
                     "dependencies": {
                         "ipython": [
@@ -2405,7 +2352,6 @@
                     "name": "foo",
                     "python-versions": ">=3.6",
                     "version": "1.0.0",
-                    "category": "main",
                     "optional": False,
                     "dependencies": {"pytest": {"version": "^6.2.4", 
"optional": True}},
                     "extras": {"test": ["pytest (>=6.2.4,<7.0.0)"]},
@@ -2414,7 +2360,6 @@
                     "name": "pytest",
                     "python-versions": ">=3.6",
                     "version": "6.24.0",
-                    "category": "dev",
                     "optional": False,
                     "dependencies": {},
                 },
@@ -2489,7 +2434,6 @@
                 {
                     "name": "foo",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "dependencies": {
@@ -2502,7 +2446,6 @@
                 {
                     "name": "bar",
                     "version": "4.5.6",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "dependencies": {
@@ -2517,7 +2460,6 @@
                 {
                     "name": "baz",
                     "version": "7.8.9",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                 },
@@ -2549,7 +2491,6 @@
                 {
                     "name": "foo",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "source": {
@@ -2562,14 +2503,12 @@
                 {
                     "name": "bar",
                     "version": "7.8.9",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                 },
                 {
                     "name": "baz",
                     "version": "4.5.6",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "source": {
@@ -2616,7 +2555,6 @@
                     "name": "foo",
                     "python-versions": ">=3.6",
                     "version": "1.0.0",
-                    "category": "main",
                     "optional": False,
                     "dependencies": {},
                     "source": {
@@ -2628,7 +2566,6 @@
                     "name": "foo",
                     "python-versions": ">=3.6",
                     "version": "1.0.0",
-                    "category": "main",
                     "optional": False,
                     "dependencies": {},
                     "source": {
@@ -2692,7 +2629,6 @@
                 {
                     "name": "foo",
                     "version": "1.2.3",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                     "dependencies": {
@@ -2707,7 +2643,6 @@
                 {
                     "name": "bar",
                     "version": "4.5.6",
-                    "category": "main",
                     "optional": False,
                     "python-versions": "*",
                 },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/poetry_plugin_export-1.2.0/tests/test_walker.py 
new/poetry_plugin_export-1.3.1/tests/test_walker.py
--- old/poetry_plugin_export-1.2.0/tests/test_walker.py 1970-01-01 
01:00:00.000000000 +0100
+++ new/poetry_plugin_export-1.3.1/tests/test_walker.py 2023-04-17 
16:40:05.815764700 +0200
@@ -0,0 +1,27 @@
+from __future__ import annotations
+
+import pytest
+
+from packaging.utils import NormalizedName
+from poetry.core.packages.dependency import Dependency
+from poetry.core.packages.package import Package
+
+from poetry_plugin_export.walker import DependencyWalkerError
+from poetry_plugin_export.walker import walk_dependencies
+
+
+def test_walk_dependencies_multiple_versions_when_latest_is_not_compatible() 
-> None:
+    # TODO: Support this case:
+    # https://github.com/python-poetry/poetry-plugin-export/issues/183
+    with pytest.raises(DependencyWalkerError):
+        walk_dependencies(
+            dependencies=[
+                Dependency("grpcio", ">=1.42.0"),
+                Dependency("grpcio", ">=1.42.0,<=1.49.1"),
+                Dependency("grpcio", ">=1.47.0,<2.0dev"),
+            ],
+            packages_by_name={
+                "grpcio": [Package("grpcio", "1.51.3"), Package("grpcio", 
"1.49.1")]
+            },
+            root_package_name=NormalizedName("package-name"),
+        )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/poetry_plugin_export-1.2.0/tests/types.py 
new/poetry_plugin_export-1.3.1/tests/types.py
--- old/poetry_plugin_export-1.2.0/tests/types.py       2022-11-05 
14:30:22.823279100 +0100
+++ new/poetry_plugin_export-1.3.1/tests/types.py       2023-04-17 
16:40:05.815764700 +0200
@@ -14,7 +14,7 @@
 
 class CommandTesterFactory(Protocol):
     def __call__(
-        self: CommandTester,
+        self,
         command: str,
         poetry: Poetry | None = None,
         installer: Installer | None = None,

Reply via email to