From: Andrew S. <str...@as...> - 2009-09-23 18:22:00
|
John Hunter wrote: > On Wed, Sep 23, 2009 at 12:56 PM, Andrew Straw <str...@as...> wrote: > >> John Hunter wrote: >> >>> On Wed, Sep 23, 2009 at 12:42 PM, Andrew Straw <str...@as...> wrote: >>> >>> >>> >>>> Sorry, I should have been more clear. I was thinking that the >>>> image_compare() decorator would call the test function multiple times, >>>> having switched the backend between invocations. Thus, the call to >>>> savefig() would continue not to explicitly set the extension. I've >>>> quickly modified the source to reflect my idea, but I haven't had a >>>> chance to flesh it out or test it. It should show the idea, though. See >>>> attached. >>>> >>>> >>> Why not have the decorator pass the extension in to the test funcs -- >>> agg can print to pdf, ps, svg and png >>> >>> >> I'm not sure what you're suggesting. Presumably if we're driving agg OK >> to draw .png, it will also draw .pdf OK (or does it have a pdf vector >> backend independent of the MPL pdf backend that we want to test separately?) >> > > No, it doesn't have a separate backend, but the backend_agg figure > canvas savefig method knows how to create FigureCanvasPDF etc to use > that backend to write the file w/o having to switch the default > backend with all the attendant hassles. So if you are using *Agg, and > do > > savefig(somefile.pdf) > > agg will load the native pdf backend and use it. So I was envisioning > > def test_something(ext): > make_plot > fig.savefig('myfile.%s'%ext) > > and having the decorator pass in the extensions it wants one-by-one > I see. Is there something like backend_agg.set_default_savefig_extension()? That would achieve both of our goals. So maybe if it doesn't exist it would be easy to add in? -Andrew |