[pypy-svn] r4924 - pypy/branch/src-newobjectmodel/pypy/tool/tb_server

mwh at codespeak.net mwh at codespeak.net
Fri Jun 4 18:53:55 CEST 2004


Author: mwh
Date: Fri Jun  4 18:53:54 2004
New Revision: 4924

Modified:
   pypy/branch/src-newobjectmodel/pypy/tool/tb_server/render.py
Log:
very preliminary show locals support


Modified: pypy/branch/src-newobjectmodel/pypy/tool/tb_server/render.py
==============================================================================
--- pypy/branch/src-newobjectmodel/pypy/tool/tb_server/render.py	(original)
+++ pypy/branch/src-newobjectmodel/pypy/tool/tb_server/render.py	Fri Jun  4 18:53:54 2004
@@ -21,13 +21,15 @@
         self.__dict__.update(kw)
         self.query = cgi.parse_qs(self.query)
 
-    def link_with_options(self, *kw):
-        nq = self.query.copy()
+    def link_with_options(self, kw):
+        nq = {}
+        for k in self.query:
+            nq[k] = self.query[k][0]
         nq.update(kw)
         query = urllib.urlencode(nq)
         from urlparse import urlunparse
-        return urlunparse(self.scm, self.netloc, self.path,
-                          self.params, query, self.fragment)
+        return urlunparse(('', self.netloc, self.path,
+                           self.params, query, self.fragment))
 
 class Renderer:
     def render(self, path):
@@ -69,6 +71,7 @@
         for tb in dyncode.listtb(self.exc[2]):
             lines.append(self.render_tb(url, tb, i,
                                         **opts.get('entry' + str(i), {})))
+            i += 1
             
         lines.append(html.pre(xml.escape(
             ''.join(traceback.format_exception_only(self.exc[0], self.exc[1])))))
@@ -83,7 +86,15 @@
         lines.append('  File "%s", line %d, in %s\n'%(
             html.a(filename, href=link).to_unicode().encode('utf-8'),
             lineno, name))
-        lines.append('        '+dyncode.getline(filename, lineno).lstrip())
+        lines.append(html.a('locals', href=url.link_with_options(
+            {'entry%s:showlocals'%i:1-showlocals})))
+        lines.append('       ' + 
+                     dyncode.getline(filename, lineno).lstrip())
+        if showlocals:
+            for k, v in tb.tb_frame.f_locals.items():
+                if k[0] == '_':
+                    continue
+                lines.append(xml.escape('%s=%s\n'%(k, repr(v)[:50])))
         return lines
         
 



More information about the Pypy-commit mailing list