[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)