From 9d1ce9a10039416d98d3d88e029cb7b1931d1eed Mon Sep 17 00:00:00 2001 From: Derek Bailey Date: Fri, 15 Apr 2022 11:24:05 -0700 Subject: [PATCH] Add parameter back to EndVector (#7246) --- python/flatbuffers/builder.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/python/flatbuffers/builder.py b/python/flatbuffers/builder.py index 3f0cf4e675b..02358d6d925 100644 --- a/python/flatbuffers/builder.py +++ b/python/flatbuffers/builder.py @@ -23,6 +23,8 @@ from .compat import memoryview_type from .compat import import_numpy, NumpyRequiredForThisFeature +import warnings + np = import_numpy() ## @file ## @addtogroup flatbuffers_python_api @@ -75,6 +77,13 @@ class BuilderNotFinishedError(RuntimeError): """ pass +class EndVectorLengthMismatched(RuntimeError): + """ + The number of elements passed to EndVector does not match the number + specified in StartVector. + """ + pass + # VtableMetadataFields is the count of metadata fields in each vtable. VtableMetadataFields = 2 @@ -377,13 +386,20 @@ def StartVector(self, elemSize, numElems, alignment): return self.Offset() ## @endcond - def EndVector(self): + def EndVector(self, numElems = None): """EndVector writes data necessary to finish vector construction.""" self.assertNested() ## @cond FLATBUFFERS_INTERNAL self.nested = False ## @endcond + + if numElems: + warnings.warn("numElems is deprecated.", + DeprecationWarning, stacklevel=2) + if numElems != self.vectorNumElems: + raise EndVectorLengthMismatched(); + # we already made space for this, so write without PrependUint32 self.PlaceUOffsetT(self.vectorNumElems) self.vectorNumElems = None