Thank you for the help Lidi! This only shows up once in google-api-core so constructing a dict worked well (PR <https://github.com/googleapis/python-api-core/pull/86/files>). It would be nice to be able to do it directly, but it definitely isn't high priority.
On Monday, October 5, 2020 at 5:48:30 PM UTC-6, Lidi Zheng wrote: > > This is a constraint of current "grpc.StatusCode" design. Each enum is > constructed by an int and a str, e.g., (0, 'ok'). So, to convert literals > into enums, we need to write: > > grpc.StatusCode((5, 'not found')) > > For a short-term fix, you may encapsulate an iterating function to map int > to enum, like: > > [x for x in grpc.StatusCode if x.value[0] == 5] > > Do you think it would be helpful to support direct enum conversion? If we > add a new enum conversion feature, then the client library needs to bump up > the grpcio minimum version again. The conversion can be done without > regression via overriding the initialization method of "grpc.StatusCode". > > > On Mon, Oct 5, 2020 at 4:15 PM busunkim via grpc.io < > [email protected] <javascript:>> wrote: > >> Hi, >> >> How do I convert the integer status code (5) into the enum ( >> grpc.StatusCode.NOT_FOUND)? >> >> >> https://grpc.github.io/grpc/python/grpc.html#grpc-status-code >> >> I tried the following (see Programmatic access to enumeration members >> and their attributes >> <https://docs.python.org/3/library/enum.html#programmatic-access-to-enumeration-members-and-their-attributes>) >> >> but get an error. >> >>> import grpc >> >>> grpc.StatusCode(5) >> ValueError: 5 is not a valid StatusCode >> >> During handling of the above exception, another exception occurred: >> >> Traceback (most recent call last): >> File "<stdin>", line 1, in <module> >> File >> "/usr/local/google/home/busunkim/.pyenv/versions/3.7.6/lib/python3.7/enum.py", >> >> line 310, in __call__ >> return cls.__new__(cls, value) >> File >> "/usr/local/google/home/busunkim/.pyenv/versions/3.7.6/lib/python3.7/enum.py", >> >> line 564, in __new__ >> raise exc >> File >> "/usr/local/google/home/busunkim/.pyenv/versions/3.7.6/lib/python3.7/enum.py", >> >> line 548, in __new__ >> result = cls._missing_(value) >> File >> "/usr/local/google/home/busunkim/.pyenv/versions/3.7.6/lib/python3.7/enum.py", >> >> line 577, in _missing_ >> raise ValueError("%r is not a valid %s" % (value, cls.__name__)) >> ValueError: 5 is not a valid StatusCode >> >> >> *Context*: I'd like turn a status code from a long running operation ( >> google/longrunning/operations.proto >> <https://github.com/googleapis/googleapis/blob/cc0c4e7790fc57b3e720dfdd97b71ff85c85c911/google/longrunning/operations.proto#L128-L162> >> >> and google/rpc/status.proto >> <https://github.com/googleapis/googleapis/blob/cc0c4e7790fc57b3e720dfdd97b71ff85c85c911/google/rpc/status.proto#L35-L47>) >> >> into a grpc.StatusCode for nicer exceptions in google-api-core >> <https://github.com/googleapis/python-api-core>. >> >> An operation message looks something like this: >> >> name: >> "projects/my-project/instances/test-instance/databases/db2/operations/_auto_op_43eacb16d4b5d9da" >> metadata { >> type_url: " >> type.googleapis.com/google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata >> " >> value: >> "\nHprojects/my-project/instances/test-instance/databases/db2\0223CREATE >> TABLE Albums (\n id INT64,\n) PRIMARY KEY(id)" >> } >> done: true >> error { >> code: 9 >> message: "Duplicate name in schema: Albums." >> } >> >> >> Thanks! >> >> -- >> You received this message because you are subscribed to the Google Groups >> "grpc.io" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/grpc-io/375d3166-2c49-4fb4-becd-44bfbf7b9f3do%40googlegroups.com >> >> <https://groups.google.com/d/msgid/grpc-io/375d3166-2c49-4fb4-becd-44bfbf7b9f3do%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- You received this message because you are subscribed to the Google Groups "grpc.io" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/0bda7cd7-c3de-419a-aedf-4601d55cecedo%40googlegroups.com.
