File tree Expand file tree Collapse file tree 2 files changed +22
-2
lines changed Expand file tree Collapse file tree 2 files changed +22
-2
lines changed 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