[Python] Generate .pyi stub files when --python-typing is on. (#8312)

* [Python] Generate `.pyi` stub files when `--python-typing` is on.

To support this change, the following modifications were made:

-  added a new option to disable `numpy` helpers generation;
-  added a new flag to control the target Python version:

   `--python-version` can be one of the following:

   - `0.x.x` – compatible with any Python version;
   - `2.x.x` – compatible with Python 2;
   - `3.x.x` – compatible with Python 3.
-  added codegen utilities for Python;
-  added a note that the generated .py file is empty.

* [Python] Update Bazel build rules.

* [Python] Update Bazel build rules.

* [Python] Run buildifier on BUILD.bazel files.

---------

Co-authored-by: Derek Bailey <derekbailey@google.com>
This commit is contained in:
Anton Bobukh
2024-05-29 12:47:29 -07:00
committed by GitHub
parent 58c8eb5847
commit 3b27f5396e
27 changed files with 2865 additions and 34 deletions

View File

@@ -0,0 +1,51 @@
from __future__ import annotations
import flatbuffers
import numpy as np
import flatbuffers
import typing
from MyGame.Example.NestedUnion.Color import Color
from MyGame.Example.NestedUnion.Test import Test, TestT
from MyGame.Example.NestedUnion.Vec3 import Vec3
uoffset: typing.TypeAlias = flatbuffers.number_types.UOffsetTFlags.py_type
class Vec3(object):
@classmethod
def GetRootAs(cls, buf: bytes, offset: int) -> Vec3: ...
@classmethod
def GetRootAsVec3(cls, buf: bytes, offset: int) -> Vec3: ...
def Init(self, buf: bytes, pos: int) -> None: ...
def X(self) -> float: ...
def Y(self) -> float: ...
def Z(self) -> float: ...
def Test1(self) -> float: ...
def Test2(self) -> typing.Literal[Color.Red, Color.Green, Color.Blue]: ...
def Test3(self) -> Test | None: ...
class Vec3T(object):
x: float
y: float
z: float
test1: float
test2: typing.Literal[Color.Red, Color.Green, Color.Blue]
test3: TestT | None
@classmethod
def InitFromBuf(cls, buf: bytes, pos: int) -> Vec3T: ...
@classmethod
def InitFromPackedBuf(cls, buf: bytes, pos: int = 0) -> Vec3T: ...
@classmethod
def InitFromObj(cls, vec3: Vec3) -> Vec3T: ...
def _UnPack(self, vec3: Vec3) -> None: ...
def Pack(self, builder: flatbuffers.Builder) -> None: ...
def Vec3Start(builder: flatbuffers.Builder) -> None: ...
def Start(builder: flatbuffers.Builder) -> None: ...
def Vec3AddX(builder: flatbuffers.Builder, x: float) -> None: ...
def Vec3AddY(builder: flatbuffers.Builder, y: float) -> None: ...
def Vec3AddZ(builder: flatbuffers.Builder, z: float) -> None: ...
def Vec3AddTest1(builder: flatbuffers.Builder, test1: float) -> None: ...
def Vec3AddTest2(builder: flatbuffers.Builder, test2: typing.Literal[Color.Red, Color.Green, Color.Blue]) -> None: ...
def Vec3AddTest3(builder: flatbuffers.Builder, test3: uoffset) -> None: ...
def Vec3End(builder: flatbuffers.Builder) -> uoffset: ...
def End(builder: flatbuffers.Builder) -> uoffset: ...