Skip to content

Python --gen-onefile option not respecting include directive #8543

@sethraymond

Description

@sethraymond

Found in Version: flatc version 24.12.23

Steps to Reproduce:

  1. Build the following .fbs files:

inc.fbs:

table Foo {
    bar:int;
    baz:float;
}

base.fbs:

include "inc.fbs";
table Message {
    payload:Foo;
}
root_type Message;
  1. Run flatc --python --gen-onefile --gen-object-api -I ./ inc.fbs base.fbs
  • Note that --gen-object-api isn't the broken flag - import errors can still be seen without it, it's just useful for demonstration purposes
  1. Deserialize a populated MessageT object:
from base_generated import MessageT
from inc_generated import FooT
import flatbuffers

payload = FooT()
payload.bar = 42
payload.baz = 12.3
msg = MessageT()
msg.payload = payload
builder = flatbuffers.Builder(0)
builder.Finish(msg.Pack(builder))

MessageT().InitFromPackedBuf(builder.Output())

Expected Behavior
Deserializing a MessageT object is supported

Actual Behavior
Deserializing the MessageT object throws a NameError because Foo is not defined (not imported from inc_generated.py) in Message.Payload().

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions