def parse_plots(plot_types, table_overrides): def get_module_base(n): return n def get_super_base(n): return "plot" module_specs = [] for plot in plot_types: port_specs = {} print "========================================" print plot print "========================================" (plot, module_name, super_name) = \ get_names(plot, get_module_base, get_super_base, "Mpl", "") try: plot_obj = getattr(matplotlib.pyplot, plot) except AttributeError: print '*** CANNOT ADD PLOT "%s";' \ 'IT DOES NOT EXIST IN THIS MPL VERSION ***' % plot continue port_specs_list = parse_argspec(plot_obj) for port_spec in port_specs_list: port_specs[port_spec.arg] = port_spec docstring = plot_obj.__doc__ if plot == 'contour': # want to change the double newline to single newline... print "&*&* FINDING:", \ docstring.find("*extent*: [ *None* | (x0,x1,y0,y1) ]\n\n") docstring = docstring.replace("*extent*: [ *None* | (x0,x1,y0,y1) ]\n\n", "*extent*: [ *None* | (x0,x1,y0,y1) ]\n") if plot == 'annotate': docstring = docstring % dict((k,v) for k, v in matplotlib.docstring.interpd.params.iteritems() if k == 'Annotation') elif plot == 'barbs': docstring = docstring % dict((k,v) for k,v in matplotlib.docstring.interpd.params.iteritems() if k == 'barbs_doc') cleaned_docstring, output_port_specs = \ process_docstring(docstring, port_specs, ('pyplot', plot), table_overrides) # for port_spec in port_specs.itervalues(): # if port_spec.defaults is not None: # port_spec.defaults = [str(v) for v in port_spec.defaults] # if port_spec.values is not None: # port_spec.values = [[str(v) for v in port_spec.values[0]]] # for alt_ps in port_spec.alternate_specs: # if alt_ps.defaults is not None: # alt_ps.defaults = [str(v) for v in alt_ps.defaults] # if alt_ps.values is not None: # alt_ps.values = [[str(v) for v in alt_ps.values[0]]] module_specs.append(ModuleSpec(module_name, super_name, "matplotlib.pyplot.%s" % plot, cleaned_docstring, port_specs.values(), output_port_specs)) my_specs = SpecList(module_specs) return my_specs
def parse_plots(plot_types, table_overrides): def get_module_base(n): return n def get_super_base(n): return "plot" module_specs = [] for plot in plot_types: port_specs = {} print "========================================" print plot print "========================================" (plot, module_name, super_name) = \ get_names(plot, get_module_base, get_super_base, "Mpl", "") try: plot_obj = getattr(matplotlib.pyplot, plot) except AttributeError: print '*** CANNOT ADD PLOT "%s";' \ 'IT DOES NOT EXIST IN THIS MPL VERSION ***' % plot continue # argspec = inspect.getargspec(plot_obj) # print argspec # if argspec.defaults is None: # start_defaults = len(argspec.args) + 1 # else: # start_defaults = len(argspec.args) - len(argspec.defaults) # for i, arg in enumerate(argspec.args): # port_specs[arg] = PortSpec(arg, arg) # if i >= start_defaults: # port_specs[arg].required = False # default_val = argspec.defaults[i-start_defaults] # if default_val is not None: # port_specs[arg].defaults = [str(default_val)] # port_type = get_type_from_val(default_val) # if port_type is not None: # port_specs[arg].port_type = port_type # else: # port_specs[arg].required = True # # port_specs[arg].entry_types = [None,] # # port_specs[arg].values = [[]] # # port_specs[arg].translations = [None,] port_specs_list = parse_argspec(plot_obj) for port_spec in port_specs_list: port_specs[port_spec.arg] = port_spec docstring = plot_obj.__doc__ if plot == 'contour': # want to change the double newline to single newline... print "&*&* FINDING:", \ docstring.find("*extent*: [ *None* | (x0,x1,y0,y1) ]\n\n") docstring = docstring.replace("*extent*: [ *None* | (x0,x1,y0,y1) ]\n\n", "*extent*: [ *None* | (x0,x1,y0,y1) ]\n") if plot == 'annotate': docstring = docstring % dict((k,v) for k, v in matplotlib.docstring.interpd.params.iteritems() if k == 'Annotation') elif plot == 'barbs': docstring = docstring % dict((k,v) for k,v in matplotlib.docstring.interpd.params.iteritems() if k == 'barbs_doc') cleaned_docstring, output_port_specs = \ process_docstring(docstring, port_specs, ('pyplot', plot), table_overrides) module_specs.append(ModuleSpec(module_name, super_name, "matplotlib.pyplot.%s" % plot, cleaned_docstring, port_specs.values(), output_port_specs)) my_specs = SpecList(module_specs) return my_specs