Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

[Bug]: Unsubscripted typing.List and typing.Dict crash convert_if_exist_pydantic_model in AFC

Abierto Apto para principiantes
#3,044 1 comentario 0 reacciones 1 asignado Ver en GitHub

Los mantenedores suelen responder en 1 día

@chauvuusvn ya está trabajando en esto.

Desde el 3/10/2026.

  • #3045 de @chauvuusvn — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
82/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
python
Área
api

Línea de trabajo

Comienza en google/genai/_extra_utils.py, en convert_if_exist_pydantic_model, y reproduce los ejemplos de typing.List y typing.Dict del issue. Comprueba el comportamiento cuando get_args(annotation) está vacío y verifica después que ambas llamadas devuelvan sus valores originales sin generar errores.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

priority: p2 type: bug
Describe the bug

In google/genai/_extra_utils.py, inside convert_if_exist_pydantic_model:

if isinstance(value, list) and get_origin(annotation) == list:
    item_type = get_args(annotation)[0]  # Crashes with IndexError on typing.List
    ...
if isinstance(value, dict) and get_origin(annotation) == dict:
    _, value_type = get_args(annotation) # Crashes with ValueError on typing.Dict
    ...

When a user defines a tool function with unsubscripted generic type annotations like typing.List or typing.Dict:

  • get_origin(List) is list, but get_args(List) returns (). Accessing [0] raises IndexError: tuple index out of range.
  • get_origin(Dict) is dict, but get_args(Dict) returns (). Unpacking _, value_type = get_args(Dict) raises ValueError: not enough values to unpack (expected 2, got 0).

This causes Automatic Function Calling (AFC) to crash during function argument conversion.

Steps to Reproduce
from typing import Dict, List
from google.genai._extra_utils import convert_if_exist_pydantic_model

# 1. Test typing.List
convert_if_exist_pydantic_model([1, 2], List, 'items', 'my_func')
# Raises IndexError: tuple index out of range!

# 2. Test typing.Dict
convert_if_exist_pydantic_model({'a': 1}, Dict, 'config', 'my_func')
# Raises ValueError: not enough values to unpack (expected 2, got 0)!
Expected Behavior

If get_args(annotation) is empty for unsubscripted typing.List or typing.Dict, convert_if_exist_pydantic_model should safely return the original value without raising IndexError or ValueError.

Lenguaje dominante
Python
Estrellas
4k
Forks
1k
Merge medio
1 d 17 h
PR fusionados (30 d)
54

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de googleapis/python-genai

Todos los issues de googleapis/python-genai

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.