uv فوقالعادهست، ولی UX مدیریت پکیجهاش آشفتهست
خلاصهٔ کاملتر
uv که توسط Astral ساخته شده، این روزها خیلی سروصدا کرده؛ سرعتش چشمگیره، مدیریت نسخههای پایتون رو راحت میکنه، و یهتنه جای چندین ابزار رو میگیره. اما نویسندهی این مقاله معتقده که وقتی از مرحلهی راهاندازی اولیه رد میشی و وارد نگهداری روزمرهی پروژه میشی، ضعفهای UX اون خودشون رو نشون میدن.
مشکل اول: پیدا کردن پکیجهای قدیمی. در pnpm یه دستور ساده مثل pnpm outdated لیست تمیزی از پکیجهای نیازمند آپدیت میده. در uv معادل مستقیمی وجود نداشت و نویسنده از uv tree --outdated --depth 1 استفاده میکرد که کل درخت dependency رو نشون میده، نه فقط پکیجهای آپدیتدار. البته بعد از انتشار مقاله، خوانندگان یادآوری کردن که uv pip list --outdated فقط پکیجهای قدیمی رو فیلتر میکنه؛ مشکل اصلی اینه که این دستور زیر فضای نام uv pip قرار داره و بهعنوان یه دستور سطحاول قابل کشف نیست.
مشکل دوم و مهمتر: محدودیت نسخه ناامن بهصورت پیشفرض. وقتی با uv add pydantic یه پکیج اضافه میکنی، چیزی شبیه به این توی pyproject.toml ثبت میشه:
dependencies = [
"pydantic>=2.13.4",
]هیچ کران بالایی وجود نداره. یعنی pydantic نسخهی ۳، ۴ یا هر نسخهی دیگهای هم قابل قبوله. در مقابل، pnpm و Poetry بهصورت پیشفرض محدودیت major میذارن (مثلاً ^1.23.4 یا >=1.23.4,
[tool.uv]
add-bounds = "major"این تنظیم باعث میشه از این به بعد محدودیتهای امنتری مثل pydantic>=2.13.4,




