#28358: LazyObject defines attribute that don't exist on wrapped object
-------------------------------------+-------------------------------------
     Reporter:  Andrey Fedoseev      |                    Owner:  Theofilos
                                     |  Alexiou
         Type:  Bug                  |                   Status:  closed
    Component:  Utilities            |                  Version:  1.11
     Severity:  Normal               |               Resolution:  fixed
     Keywords:                       |             Triage Stage:  Ready for
                                     |  checkin
    Has patch:  1                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------

Comment (by cfbolz):

 hi everyone! PyPy dev here. So after some investigation (you can find the
 gory details on this CPython issue:
 https://github.com/python/cpython/issues/98148 ) it turns out that this
 bug also exists in CPython, if you run coverage in pure python mode. The
 bug occurs only if you: 1) use `super` 2) define `__class__` in the class
 body yourself 3) use a pure python trace hook, or call locals() in the
 class body.

 At this point there has been no reaction from CPython yet, but the way I
 see things from the PyPy side it'll be on the tricky to fix this so it
 might take a while (I'm waiting for CPy feedback because the two
 implementations use exactly the same approaches here, to the point of
 ending up with exactly the same bug).

 I was wondering whether Django might be open to a PR that works around the
 bug for the time being? A pragmatic approach would be to stop using super
 in `LazyObject.__getattribute__`, which was introduced in
 97d7990abde3fe4b525ae83958fd0b52d6a1d13f, and just call
 `object.__getattribute__` instead. If that sounds like a reasonable
 solution, I am happy to work on the PR. (there would be some trickiness to
 how to unit test this, but I can probably think of something). Please let
 me know!

-- 
Ticket URL: <https://code.djangoproject.com/ticket/28358#comment:21>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/010701852108a0d6-2ab224aa-e28c-460b-97ad-631de0c1aeea-000000%40eu-central-1.amazonses.com.

Reply via email to