From: Ted D. <ted...@jp...> - 2004-12-13 19:58:17
|
John, I think the push/pop functions are going to be fairly useful (ipush and ipop??). We're going to be writing a lot scripts (i.e. functions) that generate plots for our users. There is no way to tell inside the script if it's going to be used by a user in interactive mode or by another script (like a batch report generator). Having push/pop would let me do: def stdPlot( [inputs] ): ipush( False ) try: [ create plot ] finally: ipop() Of course it's pretty easy to roll your own but I think it would be nice to have it in the standard set of commands. At 05:54 AM 12/12/2004, John Hunter wrote: > >>>>> "Perry" == Perry Greenfield <pe...@st...> writes: > > Perry> In thinking about the ioff(), ion() approach it occurs to > Perry> me that it may not be quite so simple for scripts. I think > Perry> a common desire is for a script or function to turn off > Perry> interactive mode if it is on, but at the end, restore the > Perry> previous interactive state. In this case a push/pop > Perry> approach to interactive mode may be more appropriate rather > Perry> than stop/start. In particular, if interactive mode > Perry> happended to be off, you wouldn't want to turn it on at the > Perry> end of the script. > >BTW, Eric emailed me off list. It appears that running his script in >interactive mode was the root cause of his performance problems. > >In regards to running scripts from the python shell, I think the least >invasive approach is to write a run function that stores the >interactive state, calls ioff, runs the script with execfile, then >calls ion (precisely what ipython does). In fact, perhaps we should >add a run function to the pylab interface which does just this. >Fernando could simply override this function if he wants to do some >additional ipython magic. But this would wrap the logic for those who >want to run scripts from the other python shell. Of course it would >only work for non-image backends and Tk, or GUI backends associated >with a GUI shell like pycrust. > >I'm less worried about people inadvertently running scripts from the >command shell with interactive set to True, because interactive >defaults to False in rc and thus the person would have had to >intentionally change it, at least at some point in dark history. >Hence they are probably aware of it. Singing the praises of ipython >yet again, I leave the default in my rc to False, and run ipython when >I want to work interactively, letting ipython turn interaction on for >me. Thus I can run python somescript.py from the command shell assured >that it is off, and still use matplotlib interactively w/o having to >tweak the setting. > >But if there is some concern for users who would like to leave >interactive on in rc (eg they like to use the standard python shell or >some other shell) and still be able to get the efficiency when running >scripts from the command shell, it might be possible to inspect >whether we are in a running in a python shell, and plug this >additional information into draw_if_interactive. Something like > >def draw_if_interactive(): > if running_in_python_shell() and matplotlib.is_interactive(): > canvas.draw() > >Anyone know how to determine whether you are running code in a python >shell versus running a script, eg from a command shell? > >It occurs to me that "interactive" is not really the best name for >this matplotlib state. Really we want something that conveys >"draw_after_every_plot_command". When I named it, I was assuming that >when working interactively you would want to update with every plot >command, but have learned that this is not always the case. Do you >think it's worth coming up with new names (isdraw(), >draw_always(True/False), etc, while preserving the old names for a >while with deprecation)? Because that's what we're really doing, >controlling the drawing. > >JDH > > > > > >------------------------------------------------------- >SF email is sponsored by - The IT Product Guide >Read honest & candid reviews on hundreds of IT Products from real users. >Discover which products truly live up to the hype. Start reading now. >http://productguide.itmanagersjournal.com/ >_______________________________________________ >Matplotlib-users mailing list >Mat...@li... >https://lists.sourceforge.net/lists/listinfo/matplotlib-users Ted Drain Jet Propulsion Laboratory ted...@jp... |