From 872675652f655a972b1abfe9df0b6bf85ebe1faf Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Thu, 5 Mar 2026 12:08:07 +0300 Subject: [PATCH] fix: normalize d5p1 namespace in info scripts and fix Python IndentationErrors - meta-info, form-info (PS+PY): recognize dNpN: prefix alongside cfg: in type parsing - Fix module-level sys.stderr.reconfigure indentation in 9 Python scripts Co-Authored-By: Claude Opus 4.6 --- .claude/skills/cf-info/scripts/cf-info.py | 2 +- .claude/skills/form-edit/scripts/form-edit.py | 2 +- .claude/skills/form-info/scripts/form-info.ps1 | 6 +++--- .claude/skills/form-info/scripts/form-info.py | 4 ++-- .claude/skills/meta-info/scripts/meta-info.ps1 | 3 +++ .claude/skills/meta-info/scripts/meta-info.py | 5 ++++- .claude/skills/mxl-info/scripts/mxl-info.py | 2 +- .claude/skills/role-info/scripts/role-info.py | 2 +- .claude/skills/skd-edit/scripts/skd-edit.py | 2 +- .claude/skills/skd-validate/scripts/skd-validate.py | 2 +- .claude/skills/subsystem-info/scripts/subsystem-info.py | 2 +- 11 files changed, 19 insertions(+), 13 deletions(-) diff --git a/.claude/skills/cf-info/scripts/cf-info.py b/.claude/skills/cf-info/scripts/cf-info.py index 396de073..836556a7 100644 --- a/.claude/skills/cf-info/scripts/cf-info.py +++ b/.claude/skills/cf-info/scripts/cf-info.py @@ -9,7 +9,7 @@ from collections import OrderedDict from lxml import etree sys.stdout.reconfigure(encoding="utf-8") - sys.stderr.reconfigure(encoding="utf-8") +sys.stderr.reconfigure(encoding="utf-8") # --- Argument parsing --- parser = argparse.ArgumentParser(description="Analyze 1C configuration structure", allow_abbrev=False) diff --git a/.claude/skills/form-edit/scripts/form-edit.py b/.claude/skills/form-edit/scripts/form-edit.py index 8d8da185..c96f8f8e 100644 --- a/.claude/skills/form-edit/scripts/form-edit.py +++ b/.claude/skills/form-edit/scripts/form-edit.py @@ -9,7 +9,7 @@ import sys from lxml import etree sys.stdout.reconfigure(encoding="utf-8") - sys.stderr.reconfigure(encoding="utf-8") +sys.stderr.reconfigure(encoding="utf-8") # ── arg parsing ────────────────────────────────────────────── diff --git a/.claude/skills/form-info/scripts/form-info.ps1 b/.claude/skills/form-info/scripts/form-info.ps1 index 68f97be5..c904db61 100644 --- a/.claude/skills/form-info/scripts/form-info.ps1 +++ b/.claude/skills/form-info/scripts/form-info.ps1 @@ -58,8 +58,8 @@ function Format-Type($typeNode) { $typeSet = $typeNode.SelectSingleNode("v8:TypeSet", $ns) if ($typeSet) { $val = $typeSet.InnerText - # Strip cfg: prefix for DefinedType, keep as-is - if ($val -like "cfg:*") { $val = $val.Substring(4) } + # Strip cfg:/d5p1: prefix for DefinedType, keep as-is + $val = $val -replace '^(cfg|d\d+p\d+):', '' return $val } @@ -101,7 +101,7 @@ function Format-Type($typeNode) { } } "xs:binary" { $parts += "binary" } - "cfg:*" { $parts += $raw.Substring(4) } + { $_ -like "cfg:*" -or $_ -match '^d\d+p\d+:' } { $parts += ($raw -replace '^(cfg|d\d+p\d+):', '') } "v8:ValueTable" { $parts += "ValueTable" } "v8:ValueTree" { $parts += "ValueTree" } "v8:ValueListType" { $parts += "ValueList" } diff --git a/.claude/skills/form-info/scripts/form-info.py b/.claude/skills/form-info/scripts/form-info.py index 60790cad..667a53bc 100644 --- a/.claude/skills/form-info/scripts/form-info.py +++ b/.claude/skills/form-info/scripts/form-info.py @@ -102,8 +102,8 @@ def format_type(type_node): parts.append("dateTime") elif raw == "xs:binary": parts.append("binary") - elif raw.startswith("cfg:"): - parts.append(raw[4:]) + elif raw.startswith("cfg:") or re.match(r'^d\d+p\d+:', raw): + parts.append(re.sub(r'^(?:cfg|d\d+p\d+):', '', raw)) elif raw == "v8:ValueTable": parts.append("ValueTable") elif raw == "v8:ValueTree": diff --git a/.claude/skills/meta-info/scripts/meta-info.ps1 b/.claude/skills/meta-info/scripts/meta-info.ps1 index b0d91f8b..ce17e7a5 100644 --- a/.claude/skills/meta-info/scripts/meta-info.ps1 +++ b/.claude/skills/meta-info/scripts/meta-info.ps1 @@ -223,6 +223,8 @@ function Format-SingleType([string]$raw, $parentNode) { "v8:UUID" { return "УникальныйИдентификатор" } "v8:Null" { return "Null" } default { + # Normalize d5p1:/dNpN: -> cfg: + $raw = $raw -replace '^d\d+p\d+:', 'cfg:' # cfg:CatalogRef.Xxx -> СправочникСсылка.Xxx if ($raw -match '^cfg:(\w+)Ref\.(.+)$') { $prefix = "$($Matches[1])Ref" @@ -356,6 +358,7 @@ function Decline-Cols([int]$n) { } function Format-SourceType([string]$raw) { + $raw = $raw -replace '^d\d+p\d+:', 'cfg:' if ($raw -match '^cfg:(\w+)\.(.+)$') { $prefix = $Matches[1]; $name = $Matches[2] if ($objectTypeMap.ContainsKey($prefix)) { return "$($objectTypeMap[$prefix]).$name" } diff --git a/.claude/skills/meta-info/scripts/meta-info.py b/.claude/skills/meta-info/scripts/meta-info.py index 09964ec2..0191144f 100644 --- a/.claude/skills/meta-info/scripts/meta-info.py +++ b/.claude/skills/meta-info/scripts/meta-info.py @@ -8,7 +8,7 @@ import sys from lxml import etree sys.stdout.reconfigure(encoding="utf-8") - sys.stderr.reconfigure(encoding="utf-8") +sys.stderr.reconfigure(encoding="utf-8") # ── arg parsing ────────────────────────────────────────────── @@ -282,6 +282,8 @@ def format_single_type(raw, parent_node): return "УникальныйИдентификатор" if raw == "v8:Null": return "Null" + # Normalize d5p1:/dNpN: → cfg: (both map to same namespace) + raw = re.sub(r'^d\d+p\d+:', 'cfg:', raw) # cfg:CatalogRef.Xxx -> СправочникСсылка.Xxx m = re.match(r'^cfg:(\w+)Ref\.(.+)$', raw) if m: @@ -410,6 +412,7 @@ def decline_cols(n): def format_source_type(raw): + raw = re.sub(r'^d\d+p\d+:', 'cfg:', raw) m = re.match(r'^cfg:(\w+)\.(.+)$', raw) if m: prefix = m.group(1) diff --git a/.claude/skills/mxl-info/scripts/mxl-info.py b/.claude/skills/mxl-info/scripts/mxl-info.py index 5aa28b57..607cfc2c 100644 --- a/.claude/skills/mxl-info/scripts/mxl-info.py +++ b/.claude/skills/mxl-info/scripts/mxl-info.py @@ -10,7 +10,7 @@ import sys from lxml import etree sys.stdout.reconfigure(encoding="utf-8") - sys.stderr.reconfigure(encoding="utf-8") +sys.stderr.reconfigure(encoding="utf-8") # --- Argument parsing --- parser = argparse.ArgumentParser(description="Analyze 1C spreadsheet (MXL) structure", allow_abbrev=False) diff --git a/.claude/skills/role-info/scripts/role-info.py b/.claude/skills/role-info/scripts/role-info.py index e6c84d3a..d66d887f 100644 --- a/.claude/skills/role-info/scripts/role-info.py +++ b/.claude/skills/role-info/scripts/role-info.py @@ -9,7 +9,7 @@ from collections import OrderedDict from lxml import etree sys.stdout.reconfigure(encoding="utf-8") - sys.stderr.reconfigure(encoding="utf-8") +sys.stderr.reconfigure(encoding="utf-8") # --- Argument parsing --- parser = argparse.ArgumentParser(description="Analyze 1C role rights", allow_abbrev=False) diff --git a/.claude/skills/skd-edit/scripts/skd-edit.py b/.claude/skills/skd-edit/scripts/skd-edit.py index d4c2da5b..85502ba7 100644 --- a/.claude/skills/skd-edit/scripts/skd-edit.py +++ b/.claude/skills/skd-edit/scripts/skd-edit.py @@ -9,7 +9,7 @@ import uuid from lxml import etree sys.stdout.reconfigure(encoding="utf-8") - sys.stderr.reconfigure(encoding="utf-8") +sys.stderr.reconfigure(encoding="utf-8") # ── arg parsing ────────────────────────────────────────────── diff --git a/.claude/skills/skd-validate/scripts/skd-validate.py b/.claude/skills/skd-validate/scripts/skd-validate.py index b926f7eb..171d926b 100644 --- a/.claude/skills/skd-validate/scripts/skd-validate.py +++ b/.claude/skills/skd-validate/scripts/skd-validate.py @@ -7,7 +7,7 @@ import sys from lxml import etree sys.stdout.reconfigure(encoding="utf-8") - sys.stderr.reconfigure(encoding="utf-8") +sys.stderr.reconfigure(encoding="utf-8") # ── arg parsing ────────────────────────────────────────────── diff --git a/.claude/skills/subsystem-info/scripts/subsystem-info.py b/.claude/skills/subsystem-info/scripts/subsystem-info.py index 9f886908..0388ebb2 100644 --- a/.claude/skills/subsystem-info/scripts/subsystem-info.py +++ b/.claude/skills/subsystem-info/scripts/subsystem-info.py @@ -10,7 +10,7 @@ from collections import OrderedDict from lxml import etree sys.stdout.reconfigure(encoding="utf-8") - sys.stderr.reconfigure(encoding="utf-8") +sys.stderr.reconfigure(encoding="utf-8") # --- Argument parsing --- parser = argparse.ArgumentParser(description="Analyze 1C subsystem structure", allow_abbrev=False)