fix: @_helpers.positional raises TypeError when decorating functions without default arguments
Mantenedores costumam responder em até 1 dia
Avaliação
- Dificuldade
- 1/5
- Tempo estimado
- Menos de uma hora
- Facilidade para iniciantes
- 88/100
Direção de pesquisa
A issue identifica googleapiclient/_helpers.py e inclui uma reprodução que usa @_helpers.positional. Leia a inferência de argumentos de positional() mostrada na issue e, em seguida, execute os testes existentes relevantes para esse helper. O trabalho estará concluído quando decorar uma função sem argumentos padrão ou sem parâmetros não gerar mais TypeError e os testes existentes do helper passarem.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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)
- Linguagem predominante
- Python
- Estrelas
- 9k
- Forks
- 2.6k
- Merge médio
- 8h 36min
- PRs com merge (30d)
- 7
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de googleapis/google-api-python-client
-
fix: @_helpers.positional raises TypeError when decorating functions without default argumentsAberta
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 88/100
googleapis/google-api-python-client#2844 ·
Mantenedores costumam responder em até 1 dia
-
Disable prettyPrint by default for Google Sheets API responsesTalvez já em andamento @pawciobiel assumiu há 71 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
googleapis/google-api-python-client#2788 ·
Mantenedores costumam responder em até 1 dia
-
test: connection leak test test_discovery_http_is_closed is shadowed and syntactically invalidTalvez já em andamento @Capstan assumiu há 147 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
googleapis/google-api-python-client#2757 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
test: strict positional parameter enforcement is ignored under pytestTalvez já em andamento @Capstan assumiu há 147 dias. Aberta
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 92/100
googleapis/google-api-python-client#2755 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
googleapis/google-api-python-client#2825 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
Todas as issues de googleapis/google-api-python-client
Issues semelhantes
-
Project submission:Aberta
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 72/100
slavakurilyak/awesome-ai-agents#845 ·
Mantenedores costumam responder em até 1 dia
-
tests: pin that the atomic writers in utils/paths.py stage the temporary file in the target's directoryTalvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Abertadifficulty:2 enhancement good first issue
Dificuldade 1/5 1-3 horas Facilidade para iniciantes 92/100
MakazhanAlpamys/Soup#2178 ·
Mantenedores costumam responder em até 1 dia
-
[BUG] dcg.waggr permutation p-values are folded twice, so near-zero scores get the smallest p-valuesAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
scverse/rapids-singlecell#854 ·
Mantenedores costumam responder em até 1 dia
-
Slang input: int8_t4_packed and uint8_t4_packed are copied into CrossGLTalvez já em andamento @ninglinLiu assumiu hoje. Abertaarea:frontend backend:slang bug direction:input
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
Mantenedores costumam responder em até 1 dia
-
random_elements(unique=True) on an OrderedDict: ZeroDivisionError once only zero weights remain, AssertionError with use_weighting=FalseTalvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
Mantenedores costumam responder em até 13 dias