Author Barney Stratford
Recipients Barney Stratford
Date 2020-06-28.16:01:04
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1593360064.64.0.828598087215.issue41149@roundup.psfhosted.org>
In-reply-to
Content
>>> import threading
>>> class foo (object):
...     def __bool__ (self):
...         return False
...     def __call__ (self):
...         print ("Running")
...
>>> threading.Thread (target = foo ()).start ()

The expected result of these commands would be for the thread to print
"Running". However, in actual fact it prints nothing at all. This is
because threading.Thread.run only runs the target if it is True as a
boolean. This is presumably to make the thread do nothing at all if
the target is None. In this case, I have a legitimate target that is
False as a boolean.

I propose to remove the test altogether. The effect of this is that
failure to set the target of the thread, or setting a non-callable
target, will cause the thread to raise a TypeError as soon as it is
started. Forgetting to set the target is in almost every case a bug,
and bugs should never be silent.

PR to follow.
History
Date User Action Args
2020-06-28 16:01:04Barney Stratfordsetrecipients: + Barney Stratford
2020-06-28 16:01:04Barney Stratfordsetmessageid: <1593360064.64.0.828598087215.issue41149@roundup.psfhosted.org>
2020-06-28 16:01:04Barney Stratfordlinkissue41149 messages
2020-06-28 16:01:04Barney Stratfordcreate