It strikes me as oddly dangerous that signal.signal() accepts callable handlers 
of the wrong arity:

    def timeout_cleanup():
      ...

    signal.signal(signal.SIGALRM, timeout_cleanup)       # I desire a TypeError 
here
    signal.alarm(PROCESS_TIMEOUT)

    ... time passes ...

    TypeError: timeout_cleanup() takes 0 positional arguments but 2 were given

(Similar TypeError with different text under python 2.)

The downside to current behavior is that the coding error is revealed only 
under certain conditions at runtime.  In the example above, you don't know that 
your seatbelt is defective until you need it.

Does anyone disagree with modifying signal.signal's behavior to raise a 
TypeError when given a user-defined handler of the wrong arity?  Any code 
relying on this behavior is, IMO, contrived beyond plausibility.  However, this 
change might break code not yet known to be incorrect.

If no disagreements, patch or PEP?

-Mike
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to