bpo-42266: Handle monkey-patching descriptors in LOAD_ATTR cache (GH-23157)

This commit is contained in:
Pablo Galindo 2020-11-05 09:23:15 +00:00 committed by GitHub
parent 178695b7ae
commit 80449f243b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 28 additions and 7 deletions

23
Lib/test/test_opcache.py Normal file
View file

@ -0,0 +1,23 @@
import unittest
class TestLoadAttrCache(unittest.TestCase):
def test_descriptor_added_after_optimization(self):
class Descriptor:
pass
class C:
def __init__(self):
self.x = 1
x = Descriptor()
def f(o):
return o.x
o = C()
for i in range(1025):
assert f(o) == 1
Descriptor.__get__ = lambda self, instance, value: 2
Descriptor.__set__ = lambda *args: None
self.assertEqual(f(o), 2)