Plugin registry compares plugins by equality, not identity
Los mantenedores suelen responder en 1 día
@00200200 ya está trabajando en esto.
Desde el 11/10/2026.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 62/100
Línea de trabajo
Empieza en register(), get_name() e is_registered() del gestor de plugins, que comparan plugins con == o in sobre los valores de _name2plugin, y compáralos con get_hookcallers(), que ya usa is. Reproduce el problema con el ejemplo de las dos instancias de dataclass del issue y luego cambia las comparaciones a identidad. Está terminado cuando dos objetos de plugin iguales pero distintos pueden registrarse con nombres diferentes y la suite de pruebas existente sigue pasando.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
🤖 Written by Claude Opus 5.5 via Claude Code for the pluggy maintainers; I prompted it, it did the work, I read it.
register() (plugin in self._name2plugin.values()), get_name() and is_registered() use ==, while get_hookcallers() uses is. Two distinct plugins that compare equal are treated as one:
@dataclass
class P:
@hookimpl
def myhook(self): ...
pm.register(P(), "one")
pm.register(P(), "two") # ValueError: Plugin already registered under a different name
Proposal: use identity everywhere. Small behavior change for plugins with a custom __eq__.
Found while working on #759.
- Lenguaje dominante
- Python
- Estrellas
- 1.7k
- Forks
- 172
- Merge medio
- 2 d 18 h
- PR fusionados (30 d)
- 21
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de pytest-dev/pluggy
-
Defaulted positional-only hook parameters are forwarded as keywordsPosiblemente ocupada @adenzhou1350 la tomó hace 1 día. Abierto
Dificultad 4/5 1-2 días Aptitud para principiantes 45/100
pytest-dev/pluggy#774 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
list_plugin_distinfo() keeps unregistered pluginsPosiblemente ocupada @RonnyPfannschmidt la tomó hace 3 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
pytest-dev/pluggy#763 ·
Los mantenedores suelen responder en 1 día
-
unregister() argument validation relies on assertPosiblemente ocupada @ekanshul la tomó hace 2 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 42/100
pytest-dev/pluggy#762 ·
Los mantenedores suelen responder en 1 día
-
Failures during add_hookspecs / historic replay leave partial statePosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 50/100
pytest-dev/pluggy#761 ·
Los mantenedores suelen responder en 1 día
-
[Downstream] devpi broken - trying to register `None`Posiblemente ocupada @bluetech la tomó hace 12 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 58/100
pytest-dev/pluggy#749 · 4 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de pytest-dev/pluggy
Issues similares
-
🐛 Bug: Calendar work items cannot be opened on mobilePosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 2 días
-
Status: Triage Type: Bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
-
Objects.List treats versions=false (and similar flags) as truePosiblemente ocupada @andaaron la tomó hoy. Abiertopriority: p2 type: bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
googleapis/storage-testbench#829 ·
Los mantenedores suelen responder en 2 días
-
[Bug]: memory provider treats 1:1 DMs as shared surfaces, so DM turns never receive reviewed recordsAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 79/100
rlaope/oh-my-hermes#2088 ·
Los mantenedores suelen responder en 1 día