@@ -23,7 +23,13 @@ def to_dict(self) -> dict[str, str]:
2323
2424 @classmethod
2525 def from_dict (cls , data : dict [str , str ]) -> Self :
26- """Deserialize from a plain dict."""
26+ """Deserialize from a plain dict.
27+
28+ Raises
29+ ------
30+ KeyError
31+ If required fields (``statement``, ``bound_name``) are missing.
32+ """
2733 return cls (
2834 statement = data ["statement" ],
2935 bound_name = data ["bound_name" ],
@@ -134,7 +140,18 @@ def content_hash(self) -> str:
134140
135141 @classmethod
136142 def from_dict (cls , data : dict [str , Any ]) -> Self :
137- """Deserialize from a plain dict."""
143+ """Deserialize from a plain dict.
144+
145+ Raises
146+ ------
147+ KeyError
148+ If required fields (``qualified_name``, ``name``, ``module``,
149+ ``source``, ``imports``, ``dependencies``) are missing.
150+ """
151+ required = ("qualified_name" , "name" , "module" , "source" , "imports" , "dependencies" )
152+ missing = [k for k in required if k not in data ]
153+ if missing :
154+ raise KeyError (f"FunctionNode missing required fields: { ', ' .join (missing )} " )
138155 return cls (
139156 qualified_name = data ["qualified_name" ],
140157 name = data ["name" ],
0 commit comments