v0.6.0 BigUpdate
This commit is contained in:
@@ -37,12 +37,15 @@ DIAGRAM_LANGS = frozenset(
|
||||
"mmd",
|
||||
"idef0",
|
||||
"dfd",
|
||||
"dfd-gs",
|
||||
"gane-sarson",
|
||||
}
|
||||
)
|
||||
# Native Pillow renderers — never jar / Kroki.
|
||||
LOCAL_ONLY_TYPES = frozenset({"idef0", "dfd"})
|
||||
# Handled in this module, never as a Kroki diagram type.
|
||||
# idef0 and dfd-gs are Pillow; dfd draws itself (Graphviz, Kroki only inside dfd.py).
|
||||
LOCAL_ONLY_TYPES = frozenset({"idef0", "dfd", "dfd-gs"})
|
||||
# Local hi-res path uses a scale-specific cache key.
|
||||
SCALED_LOCAL_TYPES = frozenset({"mermaid", "idef0", "dfd"})
|
||||
SCALED_LOCAL_TYPES = frozenset({"mermaid", "idef0", "dfd", "dfd-gs"})
|
||||
FallbackMode = Literal["local", "remote", "off"]
|
||||
DiagramFormat = Literal["png", "svg"]
|
||||
|
||||
@@ -267,6 +270,7 @@ def diagram_engine_status(explicit_jar: str | None = None) -> str:
|
||||
except Exception as exc:
|
||||
lines = lines + f"\nMermaid: статус недоступен ({exc})"
|
||||
lines = lines + "\nIDEF0: локальный рендер (Pillow), оградка ```idef0"
|
||||
lines = lines + "\nDFD Гейна–Сарсона: локальный рендер (Pillow), оградка ```dfd-gs"
|
||||
try:
|
||||
from .dfd import dfd_engine_status
|
||||
|
||||
@@ -618,6 +622,10 @@ def render_diagram(
|
||||
from .dfd import CACHE_KEY_PREFIX as DFD_CACHE_PREFIX
|
||||
|
||||
cache_prefix = DFD_CACHE_PREFIX
|
||||
elif kroki_type == "dfd-gs":
|
||||
from .dfd_gs import CACHE_KEY_PREFIX as DFD_GS_CACHE_PREFIX
|
||||
|
||||
cache_prefix = DFD_GS_CACHE_PREFIX
|
||||
|
||||
# Local hi-res uses a scale-specific cache key; Kroki uses unscaled key.
|
||||
local_prefix = cache_prefix
|
||||
@@ -722,6 +730,16 @@ def render_diagram(
|
||||
raise RuntimeError(str(exc)) from exc
|
||||
raise RuntimeError("Не удалось отрендерить DFD-диаграмму")
|
||||
|
||||
if kroki_type == "dfd-gs":
|
||||
from .dfd_gs import DfdGsParseError, write_dfd_gs_outputs
|
||||
|
||||
try:
|
||||
if write_dfd_gs_outputs(prepared, out_png, svg_target, scale=scale):
|
||||
return _result(pscale=scale if scale > 1 else 1.0)
|
||||
except DfdGsParseError as exc:
|
||||
raise RuntimeError(str(exc)) from exc
|
||||
raise RuntimeError("Не удалось отрендерить DFD Гейна–Сарсона")
|
||||
|
||||
raise RuntimeError(f"Неизвестный локальный тип диаграммы: {kroki_type}")
|
||||
|
||||
# 1b) Mermaid local: system browser → Playwright Chromium → QuickJS
|
||||
|
||||
Reference in New Issue
Block a user