Optionally generate Python type annotations (#7858)

* optionally generate type prefixes and suffixes for python code

* fix codegen error when qualified name is empty

* WIP: Python typing

* more progress towards python typing

* Further iterate on Python generated code typing

* clang-format

* Regenerate code

* add documentation for Python type annotations option

* generate code with Python type annotations

* handle forward references

* clang-format
This commit is contained in:
Max Burke
2023-04-28 09:38:29 -07:00
committed by GitHub
parent 6eae49a79a
commit a397dd7e8c
35 changed files with 1295 additions and 979 deletions

View File

@@ -40,7 +40,7 @@ class Field(object):
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
if o != 0:
x = self._tab.Indirect(o + self._tab.Pos)
from reflection.Type import Type
from .reflection.Type import Type
obj = Type()
obj.Init(self._tab.Bytes, x)
return obj
@@ -102,7 +102,7 @@ class Field(object):
x = self._tab.Vector(o)
x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4
x = self._tab.Indirect(x)
from reflection.KeyValue import KeyValue
from .reflection.KeyValue import KeyValue
obj = KeyValue()
obj.Init(self._tab.Bytes, x)
return obj
@@ -156,100 +156,100 @@ class Field(object):
return 0
def FieldStart(builder):
return builder.StartObject(13)
builder.StartObject(13)
def Start(builder):
return FieldStart(builder)
FieldStart(builder)
def FieldAddName(builder, name):
return builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0)
builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0)
def AddName(builder, name):
return FieldAddName(builder, name)
def AddName(builder: flatbuffers.Builder, name: int):
FieldAddName(builder, name)
def FieldAddType(builder, type):
return builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(type), 0)
builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(type), 0)
def AddType(builder, type):
return FieldAddType(builder, type)
def AddType(builder: flatbuffers.Builder, type: int):
FieldAddType(builder, type)
def FieldAddId(builder, id):
return builder.PrependUint16Slot(2, id, 0)
builder.PrependUint16Slot(2, id, 0)
def AddId(builder, id):
return FieldAddId(builder, id)
def AddId(builder: flatbuffers.Builder, id: int):
FieldAddId(builder, id)
def FieldAddOffset(builder, offset):
return builder.PrependUint16Slot(3, offset, 0)
builder.PrependUint16Slot(3, offset, 0)
def AddOffset(builder, offset):
return FieldAddOffset(builder, offset)
def AddOffset(builder: flatbuffers.Builder, offset: int):
FieldAddOffset(builder, offset)
def FieldAddDefaultInteger(builder, defaultInteger):
return builder.PrependInt64Slot(4, defaultInteger, 0)
builder.PrependInt64Slot(4, defaultInteger, 0)
def AddDefaultInteger(builder, defaultInteger):
return FieldAddDefaultInteger(builder, defaultInteger)
def AddDefaultInteger(builder: flatbuffers.Builder, defaultInteger: int):
FieldAddDefaultInteger(builder, defaultInteger)
def FieldAddDefaultReal(builder, defaultReal):
return builder.PrependFloat64Slot(5, defaultReal, 0.0)
builder.PrependFloat64Slot(5, defaultReal, 0.0)
def AddDefaultReal(builder, defaultReal):
return FieldAddDefaultReal(builder, defaultReal)
def AddDefaultReal(builder: flatbuffers.Builder, defaultReal: float):
FieldAddDefaultReal(builder, defaultReal)
def FieldAddDeprecated(builder, deprecated):
return builder.PrependBoolSlot(6, deprecated, 0)
builder.PrependBoolSlot(6, deprecated, 0)
def AddDeprecated(builder, deprecated):
return FieldAddDeprecated(builder, deprecated)
def AddDeprecated(builder: flatbuffers.Builder, deprecated: bool):
FieldAddDeprecated(builder, deprecated)
def FieldAddRequired(builder, required):
return builder.PrependBoolSlot(7, required, 0)
builder.PrependBoolSlot(7, required, 0)
def AddRequired(builder, required):
return FieldAddRequired(builder, required)
def AddRequired(builder: flatbuffers.Builder, required: bool):
FieldAddRequired(builder, required)
def FieldAddKey(builder, key):
return builder.PrependBoolSlot(8, key, 0)
builder.PrependBoolSlot(8, key, 0)
def AddKey(builder, key):
return FieldAddKey(builder, key)
def AddKey(builder: flatbuffers.Builder, key: bool):
FieldAddKey(builder, key)
def FieldAddAttributes(builder, attributes):
return builder.PrependUOffsetTRelativeSlot(9, flatbuffers.number_types.UOffsetTFlags.py_type(attributes), 0)
builder.PrependUOffsetTRelativeSlot(9, flatbuffers.number_types.UOffsetTFlags.py_type(attributes), 0)
def AddAttributes(builder, attributes):
return FieldAddAttributes(builder, attributes)
def AddAttributes(builder: flatbuffers.Builder, attributes: int):
FieldAddAttributes(builder, attributes)
def FieldStartAttributesVector(builder, numElems):
return builder.StartVector(4, numElems, 4)
def StartAttributesVector(builder, numElems):
def StartAttributesVector(builder, numElems: int) -> int:
return FieldStartAttributesVector(builder, numElems)
def FieldAddDocumentation(builder, documentation):
return builder.PrependUOffsetTRelativeSlot(10, flatbuffers.number_types.UOffsetTFlags.py_type(documentation), 0)
builder.PrependUOffsetTRelativeSlot(10, flatbuffers.number_types.UOffsetTFlags.py_type(documentation), 0)
def AddDocumentation(builder, documentation):
return FieldAddDocumentation(builder, documentation)
def AddDocumentation(builder: flatbuffers.Builder, documentation: int):
FieldAddDocumentation(builder, documentation)
def FieldStartDocumentationVector(builder, numElems):
return builder.StartVector(4, numElems, 4)
def StartDocumentationVector(builder, numElems):
def StartDocumentationVector(builder, numElems: int) -> int:
return FieldStartDocumentationVector(builder, numElems)
def FieldAddOptional(builder, optional):
return builder.PrependBoolSlot(11, optional, 0)
builder.PrependBoolSlot(11, optional, 0)
def AddOptional(builder, optional):
return FieldAddOptional(builder, optional)
def AddOptional(builder: flatbuffers.Builder, optional: bool):
FieldAddOptional(builder, optional)
def FieldAddPadding(builder, padding):
return builder.PrependUint16Slot(12, padding, 0)
builder.PrependUint16Slot(12, padding, 0)
def AddPadding(builder, padding):
return FieldAddPadding(builder, padding)
def AddPadding(builder: flatbuffers.Builder, padding: int):
FieldAddPadding(builder, padding)
def FieldEnd(builder):
return builder.EndObject()