finalize: KeyError when a news fragment's id contains a dot
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 1/5
- Tiempo estimado
- Menos de una hora
- Aptitud para principiantes
- 82/100
Línea de trabajo
El traceback apunta a _release_bump en jaraco/develop/towncrier.py, donde se divide el nombre del archivo del fragmento y se busca el tipo en _release_bumps. Lee esa función y sus llamadores y, después, ejecuta tox -e finalize con un fragmento llamado +drop-python-3.10.feature.rst. Se considera terminado cuando finalize procesa el id con puntos usando el tipo feature sin generar KeyError.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
towncrier._release_bump parses a fragment filename from the left, so a dot anywhere in the id portion shifts the type field and raises KeyError.
Reproducer
A fragment named +drop-python-3.10.feature.rst (dropping support for an EOL Python, the version number written naturally):
$ tox -e finalize
...
File ".../jaraco/develop/towncrier.py", line 27, in _release_bump
return _release_bumps[type_]
KeyError: '10'
Because:
>>> '+drop-python-3.10.feature.rst'.split('.', 2)
['+drop-python-3', '10', 'feature.rst']
Notably, towncrier itself is fine with the name
towncrier build --draft renders the fragment under Features exactly as intended — it parses the type from the right. So the name is only invalid by jaraco.develop's stricter reading, which makes the failure surprising: the changelog builds, but the release can't be cut.
Suggested fix
rsplit matches towncrier's own interpretation and is a one-character change:
>>> '+drop-python-3.10.feature.rst'.rsplit('.', 2)
['+drop-python-3.10', 'feature', 'rst']
Two adjacent observations
_release_bumps is built as collections.defaultdict(feature='minor', ...). Those are all keyword arguments, so default_factory is None and the mapping raises KeyError like a plain dict. If the defaultdict was meant to supply a fallback bump for unrecognized types, it isn't doing so.
check_changes() wouldn't have caught this either — it tests f".{key}" in file.suffixes, and .feature is among ['.10', '.feature', '.rst'], so the name passes. It also isn't called from finalize(), so nothing validates names before release_kind() runs.
Seen with jaraco.develop 9.0.0, towncrier 26.9.0.
- Lenguaje dominante
- Python
- Estrellas
- 7
- Forks
- 5
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de jaraco/jaraco.develop
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
jaraco/jaraco.develop#27 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
jaraco/jaraco.develop#22 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
jaraco/jaraco.develop#13 · 1 comentario ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
jaraco/jaraco.develop#8 · 4 comentarios ·
Todos los issues de jaraco/jaraco.develop
Issues similares
-
type-bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
push_gh-pages fails on master branch on forksPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertogood first issue infrastructure
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
kuznia-rdzeni/coreblocks#1135 ·
-
good first issue server
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
Los mantenedores suelen responder en 1 día
-
documentation priority: high
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
a-lex-s/mealie-telegram-bot#54 ·
Los mantenedores suelen responder en 1 día