Skip to content

Support BaseModel serialization to Protobuf Message #11

@so1n

Description

@so1n

The current step of converting BaseModel to Protobuf Message is tedious and has poor performance. e.g:

from google.protobuf.json_format import ParseDict
from pydantic import BaseModel
from demo_pb2 import DemoMessage

class Demo(BaseModel):
    pass


ParseDict(Demo().dict(), DemoMessage())

Serialization can be optimized in the following ways:

  • 1.Convert directly to Message:

    from protobuf_to_pydantic.p2p_model import P2PBaseModel
    
    class Demo(P2PBaseModel):
        pass
    
    Demo().to_message()
  • 2.Serialized to dict, then converted to Message by the developer (JSON-like serialization on .dict() pydantic/pydantic#1409 (comment))

    from google.protobuf.json_format import ParseDict
    from pydantic import BaseModel
    from demo_pb2 import DemoMessage
    
    class Demo(BaseModel):
        pass
    
    
    DemoMessage(**Demo().dict())

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions