[Python-Dev] Asynchronous use of Traceback objects (original) (raw)
Christopher Armstrong radeex at gmail.com
Mon Sep 5 02:34:00 CEST 2005
- Previous message: [Python-Dev] Asynchronous use of Traceback objects
- Next message: [Python-Dev] Replacement for print in Python 3.0
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 9/4/05, Michael Hudson <mwh at python.net> wrote:
Christopher Armstrong <radeex at gmail.com> writes:
> I had the idea to create a fake Traceback object in Python that > doesn't hold references to any frame objects, but is still able to be > passed to 'raise' and formatted as tracebacks are, etc. Unfortunately, > raise does a type check on its third argument and, besides, it seems > the traceback formatting functions are very reliant on the internal > structure of traceback objects, so that didn't work. An option you may not have considered is to ditch the C code that formats tracebacks and always use traceback.py (this has a few obvious problems -- what do you do if traceback.py fails to import, what if formatting the traceback raises an error -- but nothing too horrendous, I think). Less duplication and less C code are always good things (IMHO, at least).
The problem is, I can't tell Python to use traceback.py to format specifically these tracebacks. Or are you suggesting replacing all of Python's internal traceback printing stuff with traceback.py? I think that's a great idea, and it's what I assumed happened before I found these C-coded printing routines. On the other hand, that has the same problem that the "change to python attribute access" has, specifically that it requires a change to CPython itself, and can't be done in an extension module. But that's a purely selfish concern. :)
I'm pretty close to getting the extension module that constructs frames, but I'm dealing with segfaults now. Man, PyFrame_New does some weird stuff. :) I may try for another day to get the extension module working, then perhaps give up and try on one of the hacking-CPython strategy.
> One concern is that I really don't like requiring C modules to use > Twisted; all of the ones currently in there are optional.
Well, presumably this is optional too -- you only need it if you want informative tracebacks...
Yes, that's true.
--
Twisted | Christopher Armstrong: International Man of Twistery
Radix | -- http://radix.twistedmatrix.com
| Release Manager, Twisted Project
\\V/// | -- http://twistedmatrix.com
|o O| |
w----v----w-+
- Previous message: [Python-Dev] Asynchronous use of Traceback objects
- Next message: [Python-Dev] Replacement for print in Python 3.0
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]