[Python-checkins] CVS: python/dist/src/Lib/test test_descr.py,1.88,1.89
Guido van Rossum
gvanrossum@users.sourceforge.net
Mon, 15 Oct 2001 14:05:12 -0700
Update of /cvsroot/python/python/dist/src/Lib/test
In directory usw-pr-cvs1:/tmp/cvs-serv7710/Lib/test
Modified Files:
test_descr.py
Log Message:
Completely get rid of __dynamic__ and the corresponding
Py_TPFLAGS_DYNAMICTYPE bit. There is no longer a performance benefit,
and I don't really see the use case any more.
Index: test_descr.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_descr.py,v
retrieving revision 1.88
retrieving revision 1.89
diff -C2 -d -r1.88 -r1.89
*** test_descr.py 2001/10/12 02:38:24 1.88
--- test_descr.py 2001/10/15 21:05:10 1.89
***************
*** 18,21 ****
--- 18,23 ----
t = type(a)
m = getattr(t, meth)
+ while meth not in t.__dict__:
+ t = t.__bases__[0]
vereq(m, t.__dict__[meth])
vereq(m(a), res)
***************
*** 29,32 ****
--- 31,36 ----
t = type(a)
m = getattr(t, meth)
+ while meth not in t.__dict__:
+ t = t.__bases__[0]
vereq(m, t.__dict__[meth])
vereq(m(a, b), res)
***************
*** 40,43 ****
--- 44,49 ----
t = type(a)
m = getattr(t, meth)
+ while meth not in t.__dict__:
+ t = t.__bases__[0]
vereq(m, t.__dict__[meth])
vereq(m(a, b, c), res)
***************
*** 52,55 ****
--- 58,63 ----
t = type(a)
m = getattr(t, meth)
+ while meth not in t.__dict__:
+ t = t.__bases__[0]
vereq(m, t.__dict__[meth])
dict['a'] = deepcopy(a)
***************
*** 68,71 ****
--- 76,81 ----
t = type(a)
m = getattr(t, meth)
+ while meth not in t.__dict__:
+ t = t.__bases__[0]
vereq(m, t.__dict__[meth])
dict['a'] = deepcopy(a)
***************
*** 83,86 ****
--- 93,98 ----
vereq(dict['a'], res)
t = type(a)
+ while meth not in t.__dict__:
+ t = t.__bases__[0]
m = getattr(t, meth)
vereq(m, t.__dict__[meth])
***************
*** 105,114 ****
class NewStatic(object):
"Another docstring."
- __dynamic__ = 0
vereq(NewStatic.__doc__, "Another docstring.")
vereq(NewStatic.__dict__['__doc__'], "Another docstring.")
class NewStatic2(object):
- __dynamic__ = 0
pass
verify(NewStatic2.__doc__ is None)
--- 117,124 ----
***************
*** 116,125 ****
class NewDynamic(object):
"Another docstring."
- __dynamic__ = 1
vereq(NewDynamic.__doc__, "Another docstring.")
vereq(NewDynamic.__dict__['__doc__'], "Another docstring.")
class NewDynamic2(object):
- __dynamic__ = 1
pass
verify(NewDynamic2.__doc__ is None)
--- 126,133 ----
***************
*** 629,633 ****
# This trick only works for dynamic classes
def __new__(metaclass, name, bases, dict):
- assert dict.get("__dynamic__", 1)
cls = super(autosuper, metaclass).__new__(metaclass,
name, bases, dict)
--- 637,640 ----
***************
*** 864,892 ****
def dynamics():
! if verbose: print "Testing __dynamic__..."
! vereq(object.__dynamic__, 0)
! vereq(list.__dynamic__, 0)
! class S1:
! __metaclass__ = type
! __dynamic__ = 0
! vereq(S1.__dynamic__, 0)
! class S(object):
! __dynamic__ = 0
! vereq(S.__dynamic__, 0)
class D(object):
- __dynamic__ = 1
- vereq(D.__dynamic__, 1)
- class E(D, S):
pass
! vereq(E.__dynamic__, 1)
! class F(S, D):
pass
! vereq(F.__dynamic__, 1)
! try:
! S.foo = 1
! except (AttributeError, TypeError):
pass
- else:
- verify(0, "assignment to a static class attribute should be illegal")
D.foo = 1
vereq(D.foo, 1)
--- 871,881 ----
def dynamics():
! if verbose: print "Testing class attribute propagation..."
class D(object):
pass
! class E(D):
pass
! class F(D):
pass
D.foo = 1
vereq(D.foo, 1)
***************
*** 894,915 ****
vereq(E.foo, 1)
vereq(F.foo, 1)
- class SS(D):
- __dynamic__ = 0
- vereq(SS.__dynamic__, 0)
- vereq(SS.foo, 1)
- try:
- SS.foo = 1
- except (AttributeError, TypeError):
- pass
- else:
- verify(0, "assignment to SS.foo should be illegal")
# Test dynamic instances
class C(object):
! __dynamic__ = 1
! # XXX Ideally the following def shouldn't be necessary,
! # but it's too much of a performance burden.
! # See XXX comment in slot_tp_getattr_hook.
! def __getattr__(self, name):
! raise AttributeError, name
a = C()
verify(not hasattr(a, "foobar"))
--- 883,889 ----
vereq(E.foo, 1)
vereq(F.foo, 1)
# Test dynamic instances
class C(object):
! pass
a = C()
verify(not hasattr(a, "foobar"))
***************
*** 952,956 ****
# Test handling of int*seq and seq*int
class I(int):
! __dynamic__ = 1 # XXX why?
vereq("a"*I(2), "aa")
vereq(I(2)*"a", "aa")
--- 926,930 ----
# Test handling of int*seq and seq*int
class I(int):
! pass
vereq("a"*I(2), "aa")
vereq(I(2)*"a", "aa")
***************
*** 961,965 ****
# Test handling of long*seq and seq*long
class L(long):
! __dynamic__ = 1 # XXX why?
vereq("a"*L(2L), "aa")
vereq(L(2L)*"a", "aa")
--- 935,939 ----
# Test handling of long*seq and seq*long
class L(long):
! pass
vereq("a"*L(2L), "aa")
vereq(L(2L)*"a", "aa")
***************
*** 970,974 ****
# Test comparison of classes with dynamic metaclasses
class dynamicmetaclass(type):
! __dynamic__ = 1 # XXX ???
class someclass:
__metaclass__ = dynamicmetaclass
--- 944,948 ----
# Test comparison of classes with dynamic metaclasses
class dynamicmetaclass(type):
! pass
class someclass:
__metaclass__ = dynamicmetaclass
***************
*** 1256,1260 ****
# Test the default behavior for dynamic classes
class D(object):
- __dynamic__ = 1 # XXX why?
def __getitem__(self, i):
if 0 <= i < 10: return i
--- 1230,1233 ----
***************
*** 1319,1323 ****
# Test overridden behavior for dynamic classes
class DProxy(object):
- __dynamic__ = 1
def __init__(self, x):
self.x = x
--- 1292,1295 ----
***************
*** 1470,1474 ****
class C(A):
- __dynamic__ = 1
def meth(self, a):
return "C(%r)" % a + self.__super.meth(a)
--- 1442,1445 ----
***************
*** 1566,1570 ****
class madcomplex(complex):
- __dynamic__ = 0 # XXX Shouldn't be necessary
def __repr__(self):
return "%.17gj%+.17g" % (self.imag, self.real)
--- 1537,1540 ----
***************
*** 1968,1977 ****
print "Testing rich comparisons..."
class Z(complex):
! __dynamic__ = 0
z = Z(1)
vereq(z, 1+0j)
vereq(1+0j, z)
class ZZ(complex):
- __dynamic__ = 0
def __eq__(self, other):
try:
--- 1938,1946 ----
print "Testing rich comparisons..."
class Z(complex):
! pass
z = Z(1)
vereq(z, 1+0j)
vereq(1+0j, z)
class ZZ(complex):
def __eq__(self, other):
try:
***************
*** 2060,2065 ****
coerce(0L, F(0))
coerce(0., F(0))
! class C(complex):
! __dynamic__ = 0
coerce(C(0), 0)
coerce(C(0), 0L)
--- 2029,2033 ----
coerce(0L, F(0))
coerce(0., F(0))
! class C(complex): pass
coerce(C(0), 0)
coerce(C(0), 0L)