chore(lint): ruff-гейт в CI + фиксы (0 находок) — блокирует кривой деплой

Второй CI-гейт после тестов: ruff как статический анализатор всего Python-кода
(services + scripts). Раньше ни линта, ни проверки типов в CI не было вовсе.

Конфиг ruff.toml: правила E/F/W/I/UP/B/SIM/C4, line-length 100. Осознанно
выключены E501 (длину держит форматтер; длинные RU-комментарии — норма),
B008 (Depends()/Query() в дефолтах — идиома FastAPI, не баг) и UP042
((str, Enum)→StrEnum меняет __str__/сериализацию — не трогаем).

Починено под ноль находок:
- B904 (11): raise ... from exc / from None — читаемые цепочки исключений в
  Celery-ретраях и HTTPException, ошибки обработки не маскируют исходные.
- SIM105 (5): try/except/pass → contextlib.suppress (faiss remove_ids, lsh.remove,
  сброс кэша, ws-disconnect, парс года).
- C416/SIM108/B905/F841/UP035/UP017/F401/I001: dict(rows), тернарник, zip strict,
  мёртвая переменная, устаревшие импорты, timezone.utc→UTC, чистка/сортировка.

Обвязка: scripts/run_lint.sh (ruff в изолированном python:3.11-slim), шаг «Линт»
в job test перед юнит-тестами (падаем раньше). make lint / make lint-fix.
Все 41 юнит-тест по-прежнему зелёные, изменённые файлы компилируются.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
jze9
2026-08-11 17:20:24 +05:00
parent ecc10a4413
commit 2daaa8c8a4
38 changed files with 143 additions and 103 deletions

View File

@@ -7,15 +7,15 @@
а не недокументированное API.
"""
import contextlib
import logging
import re
import time
import logging
from typing import Any
import httpx
from bs4 import BeautifulSoup
from base import BaseParser
from bs4 import BeautifulSoup
logger = logging.getLogger(__name__)
@@ -122,10 +122,8 @@ class CyberLeninkaParser(BaseParser):
year_raw = raw.get("year")
year = None
if year_raw:
try:
with contextlib.suppress(ValueError, TypeError):
year = int(str(year_raw)[:4])
except (ValueError, TypeError):
pass
# URL
link = raw.get("link", "")