mal at egenix.com
Fri Nov 7 13:37:31 CET 2008
On 2008-11-07 11:48, gregory.lielens at gmail.com wrote:
> On Nov 7, 11:20 am, Steven D'Aprano <st... at REMOVE-THIS-
> cybersource.com.au> wrote:
>>> What I am trying to do is to execute it "step-by-step", so that I can
>>> capture the exception if one line (or multi-line statement) fails, print
>>> a warning about the failure, and continue the execution fo the following
>>> lines/statements. Of course, an error on one line can trigger errors in
>>> the following lines, but it does not matter in the application I have in
>> I'm curious what sort of application you have where it doesn't matter
>> that programmatic statements are invalid.
> Well, it is not that it does not matter, it is that I'd like to get as
> much as possible of the input file "executed".
> The application is roughly to save a graph, and retrieve it later.
> The graph is made of a set of python classes, derived from a GraphNode
> instance but each having particular sets of new attributes.
> The storage format should be human readable and editable (this is why
> a simple pickle or equivalent is not OK), store only part of the
> database, and automatically reflect the changes of the classes (new
> attributes in old classes, new classes, ...). The format I used was
> "simply" instructions that re-create the graph...
> It works, but could be robust accross changes (basically, an old
> database read with new version of the application should
> recreate as much nodes as possible, with new attributes intialized at
> default value). The node classes allows that, but during the parsing
> when attributes names or classes names have changed, some errors can
> happen, which will not only affect those nodes but stop execution. In
> many cases, even with those error, executing the rest of the commands
> will re-create an usefull graph, of course lacking some informations
> but much more usefull that the partial graph obtained when stopping at
> the first error...
>> So basically you want to create a Python interpreter you can stop and
>> start which runs inside Python. Is that right?
> Yep, and the InteractiveConsole works very nicely for doing that :-)
Instead of creating a Python interpreter in Python (using e.g.
PyPy ... http://www.pypy.org/), you might want to look at
using a trace function using sys.settrace():
These functions are called for every line the Python interpreter
executes and have full access to the stack, variables, etc.
Professional Python Services directly from the Source (#1, Nov 07 2008)
>>> Python/Zope Consulting and Support ... http://www.egenix.com/
>>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/
:::: Try mxODBC.Zope.DA for Windows,Linux,Solaris,MacOSX 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
More information about the Python-list