unclecode-litellm shadows the upstream litellm package; the quarantine that motivated the fork has been lifted
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 52/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- python
- Ambito
- build-system
Direzione di ricerca
Inspect the package dependency declaration and the existing [tool.uv] configuration first, then reproduce an environment containing crawl4ai alongside upstream litellm. Confirm the selected dependency direction avoids the shared litellm package collision and that installation from package metadata succeeds without the _redact_string import error.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Follow-up to #1864, where the unclecode-litellm fork was adopted. The emergency that
motivated it has passed, and the fork now costs downstream users something it did not
cost back then.
The fork's premise no longer holds
When #1864 was filed, PyPI had quarantined the entire litellm package — every
version was uninstallable, so pinning a fork was the only way to keep pip install crawl4ai working.
That is no longer the case. On PyPI today:
litellmlatest is 1.93.01.82.7,1.82.8,1.82.9are gone — exactly the compromised releases1.82.6and everything from1.83.0onward are present and installable
The quarantine was lifted and only the bad releases were removed.
What the fork costs now
crawl4ai 0.9.2 requires unclecode-litellm==1.81.13, which installs a top-level
litellm package — the same import name shipped by the upstream distribution. An
environment that needs both ends up with two different versions written into one
site-packages/litellm/, and which files survive is decided by install order rather
than by either project.
Nothing errors at install time. It surfaces later as:
ImportError: cannot import name '_redact_string' from 'litellm._logging'
The same dependency pair passed on one CI run and failed on another two minutes later,
with nothing changed but resolution order. Because the two distributions have different
names, pip and uv see no conflict to report — they install both, and one silently
overwrites the other's files.
This is not fixable downstream. A [tool.uv] override-dependencies entry works for a
source install, but overrides are not recorded in wheel metadata, so anyone installing
a dependent package from PyPI resolves crawl4ai's requirements directly and hits the
collision again.
Suggested fix
Return to upstream litellm with a floor that excludes the compromised window:
litellm>=1.83.0
1.83.0 is the first release after the three removed versions, so the floor cannot
resolve to a compromised build even if one were ever restored. This keeps pip install crawl4ai exactly as it is today — full package, LLM support included, no extras to
remember — while removing the shadowing.
If there is a reason to stay on the fork, the collision can also be resolved by having
it install as unclecode_litellm and importing it under an alias:
import unclecode_litellm as litellm
Same outcome for crawl4ai users, and the fork stops occupying a name it doesn't own.
A third option, if the fork is meant as a global drop-in replacement: publish the
crawler half as its own distribution (crawl4ai-core or similar), leaving crawl4ai
as the full LLM-enabled package most people install.
Happy to send a PR for whichever direction you prefer.
- Lingua principale
- Python
- Stelle
- 85.4k
- Fork
- 8.9k
- Merge medio
- 14h 10m
- PR unite (30g)
- 12
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 unclecode/crawl4ai
-
[Bug]: whitespace-only inline elements are removed from cleaned_html, merging words in raw_markdown (prose, not only <pre>/<code>)Forse già presa @drakeo338 l’ha presa 11 giorni fa. Aperta⚙ Done 🐞 Bug 🥸 - Medium
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
unclecode/crawl4ai#2328 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: HTTP crawler puts proxy credentials into the URL unencodedForse di nuovo libera @omarbounawarapy l’ha presa 11 giorni fa e non c’è nessuna pull request aperta. Aperta⚙ Done 🐞 Bug 🥸 - Medium
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
unclecode/crawl4ai#2326 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: Same PDF gives different markdown on each run when batch_size > 1 (threads share current_page_number)Forse già presa @Kylinny l’ha presa 13 giorni fa. Aperta⚙ Done 🐞 Bug 🥸 - Medium
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
unclecode/crawl4ai#2319 · 4 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: Reusing BFSDeepCrawlStrategy leaks the previous crawl's max_pages budget into a fresh runForse di nuovo libera @nightcityblade l’ha presa 13 giorni fa e non c’è nessuna pull request aperta. Aperta⚙ Done 🐞 Bug 📌 Root caused 🥸 - Medium
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
unclecode/crawl4ai#2309 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: Docker server fails to boot after mcp 2.0.0 release — mcp_bridge uses the removed v1 low-level APIForse di nuovo libera @nightcityblade l’ha presa 54 giorni fa e non c’è nessuna pull request aperta. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 84/100
unclecode/crawl4ai#2147 · 5 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di unclecode/crawl4ai
Issue simili
-
effort: low prio: low ready
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
digitalfabrik/integreat-cms#4616 ·
I maintainer di solito rispondono entro 5 giorni
-
bug difficulty:2 good first issue help wanted
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
MakazhanAlpamys/Soup#1865 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
FinanceFlash/unvibecode#233 ·
I maintainer di solito rispondono entro 1 giorno
-
area: agents area: docs good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
openapi/gknowledge#23 ·
-
useless-suppression reported for deprecated-* messages that should be exemptForse già presa @adityasinha-ghub l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
pylint-dev/pylint#11656 ·
I maintainer di solito rispondono entro 1 giorno