1Return-Path: <twisted-commits-admin@twistedmatrix.com>
2Delivered-To: exarkun@meson.dyndns.org
3Received: from localhost [127.0.0.1]
4	by localhost with POP3 (fetchmail-6.2.1)
5	for exarkun@localhost (single-drop); Thu, 20 Mar 2003 14:50:20 -0500 (EST)
6Received: from pyramid.twistedmatrix.com (adsl-64-123-27-105.dsl.austtx.swbell.net [64.123.27.105])
7	by intarweb.us (Postfix) with ESMTP id 4A4A513EA4
8	for <exarkun@meson.dyndns.org>; Thu, 20 Mar 2003 14:49:27 -0500 (EST)
9Received: from localhost ([127.0.0.1] helo=pyramid.twistedmatrix.com)
10	by pyramid.twistedmatrix.com with esmtp (Exim 3.35 #1 (Debian))
11	id 18w648-0007Vl-00; Thu, 20 Mar 2003 13:51:04 -0600
12Received: from acapnotic by pyramid.twistedmatrix.com with local (Exim 3.35 #1 (Debian))
13	id 18w63j-0007VK-00
14	for <twisted-commits@twistedmatrix.com>; Thu, 20 Mar 2003 13:50:39 -0600
15To: twisted-commits@twistedmatrix.com
16From: etrepum CVS <etrepum@twistedmatrix.com>
17Reply-To: twisted-python@twistedmatrix.com
18X-Mailer: CVSToys
19Message-Id: <E18w63j-0007VK-00@pyramid.twistedmatrix.com>
20Subject: [Twisted-commits] rebuild now works on python versions from 2.2.0 and up.
21Sender: twisted-commits-admin@twistedmatrix.com
22Errors-To: twisted-commits-admin@twistedmatrix.com
23X-BeenThere: twisted-commits@twistedmatrix.com
24X-Mailman-Version: 2.0.11
25Precedence: bulk
26List-Help: <mailto:twisted-commits-request@twistedmatrix.com?subject=help>
27List-Post: <mailto:twisted-commits@twistedmatrix.com>
28List-Subscribe: <http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-commits>,
29	<mailto:twisted-commits-request@twistedmatrix.com?subject=subscribe>
30List-Id: <twisted-commits.twistedmatrix.com>
31List-Unsubscribe: <http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-commits>,
32	<mailto:twisted-commits-request@twistedmatrix.com?subject=unsubscribe>
33List-Archive: <http://twistedmatrix.com/pipermail/twisted-commits/>
34Date: Thu, 20 Mar 2003 13:50:39 -0600
35
36Modified files:
37Twisted/twisted/python/rebuild.py 1.19 1.20
38
39Log message:
40rebuild now works on python versions from 2.2.0 and up.
41
42
43ViewCVS links:
44http://twistedmatrix.com/users/jh.twistd/viewcvs/cgi/viewcvs.cgi/twisted/python/rebuild.py.diff?r1=text&tr1=1.19&r2=text&tr2=1.20&cvsroot=Twisted
45
46Index: Twisted/twisted/python/rebuild.py
47diff -u Twisted/twisted/python/rebuild.py:1.19 Twisted/twisted/python/rebuild.py:1.20
48--- Twisted/twisted/python/rebuild.py:1.19	Fri Jan 17 13:50:49 2003
49+++ Twisted/twisted/python/rebuild.py	Thu Mar 20 11:50:08 2003
50@@ -206,15 +206,27 @@
51             clazz.__dict__.clear()
52             clazz.__getattr__ = __getattr__
53             clazz.__module__ = module.__name__
54+    if newclasses:
55+        import gc
56+        if (2, 2, 0) <= sys.version_info[:3] < (2, 2, 2):
57+            hasBrokenRebuild = 1
58+            gc_objects = gc.get_objects()
59+        else:
60+            hasBrokenRebuild = 0
61     for nclass in newclasses:
62         ga = getattr(module, nclass.__name__)
63         if ga is nclass:
64             log.msg("WARNING: new-class %s not replaced by reload!" % reflect.qual(nclass))
65         else:
66-            import gc
67-            for r in gc.get_referrers(nclass):
68-                if isinstance(r, nclass):
69+            if hasBrokenRebuild:
70+                for r in gc_objects:
71+                    if not getattr(r, '__class__', None) is nclass:
72+                        continue
73                     r.__class__ = ga
74+            else:
75+                for r in gc.get_referrers(nclass):
76+                    if getattr(r, '__class__', None) is nclass:
77+                        r.__class__ = ga
78     if doLog:
79         log.msg('')
80         log.msg('  (fixing   %s): ' % str(module.__name__))
81
82
83_______________________________________________
84Twisted-commits mailing list
85Twisted-commits@twistedmatrix.com
86http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-commits
87