[Python-ideas] feature to make traceback objects usable without references to frame locals and globals

M.-A. Lemburg mal at egenix.com
Sat Jun 26 13:03:38 CEST 2010


Greg Ewing wrote:
> ghazel at gmail.com wrote:
> 
>> I'm interested in a feature which allows users to discard the locals
>> and globals references from frames held by a traceback object.

Wouldn't it be better to write safer code and not store
a reference to the traceback object in the first place ?

Working with traceback objects can easily introduce hidden
circular references, so it usually better not access them
at all, if you don't have a need for them:

Either like this:

try:
    raise Exception
except Exception, reason:
    pass

or by using slicing:

try:
    raise Exception
except Exception, reason:
    errorclass, errorobject = sys.exc_info()[:2]
    pass

If you do need to access them, make sure you clean up
the reference as soon as you can:

try:
    raise Exception
except Exception, reason:
    errorclass, errorobject, tb = sys.exc_info()
    ...
    tb = None

> I'd like to take this further and remove the need for
> traceback objects to refer to a frame object at all.
> The standard traceback printout only needs two pieces of
> information from the traceback, the file name and line
> number.
> 
> The line number is already present in the traceback
> object. All it would take is the addition of a file name
> attribute to the traceback object, and the frame reference
> could be made optional.

How would you make that reference optional ?

The frames are needed to inspect the locals and globals
of the call stack and debugging code relies on them being
available.

Also: What's the use case for creating traceback objects
outside the Python interpreter core ?

-- 
Marc-Andre Lemburg
eGenix.com

Professional Python Services directly from the Source  (#1, Jun 26 2010)
>>> Python/Zope Consulting and Support ...        http://www.egenix.com/
>>> mxODBC.Zope.Database.Adapter ...             http://zope.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ...        http://python.egenix.com/
________________________________________________________________________
2010-07-19: EuroPython 2010, Birmingham, UK                22 days to go

::: Try our new mxODBC.Connect Python Database Interface for free ! ::::


   eGenix.com Software, Skills and Services GmbH  Pastor-Loeh-Str.48
    D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
           Registered at Amtsgericht Duesseldorf: HRB 46611
               http://www.egenix.com/company/contact/



More information about the Python-ideas mailing list