From c9b11224d25be350fa1d9bb6caa0874884bf8fe8 Mon Sep 17 00:00:00 2001 From: Dmitry Dementiev Date: Sun, 9 Aug 2026 21:58:48 +0300 Subject: [PATCH] =?UTF-8?q?refactor(ruff):=20=D0=BB=D0=B8=D0=BD=D1=82?= =?UTF-8?q?=D0=B5=D1=80=20=D1=81=D1=82=D0=B5=D0=BD=D0=B4=D0=B0=20=D0=B3?= =?UTF-8?q?=D0=BE=D0=B2=D0=BE=D1=80=D0=B8=D1=82=20=D0=BD=D0=B0=20=D1=8F?= =?UTF-8?q?=D0=B7=D1=8B=D0=BA=D0=B5=20=D0=B4=D0=B0=D0=B3=D0=BE=D0=B2,=20?= =?UTF-8?q?=D0=B0=20=D0=BD=D0=B5=20=D0=BC=D0=BB=D0=B0=D0=B4=D1=88=D0=B5?= =?UTF-8?q?=D0=B3=D0=BE=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B7=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Зачем: - target-version по младшему образу (Superset, 3.10) занижал проверку для дагов: они бегут на 3.13, а ruff предлагал им идиомы старее их рантайма. На учебном стенде это вывернуто наизнанку — менти читает и правит именно даги. - защита от Superset была верна не по устройству, а по сегодняшнему содержимому одного файла настройки. - Что: - target-version в корневом ruff.toml поднят до py313, комментарий переписан. - две находки UP017 в дагах починены: datetime.timezone.utc заменён на datetime.UTC. - из карты проверок убран пункт про разную строгость дверей — с равными версиями он потерял предмет. - Проверка: - make lint; make config-test — зелёные. - make -C generator lint — зелёный; исходники генератора не менялись. - находок ruff в дагах теперь ровно четыре, как обещал тикет: два переформата и два UP017. Co-Authored-By: Claude Opus 5 --- dags/test_clickhouse.py | 2 +- dags/test_kafka.py | 2 +- docs/architecture/testing.md | 7 +------ ruff.toml | 14 +++++++------- 4 files changed, 10 insertions(+), 15 deletions(-) diff --git a/dags/test_clickhouse.py b/dags/test_clickhouse.py index edf8391..da31590 100644 --- a/dags/test_clickhouse.py +++ b/dags/test_clickhouse.py @@ -96,7 +96,7 @@ def _assert_tables_absent(client) -> None: @dag( dag_id="test_clickhouse", schedule=None, - start_date=datetime.datetime(2026, 1, 1, tzinfo=datetime.timezone.utc), + start_date=datetime.datetime(2026, 1, 1, tzinfo=datetime.UTC), catchup=False, tags=["проверка"], doc_md=__doc__, diff --git a/dags/test_kafka.py b/dags/test_kafka.py index 17b418e..0ea5f8c 100644 --- a/dags/test_kafka.py +++ b/dags/test_kafka.py @@ -77,7 +77,7 @@ class RecordAddress(NamedTuple): @dag( dag_id="test_kafka", schedule=None, - start_date=datetime.datetime(2026, 1, 1, tzinfo=datetime.timezone.utc), + start_date=datetime.datetime(2026, 1, 1, tzinfo=datetime.UTC), catchup=False, tags=["проверка"], doc_md=__doc__, diff --git a/docs/architecture/testing.md b/docs/architecture/testing.md index ff21045..97c28c3 100644 --- a/docs/architecture/testing.md +++ b/docs/architecture/testing.md @@ -54,13 +54,8 @@ генератора, генераторная — ни одного файла стенда. Человек в корне видит зелёное и может решить, что зелёный весь репозиторий. -Три тонкости, которых не видно из таблицы: +Две тонкости, которых не видно из таблицы: -- **Список правил у дверей один, а строгость нет.** Правила `UP` предлагают - синтаксис настолько новый, насколько позволяет `target-version`: у генератора - это 3.14 из `requires-python`, у стенда 3.10 — столько у Superset, младшего из - его образов. Один и тот же файл может пройти корневую проверку и не пройти - генераторную. Довод и замер — в комментарии `ruff.toml`. - **Версия ruff у корневой цели закреплена в самом вызове** (`uvx ruff@0.16.1`) и равна той, что в `generator/uv.lock`. Равенство держится руками: обновили лок — поправьте и вызов, сверять их некому. diff --git a/ruff.toml b/ruff.toml index 7e7455f..eac65e3 100644 --- a/ruff.toml +++ b/ruff.toml @@ -7,13 +7,13 @@ # На каком Python побежит код, ruff сам не знает: у генератора он берёт ответ # из `requires-python`, а у стенда спрашивать некого — даги и Superset живут -# внутри образов. Замер 9 августа 2026 года: `apache/airflow:3.3.0` несёт -# Python 3.13.14, `apache/superset:6.1.0` — 3.10.20. Стоит младшая из двух, -# иначе ruff предложил бы Superset синтаксис, которого его Python не знает. -# Даги за это платят: они бегут на 3.13, и модернизаций, доступных только там, -# ruff им не предложит. Значение совпадает с умолчанием ruff, и записано -# именно поэтому: сменится умолчание — проверка не поедет следом молча. -target-version = "py310" +# внутри образов. Стоит версия дагов: их читают и правят, и идиомы им нужны +# те, на которых они работают. Замер 9 августа 2026 года: +# `apache/airflow:3.3.0` несёт Python 3.13.14, `apache/superset:6.1.0` — 3.10.20. +# Настройке Superset от этого пока ни холодно ни жарко: модернизировать в ней +# нечего. Предложит ruff что-то не по её возрасту — заведём исключение тогда, +# с настоящим поводом. +target-version = "py313" [lint] select = ["E", "F", "I", "UP", "B"]