Konfiguracja Pythonowego menadżera pakietów uv wydawała się prosta. Chciałem zwiększyć bezpieczeństwo projektu, dodając regułę wymuszającą korzystanie wyłącznie z pakietów, które mają co najmniej 7 dni „na karku”:
[tool.uv]
exclude-newer = "7 days"
Cel: blokowanie świeżo opublikowanych pakietów (potencjalne supply-chain attacks). Logika prosta — ale zderzyłem się z problemem. Niektóre repozytoria pakietów — jak Google Cloud Repository — nie podają metadanych upload-time dla pakietów. Z perspektywy uv brak daty = brak możliwości weryfikacji reguły. Efekt: pakiety z takich źródeł są blokowane.
Gdzie był AI?
Zapytałem kilku asystentów AI. Żaden nie znał rozwiązania. Powody:
- Problem jest zbyt rzadki — nie ma go w danych treningowych
- Wyszukiwanie internetowe przez narzędzia AI nie potrafiło poprawnie przeanalizować odpowiedniej strony (lub jej nawet znaleźć)
Nota na marginesie: gdy pisałem ten post z pomocą AI, asystent zaproponował przykład z pakietem google-cloud-storage. Pakiet ten nie miał żadnego związku z moim problemem — AI go po prostu wymyśliło. Klasyczny hallucination. Pasuje do tematu.
Rozwiązanie znalazłem ręcznie, w GitHubie — issue #16813 projektu astral-sh/uv.
Rozwiązanie: exclude-newer-package
W moim przypadku problem dotyczył pakietu pytorch. Rozwiązanie — wyłączenie konkretnego pakietu z globalnej reguły:
[tool.uv]
exclude-newer = "7 days"
exclude-newer-package = { pytorch = false }
Flaga false oznacza: dla tego pakietu nie stosuj reguły exclude-newer. Reszta pakietów nadal podlega weryfikacji.
Wniosek
AI jest świetne przy popularnych problemach. Przy edge-case’ach — szczególnie nowych, rzadkich, słabo udokumentowanych — zawodzi. Nie dlatego, że jest głupie. Dlatego, że nie miało szansy się nauczyć.
Never trust AI — weryfikuj, szczególnie gdy problem jest specyficzny i mało popularny.