[Checkins] SVN: z3c.memhunt.objgraph/trunk/ Another round of cleanup

Daniel Blackburn blackburnd at gmail.com
Wed Nov 10 06:14:48 EST 2010


Log message for revision 118314:
  Another round of cleanup

Changed:
  U   z3c.memhunt.objgraph/trunk/setup.py
  A   z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/browser/
  A   z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/browser/__init__.py
  A   z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/browser/configure.zcml
  A   z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/browser/configure_zope2.zcml
  A   z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/browser/configure_zope3.zcml
  A   z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/browser/views.py
  U   z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/configure.zcml
  D   z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/configure_zope2.zcml
  D   z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/configure_zope3.zcml
  D   z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/debug_views.py
  D   z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/resources/
  D   z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/zpt/

-=-
Modified: z3c.memhunt.objgraph/trunk/setup.py
===================================================================
--- z3c.memhunt.objgraph/trunk/setup.py	2010-11-10 11:11:52 UTC (rev 118313)
+++ z3c.memhunt.objgraph/trunk/setup.py	2010-11-10 11:14:48 UTC (rev 118314)
@@ -30,6 +30,7 @@
       version=version,
       description="",
       long_description=long_description,
+      namespace_packages=['z3c','z3c.memhunt',],
       # Get more strings from http://www.python.org/pypi?%3Aaction=list_classifiers
       keywords = "zope zope2 zope3 memory objgraph graphviz guppy",
       classifiers = [
@@ -47,7 +48,6 @@
       url="''",
       license = "ZPL 2.1",
       packages=find_packages(exclude=['ez_setup']),
-      namespace_packages=['z3c',],
       include_package_data=True,
       zip_safe=False,
       install_requires=['setuptools',

Added: z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/browser/__init__.py
===================================================================
--- z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/browser/__init__.py	                        (rev 0)
+++ z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/browser/__init__.py	2010-11-10 11:14:48 UTC (rev 118314)
@@ -0,0 +1 @@
+#

Added: z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/browser/configure.zcml
===================================================================
--- z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/browser/configure.zcml	                        (rev 0)
+++ z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/browser/configure.zcml	2010-11-10 11:14:48 UTC (rev 118314)
@@ -0,0 +1,15 @@
+<configure
+    xmlns="http://namespaces.zope.org/zope"
+    xmlns:zcml="http://namespaces.zope.org/zcml"
+    i18n_domain="zcml">
+    
+    <!--include zcml:condition="installed zope.app.component" file="configure_zope3.zcml"/-->
+    <include file="configure_zope3.zcml"/>
+
+</configure>
+
+
+
+
+
+

Added: z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/browser/configure_zope2.zcml
===================================================================
--- z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/browser/configure_zope2.zcml	                        (rev 0)
+++ z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/browser/configure_zope2.zcml	2010-11-10 11:14:48 UTC (rev 118314)
@@ -0,0 +1,138 @@
+<configure
+    xmlns="http://namespaces.zope.org/zope"
+    xmlns:browser="http://namespaces.zope.org/browser"
+    i18n_domain="hc.am.base">
+
+    <browser:page
+        for="*"
+        name="ref_tools"
+        class=".views.Start"
+        permission="cmf.ManagePortal"
+        />
+
+    <browser:page
+        for="*"
+        name="ref_count"
+        class=".views.RefCount"
+        permission="cmf.ManagePortal"
+        />
+
+    <browser:page
+        for="*"
+        name="view_ref"
+        attribute="view_ref"
+        class=".views.RefCount"
+        permission="cmf.ManagePortal"
+        />
+
+    <browser:page
+        for="*"
+        name="view_backref"
+        attribute="view_backref"
+        class=".views.RefCount"
+        permission="cmf.ManagePortal"
+        />
+
+    <browser:page
+        for="*"
+        name="context_backrefs.png"
+        attribute="context_backrefs"
+        class=".views.RefCount"
+        permission="cmf.ManagePortal"
+        />
+
+    <browser:page
+        for="*"
+        name="context_refs.png"
+        attribute="context_refs"
+        class=".views.RefCount"
+        permission="cmf.ManagePortal"
+        />
+
+    <browser:page
+        for="*"
+        name="ref_common_count"
+        attribute="most_common"
+        class=".views.DebugView"
+        permission="cmf.ManagePortal"
+        />
+
+    <browser:page
+        for="*"
+        name="display_mem"
+        attribute="display_mem"
+        class=".views.DebugView"
+        permission="cmf.ManagePortal"
+        />
+
+
+    <browser:page
+        for="*"
+        name="memory"
+        attribute="memory"
+        class=".views.DebugView"
+        permission="cmf.ManagePortal"
+        />
+
+    <browser:page
+        for="*"
+        name="relative_memory"
+        attribute="relative_memory"
+        class=".views.DebugView"
+        permission="cmf.ManagePortal"
+        />
+
+    <browser:page
+        for="*"
+        name="traverse_relative_memory"
+        attribute="traverse_relative_memory"
+        class=".views.DebugView"
+        permission="cmf.ManagePortal"
+        />
+
+    <browser:page
+        for="*"
+        name="reset_heap"
+        attribute="reset_heap"
+        class=".views.DebugView"
+        permission="cmf.ManagePortal"
+        />
+
+    <browser:page
+        for="*"
+        name="by_referrers"
+        attribute="by_referrers"
+        class=".views.DebugView"
+        permission="cmf.ManagePortal"
+        />
+
+    <browser:page
+        for="*"
+        name="get_biggest_offender"
+        attribute="get_biggest_offender"
+        class=".views.DebugView"
+        permission="cmf.ManagePortal"
+        />
+
+    <browser:page
+        for="*"
+        name="breakpoint"
+        attribute="breakpoint"
+        class=".views.DebugView"
+        permission="cmf.ManagePortal"
+        />
+
+     <browser:resourceDirectory
+	      name="history"
+ 	      directory="resources/history"
+              permission="cmf.ManagePortal"
+ 	      />
+
+     <browser:resource
+         name="debug.css"
+         file="./zpt/debug.css"
+         />
+
+
+
+</configure>

Added: z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/browser/configure_zope3.zcml
===================================================================
--- z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/browser/configure_zope3.zcml	                        (rev 0)
+++ z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/browser/configure_zope3.zcml	2010-11-10 11:14:48 UTC (rev 118314)
@@ -0,0 +1,138 @@
+<configure
+    xmlns="http://namespaces.zope.org/zope"
+    xmlns:browser="http://namespaces.zope.org/browser"
+    i18n_domain="hc.am.base">
+
+    <browser:page
+        for="*"
+        name="ref_tools"
+        class=".views.Start"
+        permission="zope.ManageContent"
+        />
+
+    <browser:page
+        for="*"
+        name="ref_count"
+        class=".views.RefCount"
+        permission="zope.ManageContent"
+        />
+
+    <browser:page
+        for="*"
+        name="view_ref"
+        attribute="view_ref"
+        class=".views.RefCount"
+        permission="zope.ManageContent"
+        />
+
+    <browser:page
+        for="*"
+        name="view_backref"
+        attribute="view_backref"
+        class=".views.RefCount"
+        permission="zope.ManageContent"
+        />
+
+    <browser:page
+        for="*"
+        name="context_backrefs.png"
+        attribute="context_backrefs"
+        class=".views.RefCount"
+        permission="zope.ManageContent"
+        />
+
+    <browser:page
+        for="*"
+        name="context_refs.png"
+        attribute="context_refs"
+        class=".views.RefCount"
+        permission="zope.ManageContent"
+        />
+
+    <browser:page
+        for="*"
+        name="ref_common_count"
+        attribute="most_common"
+        class=".views.DebugView"
+        permission="zope.ManageContent"
+        />
+
+    <browser:page
+        for="*"
+        name="display_mem"
+        attribute="display_mem"
+        class=".views.DebugView"
+        permission="zope.ManageContent"
+        />
+
+
+    <browser:page
+        for="*"
+        name="memory"
+        attribute="memory"
+        class=".views.DebugView"
+        permission="zope.ManageContent"
+        />
+
+    <browser:page
+        for="*"
+        name="relative_memory"
+        attribute="relative_memory"
+        class=".views.DebugView"
+        permission="zope.ManageContent"
+        />
+
+    <browser:page
+        for="*"
+        name="traverse_relative_memory"
+        attribute="traverse_relative_memory"
+        class=".views.DebugView"
+        permission="zope.ManageContent"
+        />
+
+    <browser:page
+        for="*"
+        name="reset_heap"
+        attribute="reset_heap"
+        class=".views.DebugView"
+        permission="zope.ManageContent"
+        />
+
+    <browser:page
+        for="*"
+        name="by_referrers"
+        attribute="by_referrers"
+        class=".views.DebugView"
+        permission="zope.ManageContent"
+        />
+
+    <browser:page
+        for="*"
+        name="get_biggest_offender"
+        attribute="get_biggest_offender"
+        class=".views.DebugView"
+        permission="zope.ManageContent"
+        />
+
+    <browser:page
+        for="*"
+        name="breakpoint"
+        attribute="breakpoint"
+        class=".views.DebugView"
+        permission="zope.ManageContent"
+        />
+
+     <browser:resourceDirectory
+	      name="history"
+ 	      directory="resources/history"
+              permission="zope.ManageContent"
+ 	      />
+
+     <browser:resource
+         name="debug.css"
+         file="./zpt/debug.css"
+         />
+
+
+
+</configure>

Added: z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/browser/views.py
===================================================================
--- z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/browser/views.py	                        (rev 0)
+++ z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/browser/views.py	2010-11-10 11:14:48 UTC (rev 118314)
@@ -0,0 +1,180 @@
+import sys
+import gc
+import types
+from tempfile import NamedTemporaryFile
+
+try:
+    from Products.Five.browser import BrowserView
+    from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
+except ImportError:
+    from zope.app.pagetemplate.viewpagetemplatefile import ViewPageTemplateFile    
+    from zope.publisher.browser import BrowserView
+
+import objgraph
+import pprint 
+import guppy
+
+heapy = guppy.hpy()
+
+
+class Start(BrowserView):
+    template = ViewPageTemplateFile("zpt/start.pt")
+
+    def __call__(self):
+        return self.template(self)
+
+
+class RefCount(BrowserView):
+    template = ViewPageTemplateFile("zpt/ref_count.pt")
+    
+    def __call__(self):
+        self.update()
+        return self.template(self)
+        
+    def update(self):
+        d = {}
+        # collect all classes
+        self.garbage_containing = len(gc.garbage)
+        self.garbage_watching = len(gc.get_objects())
+        self.total_ref_count = 0
+
+        for m in sys.modules.values():
+            for sym in dir(m):
+                o = getattr (m, sym)
+                if type(o) is types.ClassType:
+                    d[o] = sys.getrefcount (o)
+
+                    # sort by refcount
+                    pairs = map (lambda x: (repr(x[0]),x[1]), d.items())
+                    pairs.sort()
+                    pairs.reverse()
+
+        self.pairs = []
+        for pair in pairs:
+            self.total_ref_count += pair[1]
+            self.pairs.append({'refcount':pair[1],
+                               'name':pair[0]})
+
+        self.pairs = sorted(self.pairs, key=lambda x: x['refcount'])
+        self.pairs.reverse()
+
+
+
+    @property
+    def target(self):
+        if getattr(self, '_target', None):
+            return getattr(self,'_target')
+
+        target =  self.request.form.get('name','')
+        if not target:
+            return None
+
+        target = target.strip('<').strip('>')
+        target = '_'.join(target.split(' ')[:-1])
+
+        coll = {}
+        for m in sys.modules.values():
+            for sym in dir(m):
+                o = getattr (m, sym)
+                if type(o) is types.ClassType:
+                    name = '_'.join(repr(o).strip('<').strip('>').split(' ')[:-1])
+                    coll[name] = o
+
+        self._target = coll.get(target, None)
+        return self._target
+
+
+
+    def view_backref(self):
+        if self.target is None:
+            return "Please select an item to introspect"
+        return self.back_ref_file
+
+
+    def view_ref(self):
+        if self.target is None:
+            return "Please select an item to introspect"
+        return self.ref_file
+
+
+    @property
+    def ref_file(self):
+        self.request.response.setHeader('content-type','image/png')
+        f = NamedTemporaryFile('wb', suffix='.png')
+        objgraph.show_refs([self.target], max_depth=6, filename=f.name)
+        return open(f.name,'r').read()
+
+    @property
+    def back_ref_file(self):
+        self.request.response.setHeader('content-type','image/png')
+        f = NamedTemporaryFile('wb', suffix='.png')
+        objgraph.show_backrefs([self.target], max_depth=6, filename=f.name)
+        return open(f.name,'r').read()
+
+
+    def context_refs(self):
+        self._target = self.context
+        return self.ref_file
+
+    def context_backrefs(self):
+        self._target = self.context
+        return self.back_ref_file
+
+
+
+
+
+class DebugView(BrowserView):
+    __allow_access_to_unprotected_subobjects__ = 1
+
+
+    ref_common_template = ViewPageTemplateFile("zpt/ref_common_count.pt")
+
+
+    def most_common(self):
+        pairs = objgraph.most_common_types()
+        self.pairs = []
+        for pair in pairs:
+            self.pairs.append({'refcount':pair[1],
+                               'name':pair[0]})
+
+        return self.ref_common_template(self)
+
+    def display_mem(self):
+        import malloc_stats
+        return malloc_stats.malloc_stats()
+
+
+    def reset_heap(self):
+        # Resets for testing
+        heapy.setrelheap()
+
+    def memory(self):
+        return pprint.pformat(heapy.heap())
+
+    # Print relative memory consumption since last sycle
+    def relative_memory(self):
+        res = pprint.pformat(heapy.heap())
+        heapy.setref()
+        return res
+
+    def by_referrers(self):
+        res = pprint.pformat(heapy.heap().byrcs)
+        return res
+
+    def get_biggest_offender(self):
+        obj = heapy.heap()[0].byrcs[0].referrers.byrcs
+        res = "SIZE: %s\n\n" % obj.domisize
+        res += pprint.pformat(obj)
+        return res
+
+    # Print relative memory consumption w/heap traversing
+    def traverse_relative_memory(self):
+        res = pprint.pformat(heapy.heap().get_rp(40))
+        heapy.setref()
+        return res
+
+    def breakpoint(self):
+        import pdb; pdb.set_trace()
+        obj = heapy.heap()
+        return "done"

Modified: z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/configure.zcml
===================================================================
--- z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/configure.zcml	2010-11-10 11:11:52 UTC (rev 118313)
+++ z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/configure.zcml	2010-11-10 11:14:48 UTC (rev 118314)
@@ -3,8 +3,7 @@
     xmlns:zcml="http://namespaces.zope.org/zcml"
     i18n_domain="zcml">
     
-    <!--include zcml:condition="installed zope.app.component" file="configure_zope3.zcml"/-->
-    <include file="configure_zope3.zcml"/>
+    <include package=".browser"/>
 
 </configure>
 

Deleted: z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/configure_zope2.zcml
===================================================================
--- z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/configure_zope2.zcml	2010-11-10 11:11:52 UTC (rev 118313)
+++ z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/configure_zope2.zcml	2010-11-10 11:14:48 UTC (rev 118314)
@@ -1,140 +0,0 @@
-<configure
-    xmlns="http://namespaces.zope.org/zope"
-    xmlns:browser="http://namespaces.zope.org/browser"
-    i18n_domain="z3c.memhunt.objgraph">
-    
-    <browser:page
-        for="*"
-        name="ref_tools"
-        attribute="start"
-        class=".debug_views.DebugView"
-        permission="cmf.ManagePortal"
-        />
-
-    <browser:page
-        for="*"
-        name="ref_count"
-        attribute="ref_count"
-        class=".debug_views.DebugView"
-        permission="cmf.ManagePortal"
-        />
-
-    <browser:page
-        for="*"
-        name="ref_common_count"
-        attribute="most_common"
-        class=".debug_views.DebugView"
-        permission="cmf.ManagePortal"
-        />
-
-    <browser:page
-        for="*"
-        name="display_mem"
-        attribute="display_mem"
-        class=".debug_views.DebugView"
-        permission="cmf.ManagePortal"
-        />
-
-    <browser:page
-        for="*"
-        name="view_ref"
-        attribute="view_ref"
-        class=".debug_views.DebugView"
-        permission="cmf.ManagePortal"
-        />
-
-    <browser:page
-        for="*"
-        name="view_backref"
-        attribute="view_backref"
-        class=".debug_views.DebugView"
-        permission="cmf.ManagePortal"
-        />
-
-    <browser:page
-        for="*"
-        name="context_backrefs"
-        attribute="context_backrefs"
-        class=".debug_views.DebugView"
-        permission="cmf.ManagePortal"
-        />
-
-    <browser:page
-        for="*"
-        name="memory"
-        attribute="memory"
-        class=".debug_views.DebugView"
-        permission="cmf.ManagePortal"
-        />
-
-    <browser:page
-        for="*"
-        name="relative_memory"
-        attribute="relative_memory"
-        class=".debug_views.DebugView"
-        permission="cmf.ManagePortal"
-        />
-
-    <browser:page
-        for="*"
-        name="traverse_relative_memory"
-        attribute="traverse_relative_memory"
-        class=".debug_views.DebugView"
-        permission="cmf.ManagePortal"
-        />
-
-    <browser:page
-        for="*"
-        name="reset_heap"
-        attribute="reset_heap"
-        class=".debug_views.DebugView"
-        permission="cmf.ManagePortal"
-        />
-
-    <browser:page
-        for="*"
-        name="by_referrers"
-        attribute="by_referrers"
-        class=".debug_views.DebugView"
-        permission="cmf.ManagePortal"
-        />
-
-    <browser:page
-        for="*"
-        name="get_biggest_offender"
-        attribute="get_biggest_offender"
-        class=".debug_views.DebugView"
-        permission="cmf.ManagePortal"
-        />
-
-
-    <browser:page
-        for="*"
-        name="context_refs"
-        attribute="context_refs"
-        class=".debug_views.DebugView"
-        permission="cmf.ManagePortal"
-        />
-
-    <browser:page
-        for="*"
-        name="breakpoint"
-        attribute="breakpoint"
-        class=".debug_views.DebugView"
-        permission="cmf.ManagePortal"
-        />
-
-     <browser:resourceDirectory
-	      name="history"
- 	      directory="resources/history"
-              permission="zope2.View"
- 	      />
-
-
-</configure>
-
-
-
-
-
-

Deleted: z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/configure_zope3.zcml
===================================================================
--- z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/configure_zope3.zcml	2010-11-10 11:11:52 UTC (rev 118313)
+++ z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/configure_zope3.zcml	2010-11-10 11:14:48 UTC (rev 118314)
@@ -1,140 +0,0 @@
-<configure
-    xmlns="http://namespaces.zope.org/zope"
-    xmlns:browser="http://namespaces.zope.org/browser"
-    i18n_domain="hc.am.base">
-
-    <browser:page
-        for="*"
-        name="ref_tools"
-        attribute="start"
-        class=".debug_views.DebugView"
-        permission="zope.ManageContent"
-        />
-
-    <browser:page
-        for="*"
-        name="ref_count"
-        attribute="ref_count"
-        class=".debug_views.DebugView"
-        permission="zope.ManageContent"
-        />
-
-    <browser:page
-        for="*"
-        name="ref_common_count"
-        attribute="most_common"
-        class=".debug_views.DebugView"
-        permission="zope.ManageContent"
-        />
-
-    <browser:page
-        for="*"
-        name="display_mem"
-        attribute="display_mem"
-        class=".debug_views.DebugView"
-        permission="zope.ManageContent"
-        />
-
-    <browser:page
-        for="*"
-        name="view_ref"
-        attribute="view_ref"
-        class=".debug_views.DebugView"
-        permission="zope.ManageContent"
-        />
-
-    <browser:page
-        for="*"
-        name="view_backref"
-        attribute="view_backref"
-        class=".debug_views.DebugView"
-        permission="zope.ManageContent"
-        />
-
-    <browser:page
-        for="*"
-        name="context_backrefs.png"
-        attribute="context_backrefs"
-        class=".debug_views.DebugView"
-        permission="zope.ManageContent"
-        />
-
-    <browser:page
-        for="*"
-        name="memory"
-        attribute="memory"
-        class=".debug_views.DebugView"
-        permission="zope.ManageContent"
-        />
-
-    <browser:page
-        for="*"
-        name="relative_memory"
-        attribute="relative_memory"
-        class=".debug_views.DebugView"
-        permission="zope.ManageContent"
-        />
-
-    <browser:page
-        for="*"
-        name="traverse_relative_memory"
-        attribute="traverse_relative_memory"
-        class=".debug_views.DebugView"
-        permission="zope.ManageContent"
-        />
-
-    <browser:page
-        for="*"
-        name="reset_heap"
-        attribute="reset_heap"
-        class=".debug_views.DebugView"
-        permission="zope.ManageContent"
-        />
-
-    <browser:page
-        for="*"
-        name="by_referrers"
-        attribute="by_referrers"
-        class=".debug_views.DebugView"
-        permission="zope.ManageContent"
-        />
-
-    <browser:page
-        for="*"
-        name="get_biggest_offender"
-        attribute="get_biggest_offender"
-        class=".debug_views.DebugView"
-        permission="zope.ManageContent"
-        />
-
-
-    <browser:page
-        for="*"
-        name="context_refs.png"
-        attribute="context_refs"
-        class=".debug_views.DebugView"
-        permission="zope.ManageContent"
-        />
-
-    <browser:page
-        for="*"
-        name="breakpoint"
-        attribute="breakpoint"
-        class=".debug_views.DebugView"
-        permission="zope.ManageContent"
-        />
-
-     <browser:resourceDirectory
-	      name="history"
- 	      directory="resources/history"
-              permission="zope.ManageContent"
- 	      />
-
-      <browser:resource
-          name="debug.css"
-          file="./zpt/debug.css"
-          />
-
-
-
-</configure>

Deleted: z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/debug_views.py
===================================================================
--- z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/debug_views.py	2010-11-10 11:11:52 UTC (rev 118313)
+++ z3c.memhunt.objgraph/trunk/z3c/memhunt/objgraph/debug_views.py	2010-11-10 11:14:48 UTC (rev 118314)
@@ -1,177 +0,0 @@
-import sys
-import gc
-import types
-from tempfile import NamedTemporaryFile
-
-try:
-    from Products.Five.browser import BrowserView
-    from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
-except ImportError:
-    from zope.app.pagetemplate.viewpagetemplatefile import ViewPageTemplateFile    
-    from zope.publisher.browser import BrowserView
-
-import checks
-import pprint 
-import guppy
-
-heapy = guppy.hpy()
-
-
-class DebugView(BrowserView):
-    __allow_access_to_unprotected_subobjects__ = 1
-
-    ref_template = ViewPageTemplateFile("zpt/ref_count.pt")
-    ref_common_template = ViewPageTemplateFile("zpt/ref_common_count.pt")
-    start_template = ViewPageTemplateFile("zpt/start.pt")
-
-    evenOddClasses = ('even','odd')
-    evenodd = 0
-
-    def start(self):
-        return self.start_template(self)
-
-    def cssclass(self):
-        """ determiner what background color to use for lists """
-        if self.evenodd != 1:
-            self.evenodd = 1
-        else:
-            self.evenodd = 0
-        return self.evenOddClasses[self.evenodd]
-
-    def ref_count(self):
-        d = {}
-        # collect all classes
-        self.garbage_containing = len(gc.garbage)
-        self.garbage_watching = len(gc.get_objects())
-        self.total_ref_count = 0
-
-        for m in sys.modules.values():
-            for sym in dir(m):
-                o = getattr (m, sym)
-                if type(o) is types.ClassType:
-                    d[o] = sys.getrefcount (o)
-
-                    # sort by refcount
-                    pairs = map (lambda x: (repr(x[0]),x[1]), d.items())
-                    pairs.sort()
-                    pairs.reverse()
-
-        self.pairs = []
-        for pair in pairs:
-            self.total_ref_count += pair[1]
-            self.pairs.append({'refcount':pair[1],
-                               'name':pair[0]})
-
-        self.pairs = sorted(self.pairs, key=lambda x: x['refcount'])
-        self.pairs.reverse()
-
-
-        return self.ref_template(self)
-
-    def most_common(self):
-        pairs = checks.most_common_types()
-        self.pairs = []
-        for pair in pairs:
-            self.pairs.append({'refcount':pair[1],
-                               'name':pair[0]})
-
-        return self.ref_common_template(self)
-
-    def display_mem(self):
-        import malloc_stats
-        return malloc_stats.malloc_stats()
-
-
-    @property
-    def target(self):
-        if getattr(self, '_target', None):
-            return getattr(self,'_target')
-
-        target =  self.request.form.get('name','')
-        if not target:
-            return None
-
-        target = target.strip('<').strip('>')
-        target = '_'.join(target.split(' ')[:-1])
-
-        coll = {}
-        for m in sys.modules.values():
-            for sym in dir(m):
-                o = getattr (m, sym)
-                if type(o) is types.ClassType:
-                    name = '_'.join(repr(o).strip('<').strip('>').split(' ')[:-1])
-                    coll[name] = o
-
-        self._target = coll.get(target, None)
-        return self._target
-
-
-
-    def view_backref(self):
-        if self.target is None:
-            return "Please select an item to introspect"
-        return self.back_ref_file
-
-
-    def view_ref(self):
-        if self.target is None:
-            return "Please select an item to introspect"
-        return self.ref_file
-
-
-    @property
-    def ref_file(self):
-        self.request.response.setHeader('content-type','image/png')
-        f = NamedTemporaryFile('wb', suffix='.png')
-        checks.show_refs([self.target], max_depth=6, filename=f.name)
-        return open(f.name,'r').read()
-
-    @property
-    def back_ref_file(self):
-        self.request.response.setHeader('content-type','image/png')
-        f = NamedTemporaryFile('wb', suffix='.png')
-        checks.show_backrefs([self.target], max_depth=6, filename=f.name)
-        return open(f.name,'r').read()
-
-
-    def context_refs(self):
-        self._target = self.context
-        return self.ref_file
-
-    def context_backrefs(self):
-        self._target = self.context
-        return self.back_ref_file
-
-    def reset_heap(self):
-        # Resets for testing
-        heapy.setrelheap()
-
-    def memory(self):
-        return pprint.pformat(heapy.heap())
-
-    # Print relative memory consumption since last sycle
-    def relative_memory(self):
-        res = pprint.pformat(heapy.heap())
-        heapy.setref()
-        return res
-
-    def by_referrers(self):
-        res = pprint.pformat(heapy.heap().byrcs)
-        return res
-
-    def get_biggest_offender(self):
-        obj = heapy.heap()[0].byrcs[0].referrers.byrcs
-        res = "SIZE: %s\n\n" % obj.domisize
-        res += pprint.pformat(obj)
-        return res
-
-    # Print relative memory consumption w/heap traversing
-    def traverse_relative_memory(self):
-        res = pprint.pformat(heapy.heap().get_rp(40))
-        heapy.setref()
-        return res
-
-    def breakpoint(self):
-        import pdb; pdb.set_trace()
-        obj = heapy.heap()
-        return "done"



More information about the checkins mailing list