@@ -1600,27 +1600,31 @@ def _restore_sigint_from_ctypes() -> Generator[None, None, None]:
16001600 try :
16011601 from ctypes import c_int , c_void_p , pythonapi
16021602 except ImportError :
1603- # Any of the above imports don't exist? Don't do anything here.
1604- yield
1605- return
1606-
1607- # PyOS_sighandler_t PyOS_getsig(int i)
1608- pythonapi .PyOS_getsig .restype = c_void_p
1609- pythonapi .PyOS_getsig .argtypes = (c_int ,)
1610-
1611- # PyOS_sighandler_t PyOS_setsig(int i, PyOS_sighandler_t h)
1612- pythonapi .PyOS_setsig .restype = c_void_p
1613- pythonapi .PyOS_setsig .argtypes = (
1614- c_int ,
1615- c_void_p ,
1616- )
1603+ have_ctypes_signal = False
1604+ else :
1605+ # GraalPy has the functions, but they don't work
1606+ have_ctypes_signal = sys .implementation .name != 'graalpy'
1607+
1608+ if have_ctypes_signal :
1609+ # PyOS_sighandler_t PyOS_getsig(int i)
1610+ pythonapi .PyOS_getsig .restype = c_void_p
1611+ pythonapi .PyOS_getsig .argtypes = (c_int ,)
1612+
1613+ # PyOS_sighandler_t PyOS_setsig(int i, PyOS_sighandler_t h)
1614+ pythonapi .PyOS_setsig .restype = c_void_p
1615+ pythonapi .PyOS_setsig .argtypes = (
1616+ c_int ,
1617+ c_void_p ,
1618+ )
16171619
16181620 sigint = signal .getsignal (signal .SIGINT )
1619- sigint_os = pythonapi .PyOS_getsig (signal .SIGINT )
1621+ if have_ctypes_signal :
1622+ sigint_os = pythonapi .PyOS_getsig (signal .SIGINT )
16201623
16211624 try :
16221625 yield
16231626 finally :
16241627 if sigint is not None :
16251628 signal .signal (signal .SIGINT , sigint )
1626- pythonapi .PyOS_setsig (signal .SIGINT , sigint_os )
1629+ if have_ctypes_signal :
1630+ pythonapi .PyOS_setsig (signal .SIGINT , sigint_os )
0 commit comments