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

PypiVersionAPI.get_latest_date() crashes when a PyPI release entry is missing upload_time_iso_8601

Abierto
#854 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@RuchitAgrawal ya está trabajando en esto.

Desde el 27/3/2026.

Evaluación

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

Línea de trabajo

En packagedb/package_managers.py, inspecciona PypiVersionAPI.get_latest_date() y cómo gestiona cada entrada de descarga. Usa los ejemplos proporcionados para comprobar las entradas con y sin upload_time_iso_8601 y, después, verifica que las marcas de tiempo válidas sigan comparándose. Se considera completado cuando se omiten las marcas de tiempo ausentes o no utilizables, se devuelve la fecha válida más reciente y se devuelve None cuando no existe ninguna marca de tiempo utilizable.

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

Descripción

While reviewing packagedb/package_managers.py, I noticed a bug in PypiVersionAPI.get_latest_date().

The function currently assumes that every download entry in a PyPI release contains upload_time_iso_8601. If one of the entries is missing that field, current_date is never assigned, but it is still used later in the loop. That can raise an UnboundLocalError instead of simply skipping the invalid entry.

Current code:

latest_date = None
for download in downloads:
upload_time = download.get("upload_time_iso_8601")
if upload_time:
current_date = dateparser.parse(upload_time)
if not latest_date:
latest_date = current_date
else:
if current_date > latest_date:
latest_date = current_date
return latest_date
A minimal example that can trigger this is:

downloads = [
{},
{"upload_time_iso_8601": "2010-12-23T05:14:23.509436Z"},
]
In this case, the function should ignore the first item and return the parsed date from the second one, but it can fail on the first item because current_date is undefined.

Expected behavior:

skip entries that do not have upload_time_iso_8601
continue processing the remaining valid entries
return the latest valid date
return None if none of the entries contain a usable timestamp
A simple fix would be to initialize current_date = None inside the loop and continue when upload_time_iso_8601 is missing.

Reference:
PyPI JSON API documentation

Lenguaje dominante
HTML
Estrellas
70
Forks
74
Merge medio
2 d 4 h
PR fusionados (30 d)
7

Preparar el entorno

  • Incluye un Dockerfile o un archivo de Docker Compose
  • Sin plantilla de pull request
  • Sin 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 aboutcode-org/purldb

Todos los issues de aboutcode-org/purldb

Issues similares

Más issues de Backend & API Design

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.