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

JSON deserialization does not handle OverflowError

Abierto
#480 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
52/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
python

Línea de trabajo

Empieza en packages/serialization/json/kiota_serialization_json/json_parse_node.py, en JsonParseNode.try_get_anything() y en el catch alrededor de parse_timedelta_string(). Reproduce la entrada "50001140846:00021" y comprueba los otros handlers catch mencionados en el issue. Está terminado cuando los valores malformados pasan sin cambios, sin que se produzca un OverflowError no capturado.

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

Descripción

Trying to deserialize certain misformatted strings result in an uncaught OverflowError exception instead of passing through the string unchanged. In particular, trying to deserialize a timedelta string such as "50001140846:00021" results in the following:

Traceback (most recent call last):
  File "lib\site-packages\kiota_abstractions\date_utils.py", line 66, in parse_timedelta_string
    return parse_timedelta_from_iso_format(text)
  File "lib\site-packages\kiota_abstractions\date_utils.py", line 34, in parse_timedelta_from_iso_format
    raise ValueError(f"Invalid ISO8601 duration string: {text}")
ValueError: Invalid ISO8601 duration string: 50001140846:00021

During handling of the above exception, another exception occurred:
Traceback (most recent call last):
[...]
  File "lib\site-packages\kiota_serialization_json\json_parse_node.py", line 335, in try_get_anything
    return parse_timedelta_string(value)
  File "lib\site-packages\kiota_abstractions\date_utils.py", line 76, in parse_timedelta_string
    return timedelta(hours=hours, minutes=minutes, seconds=seconds)
OverflowError: days=2083380868; must have magnitude <= 999999999

The issue is that JsonParseNode.try_get_anything() only handles ValueError exceptions instead of also handling OverflowError. Changing this line to catch both ValueError and OverflowError allows deserialization to be successful:
https://github.com/microsoft/kiota-python/blob/b23edcbf268efdb81d14ef59cecc6c9565288248/packages/serialization/json/kiota_serialization_json/json_parse_node.py#L336

Most likely the other catch handlers in try_get_anything() should be updated as well.

Lenguaje dominante
Python
Estrellas
31
Forks
39
Merge medio
13 h 21 min
PR fusionados (30 d)
46

Guía de contribución

Abrir la guía de contribución

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 microsoft/kiota-python

Todos los issues de microsoft/kiota-python

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.