diff options
author | Tor Norbye <tnorbye@google.com> | 2014-08-20 17:01:23 -0700 |
---|---|---|
committer | Tor Norbye <tnorbye@google.com> | 2014-08-20 17:01:23 -0700 |
commit | 1aa2e09bdbd413eacb677e9fa4b50630530d0656 (patch) | |
tree | 2f4cc6d69645bd460aa253fdecb606d764fbd25d /python/helpers/pydev/pydevd_xml.py | |
parent | 02cf98d65c798d368fcec43ed64a001d513bdd4f (diff) | |
download | idea-1aa2e09bdbd413eacb677e9fa4b50630530d0656.tar.gz |
Snapshot idea/138.1696 from git://git.jetbrains.org/idea/community.git
Change-Id: I50c97b83a815ce635e49a38380ba5b8765e4b16a
Diffstat (limited to 'python/helpers/pydev/pydevd_xml.py')
-rw-r--r-- | python/helpers/pydev/pydevd_xml.py | 47 |
1 files changed, 30 insertions, 17 deletions
diff --git a/python/helpers/pydev/pydevd_xml.py b/python/helpers/pydev/pydevd_xml.py index ac3f71cd9566..52bb186bc58e 100644 --- a/python/helpers/pydev/pydevd_xml.py +++ b/python/helpers/pydev/pydevd_xml.py @@ -1,6 +1,7 @@ import pydev_log import traceback import pydevd_resolver +import sys from pydevd_constants import * #@UnusedWildImport from pydev_imports import quote @@ -146,9 +147,9 @@ def frameVarsToXML(frame_f_locals): pydev_log.error("Unexpected error, recovered safely.\n") return xml - - -def varToXML(val, name, doTrim=True): + + +def varToXML(val, name, doTrim=True, additionalInXml=''): """ single variable or dictionary to xml representation """ is_exception_on_eval = isinstance(val, ExceptionOnEvaluate) @@ -162,19 +163,22 @@ def varToXML(val, name, doTrim=True): try: if hasattr(v, '__class__'): - try: - cName = str(v.__class__) - if cName.find('.') != -1: - cName = cName.split('.')[-1] - - elif cName.find("'") != -1: #does not have '.' (could be something like <type 'int'>) - cName = cName[cName.index("'") + 1:] - - if cName.endswith("'>"): - cName = cName[:-2] - except: - cName = str(v.__class__) - value = '%s: %s' % (cName, v) + if v.__class__ == frame_type: + value = pydevd_resolver.frameResolver.getFrameName(v) + else: + try: + cName = str(v.__class__) + if cName.find('.') != -1: + cName = cName.split('.')[-1] + + elif cName.find("'") != -1: #does not have '.' (could be something like <type 'int'>) + cName = cName[cName.index("'") + 1:] + + if cName.endswith("'>"): + cName = cName[:-2] + except: + cName = str(v.__class__) + value = '%s: %s' % (cName, v) else: value = str(v) except: @@ -218,4 +222,13 @@ def varToXML(val, name, doTrim=True): else: xmlCont = '' - return ''.join((xml, xmlValue, xmlCont, ' />\n')) + return ''.join((xml, xmlValue, xmlCont, additionalInXml, ' />\n')) + +if USE_PSYCO_OPTIMIZATION: + try: + import psyco + + varToXML = psyco.proxy(varToXML) + except ImportError: + if hasattr(sys, 'exc_clear'): #jython does not have it + sys.exc_clear() #don't keep the traceback -- clients don't want to see it |