fix: @_helpers.positional raises TypeError when decorating functions without default arguments
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 1/5
- Tempo stimato
- Meno di un'ora
- Idoneità per principianti
- 88/100
Direzione di ricerca
L’issue indica googleapiclient/_helpers.py e il percorso di inferenza dei valori predefiniti di positional(). Leggi quella funzione ed esamina i test esistenti per l’uso del decoratore senza argomenti; aggiungi test per le funzioni senza valori predefiniti e senza parametri. Il lavoro è completato quando questi casi non generano più errori durante la decorazione e i test passano.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
When @googleapiclient._helpers.positional is used as a bare decorator without arguments (e.g., @positional) on a callable that does not define default argument values (or takes no parameters), it raises TypeError: object of type 'NoneType' has no len() at function definition time.
Current Behavior
In googleapiclient/_helpers.py, positional() infers the maximum number of positional arguments when called without arguments:
if isinstance(max_positional_args, int):
return positional_decorator
else:
args, _, _, defaults, _, _, _ = inspect.getfullargspec(max_positional_args)
return positional(len(args) - len(defaults))(max_positional_args)
When max_positional_args has no default parameters (or takes 0 parameters), inspect.getfullargspec(max_positional_args).defaults returns None.
Evaluating len(defaults) then raises:
TypeError: object of type 'NoneType' has no len()
Expected Behavior
When @positional is used without arguments on a function without default parameters (such as def func(a, b): ...), defaults should default to an empty sequence (e.g., len(defaults or ())), correctly calculating len(args) - 0 = len(args) positional parameters instead of crashing with a TypeError.
Reproduction
from googleapiclient import _helpers
@_helpers.positional
def my_function(a, b):
return a + b
Result:
TypeError: object of type 'NoneType' has no len()
Technical Context
In googleapiclient/_helpers.py, replacing len(defaults) with len(defaults or ()) safely treats None as 0 default arguments:
args, _, _, defaults, _, _, _ = inspect.getfullargspec(max_positional_args)
return positional(len(args) - len(defaults or ()))(max_positional_args)
- Lingua principale
- Python
- Stelle
- 9k
- Fork
- 2.6k
- Merge medio
- 8h 36m
- PR unite (30g)
- 7
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
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 googleapis/google-api-python-client
-
fix: @_helpers.positional raises TypeError when decorating functions without default argumentsForse già presa @codeXsidd l’ha presa 1 giorno fa. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
googleapis/google-api-python-client#2845 ·
I maintainer di solito rispondono entro 1 giorno
-
Disable prettyPrint by default for Google Sheets API responsesForse già presa @pawciobiel l’ha presa 70 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
googleapis/google-api-python-client#2788 ·
I maintainer di solito rispondono entro 1 giorno
-
test: connection leak test test_discovery_http_is_closed is shadowed and syntactically invalidForse già presa @Capstan l’ha presa 146 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
googleapis/google-api-python-client#2757 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
test: strict positional parameter enforcement is ignored under pytestForse già presa @Capstan l’ha presa 146 giorni fa. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
googleapis/google-api-python-client#2755 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
googleapis/google-api-python-client#2825 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di googleapis/google-api-python-client
Issue simili
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 85/100
WLAN-Pi/wlanpi-profiler#341 ·
I maintainer di solito rispondono entro 1 giorno
-
Memory leak: the shared `validation_aborted_error` keeps every traceback it is raised throughForse già presa @Fire162 l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
graphql-python/graphql-core#287 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
roman-corgi/ctc-dip#160 ·
I maintainer di solito rispondono entro 1 giorno
-
type-bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
render_findings.py reads and writes in the host's default encoding, so findings.html breaks on a cp1252 Windows hostForse già presa @Aaqibhafeezkhan l’ha presa oggi. Apertabug good first issue mentored python size: XS up-for-grabs
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
dheerajjha/mcp-migrate#366 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno