New submission from Avram <pyt...@avram.us>:

This bug was introduced with Issue25597


Here's some code that demonstrates the error:

    import sys
    from unittest.mock import patch

    with patch.object(sys, 'stdout', wraps=sys.stdout) as mockstdout:
        bool(sys.stdout)

This works fine in 3.8 and earlier, but fails in 3.9

It seems the goal was to be able to access dunder methods for wrapped objects. 
Before this change __bool__ wasn't actually being checked, but was forced to 
True, which works for basic existence tests. The new code method._mock_wraps = 
getattr(mock._mock_wraps, name) has no fallthrough in case the attribute isn't 
there such as the case with __bool__ on sys.stdout.

----------
components: Library (Lib)
messages: 364222
nosy: Darragh Bailey, anthonypjshaw, aviso, cjw296, lisroach, mariocj89, 
michael.foord, pconnell, r.david.murray, rbcollins, xtreak
priority: normal
severity: normal
status: open
title: mock 3.9 bug: Wrapped objects without __bool__ raise exception
type: behavior
versions: Python 3.9

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue39966>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to