On Thu, 03 Nov 2005 14:23:53 +1000, Paul Cochrane <[EMAIL PROTECTED]> wrote:
>On Wed, 02 Nov 2005 06:33:28 +0000, Bengt Richter wrote: > >> On Wed, 2 Nov 2005 06:08:22 +0000 (UTC), Paul Cochrane <[EMAIL PROTECTED]> >> wrote: >> >>>Hi all, >>> >>>I've got an application that I'm writing that autogenerates python code >>>which I then execute with exec(). I know that this is not the best way to >>>run things, and I'm not 100% sure as to what I really should do. I've had a >>>look through Programming Python and the Python Cookbook, which have given me >>>ideas, but nothing has gelled yet, so I thought I'd put the question to the >>>community. But first, let me be a little more detailed in what I want to >>>do: >>> > >Bengt, > >Thanks for your reply! > >> It's a little hard to tell without knowing more about your >> user input (command language?) syntax that is translated to >> or feeds the process that "autogenerates python code". >Ok, I'll try and clarify things as much as I can. > [...snip great reply...] I owe you another reply, but I started and I couldn't spend the time to do it justice. But in the meanwhile, I would suggest thinking about how the MVC (model-view-controller) concept might help you factor things. ISTM you are already part way there. See http://en.wikipedia.org/wiki/MVC for some infos. To that I'd add that if you want a top level interactive visualization tool, you might want to look at it like a kind of IDE, where you might want a few workspace/project kind of top level commands to help manage what you would otherwise do by way of manually creating directory subtrees for various things etc. Anyway, if you want to use template code and edit it and then compile and run it, you could select templates and make working copies automatically and invoke some favorite editor on it from the top level command interpreter. Having these pieces consistently arranged in projects/workspaces and shared template spaces etc. would make it a single command to create a fresh space and not worry about colliding with something you did just to show someone a little demo, etc. This is not the central topic, but good useability is nice ;-) That way if you just wanted to re-run something, you'd just select it and skip calling the editor. Or if a step was to generate data, you could either create the data source program by several steps or possibly just go on to define or invoke a visualization step with a particular renderer and/or output, knowing that the data source was already set up in a standard way. You could also consider borrowing unix piping/redirection concepts for some command syntax, for composition of standard interface actions (not to mention invoking the real thing in a subprocess when appropriate). Just free-associating here ;-) Anyway, gotta go for now, sorry. Regards, Bengt Richter -- http://mail.python.org/mailman/listinfo/python-list