python-poetry/poetry · error · ValueError

Unknown plugin group ({group}) for {name}

Error message

Unknown plugin group ({group}) for {name}

What it means

ValueError from `PluginPackage.append` (self/show/plugins.py:28-36) when an entry point's group is neither `ApplicationPlugin.group` nor `Plugin.group`. `poetry self show plugins` iterates entry points registered by installed plugin packages; an unknown group indicates a plugin declaring an entry point under a non-Poetry group.

Source

Thrown at src/poetry/console/commands/self/show/plugins.py:36

    package: Package
    plugins: list[metadata.EntryPoint] = dataclasses.field(default_factory=list)
    application_plugins: list[metadata.EntryPoint] = dataclasses.field(
        default_factory=list
    )

    def append(self, entry_point: metadata.EntryPoint) -> None:
        from poetry.plugins.application_plugin import ApplicationPlugin
        from poetry.plugins.plugin import Plugin

        group = entry_point.group

        if group == ApplicationPlugin.group:
            self.application_plugins.append(entry_point)
        elif group == Plugin.group:
            self.plugins.append(entry_point)
        else:
            name = entry_point.name
            raise ValueError(f"Unknown plugin group ({group}) for {name}")


class SelfShowPluginsCommand(SelfCommand):
    name = "self show plugins"
    description = "Shows information about the currently installed plugins."
    help = """\
The <c1>self show plugins</c1> command lists all installed Poetry plugins.

Plugins can be added and removed using the <c1>self add</c1> and <c1>self remove</c1> \
commands respectively.

<warning>This command does not list packages that do not provide a Poetry plugin.</>
"""

    def _system_project_handle(self) -> int:
        from packaging.utils import canonicalize_name

        from poetry.plugins.application_plugin import ApplicationPlugin

View on GitHub (pinned to 92b74dcfe3)

Solutions

  1. Update or uninstall the offending plugin: `poetry self show plugins` to identify it, then `poetry self remove <plugin>`.
  2. Report the entry point group mismatch to the plugin maintainer.
  3. Check the plugin's `pyproject.toml` `[project.entry-points]` uses `poetry.plugin` or `poetry.application.plugin`.

Example fix

# before
# plugin pyproject.toml registers group "poetry.plugins"
# after
[project.entry-points.poetry.plugin]
my_plugin = "my_plugin:MyPlugin"
Defensive patterns

Strategy: try-catch

Validate before calling

from poetry.plugins.application_plugin import ApplicationPlugin
from poetry.plugins.plugin import Plugin
VALID_GROUPS = {ApplicationPlugin.group, Plugin.group}
for ep in entry_points:
    assert ep.group in VALID_GROUPS, f"bad group {ep.group} for {ep.name}"

Type guard

def is_known_plugin_group(group: str) -> bool:
    from poetry.plugins.application_plugin import ApplicationPlugin
    from poetry.plugins.plugin import Plugin
    return group in {ApplicationPlugin.group, Plugin.group}

Try / catch

try:
    info.append(entry_point)
except ValueError:
    # skip the bad entry point, log a warning, or uninstall the plugin
    ...

Prevention

When it happens

Trigger: An installed plugin package registers an entry point under a typo'd or outdated group string; a package misuses the Poetry plugin entry point namespace.

Common situations: A third-party plugin package with a packaging bug; an old plugin targeting a previous Poetry entry point name; an unrelated package coincidentally using a `poetry.*` group.


AI-assisted analysis of python-poetry/poetry@92b74dcfe3 (2026-08-04). Data as JSON: /data/errors/1baa84c697927e64.json. Report an issue: GitHub.