On 21/01/2026 1:44, Jakub Kicinski wrote:
> On Tue, 20 Jan 2026 14:47:33 +0200 Gal Pressman wrote:
>> The __exit__ method receives ex_type as the exception class when an
>> exception occurs. The previous code used implicit boolean evaluation:
>>
>>     terminate = self.terminate or (self._exit_wait and ex_type)
>>                                                    ^^^^^^^^^^^
>>
>> In Python, the and operator can be used with non-boolean values, but it
>> does not always return a boolean result.
>>
>> This is probably not what we want, because 'self._exit_wait and ex_type'
>> could return the actual ex_type value (the exception class) rather than
>> a boolean True when an exception occurs.
>>
>> Use explicit `ex_type is not None` check to properly evaluate whether
>> an exception occurred, returning a boolean result.
> 
> Sure, the checkers complain about this, but I don't see an actual bug
> here. bool(terminate) must evaluate correctly, we don't compare it
> to True or False explicitly.
> 
> To be clear - the patch LGTM, I'm just not connecting the dots on why
> its a fix at this stage.

Right, the code probably works regardless of this fix.
The reason I submitted this as a fix is because surely there was no
intention for 'terminate' to be non-boolean.

Take the patch to net-next instead?

BTW, I encountered this issue while debugging some tests and dumping
various states, the value of 'terminate' confused me.

Reply via email to