finalize: KeyError when a news fragment's id contains a dot
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 1/5
- Tempo stimato
- Meno di un'ora
- Idoneità per principianti
- 82/100
Direzione di ricerca
Il traceback punta a _release_bump in jaraco/develop/towncrier.py, dove il nome del file del frammento viene suddiviso e il tipo viene cercato in _release_bumps. Leggi questa funzione e i suoi chiamanti, quindi esegui tox -e finalize con un frammento chiamato +drop-python-3.10.feature.rst. Il lavoro è completato quando finalize gestisce l’id con i punti usando il tipo feature senza sollevare KeyError.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- Python
- Stelle
- 7
- Fork
- 5
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di jaraco/jaraco.develop
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
jaraco/jaraco.develop#27 ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
jaraco/jaraco.develop#22 ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
jaraco/jaraco.develop#13 · 1 commento ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
jaraco/jaraco.develop#8 · 4 commenti ·
Tutte le issue di jaraco/jaraco.develop
Issue simili
-
[oblt-aw][autodoc] Update workflow docs for gh-aw v0.92.5 and detector permission scopeForse già presa @github-actions l’ha presa oggi. Aperta
Difficoltà 1/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
feat(ide): VS Code access through the shipped MCP server (config doc and tool-list smoke test)Apertaroadmap-100
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
comp/tools P2 tool/browser tool/file type/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
NousResearch/hermes-agent#143418 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
python-hyper/uritemplate#164 ·