graph LR
Message_Base_Class["Message Base Class"]
Field_Definition_API["Field Definition API"]
Serialization_Engine["Serialization Engine"]
Deserialization_Engine["Deserialization Engine"]
Metadata_Management["Metadata Management"]
Enum_Runtime_Support["Enum Runtime Support"]
Varint_Utilities["Varint Utilities"]
Message_Base_Class -- "orchestrates" --> Serialization_Engine
Message_Base_Class -- "orchestrates" --> Deserialization_Engine
Message_Base_Class -- "relies on" --> Metadata_Management
Field_Definition_API -- "provides schema to" --> Serialization_Engine
Field_Definition_API -- "provides schema to" --> Deserialization_Engine
Field_Definition_API -- "definitions consumed by" --> Message_Base_Class
Serialization_Engine -- "consumes data from" --> Message_Base_Class
Serialization_Engine -- "relies on metadata from" --> Field_Definition_API
Serialization_Engine -- "utilizes" --> Varint_Utilities
Deserialization_Engine -- "populates" --> Message_Base_Class
Deserialization_Engine -- "relies on metadata from" --> Field_Definition_API
Deserialization_Engine -- "relies on metadata from" --> Metadata_Management
Deserialization_Engine -- "uses" --> Varint_Utilities
Metadata_Management -- "leveraged by" --> Deserialization_Engine
Metadata_Management -- "provides runtime information to" --> Message_Base_Class
Enum_Runtime_Support -- "integrated with" --> Field_Definition_API
Enum_Runtime_Support -- "processed by" --> Serialization_Engine
Enum_Runtime_Support -- "processed by" --> Deserialization_Engine
Varint_Utilities -- "utilized by" --> Serialization_Engine
Varint_Utilities -- "utilized by" --> Deserialization_Engine
Analysis of the Betterproto Runtime Library subsystem, which provides foundational mechanisms for generated Protobuf classes, handling serialization, deserialization, and field management.
The foundational class for all generated Protobuf messages. It orchestrates the lifecycle, attribute access, equality checks, and high-level serialization/deserialization processes for Protobuf data in Python.
Related Classes/Methods:
Offers a declarative API (e.g., string_field, message_field) for defining Protobuf fields within Python dataclasses. It attaches essential Protobuf-specific metadata like field numbers, wire types, and type hints, forming the schema for messages.
Related Classes/Methods:
Responsible for converting Python field values into their corresponding Protobuf binary format. It applies Protobuf encoding rules, handling various data types to prepare messages for transmission or storage.
Related Classes/Methods:
Parses incoming Protobuf binary data, identifies individual fields, and converts them into appropriate Python data types. It reconstructs the Python message object from the binary stream.
Related Classes/Methods:
Provides a consistent interface for retrieving runtime metadata about Protobuf messages and their fields. This includes information such as field numbers, types, default values, and class mappings, crucial for dynamic operations.
Related Classes/Methods:
Serves as the base class and provides runtime support for generated Protobuf enumeration types. It ensures proper instantiation and behavior of these enums as idiomatic Python enums.
Related Classes/Methods:
Offers fundamental utilities for varint encoding and decoding. This is a low-level but critical component, as varints are a core part of Protobuf's efficient serialization format for integers.
Related Classes/Methods: