[python] Cython 3 compatibility: declare functions noexcept.

In Cython 3, cdef functions that really will not raise exceptions must
be declared as `noexcept`. Fixed by this commit.

Update requirements to `cython >= 3.0` in requirements*.txt and
setup.py.

Fixes issue #33918.
pull/35995/head
Atri Bhattacharya 9 months ago
parent ad06808bf6
commit b3277bac15
  1. 2
      requirements.bazel.txt
  2. 2
      requirements.txt
  3. 2
      setup.py
  4. 2
      src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pxd.pxi
  5. 2
      src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi
  6. 2
      src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi
  7. 6
      src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pxd.pxi
  8. 6
      src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi
  9. 6
      src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi

@ -1,6 +1,6 @@
# GRPC Python setup requirements # GRPC Python setup requirements
coverage==4.5.4 coverage==4.5.4
cython==0.29.21 cython==3.0.0
protobuf>=3.5.0.post1, < 4.0dev protobuf>=3.5.0.post1, < 4.0dev
wheel==0.38.1 wheel==0.38.1
oauth2client==4.1.0 oauth2client==4.1.0

@ -1,5 +1,5 @@
# GRPC Python setup requirements # GRPC Python setup requirements
coverage>=4.0 coverage>=4.0
cython>=0.29.8,<3.0.0rc1 cython>=3.0.0
protobuf>=4.21.3,<5.0dev protobuf>=4.21.3,<5.0dev
wheel>=0.29 wheel>=0.29

@ -539,7 +539,7 @@ except ImportError:
sys.stderr.write( sys.stderr.write(
"We could not find Cython. Setup may take 10-20 minutes.\n" "We could not find Cython. Setup may take 10-20 minutes.\n"
) )
SETUP_REQUIRES += ("cython>=0.23,<3.0.0rc1",) SETUP_REQUIRES += ("cython>=3.0.0",)
COMMAND_CLASS = { COMMAND_CLASS = {
"doc": commands.SphinxDocumentation, "doc": commands.SphinxDocumentation,

@ -48,7 +48,7 @@ cdef class CallbackWrapper:
@staticmethod @staticmethod
cdef void functor_run( cdef void functor_run(
grpc_completion_queue_functor* functor, grpc_completion_queue_functor* functor,
int succeed) int succeed) noexcept
cdef grpc_completion_queue_functor *c_functor(self) cdef grpc_completion_queue_functor *c_functor(self)

@ -50,7 +50,7 @@ cdef class CallbackWrapper:
@staticmethod @staticmethod
cdef void functor_run( cdef void functor_run(
grpc_completion_queue_functor* functor, grpc_completion_queue_functor* functor,
int success): int success) noexcept:
cdef CallbackContext *context = <CallbackContext *>functor cdef CallbackContext *context = <CallbackContext *>functor
cdef object waiter = <object>context.waiter cdef object waiter = <object>context.waiter
if not waiter.cancelled(): if not waiter.cancelled():

@ -316,7 +316,7 @@ def server_credentials_ssl_dynamic_cert_config(initial_cert_config,
return credentials return credentials
cdef grpc_ssl_certificate_config_reload_status _server_cert_config_fetcher_wrapper( cdef grpc_ssl_certificate_config_reload_status _server_cert_config_fetcher_wrapper(
void* user_data, grpc_ssl_server_certificate_config **config) with gil: void* user_data, grpc_ssl_server_certificate_config **config) noexcept with gil:
# This is a credentials.ServerCertificateConfig # This is a credentials.ServerCertificateConfig
cdef ServerCertificateConfig cert_config = None cdef ServerCertificateConfig cert_config = None
if not user_data: if not user_data:

@ -12,10 +12,10 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
cdef void __prefork() nogil cdef void __prefork() noexcept nogil
cdef void __postfork_parent() nogil cdef void __postfork_parent() noexcept nogil
cdef void __postfork_child() nogil cdef void __postfork_child() noexcept nogil

@ -35,7 +35,7 @@ _GRPC_ENABLE_FORK_SUPPORT = (
_fork_handler_failed = False _fork_handler_failed = False
cdef void __prefork() nogil: cdef void __prefork() noexcept nogil:
with gil: with gil:
global _fork_handler_failed global _fork_handler_failed
_fork_handler_failed = False _fork_handler_failed = False
@ -49,14 +49,14 @@ cdef void __prefork() nogil:
_fork_handler_failed = True _fork_handler_failed = True
cdef void __postfork_parent() nogil: cdef void __postfork_parent() noexcept nogil:
with gil: with gil:
with _fork_state.fork_in_progress_condition: with _fork_state.fork_in_progress_condition:
_fork_state.fork_in_progress = False _fork_state.fork_in_progress = False
_fork_state.fork_in_progress_condition.notify_all() _fork_state.fork_in_progress_condition.notify_all()
cdef void __postfork_child() nogil: cdef void __postfork_child() noexcept nogil:
with gil: with gil:
try: try:
if _fork_handler_failed: if _fork_handler_failed:

@ -13,16 +13,16 @@
# limitations under the License. # limitations under the License.
# TODO(https://github.com/grpc/grpc/issues/15662): Reform this. # TODO(https://github.com/grpc/grpc/issues/15662): Reform this.
cdef void* _copy_pointer(void* pointer): cdef void* _copy_pointer(void* pointer) noexcept:
return pointer return pointer
# TODO(https://github.com/grpc/grpc/issues/15662): Reform this. # TODO(https://github.com/grpc/grpc/issues/15662): Reform this.
cdef void _destroy_pointer(void* pointer): cdef void _destroy_pointer(void* pointer) noexcept:
pass pass
cdef int _compare_pointer(void* first_pointer, void* second_pointer): cdef int _compare_pointer(void* first_pointer, void* second_pointer) noexcept:
if first_pointer < second_pointer: if first_pointer < second_pointer:
return -1 return -1
elif first_pointer > second_pointer: elif first_pointer > second_pointer:

Loading…
Cancel
Save