[py-svn] r34097 - in py/dist/py/apigen: rest tracer

guido at codespeak.net guido at codespeak.net
Fri Nov 3 14:08:18 CET 2006


Author: guido
Date: Fri Nov  3 14:08:16 2006
New Revision: 34097

Modified:
   py/dist/py/apigen/rest/genrest.py
   py/dist/py/apigen/tracer/description.py
Log:
Fixed problems with deepcopy() not being able to copy everything, adjusted
genrest to cope with the changes in tracer.


Modified: py/dist/py/apigen/rest/genrest.py
==============================================================================
--- py/dist/py/apigen/rest/genrest.py	(original)
+++ py/dist/py/apigen/rest/genrest.py	Fri Nov  3 14:08:16 2006
@@ -332,14 +332,8 @@
         
         local_changes = self.dsa.get_function_local_changes(functionname)
         lst.append(Paragraph('Changes in __dict__:'))
-        from py.__.apigen.tracer.description import NoValue
-        for k, (oldvalue, newvalue) in local_changes.iteritems():
-            description = 'value changed'
-            if oldvalue is NoValue:
-                description = 'newly added'
-            elif newvalue is NoValue:
-                description = 'deleted'
-            lst.append(ListItem('%s: %s' % (k, description)))
+        for k, changeset in local_changes.iteritems():
+            lst.append(ListItem('%s: %s' % (k, ', '.join(changeset))))
         
         # XXX missing implementation of dsa.get_function_location()
         #filename, lineno = self.dsa.get_function_location(functionname)

Modified: py/dist/py/apigen/tracer/description.py
==============================================================================
--- py/dist/py/apigen/tracer/description.py	(original)
+++ py/dist/py/apigen/tracer/description.py	Fri Nov  3 14:08:16 2006
@@ -250,8 +250,19 @@
                 return
         except AttributeError:
             return
-        #self.old_dict = self.perform_dict_copy(obj.__dict__)
-        self.old_dict = copy.deepcopy(obj.__dict__)
+        self.old_dict = self.perform_dict_copy(obj.__dict__)
+
+    def perform_dict_copy(self, d):
+        try:
+            c = copy.deepcopy(d)
+        except:
+            c = {}
+            for k, v in d.iteritems():
+                try:
+                    c[k] = copy.deepcopy(v)
+                except:
+                    c[k] = v
+        return c
 
     def consider_end_locals(self, frame):
         obj = frame.f_locals[self.pyobj.im_func.func_code.co_varnames[0]]


More information about the py-svn mailing list