MCPcopy Create free account
hub / github.com/datapane/datapane / ConvertXML

Class ConvertXML

python-client/src/datapane/processors/processors.py:68–109  ·  view source on GitHub ↗

Convert the View AST into an XML fragment

Source from the content-addressed store, hash-verified

66
67
68class ConvertXML(BaseProcessor):
69 """Convert the View AST into an XML fragment"""
70
71 local_post_xslt = etree.parse(str(local_view_resources / "local_post_process.xslt"))
72 local_post_transform = etree.XSLT(local_post_xslt)
73
74 def __init__(self, *, pretty_print: bool = False, fragment: bool = False) -> None:
75 self.pretty_print: bool = pretty_print
76 self.fragment: bool = fragment
77 super().__init__()
78
79 def __call__(self, _: t.Any) -> ElementT:
80 initial_doc = self.convert_xml()
81 transformed_doc = self.post_transforms(initial_doc)
82
83 # convert to string
84 view_xml_str: str = etree.tounicode(transformed_doc, pretty_print=self.pretty_print)
85 # s1 = dc.replace(s, view_xml=view_xml_str)
86 self.s.view_xml = view_xml_str
87
88 if log.isEnabledFor(logging.DEBUG):
89 log.debug(etree.tounicode(transformed_doc, pretty_print=True))
90
91 # return the doc for further processing (xml str stored in state)
92 return transformed_doc
93
94 def convert_xml(self) -> ElementT:
95 # create initial state
96 builder_state = XMLBuilder(store=self.s.store)
97 self.s.blocks.accept(builder_state)
98 return builder_state.get_root(self.fragment)
99
100 def post_transforms(self, view_doc: ElementT) -> ElementT:
101 # TODO - post-xml transformations, essentially xslt / lxml-based DOM operations
102 # post_process via xslt
103 processed_view_doc: ElementT = self.local_post_transform(view_doc)
104
105 # TODO - custom lxml-based transforms go here...
106
107 # validate post all transformations
108 validate_view_doc(xml_doc=processed_view_doc)
109 return processed_view_doc
110
111
112class PreUploadProcessor(BaseProcessor):

Callers 5

element_to_strFunction · 0.90
_view_to_xml_and_filesFunction · 0.90
build_reportFunction · 0.85
save_reportFunction · 0.85
stringify_reportFunction · 0.85

Calls

no outgoing calls

Tested by 2

element_to_strFunction · 0.72
_view_to_xml_and_filesFunction · 0.72