call_extra() drops arguments for partial callbacks
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 65/100
Direzione di ricerca
Start with the reproducer in the issue, which uses HookCaller.call_extra() with a functools.partial callback. The problem is in varnames(), which reads the partial's own __call__ instead of its remaining signature, so the bound arguments are never forwarded. Run the snippet and confirm it returns [("demo", 7)], then check the existing varnames() tests for plain functions and partials.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Passing a functools.partial callback to HookCaller.call_extra() drops the remaining hook arguments. A callback with a required argument raises TypeError; one with a default silently uses that default instead of the supplied value.
from functools import partial
import pluggy
hookspec = pluggy.HookspecMarker("example")
class Hooks:
@hookspec
def event(self, value):
pass
def on_event(context, value):
return context, value
pm = pluggy.PluginManager("example")
pm.add_hookspecs(Hooks)
callback = partial(on_event, "demo")
assert callback(7) == ("demo", 7)
print(pm.hook.event.call_extra([callback], {"value": 7}))
Expected: [("demo", 7)].
Actual: TypeError: on_event() missing 1 required positional argument: 'value'.
varnames() inspects the partial's built-in __call__ rather than its remaining signature, so no parameters are forwarded.
Reproduced on Python 3.12.16/Linux with main 3fc9e561ea7e72a95549673d79ebdaf4a9fae829.
- Lingua principale
- Python
- Stelle
- 1.7k
- Fork
- 200
- Merge medio
- 10h 4m
- PR unite (30g)
- 13
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di pytest-dev/pluggy
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 71/100
pytest-dev/pluggy#830 ·
I maintainer di solito rispondono entro 1 giorno
-
Plugin registry compares plugins by equality, not identityForse già presa @00200200 l’ha presa 30 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
pytest-dev/pluggy#760 ·
I maintainer di solito rispondono entro 1 giorno
-
add_hookcall_monitoring undo breaks when called out of LIFO orderForse già presa @AlvaroBalbin l’ha presa 7 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 55/100
pytest-dev/pluggy#815 ·
I maintainer di solito rispondono entro 1 giorno
-
call_historic() memorizes the caller's kwargs mapping, so later mutation changes what late plugins receiveForse già presa @RonnyPfannschmidt l’ha presa 21 giorni fa. Aperta
pytest-dev/pluggy#808 · 2 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
deprecate passing None as a plugin instanceForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 30/100
pytest-dev/pluggy#790 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di pytest-dev/pluggy
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
FAIRmat-NFDI/pynxtools#861 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
NVIDIA/nsight-python#88 ·
I maintainer di solito rispondono entro 1 giorno
-
Criteria can pass when the deliverable is missingForse già presa @clementtisseau l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
harveyai/harvey-labs#217 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno
-
priority/medium roadmap/v1.1.1 stakeholder/rapr type/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
databrickslabs/ontos#1420 ·
I maintainer di solito rispondono entro 3 giorni