Roadmap
Here is the roadmap for this project. We are open to make changes based on community suggestions
Items¶
- Basic scalar types (
int,float,bool,str,bytes) - Nested messages (ProtoModel instances)
- Repeated fields (lists)
- Optional fields (Union with None)
- Automatic field numbering (1-indexed based on field order)
- Round-trip serialization/deserialization
- Full Pydantic validation support
- Enum Support: Handle Python enums and protobuf enum types
- Additional Scalar Types:
int32,int64,uint32,uint64,sint32,sint64,fixed32,fixed64,sfixed32,sfixed64,doubleprecision support - Oneof Fields: Support for protobuf's
oneofpattern (mutually exclusive fields) - Map Types: Handle
dicttypes as protobuf map fields - Field Number Configuration: Allow explicit field number specification via Pydantic Field metadata
- Circular Reference Handling: Better support for self-referencing and circular model dependencies
- Packed Encoding: Automatic packed encoding for repeated scalar fields
- Protoc plugin for this lib: Generate pydantic classes from
.protofiles - Default Values: Proper handling of protobuf default values (current naive approach does work though)
- Unknown Field Handling: Gracefully handle fields in the binary data that don't exist in the model
- Streaming Support: Large message serialization/deserialization with streaming
Milestones¶
- Support for all protobuf types and field indexes
- protoc plugin
- Rust encoding and decoding , similar to pydantic
- Proposing to merge these features onto pydantic (who knows 💪 ?!)