Skip to content

Fix Python object API Pack for fixed arrays of structs#9168

Open
momomuchu wants to merge 1 commit into
google:masterfrom
momomuchu:fix/python-objapi-fixed-array-of-structs
Open

Fix Python object API Pack for fixed arrays of structs#9168
momomuchu wants to merge 1 commit into
google:masterfrom
momomuchu:fix/python-objapi-fixed-array-of-structs

Conversation

@momomuchu

Copy link
Copy Markdown

Bug

The Python object API Pack() code generator accessed a fixed array of structs as a single object instead of iterating its elements. For a struct field that is a fixed array of structs, Pack() raised AttributeError or produced wrong output.

Root cause

In the Python code generator (src/idl_gen_python.cpp), the object API Pack() code emitted a flat field access (self.d.a) for a fixed array of structs, instead of iterating the array elements.

Fix

The generator now emits recursive helpers: it walks struct fields carrying an array context stack, and for a fixed array of structs it wraps each leaf field in one list comprehension per array depth, so nested fixed arrays of structs pack correctly at any depth. Scalar arrays and non array fields are unchanged. The committed generated Python test files are regenerated to match the fixed flatc output.

Tests

Added an object API Pack test for a fixed array of structs (Pack then read back, asserting nested values). The full Python test suite passes via PythonTest.sh. Reverting the generator change makes the test fail with AttributeError.

Fixes #9061

@momomuchu momomuchu requested a review from dbaileychess as a code owner July 8, 2026 17:03
@google-cla

google-cla Bot commented Jul 8, 2026

Copy link
Copy Markdown

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

@github-actions github-actions Bot added python c++ codegen Involving generating code from schema labels Jul 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

c++ codegen Involving generating code from schema python

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Pack() method incorrectly accesses fixed array of structs as single object in Python object API

1 participant