Files
flatbuffers/grpc/examples
Chih-Hsuan Yen a352bdbc34 Fix python tests (#7960)
* Don't generate types unless --python-typing specified

Fixes https://github.com/google/flatbuffers/issues/7944

* Fix incorrect import statements

Fixes https://github.com/google/flatbuffers/issues/7951

* Fix $PYTHONPATH in PythonTest.sh

Regressed from https://github.com/google/flatbuffers/pull/7529

* PythonTest: fail if something goes wrong

GitHub Actions runs `bash PythonTest.sh`, and thus failures were not
visible.

* Build flatc for Python tests

* Regenerate codes

---------

Co-authored-by: Derek Bailey <derekbailey@google.com>
2023-05-17 13:10:51 -07:00
..
2023-04-26 05:15:09 +00:00
2023-05-17 13:10:51 -07:00

Languages known issues

Python

  • Assert the type required in your server/client since python is able to receive Bytes array or utf8 strings.
def SayHello(self, request, context):
    # request might be a byte array or a utf8 string

    r = HelloRequest.HelloRequest().GetRootAs(request, 0)
    reply = "Unknown"
    if r.Name():
        reply = r.Name()
    # Issues might happen if type checking isnt present.
    # thus encoding it as a `reply.decode('UTF-8')`
    return build_reply("welcome " + reply.decode('UTF-8'))

This can be prevented by making sure all the requests coming to/from python are Bytes array

def say_hello(stub, builder):
    hello_request = bytes(builder.Output())
    reply = stub.SayHello(hello_request)
    r = HelloReply.HelloReply.GetRootAs(reply)
    print(r.Message())

Go

  • Always requires the content-type of the payload to be set to application/grpc+flatbuffers

example: .SayHello(ctx, b, grpc.CallContentSubtype("flatbuffers"))