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

@@ -35,7 +35,7 @@ class Schema(object):
x = self._tab.Vector(o)
x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4
x = self._tab.Indirect(x)
from reflection.Object import Object
from .reflection.Object import Object
obj = Object()
obj.Init(self._tab.Bytes, x)
return obj
@@ -60,7 +60,7 @@ class Schema(object):
x = self._tab.Vector(o)
x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4
x = self._tab.Indirect(x)
from reflection.Enum import Enum
from .reflection.Enum import Enum
obj = Enum()
obj.Init(self._tab.Bytes, x)
return obj
@@ -97,7 +97,7 @@ class Schema(object):
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(12))
if o != 0:
x = self._tab.Indirect(o + self._tab.Pos)
from reflection.Object import Object
from .reflection.Object import Object
obj = Object()
obj.Init(self._tab.Bytes, x)
return obj
@@ -110,7 +110,7 @@ class Schema(object):
x = self._tab.Vector(o)
x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4
x = self._tab.Indirect(x)
from reflection.Service import Service
from .reflection.Service import Service
obj = Service()
obj.Init(self._tab.Bytes, x)
return obj
@@ -144,7 +144,7 @@ class Schema(object):
x = self._tab.Vector(o)
x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4
x = self._tab.Indirect(x)
from reflection.SchemaFile import SchemaFile
from .reflection.SchemaFile import SchemaFile
obj = SchemaFile()
obj.Init(self._tab.Bytes, x)
return obj
@@ -163,81 +163,81 @@ class Schema(object):
return o == 0
def SchemaStart(builder):
return builder.StartObject(8)
builder.StartObject(8)
def Start(builder):
return SchemaStart(builder)
SchemaStart(builder)
def SchemaAddObjects(builder, objects):
return builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(objects), 0)
builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(objects), 0)
def AddObjects(builder, objects):
return SchemaAddObjects(builder, objects)
def AddObjects(builder: flatbuffers.Builder, objects: int):
SchemaAddObjects(builder, objects)
def SchemaStartObjectsVector(builder, numElems):
return builder.StartVector(4, numElems, 4)
def StartObjectsVector(builder, numElems):
def StartObjectsVector(builder, numElems: int) -> int:
return SchemaStartObjectsVector(builder, numElems)
def SchemaAddEnums(builder, enums):
return builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(enums), 0)
builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(enums), 0)
def AddEnums(builder, enums):
return SchemaAddEnums(builder, enums)
def AddEnums(builder: flatbuffers.Builder, enums: int):
SchemaAddEnums(builder, enums)
def SchemaStartEnumsVector(builder, numElems):
return builder.StartVector(4, numElems, 4)
def StartEnumsVector(builder, numElems):
def StartEnumsVector(builder, numElems: int) -> int:
return SchemaStartEnumsVector(builder, numElems)
def SchemaAddFileIdent(builder, fileIdent):
return builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(fileIdent), 0)
builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(fileIdent), 0)
def AddFileIdent(builder, fileIdent):
return SchemaAddFileIdent(builder, fileIdent)
def AddFileIdent(builder: flatbuffers.Builder, fileIdent: int):
SchemaAddFileIdent(builder, fileIdent)
def SchemaAddFileExt(builder, fileExt):
return builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(fileExt), 0)
builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(fileExt), 0)
def AddFileExt(builder, fileExt):
return SchemaAddFileExt(builder, fileExt)
def AddFileExt(builder: flatbuffers.Builder, fileExt: int):
SchemaAddFileExt(builder, fileExt)
def SchemaAddRootTable(builder, rootTable):
return builder.PrependUOffsetTRelativeSlot(4, flatbuffers.number_types.UOffsetTFlags.py_type(rootTable), 0)
builder.PrependUOffsetTRelativeSlot(4, flatbuffers.number_types.UOffsetTFlags.py_type(rootTable), 0)
def AddRootTable(builder, rootTable):
return SchemaAddRootTable(builder, rootTable)
def AddRootTable(builder: flatbuffers.Builder, rootTable: int):
SchemaAddRootTable(builder, rootTable)
def SchemaAddServices(builder, services):
return builder.PrependUOffsetTRelativeSlot(5, flatbuffers.number_types.UOffsetTFlags.py_type(services), 0)
builder.PrependUOffsetTRelativeSlot(5, flatbuffers.number_types.UOffsetTFlags.py_type(services), 0)
def AddServices(builder, services):
return SchemaAddServices(builder, services)
def AddServices(builder: flatbuffers.Builder, services: int):
SchemaAddServices(builder, services)
def SchemaStartServicesVector(builder, numElems):
return builder.StartVector(4, numElems, 4)
def StartServicesVector(builder, numElems):
def StartServicesVector(builder, numElems: int) -> int:
return SchemaStartServicesVector(builder, numElems)
def SchemaAddAdvancedFeatures(builder, advancedFeatures):
return builder.PrependUint64Slot(6, advancedFeatures, 0)
builder.PrependUint64Slot(6, advancedFeatures, 0)
def AddAdvancedFeatures(builder, advancedFeatures):
return SchemaAddAdvancedFeatures(builder, advancedFeatures)
def AddAdvancedFeatures(builder: flatbuffers.Builder, advancedFeatures: int):
SchemaAddAdvancedFeatures(builder, advancedFeatures)
def SchemaAddFbsFiles(builder, fbsFiles):
return builder.PrependUOffsetTRelativeSlot(7, flatbuffers.number_types.UOffsetTFlags.py_type(fbsFiles), 0)
builder.PrependUOffsetTRelativeSlot(7, flatbuffers.number_types.UOffsetTFlags.py_type(fbsFiles), 0)
def AddFbsFiles(builder, fbsFiles):
return SchemaAddFbsFiles(builder, fbsFiles)
def AddFbsFiles(builder: flatbuffers.Builder, fbsFiles: int):
SchemaAddFbsFiles(builder, fbsFiles)
def SchemaStartFbsFilesVector(builder, numElems):
return builder.StartVector(4, numElems, 4)
def StartFbsFilesVector(builder, numElems):
def StartFbsFilesVector(builder, numElems: int) -> int:
return SchemaStartFbsFilesVector(builder, numElems)
def SchemaEnd(builder):