File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 2222from kirin .ir .method import Method
2323from kirin .ir .traits import SymbolTable , SymbolOpInterface
2424from kirin .ir .exception import CompilerError , ValidationError
25+ from kirin .serialization .jsonserializer import get_json_serializer
2526
2627if TYPE_CHECKING :
27- from kirin .ir import Dialect , Statement
28+ from kirin .ir import Method , Dialect , Statement
2829 from kirin .lowering import Python
2930 from kirin .registry import Registry
3031 from kirin .serialization .base .serializer import Serializer
@@ -330,6 +331,14 @@ def decode(self, encoded: "SerializationModule") -> Method:
330331 deserializer = Deserializer (dialect_group = self )
331332 return deserializer .decode (encoded )
332333
334+ def encode_json (self , program : Method ) -> str :
335+ encoded_module = self .encode (program )
336+ return get_json_serializer ().encode (encoded_module )
337+
338+ def decode_json (self , json_str : str ) -> Method :
339+ decoded_module = get_json_serializer ().decode (json_str )
340+ return self .decode (decoded_module )
341+
333342
334343def dialect_group (
335344 dialects : Iterable [Union ["Dialect" , ModuleType ]],
Original file line number Diff line number Diff line change 11import json
2- from typing import Any
2+ from typing import Any , Optional
33
44from kirin .serialization .core .serializationunit import SerializationUnit
55from kirin .serialization .core .serializationmodule import SerializationModule
@@ -74,3 +74,14 @@ def decode(self, data: str) -> SerializationModule:
7474 if not isinstance (result , SerializationModule ):
7575 raise TypeError ("decoded payload is not a SerializationModule" )
7676 return result
77+
78+
79+ _json_serializer_instance : Optional [JSONSerializer ] = None
80+
81+
82+ def get_json_serializer () -> JSONSerializer :
83+ """Lazily return a single JSONSerializer instance (module-level singleton)."""
84+ global _json_serializer_instance
85+ if _json_serializer_instance is None :
86+ _json_serializer_instance = JSONSerializer ()
87+ return _json_serializer_instance
You can’t perform that action at this time.
0 commit comments