Python loyihalarida vaqtni tejash: Ruff va Pre-commit sozlash
Muallif: Javohir Abdullayev · · Python

Dasturchi vaqtini o'g'irlaydigan mayda muammolar
Har bir Python dasturchisi kod yozish jarayonida bir xil takroriy muammolarga duch keladi: qator oxiridagi ortiqcha bo'shliqlar, ishlatilmagan importlar (unused imports), formatlashdagi tafovutlar va PEP8 qoidalarining buzilishi. Jamoada yoki hatto shaxsiy frilans loyihangizda bunday xatolarni qo'lda to'g'rilash vaqt va diqqatni behuda sarflaydi.
Code Review paytida "bu yerga bo'sh qator tashlang" yoki "importlarni alifbo tartibida tering" degan izohlarni yozish va o'qish o'rniga, bu jarayonni to'liq avtomatlashtirish mumkin. Bugun biz zamonaviy Python ekotizimining eng tezkor vositasi bo'lgan Ruff va pre-commit hooklari yordamida ish samaradorligini qanday oshirishni ko'rib chiqamiz.
Nima uchun aynan Ruff?
Yaqin vaqtgacha Python loyihalarida kod sifatini tekshirish uchun bir nechta alohida vositalar (Flake8, Black, isort, Pylint) birgalikda ishlatilardi. Ammo ularning har birini alohida sozlash kerak edi va ular katta loyihalarda sezilarli darajada sekin ishlardi.
Ruff — Rust tilida yozilgan, nihoyatda tez ishlaydigan zamonaviy Python linter va formatter hisoblanadi. U quyidagi afzalliklarga ega:
- Misli ko'rilmagan tezlik: Mavjud vositalardan 10-100 barobar tezroq ishlaydi.
- Barchasi birida: Flake8, isort, Black va yana o'nlab plaginlar o'rnini bitta vosita bilan bosadi.
- Avtomatik tuzatish: Ko'plab xatolarni (masalan, keraksiz importlarni o'chirish, qatorlarni to'g'rilash)
--fixbuyrug'i orqali bir soniyada hal qiladi.
1-qadam: Ruff-ni loyihaga o'rnatish va sinab ko'rish
Loyihangizning virtual muhitida (venv) Ruff-ni o'rnatish juda oddiy:
pip install ruffKodni tekshirish uchun quyidagi buyruqni bajaring:
ruff check .Agar xatolarni avtomatik to'g'rilashni istasangiz:
ruff check --fix .Kodni chiroyli formatlash (Black o'rnida) uchun esa:
ruff format .2-qadam: Pre-commit hooklarni sozlash
Eng zo'r vosita ham, agar uni ishga tushirish esdan chiqsa, foydasiz bo'lib qoladi. Git commit qilishdan oldin kodni avtomatik tekshiradigan tizim yaratish uchun pre-commit paketidan foydalanamiz.
Avval uni o'rnatamiz:
pip install pre-commitLoyihangizning ildiz papkasida .pre-commit-config.yaml nomli fayl yarating va unga quyidagi konfiguratsiyani kiriting:
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.4.0
hooks:
- id: ruff
args: [--fix]
- id: ruff-formatEndi pre-commit hooklarini Git tizimiga bog'laymiz:
pre-commit installShu paytdan boshlab, har safar git commit buyrug'ini berganingizda, tizim avtomatik ravishda o'zgargan fayllarni Ruff orqali tekshiradi, formatlaydi va xatolar bo'lsa, commit qilishni to'xtatib sizga xabar beradi.
3-qadam: pyproject.toml orqali qoidalarni moslashtirish
Barcha loyiha sozlamalarini bitta joyda saqlash uchun pyproject.toml faylidan foydalanish zamonaviy standart hisoblanadi. Unda qator uzunligi yoki qaysi qoidalarni tekshirish kerakligini belgilashingiz mumkin:
[tool.ruff]
line-length = 88
target-version = "py311"
[tool.ruff.lint]
select = [
"E", # pycodestyle xatolari
"F", # Pyflakes (ishlatilmagan o'zgaruvchilar va h.k.)
"I", # isort (importlarni tartiblash)
"B", # flake8-bugbear (yashirin xatolar)
]
ignore = [
"E501", # Qator uzunligi chegarasini e'tiborsiz qoldirish
]Natija va amaliy foyda
Ushbu oddiy sozlamalarni joriy qilish orqali siz quyidagi natijalarga erishasiz:
- Vaqt tejaladi: Formatlash va sintaksis xatolarini qidirishga kuniga kamida 20-30 daqiqa vaqt tejaysiz.
- Toza Git tarixi: Loyihada faqat biznes mantiqqa oid commitlar saqlanadi, mayda formatlash commitlari kamayadi.
- Jamoaviy standart: Barcha dasturchilar bir xil formatda va bir xil sifat darajasida kod yozadi.
Kichik loyihalardan boshlab ushbu vositalarni qo'llang. Bu sizga nafaqat tartibli kod yozishni, balki professional darajada ishlashni o'rgatadi.
Teglar: #Python #Dasturlash #Ruff #Samaradorlik #Pre-commit