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 ApplicationPluginView on GitHub (pinned to 92b74dcfe3)
Solutions
- Update or uninstall the offending plugin: `poetry self show plugins` to identify it, then `poetry self remove <plugin>`.
- Report the entry point group mismatch to the plugin maintainer.
- 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
- Install plugins only from trusted sources that target `poetry.plugin` / `poetry.application.plugin`.
- Pin plugin versions known to work with your Poetry.
- Run `poetry self show plugins` after each plugin change.
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.