Commit 389a83e3 by Ralf W. Grosse-Kunstleve Committed by Copybara-Service

Add `StatusCodeAsInt()`

For interoperability with other Python-C/C++ binding systems, including the raw Python C API.

Small follow-on to https://github.com/pybind/pybind11_abseil/commit/64e85ee3129638458368e5b9fdfa53b6dc16a859

PiperOrigin-RevId: 476405601
parent 64e85ee3
...@@ -142,6 +142,11 @@ void RegisterStatusBindings(module m) { ...@@ -142,6 +142,11 @@ void RegisterStatusBindings(module m) {
}, },
arg("code_int")); arg("code_int"));
m.def(
"StatusCodeAsInt",
[](const absl::StatusCode& code) { return static_cast<int>(code); },
arg("code"));
class_<absl::Status>(m, "Status") class_<absl::Status>(m, "Status")
.def(init()) .def(init())
.def(init([](InitFromTag init_from_tag, const object& obj) { .def(init([](InitFromTag init_from_tag, const object& obj) {
......
...@@ -42,6 +42,9 @@ class StatusCodeTest(absltest.TestCase): ...@@ -42,6 +42,9 @@ class StatusCodeTest(absltest.TestCase):
self.assertEqual( self.assertEqual(
str(ctx.exception), 'code_int=9876 is not a valid absl::StatusCode') str(ctx.exception), 'code_int=9876 is not a valid absl::StatusCode')
def test_status_code_as_int(self):
self.assertEqual(status.StatusCodeAsInt(status.StatusCode.UNAVAILABLE), 14)
class StatusTest(parameterized.TestCase): class StatusTest(parameterized.TestCase):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment