#!/usr/bin/env python
'''
This helps to spot leaking Wx objects

'''
import os, sys, time
import gc
import matplotlib
import traceback
import pdb

matplotlib.use('Wx') # or TkAgg or WxAgg or QtAgg or Gtk
#matplotlib.rcParams['toolbar'] = 'toolbar2'   # None, classic, toolbar2
matplotlib.rcParams['toolbar'] = 'toolbar2'   # None, classic, toolbar2

from matplotlib._pylab_helpers import Gcf

import pylab
from matplotlib import _pylab_helpers as ph
import matplotlib.cbook as cbook
import weakref

original_objects = [id(x) for x in gc.get_objects()]

for i in range(int(sys.argv[-1])):
    fig = pylab.figure()
    fig.savefig('test')
    fig.clf()
    pylab.close(fig)
    gc.collect()
    del fig

resulting_objects = [x for x in gc.get_objects()]

print len(original_objects), len(resulting_objects)
i = 0
for b in resulting_objects:
    if "wx" in str(type(b)).lower():
        if id(b) not in original_objects:
            print "***", type(b)
                
gc.collect()
print
print 'uncollectable list:', gc.garbage
print
