How to get top-level protobuf enum value name by number in python?
protocol-buffers, python
Solution
Assuming the generated python is located in File_pb2.py code Try this:
file_pb2._TEST.values_by_number[1].name
In your case, this should give `'ONE'`
The reverse is :
file_pb2._TEST.values_by_name['ONE'].number
will give `1`.
EDIT: As correctly pointed by @dyoo in the comments, a new method was later introduced in protobuf library:
file_pb2.Test.Name(1)
file_pb2.Test.Value('One')
EDIT: This has changed again in proto3. Now the Name() and Value() methods belong to the EnumTypeWrapper class so they can be accessed like:
file_pb2.Name(1)
file_pb2.Value('One')
Problem
For example, I have proto-file `File.proto`: ``` enum Test { ONE = 1; TWO = 2; } ``` I generate file `File_pb2.py` with protoc from `File.proto`. I want in a python-code get string "ONE" (that corresponds to the name of File_pb2.ONE) by value 1 (that corresponds to the value of File_pb2.ONE) from generated file `File_pb2.py` without defining my own dictionaries. How can I do that?