MCPcopy Create free account
hub / github.com/apache/fory / generate_module

Method generate_module

compiler/fory_compiler/generators/python.py:258–324  ·  view source on GitHub ↗

Generate a Python module with all types.

(self)

Source from the content-addressed store, hash-verified

256 return "generated"
257
258 def generate_module(self) -> GeneratedFile:
259 """Generate a Python module with all types."""
260 lines = []
261 imports: Set[str] = set()
262
263 # Collect all imports
264 imports.add("from dataclasses import field")
265 imports.add("from enum import Enum, IntEnum")
266 imports.add("from typing import Dict, List, Optional, cast")
267 imports.add("import pyfory")
268 imports.add("import threading")
269 if self.schema_has_ref_elements():
270 imports.add("from pyfory import Ref")
271 for module in self._collect_imported_modules():
272 imports.add(f"import {module}")
273
274 for message in self.schema.messages:
275 self.collect_message_imports(message, imports)
276 for union in self.schema.unions:
277 self.collect_union_imports(union, imports)
278
279 # License header
280 lines.append(self.get_license_header("#"))
281 lines.append("")
282 lines.append("from __future__ import annotations")
283 lines.append("")
284
285 # Imports
286 for imp in sorted(imports):
287 lines.append(imp)
288 lines.append("")
289 lines.append("")
290
291 # Generate enums (top-level only)
292 for enum in self.schema.enums:
293 if self.is_imported_type(enum):
294 continue
295 lines.extend(self.generate_enum(enum))
296 lines.append("")
297 lines.append("")
298
299 # Generate unions (top-level only)
300 for union in self.schema.unions:
301 if self.is_imported_type(union):
302 continue
303 lines.extend(self.generate_union(union))
304 lines.append("")
305 lines.append("")
306
307 # Generate messages (including nested types)
308 for message in self.schema.messages:
309 if self.is_imported_type(message):
310 continue
311 lines.extend(self.generate_message(message, indent=0))
312 lines.append("")
313 lines.append("")
314
315 # Generate registration function

Callers 1

generateMethod · 0.95

Calls 15

collect_union_importsMethod · 0.95
is_imported_typeMethod · 0.95
generate_enumMethod · 0.95
generate_unionMethod · 0.95
generate_messageMethod · 0.95
generate_registrationMethod · 0.95
generate_fory_helpersMethod · 0.95
get_module_nameMethod · 0.95
GeneratedFileClass · 0.90

Tested by

no test coverage detected