The documentation for [`signal.signal`][1] points out that the current
annotation for signal handlers might be wrong (emphasis my own):
> The handler is called with two arguments: the signal **number** and the
> current stack frame (**`None` or** a frame object; for a description of frame
> objects, see the description in the type hierarchy or see the attribute
> descriptions in the `inspect` module).
And when we use them, we can see that the signal number is passed as an `int`,
not a `signal.Signals` member:
import signal
def handler(signal_number, frame):
print("In signal handler!")
print("Signal number:", signal_number, type(signal_number))
print("Stack frame: ", frame, type(frame))
# Set signal handler:
signal.signal(signal.SIGHUP, handler)
# Use it:
signal.raise_signal(signal.SIGHUP)
Which prints:
In signal handler!
Signal number: 1 <class 'int'>
Stack frame: <frame at 0x7f804402abe0, file '<stdin>', line 12, code <module>> <class 'frame'>
[1]: https://docs.python.org/3/library/signal.html#signal.signal