mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-06 03:08:57 +03:00
fix(skd-edit): совместимость .py-порта с python 3.9 (PEP 701 f-string)
Два выражения автодат (ДатаНачала/ДатаОкончания) собирались внутри 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 <korolev.vrn@gmail.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -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')]
|
||||
|
||||
@@ -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}<parameter>",
|
||||
f"{i}\t<name>\u0414\u0430\u0442\u0430\u041d\u0430\u0447\u0430\u043b\u0430</name>",
|
||||
@@ -1253,11 +1256,12 @@ def build_param_fragment(parsed, indent):
|
||||
f"{i}\t</valueType>",
|
||||
f'{i}\t<value xsi:type="xs:dateTime">0001-01-01T00:00:00</value>',
|
||||
f"{i}\t<useRestriction>true</useRestriction>",
|
||||
f"{i}\t<expression>{esc_xml('&' + param_name + '.\u0414\u0430\u0442\u0430\u041d\u0430\u0447\u0430\u043b\u0430')}</expression>",
|
||||
f"{i}\t<expression>{expr_start}</expression>",
|
||||
f"{i}</parameter>",
|
||||
]
|
||||
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}<parameter>",
|
||||
f"{i}\t<name>\u0414\u0430\u0442\u0430\u041e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f</name>",
|
||||
@@ -1267,7 +1271,7 @@ def build_param_fragment(parsed, indent):
|
||||
f"{i}\t</valueType>",
|
||||
f'{i}\t<value xsi:type="xs:dateTime">0001-01-01T00:00:00</value>',
|
||||
f"{i}\t<useRestriction>true</useRestriction>",
|
||||
f"{i}\t<expression>{esc_xml('&' + param_name + '.\u0414\u0430\u0442\u0430\u041e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f')}</expression>",
|
||||
f"{i}\t<expression>{expr_end}</expression>",
|
||||
f"{i}</parameter>",
|
||||
]
|
||||
fragments.append("\n".join(e_lines))
|
||||
|
||||
Reference in New Issue
Block a user