Feat: XSL-Abhängigkeitsgraph für import/include-Erkennung in Transformations-Pipeline
is_up_to_date() prüft nun auch transitiv importierte/inkludierte XSL-Dateien. Abhängigkeiten werden per Tooltip und Kontextmenü-Aktion im TreeWidget angezeigt. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -15,6 +15,7 @@ from PySide6.QtWidgets import QMessageBox, QProgressBar, QTreeWidgetItem
|
||||
from conf import app_settings, TreeNode, XslFile, XmlFile
|
||||
from transform import TransformationJob
|
||||
from ui.threads import TransformationThread
|
||||
from xsl_dependencies import XslDependencyGraph
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -31,6 +32,7 @@ class TransformationMixin:
|
||||
- self.xml_item_map: Mapping von xml_path|xsl_id zu TreeWidgetItems
|
||||
- self.last_saxon_metrics: Gecachte Saxon-Worker-Pool-Metriken
|
||||
- self.last_fop_metrics: Gecachte FOP-Worker-Pool-Metriken
|
||||
- self.xsl_dependency_graph: XslDependencyGraph für Import/Include-Erkennung
|
||||
|
||||
Erwartet folgende Methoden von anderen Mixins:
|
||||
- self._initialize_saxon_worker_pool(): Von WorkerPoolMixin
|
||||
@@ -494,6 +496,10 @@ class TransformationMixin:
|
||||
|
||||
logger.info(f"Finale XSLT-Parameter für {xml_file_obj.xml} mit {xsl_file_obj.bez}: {xslt_params}")
|
||||
|
||||
# Initialisiere XSL-Abhängigkeitsgraph (lazy, einmalig pro Mixin-Instanz)
|
||||
if not hasattr(self, "xsl_dependency_graph") or self.xsl_dependency_graph is None:
|
||||
self.xsl_dependency_graph = XslDependencyGraph()
|
||||
|
||||
# Erstelle TransformationJob
|
||||
job = TransformationJob(
|
||||
project_dir=self.project.project_dir,
|
||||
@@ -507,6 +513,7 @@ class TransformationMixin:
|
||||
diff_pdf_params=diff_pdf.default_params,
|
||||
xsl_id=xsl_file_obj.id,
|
||||
fop_config_dir=self.project.fop_config_dir,
|
||||
dependency_graph=self.xsl_dependency_graph,
|
||||
)
|
||||
|
||||
return job
|
||||
|
||||
Reference in New Issue
Block a user