[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