RecursionError on deeply nested HTML (about 330 levels), separate from the cyclic-tree case in #256
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 68/100
Direzione di ricerca
Inizia in markdownify/init.py intorno a process_element e process_tag alle righe 228-232, 234 e 287-288, quindi esegui il riproduttore di annidamento a 330 livelli dell’issue. Confronta il fallimento relativo alla profondità con la gestione degli alberi ciclici di #256/#274. Il lavoro è completato quando l’HTML aciclico profondamente annidato non genera più RecursionError, mentre il caso ciclico esistente rimane coperto.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
process_element / process_tag recurse three Python frames per nesting level (markdownify/__init__.py 228-232, 234, 287-288 on develop), so a plain acyclic tree hits the default recursion limit at around 330 levels. Real mail clients produce this: Outlook wraps quoted replies in empty <div>s and a long thread easily passes that depth.
deep div nesting depth=300: OK len=5
deep div nesting depth=330: RecursionError (maximum recursion depth exceeded)
deep div nesting depth=500: RecursionError (maximum recursion depth exceeded)
cyclic soup (p contains its ancestor div): RecursionError (maximum recursion depth exceeded)
Repro on 1.2.3: https://gist.github.com/HardMax71/bbfc6f70bab3ec6417d4f80324f40387. The one-liner is markdownify("<div>" * 330 + "x" + "</div>" * 330).
I applied the hunk from #274 to 1.2.3 to check: the cyclic case passes, the depth case still fails. So #256/#274 cover cycles and this needs its own guard. Cheapest fix: thread a depth counter through process_tag and past a max_depth option fall back to node.get_text(); a full fix walks node.descendants without recursion.
- Lingua principale
- Python
- Stelle
- 2.3k
- Fork
- 205
- 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 matthewwithanm/python-markdownify
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
Image/link attributes containing `]`, `)`, or spaces produce broken Markdown outputForse già presa @assinscreedFC l’ha presa 128 giorni fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
matthewwithanm/python-markdownify#261 · 1 commento · 1 reazione ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 65/100
matthewwithanm/python-markdownify#259 · 2 reazioni ·
-
Recursion Error: Process_element / process_tag mutual recursion (infinite loop)Forse già presa @chiliec l’ha presa 45 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 50/100
-
Behavior with strip_pre=mdfy.STRIP_ONE seems incorrect with trailing newlines within the preForse già presa @oiahoon l’ha presa 91 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 50/100
Tutte le issue di matthewwithanm/python-markdownify
Issue simili
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 83/100
PedestrianDynamics/pyFDS-Evac#766 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 91/100
alchaincyf/nuwa-skill#86 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 2 giorni
-
Docs Needs Triage
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
pandas-dev/pandas#71055 ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: graphify reads files that git's global ignore file hidesForse già presa @smngvlkz l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
Graphify-Labs/graphify#4335 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno