From 9d6ba55db14ceb61c6d1dc5db64f3e31ac202501 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Tue, 30 Jun 2026 12:55:09 +0300 Subject: [PATCH] =?UTF-8?q?fix(skd-edit):=20=D1=81=D0=BE=D0=B2=D0=BC=D0=B5?= =?UTF-8?q?=D1=81=D1=82=D0=B8=D0=BC=D0=BE=D1=81=D1=82=D1=8C=20.py-=D0=BF?= =?UTF-8?q?=D0=BE=D1=80=D1=82=D0=B0=20=D1=81=20python=203.9=20(PEP=20701?= =?UTF-8?q?=20f-string)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Два выражения автодат (ДатаНачала/ДатаОкончания) собирались внутри f-string с бэкслешем (\uXXXX) в {…} — синтаксис валиден только с python 3.12+ (PEP 701), на 3.9/3.11 → SyntaxError (skd-edit.py:1256/1270), весь модуль не импортируется. Выносим выражения в переменные expr_start/expr_end перед f-string — поведение байт-в-байт прежнее, конвенция \uXXXX сохранена. Единственный файл в корпусе с этой несовместимостью (проверено AST-сканом всех 64 .py). Синхронный бамп версий ps1+py (v1.28), коммент-маркер расхождения в .ps1. Co-Authored-By: Korolev Pavel Co-Authored-By: Claude Opus 4.8 (1M context) --- .claude/skills/skd-edit/scripts/skd-edit.ps1 | 3 ++- .claude/skills/skd-edit/scripts/skd-edit.py | 10 +++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.claude/skills/skd-edit/scripts/skd-edit.ps1 b/.claude/skills/skd-edit/scripts/skd-edit.ps1 index e635c65a..7ae894a2 100644 --- a/.claude/skills/skd-edit/scripts/skd-edit.ps1 +++ b/.claude/skills/skd-edit/scripts/skd-edit.ps1 @@ -1,5 +1,6 @@ -# skd-edit v1.27 — Atomic 1C DCS editor +# skd-edit v1.28 — Atomic 1C DCS editor # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills +# NB: парный .py собирает выражения автодат вне f-string ради совместимости с python 3.9 (PEP 701). param( [Parameter(Mandatory)] [Alias('Path')] diff --git a/.claude/skills/skd-edit/scripts/skd-edit.py b/.claude/skills/skd-edit/scripts/skd-edit.py index 298934df..f281a849 100644 --- a/.claude/skills/skd-edit/scripts/skd-edit.py +++ b/.claude/skills/skd-edit/scripts/skd-edit.py @@ -1,4 +1,4 @@ -# skd-edit v1.27 — Atomic 1C DCS editor (Python port) +# skd-edit v1.28 — Atomic 1C DCS editor (Python port) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import json @@ -1244,6 +1244,9 @@ def build_param_fragment(parsed, indent): if parsed.get("autoDates"): param_name = parsed["name"] # Canonical БСП pattern: title + valueType + value + useRestriction + expression + # NB: expr автодат собираем в переменную (не в f-string): бэкслеш в \uXXXX + # внутри {} f-строки — SyntaxError на python < 3.12 (PEP 701). Совместимость с 3.9. + expr_start = esc_xml('&' + param_name + '.\u0414\u0430\u0442\u0430\u041d\u0430\u0447\u0430\u043b\u0430') b_lines = [ f"{i}", f"{i}\t\u0414\u0430\u0442\u0430\u041d\u0430\u0447\u0430\u043b\u0430", @@ -1253,11 +1256,12 @@ def build_param_fragment(parsed, indent): f"{i}\t", f'{i}\t0001-01-01T00:00:00', f"{i}\ttrue", - f"{i}\t{esc_xml('&' + param_name + '.\u0414\u0430\u0442\u0430\u041d\u0430\u0447\u0430\u043b\u0430')}", + f"{i}\t{expr_start}", f"{i}", ] fragments.append("\n".join(b_lines)) + expr_end = esc_xml('&' + param_name + '.\u0414\u0430\u0442\u0430\u041e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f') e_lines = [ f"{i}", f"{i}\t\u0414\u0430\u0442\u0430\u041e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f", @@ -1267,7 +1271,7 @@ def build_param_fragment(parsed, indent): f"{i}\t", f'{i}\t0001-01-01T00:00:00', f"{i}\ttrue", - f"{i}\t{esc_xml('&' + param_name + '.\u0414\u0430\u0442\u0430\u041e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f')}", + f"{i}\t{expr_end}", f"{i}", ] fragments.append("\n".join(e_lines))