Generate a Python module with all types.
(self)
| 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 |
no test coverage detected