parse_maintainer_name_email returns empty name and wrong email when string has "@" but no angle brackets
I maintainer di solito rispondono entro 2 giorni
@pujitha24 ci sta già lavorando.
Dal 1/11/2026.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 84/100
Direzione di ricerca
Il bug si trova nel controllo has_email all'interno di parse_maintainer_name_email() in src/packagedcode/utils.py. I suoi chiamanti in debian.py e pypi.py passano stringhe di manutentori. Esegui i tre esempi di riproduzione dell'issue per vedere l'output attuale. È fatto quando una stringa senza entrambe le parentesi non restituisce alcuna email, l'esempio systemd di Debian continua a essere analizzato e i test esistenti per questi parser continuano a passare. Verifica l'output atteso per il caso <[email protected], perché l'aspettativa dell'issue su questo punto potrebbe richiedere conferma.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
parse_maintainer_name_email() in src/packagedcode/utils.py is meant to
split Name <email> strings. It should only extract an email when both <
and > are present. The check is wrong:
has_email = "@" in maintainer and all([
True
for char in email_wrappers
if char in maintainer
])
The list only holds the brackets that are present. If neither bracket is
present it is [], and all([]) is True. If only one is present it is
[True], also True. So any string containing @ is treated as Name <email>.
With no <, maintainer.rpartition("<") returns ('', '', maintainer).
The name becomes an empty string and the whole string is saved as the email.
This affects Debian maintainers and uploaders (debian.py) and
pyproject.toml authors and maintainers (pypi.py).
How To Reproduce
from packagedcode.utils import parse_maintainer_name_email
parse_maintainer_name_email("John Doe [email protected]")
# actual: ('', 'John Doe [email protected]')
# expected: ('John Doe [email protected]', None)
parse_maintainer_name_email("John Doe <[email protected]")
# actual: ('John Doe', '[email protected]')
# expected: ('John Doe <[email protected]', None)
parse_maintainer_name_email("Debian systemd Maintainers <[email protected]>")
# works correctly, unchanged
Suggested fix
has_email = "@" in maintainer and all(
char in maintainer
for char in email_wrappers
)
- Lingua principale
- Python
- Stelle
- 2.7k
- Fork
- 848
- Merge medio
- 2g 19h
- PR unite (30g)
- 8
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
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 aboutcode-org/scancode-toolkit
-
scancode aborts when encountering a broken RPM archiveForse già presa @adeba4343-web l’ha presa 1 giorno fa. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
aboutcode-org/scancode-toolkit#5407 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
Four silent bugs: IsRequiredPhrase.license_expression returns None, find_in_path ignores later PATH changes, duplicate dict keys override license mappingsForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertabug
Difficoltà 2/5 Mezza giornata Idoneità per principianti 65/100
aboutcode-org/scancode-toolkit#5405 ·
I maintainer di solito rispondono entro 2 giorni
-
bug: Unreachable JSON extension and format validation in validate_input_pathForse già presa @0Cymantek0 l’ha presa 23 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
aboutcode-org/scancode-toolkit#5351 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
CycloneDX output: metadata.properties[].value emits JSON array instead of stringForse già presa @0Cymantek0 l’ha presa 23 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
aboutcode-org/scancode-toolkit#5349 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
Duplicate 'COPYLEFT' entries in legal file classification names in legal.py and classify.pyForse già presa @Pradeepbeleri l’ha presa 50 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
aboutcode-org/scancode-toolkit#5319 · 2 commenti ·
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di aboutcode-org/scancode-toolkit
Issue simili
-
bug ready-for-dev
Difficoltà 1/5 1-3 ore Idoneità per principianti 92/100
OpenHands/extensions#897 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
tensorflow/datasets#11253 ·
I maintainer di solito rispondono entro 1 giorno
-
fix(core): a config section with all keys commented out crashes startupForse già presa @Aryanbhargava18 l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
kubeflow/mcp-server#512 ·
I maintainer di solito rispondono entro 1 giorno
-
Stop trusting the compromised eMudhra CA certificatesForse già presa @anth-volk l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
PolicyEngine/uk-triple-lock#54 ·
I maintainer di solito rispondono entro 1 giorno
-
DBFS append mode silently overwrites existing filesForse già presa @IlyaKhalafi l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
fsspec/filesystem_spec#2429 ·
I maintainer di solito rispondono entro 1 giorno