def get_examples(table): term_use = dict_from_keys_init(table.keys(), set) required, other = get_standard_keywords() for filename in locate_files('*py', get_paths('examples/')[0]): try: conf = ProblemConf.from_file(filename, required, other, verbose=False) except: continue ebase = filename.split('examples/')[1] lbase = os.path.splitext(ebase)[0] label = lbase.replace('/', '-') pyfile_name = ebase.split('/')[1] if pyfile_name in omits: continue use = conf.options.get('use_equations', 'equations') eqs_conf = getattr(conf, use) for key, eq_conf in six.iteritems(eqs_conf): term_descs = parse_definition(eq_conf) for td in term_descs: term_use[td.name].add(label) return term_use
def main(): parser = OptionParser(usage=usage, version='%prog') parser.add_option('-c', '--counts', action='store_true', dest='counts', default=False, help=helps['counts']) parser.add_option('-u', '--unused', action='store_true', dest='unused', default=False, help=helps['unused']) options, args = parser.parse_args() if len(args) > 0: pdf_dir = os.path.realpath(args[0]) else: parser.print_help(), return required, other = get_standard_keywords() terms_use = dict_from_keys_init(term_table.keys(), set) for filename in locate_files('*.py', pdf_dir): base = filename.replace(pdf_dir, '').lstrip(os.path.sep) output('trying "%s"...' % base) try: conf = ProblemConf.from_file(filename, required, other, verbose=False) except: output('...failed') continue use = conf.options.get('use_equations', 'equations') eqs_conf = getattr(conf, use) for key, eq_conf in eqs_conf.iteritems(): term_descs = parse_definition(eq_conf) for td in term_descs: terms_use[td.name].add(base) output('...ok') output('...done') if options.unused: output('unused terms:') unused = [name for name in terms_use.keys() if len(terms_use[name]) == 0] for name in sorted(unused): output(' ' + name) output('total: %d' % len(unused)) else: output('terms use:') for name, ex_names in ordered_iteritems(terms_use): output('%s: %d' % (name, len(ex_names))) if not options.counts: for ex_name in sorted(ex_names): output(' ' + ex_name)
def main(): parser = OptionParser(usage=usage, version='%prog') parser.add_option('-n', '--dry-run', action='store_true', dest='dry_run', default=False, help=help['dry_run']) options, args = parser.parse_args() if len(args) == 2: doc_dir, top_dir = [os.path.realpath(ii) for ii in args] else: parser.print_help(), return docs = set(ii for ii in locate_files('*.rst', root_dir=doc_dir)) sources = set(ii for ii in locate_files('*.py', root_dir=os.path.join(top_dir, 'sfepy')) if os.path.basename(ii) not in omits) sources.update(ii for ii in locate_files('*.pyx', root_dir=os.path.join(top_dir, 'sfepy')) if os.path.basename(ii) not in omits_pyx) scripts = set(ii for ii in locate_files('*.py', root_dir=os.path.join(top_dir, 'script')) if os.path.basename(ii) not in omits) top_scripts = set(os.path.realpath(ii) for ii in fnmatch.filter(os.listdir(top_dir), '*.py') if os.path.basename(ii) not in omits) all_sources = set() all_sources.update(sources, scripts, top_scripts) cwd = os.path.realpath(os.path.curdir) + os.path.sep output.prefix = 'smd:' output('removing unneeded rst files in "%s"...' % doc_dir) for doc in sorted(docs): aux = edit_filename(doc, new_ext='.py') src1 = os.path.normpath(aux.replace(doc_dir, top_dir)) aux = edit_filename(doc, new_ext='.pyx') src2 = os.path.normpath(aux.replace(doc_dir, top_dir)) if (src1 not in all_sources) and (src2 not in all_sources): output('remove: %s' % doc.replace(cwd, '')) if not options.dry_run: os.remove(doc) output('...done') output('creating missing rst files in "%s"...' % doc_dir) for src in sorted(all_sources): aux = edit_filename(src, new_ext='.rst') doc = os.path.normpath(aux.replace(top_dir, doc_dir)) if doc not in docs: output('create: %s' % doc.replace(cwd, '')) if not options.dry_run: mod_filename = src.replace(top_dir + os.path.sep, '') mod_name = mod_filename.replace(os.path.sep, '.') mod_name = edit_filename(mod_name, new_ext='') if mod_name.startswith('sfepy'): # Module. title = mod_name + ' module' else: # Script. title = mod_filename + ' script' mod_name = mod_name.split('.')[-1] underlines = '=' * len(title) contents = doc_template % (title, underlines, mod_name) ensure_path(doc) fd = open(doc, 'w') fd.write(contents) fd.close() output('...done')
def generate_rst_files(rst_dir, examples_dir, images_dir): """ Generate Sphinx rst files for examples in `examples_dir` with images in `images_dir` and put them into `rst_dir`. Returns ------- dir_map : dict The directory mapping of examples and corresponding rst files. """ ensure_path(rst_dir + os.path.sep) output('generating rst files...') dir_map = {} for ex_filename in locate_files('*.py', examples_dir): if _omit(ex_filename): continue ebase = ex_filename.replace(examples_dir, '')[1:] base_dir = os.path.dirname(ebase) rst_filename = os.path.basename(ex_filename).replace('.py', '.rst') dir_map.setdefault(base_dir, []).append((ex_filename, rst_filename)) for dirname, filenames in dir_map.iteritems(): filenames = sorted(filenames, cmp=lambda a, b: cmp(a[1], b[1])) dir_map[dirname ] = filenames # Main index. mfd = open(os.path.join(rst_dir, 'index.rst'), 'w') mfd.write(_index % ('sfepy', 'Examples', '=' * 8)) for dirname, filenames in ordered_iteritems(dir_map): full_dirname = os.path.join(rst_dir, dirname) ensure_path(full_dirname + os.path.sep) # Subdirectory index. ifd = open(os.path.join(full_dirname, 'index.rst'), 'w') ifd.write(_index % (dirname, dirname, '=' * len(dirname))) for ex_filename, rst_filename in filenames: full_rst_filename = os.path.join(full_dirname, rst_filename) output('"%s"' % full_rst_filename.replace(rst_dir, '')[1:]) rst_filename_ns = rst_filename.replace('.rst', '') ebase = ex_filename.replace(examples_dir, '')[1:] rst_ex_filename = _make_sphinx_path(ex_filename) docstring = get_default(import_file(ex_filename).__doc__, 'missing description!') ifd.write(' %s\n' % rst_filename_ns) fig_include = '' fig_base = _get_fig_filenames(ebase, images_dir).next() for fig_filename in _get_fig_filenames(ebase, images_dir): rst_fig_filename = _make_sphinx_path(fig_filename) if os.path.exists(fig_filename): fig_include += _image % rst_fig_filename + '\n' # Example rst file. fd = open(full_rst_filename, 'w') fd.write(_include % (fig_base, ebase, '=' * len(ebase), docstring, fig_include, rst_ex_filename, rst_ex_filename)) fd.close() ifd.close() mfd.write(' %s/index\n' % dirname) mfd.close() output('...done') return dir_map
def generate_images(images_dir, examples_dir): """ Generate images from results of running examples found in `examples_dir` directory. The generated images are stored to `images_dir`, """ from sfepy.applications import solve_pde from sfepy.postprocess.viewer import Viewer from sfepy.postprocess.utils import mlab prefix = output.prefix output_dir = tempfile.mkdtemp() trunk = os.path.join(output_dir, 'result') options = Struct(output_filename_trunk=trunk, output_format='vtk', save_ebc=False, save_ebc_nodes=False, save_regions=False, save_field_meshes=False, save_regions_as_groups=False, solve_not=False) default_views = {'' : {}} ensure_path(images_dir + os.path.sep) view = Viewer('', offscreen=False) for ex_filename in locate_files('*.py', examples_dir): if _omit(ex_filename): continue output.level = 0 output.prefix = prefix ebase = ex_filename.replace(examples_dir, '')[1:] output('trying "%s"...' % ebase) try: problem, state = solve_pde(ex_filename, options=options) except KeyboardInterrupt: raise except: problem = None output('***** failed! *****') if problem is not None: if ebase in custom: views = custom[ebase] else: views = default_views tsolver = problem.get_time_solver() if tsolver.ts is None: suffix = None else: suffix = tsolver.ts.suffix % (tsolver.ts.n_step - 1) filename = problem.get_output_name(suffix=suffix) for suffix, kwargs in views.iteritems(): fig_filename = _get_fig_filename(ebase, images_dir, suffix) fname = edit_filename(filename, suffix=suffix) output('displaying results from "%s"' % fname) disp_name = fig_filename.replace(sfepy.data_dir, '') output('to "%s"...' % disp_name.lstrip(os.path.sep)) view.filename = fname view(scene=view.scene, show=False, is_scalar_bar=True, **kwargs) view.save_image(fig_filename) mlab.clf() output('...done') remove_files(output_dir) output('...done')
def generate_images(images_dir, examples_dir): """ Generate images from results of running examples found in `examples_dir` directory. The generated images are stored to `images_dir`, """ from sfepy.applications import solve_pde from sfepy.postprocess import Viewer from sfepy.postprocess.utils import mlab prefix = output.prefix output_dir = tempfile.mkdtemp() trunk = os.path.join(output_dir, 'result') options = Struct(output_filename_trunk=trunk, output_format='vtk', save_ebc=False, save_ebc_nodes=False, save_regions=False, save_field_meshes=False, save_regions_as_groups=False, solve_not=False) default_views = {'' : {}} ensure_path(images_dir + os.path.sep) view = Viewer('', offscreen=False) for ex_filename in locate_files('*.py', examples_dir): if _omit(ex_filename): continue output.level = 0 output.prefix = prefix ebase = ex_filename.replace(examples_dir, '')[1:] output('trying "%s"...' % ebase) try: problem, state = solve_pde(ex_filename, options=options) except KeyboardInterrupt: raise except: problem = None output('***** failed! *****') if problem is not None: if ebase in custom: views = custom[ebase] else: views = default_views tsolver = problem.get_time_solver() if tsolver.ts is None: suffix = None else: suffix = tsolver.ts.suffix % (tsolver.ts.n_step - 1) filename = problem.get_output_name(suffix=suffix) for suffix, kwargs in views.iteritems(): fig_filename = _get_fig_filename(ebase, images_dir, suffix) fname = edit_filename(filename, suffix=suffix) output('displaying results from "%s"' % fname) disp_name = fig_filename.replace(sfepy.data_dir, '') output('to "%s"...' % disp_name.lstrip(os.path.sep)) view.filename = fname view(scene=view.scene, show=False, is_scalar_bar=True, fig_filename=fig_filename, **kwargs) mlab.clf() output('...done') remove_files(output_dir) output('...done')
def generate_rst_files(rst_dir, examples_dir, images_dir): """ Generate Sphinx rst files for examples in `examples_dir` with images in `images_dir` and put them into `rst_dir`. Returns ------- dir_map : dict The directory mapping of examples and corresponding rst files. """ ensure_path(rst_dir + os.path.sep) output('generating rst files...') dir_map = {} for ex_filename in locate_files('*.py', examples_dir): if _omit(ex_filename): continue ebase = ex_filename.replace(examples_dir, '')[1:] base_dir = os.path.dirname(ebase) rst_filename = os.path.basename(ex_filename).replace('.py', '.rst') dir_map.setdefault(base_dir, []).append((ex_filename, rst_filename)) for dirname, filenames in dir_map.iteritems(): filenames = sorted(filenames, cmp=lambda a, b: cmp(a[1], b[1])) dir_map[dirname ] = filenames # Main index. mfd = open(os.path.join(rst_dir, 'index.rst'), 'w') mfd.write(_index % ('sfepy', 'SfePy autogenerated gallery', '=' * 27)) for dirname, filenames in ordered_iteritems(dir_map): full_dirname = os.path.join(rst_dir, dirname) ensure_path(full_dirname + os.path.sep) # Subdirectory index. ifd = open(os.path.join(full_dirname, 'index.rst'), 'w') ifd.write(_index % (dirname, dirname, '=' * len(dirname))) for ex_filename, rst_filename in filenames: full_rst_filename = os.path.join(full_dirname, rst_filename) output('"%s"' % full_rst_filename.replace(rst_dir, '')[1:]) rst_filename_ns = rst_filename.replace('.rst', '') ebase = ex_filename.replace(examples_dir, '')[1:] rst_ex_filename = _make_sphinx_path(ex_filename) docstring = get_default(import_file(ex_filename).__doc__, 'missing description!') ifd.write(' %s\n' % rst_filename_ns) fig_include = '' fig_base = _get_fig_filenames(ebase, images_dir).next() for fig_filename in _get_fig_filenames(ebase, images_dir): rst_fig_filename = _make_sphinx_path(fig_filename) if os.path.exists(fig_filename): fig_include += _image % rst_fig_filename + '\n' # Example rst file. fd = open(full_rst_filename, 'w') fd.write(_include % (fig_base, ebase, '=' * len(ebase), docstring, fig_include, rst_ex_filename, rst_ex_filename)) fd.close() ifd.close() mfd.write(' %s/index\n' % dirname) mfd.close() output('...done') return dir_map
def main(): parser = OptionParser(usage=usage, version='%prog') parser.add_option('-c', '--counts', action='store_true', dest='counts', default=False, help=helps['counts']) parser.add_option('-u', '--unused', action='store_true', dest='unused', default=False, help=helps['unused']) options, args = parser.parse_args() if len(args) > 0: pdf_dir = os.path.realpath(args[0]) else: parser.print_help(), return required, other = get_standard_keywords() terms_use = dict_from_keys_init(term_table.keys(), set) for filename in locate_files('*.py', pdf_dir): base = filename.replace(pdf_dir, '').lstrip(os.path.sep) output('trying "%s"...' % base) try: conf = ProblemConf.from_file(filename, required, other, verbose=False) except: output('...failed') continue use = conf.options.get('use_equations', 'equations') eqs_conf = getattr(conf, use) for key, eq_conf in eqs_conf.iteritems(): term_descs = parse_definition(eq_conf) for td in term_descs: terms_use[td.name].add(base) output('...ok') output('...done') if options.unused: output('unused terms:') unused = [ name for name in terms_use.keys() if len(terms_use[name]) == 0 ] for name in sorted(unused): output(' ' + name) output('total: %d' % len(unused)) else: output('terms use:') for name, ex_names in ordered_iteritems(terms_use): output('%s: %d' % (name, len(ex_names))) if not options.counts: for ex_name in sorted(ex_names): output(' ' + ex_name)
def generate_rst_files(rst_dir, examples_dir, images_dir): """ Generate Sphinx rst files for examples in `examples_dir` with images in `images_dir` and put them into `rst_dir`. Returns ------- dir_map : dict The directory mapping of examples and corresponding rst files. """ ensure_path(rst_dir + os.path.sep) output("generating rst files...") dir_map = {} for ex_filename in locate_files("*.py", examples_dir): if _omit(ex_filename): continue ebase = ex_filename.replace(examples_dir, "")[1:] base_dir = os.path.dirname(ebase) rst_filename = os.path.basename(ex_filename).replace(".py", ".rst") dir_map.setdefault(base_dir, []).append((ex_filename, rst_filename)) for dirname, filenames in dir_map.iteritems(): filenames = sorted(filenames, cmp=lambda a, b: cmp(a[1], b[1])) dir_map[dirname] = filenames # Main index. mfd = open(os.path.join(rst_dir, "index.rst"), "w") mfd.write(_index % ("sfepy", "SfePy autogenerated gallery", "=" * 27)) for dirname, filenames in ordered_iteritems(dir_map): full_dirname = os.path.join(rst_dir, dirname) ensure_path(full_dirname + os.path.sep) # Subdirectory index. ifd = open(os.path.join(full_dirname, "index.rst"), "w") ifd.write(_index % (dirname, dirname, "=" * len(dirname))) for ex_filename, rst_filename in filenames: full_rst_filename = os.path.join(full_dirname, rst_filename) output('"%s"' % full_rst_filename.replace(rst_dir, "")[1:]) rst_filename_ns = rst_filename.replace(".rst", "") ebase = ex_filename.replace(examples_dir, "")[1:] rst_ex_filename = _make_sphinx_path(ex_filename) docstring = get_default(import_file(ex_filename).__doc__, "missing description!") ifd.write(" %s\n" % rst_filename_ns) fig_include = "" fig_base = _get_fig_filenames(ebase, images_dir).next() for fig_filename in _get_fig_filenames(ebase, images_dir): rst_fig_filename = _make_sphinx_path(fig_filename) if os.path.exists(fig_filename): fig_include += _image % rst_fig_filename + "\n" # Example rst file. fd = open(full_rst_filename, "w") fd.write( _include % (fig_base, ebase, "=" * len(ebase), docstring, fig_include, rst_ex_filename, rst_ex_filename) ) fd.close() ifd.close() mfd.write(" %s/index\n" % dirname) mfd.close() output("...done") return dir_map
def main(): parser = ArgumentParser(description=__doc__, formatter_class=RawDescriptionHelpFormatter) parser.add_argument('--version', action='version', version='%(prog)s') parser.add_argument('-n', '--dry-run', action='store_true', dest='dry_run', default=False, help=help['dry_run']) parser.add_argument('doc_dir') parser.add_argument('top_dir') options = parser.parse_args() doc_dir, top_dir = [ os.path.realpath(ii) for ii in [options.doc_dir, options.top_dir] ] docs = set(ii for ii in locate_files('*.rst', root_dir=doc_dir)) sources = set( ii for ii in locate_files('*.py', root_dir=os.path.join(top_dir, 'sfepy')) if os.path.basename(ii) not in omits) sources.update(ii for ii in locate_files( '*.pyx', root_dir=os.path.join(top_dir, 'sfepy')) if os.path.basename(ii) not in omits_pyx) scripts = set(ii for ii in locate_files( '*.py', root_dir=os.path.join(top_dir, 'script')) if os.path.basename(ii) not in omits) top_scripts = set( os.path.realpath(ii) for ii in fnmatch.filter(os.listdir(top_dir), '*.py') if os.path.basename(ii) not in omits) all_sources = set() all_sources.update(sources, scripts, top_scripts) cwd = os.path.realpath(os.path.curdir) + os.path.sep output.prefix = 'smd:' output('removing unneeded rst files in "%s"...' % doc_dir) for doc in sorted(docs): aux = edit_filename(doc, new_ext='.py') src1 = os.path.normpath(aux.replace(doc_dir, top_dir)) aux = edit_filename(doc, new_ext='.pyx') src2 = os.path.normpath(aux.replace(doc_dir, top_dir)) if (src1 not in all_sources) and (src2 not in all_sources): output('remove: %s' % doc.replace(cwd, '')) if not options.dry_run: os.remove(doc) output('...done') output('creating missing rst files in "%s"...' % doc_dir) for src in sorted(all_sources): aux = edit_filename(src, new_ext='.rst') doc = os.path.normpath(aux.replace(top_dir, doc_dir)) if doc not in docs: output('create: %s' % doc.replace(cwd, '')) if not options.dry_run: mod_filename = src.replace(top_dir + os.path.sep, '') mod_name = mod_filename.replace(os.path.sep, '.') mod_name = edit_filename(mod_name, new_ext='') if mod_name.startswith('sfepy'): # Module. title = mod_name + ' module' else: # Script. title = mod_filename + ' script' mod_name = mod_name.split('.')[-1] underlines = '=' * len(title) contents = doc_template % (title, underlines, mod_name) ensure_path(doc) fd = open(doc, 'w') fd.write(contents) fd.close() output('...done')
def generate_rst_files(rst_dir, examples_dir, images_dir): """ Generate Sphinx rst files for examples in `examples_dir` with images in `images_dir` and put them into `rst_dir`. Returns ------- dir_map : dict The directory mapping of examples and corresponding rst files. """ ensure_path(rst_dir + os.path.sep) output('generating rst files...') dir_map = {} for ex_filename in locate_files('*.py', examples_dir): if _omit(ex_filename): continue ebase = ex_filename.replace(examples_dir, '')[1:] base_dir = os.path.dirname(ebase) rst_filename = ebase2fbase(ebase) + '.rst' dir_map.setdefault(base_dir, []).append((ex_filename, rst_filename)) for dirname, filenames in six.iteritems(dir_map): filenames = sorted(filenames, key=lambda a: a[1]) dir_map[dirname] = filenames # Main index. mfd = open(os.path.join(rst_dir, 'index.rst'), 'w') mfd.write(_index % ('examples', 'Examples', '=' * 8)) for dirname, filenames in ordered_iteritems(dir_map): # Subdirectory index. ifd = open(os.path.join(rst_dir, '%s-index.rst' % dirname), 'w') ifd.write(_index % (dirname + '-examples', dirname, '=' * len(dirname))) for ex_filename, rst_filename in filenames: full_rst_filename = os.path.join(rst_dir, rst_filename) output('"%s"' % rst_filename) ebase = ex_filename.replace(examples_dir, '')[1:] rst_base = os.path.splitext(rst_filename)[0] rst_ex_filename = _make_sphinx_path(ex_filename) docstring = get_default(import_file(ex_filename).__doc__, 'missing description!') ifd.write(' %s <%s>\n' % (os.path.basename(ebase), rst_base)) fig_include = '' for fig_filename in _get_fig_filenames(ebase, images_dir): rst_fig_filename = _make_sphinx_path(fig_filename) if os.path.exists(fig_filename): fig_include += _image % rst_fig_filename + '\n' else: output(' warning: figure "%s" not found' % fig_filename) # Example rst file. fd = open(full_rst_filename, 'w') fd.write(_include % (rst_base, ebase, '=' * len(ebase), docstring, fig_include, rst_ex_filename, rst_ex_filename)) fd.close() ifd.close() mfd.write(' %s-index\n' % dirname) mfd.close() output('...done') return dir_map
def generate_images(images_dir, examples_dir): """ Generate images from results of running examples found in `examples_dir` directory. The generated images are stored to `images_dir`, """ from sfepy.applications import solve_pde from sfepy.postprocess import Viewer from sfepy.postprocess.utils import mlab prefix = output.prefix output_dir = tempfile.mkdtemp() trunk = os.path.join(output_dir, "result") options = Struct( output_filename_trunk=trunk, output_format="vtk", save_ebc=False, save_regions=False, save_field_meshes=False, save_regions_as_groups=False, solve_not=False, ) ensure_path(images_dir + os.path.sep) view = Viewer("", output_dir=output_dir, offscreen=False) for ex_filename in locate_files("*.py", examples_dir): if _omit(ex_filename): continue output.level = 0 output.prefix = prefix ebase = ex_filename.replace(examples_dir, "")[1:] output('trying "%s"...' % ebase) try: problem, state = solve_pde(ex_filename, options=options) except KeyboardInterrupt: raise except: problem = None output("***** failed! *****") if problem is not None: fig_filename = _get_fig_filename(ebase, images_dir)[1] if problem.ts_conf is None: filename = trunk + ".vtk" else: suffix = problem.ts.suffix % problem.ts.step filename = problem.get_output_name(suffix=suffix) output('displaying results from "%s"' % filename) output('to "%s"...' % fig_filename.replace(sfepy.data_dir, "")[1:]) view.filename = filename view(scene=view.scene, show=False, is_scalar_bar=True, fig_filename=fig_filename) mlab.clf() output("...done") remove_files(output_dir) output("...done")