Esempio n. 1
0
    def define_jobs_context(self, context):
        logger.setLevel(logging.DEBUG)

        options = self.get_options()
        src_dir = options.src
        out_dir = options.output
        generate_pdf = options.pdf
        output_file = options.output_file
        remove = options.remove
        stylesheet = options.stylesheet

        bibfile = os.path.join(src_dir, 'bibliography/bibliography.html')

        if out_dir is None:
            out_dir = os.path.join('out', 'mcdp_render_manual')

        manual_jobs(
            context,
            src_dir=src_dir,
            output_file=output_file,
            generate_pdf=generate_pdf,
            bibfile=bibfile,
            stylesheet=stylesheet,
            remove=remove,
        )
Esempio n. 2
0
File: split.py Progetto: afcarl/mcdp
    def define_jobs_context(self, context):
        ifilename = self.options.filename
        output_dir = self.options.output_dir
        mathjax = self.options.mathjax
        preamble = self.options.preamble
        #         disqus = self.options.disqus
        logger.setLevel(logging.DEBUG)

        if self.options.workers != 0:
            n = self.options.workers
        else:
            n = max(1, cpu_count() - 2)
        self.debug("Using n = %d workers" % n)

        data = open(ifilename).read()
        h = get_md5(data)[-4:]

        jobs = []
        for i in range(n):
            promise = context.comp_dynamic(go,
                                           i,
                                           n,
                                           ifilename,
                                           mathjax,
                                           preamble,
                                           output_dir,
                                           job_id='worker-%d-of-%d-%s' %
                                           (i, n, h))
            jobs.append(promise.job_id)
Esempio n. 3
0
File: cli.py Progetto: rusi/mcdp
    def define_jobs_context(self, context):
        from mcdp import logger
        logger.setLevel(logging.DEBUG)

        options = self.get_options()
        params = options.get_extra()

        if len(params) < 1:
            seeds = None
            #raise ValueError('Please specify some model names to be used as seeds.')
        else:
            seeds = params

        config_dirs = options.config_dirs.split(":")
        maindir = options.maindir
        res = context.comp(find_dependencies,
                           config_dirs=config_dirs,
                           maindir=maindir,
                           seeds=seeds)

        print('config_dirs: {}'.format(config_dirs))
        print('maindir: {}'.format(maindir))

        context.comp_dynamic(other_jobs,
                             maindir=maindir,
                             config_dirs=config_dirs,
                             outdir=options.output,
                             res=res)

        r = context.comp(draw_depgraph, res)
        context.add_report(r, 'draw')

        r = context.comp(draw_libdepgraph, res)
        context.add_report(r, 'libdepgraph')
Esempio n. 4
0
File: solve.py Progetto: rusi/mcdp
    def go(self):

        logger.setLevel(logging.DEBUG)

        options = self.get_options()

        if not options.contracts:
            logger.debug('Disabling PyContrats. Use --contracts to enable.')
            disable_all()

        if options.expect_nimp is not None:
            options.imp = True

        params = options.get_extra()

        if len(params) < 1:
            raise ValueError('Please specify model name.')

        model_name = params[0]

        # drop the extension
        if '.mcdp' in model_name or '/' in model_name:
            msg = 'The model name should not contain extension or /.'
            raise UserError(msg)

        max_steps = options.max_steps

        _exp_advanced = options.advanced
        expect_nres = options.expect_nres
        lower = options.lower
        upper = options.upper
        out_dir = options.out
        query_strings = params[1:]

        intervals = options.intervals
        imp = options.imp
        expect_nimp = options.expect_nimp
        make = options.make
        if make: imp = True

        plot = options.plot
        do_movie = options.movie

        expect_res = None

        config_dirs = options.config_dirs.split(":")
        maindir = options.maindir
        if options.cache:
            if out_dir is None:
                out_dir = 'out-mcdp_solve'
            cache_dir = os.path.join(out_dir, '_cached', 'solve')
        else:
            cache_dir = None

        solve_main(logger, config_dirs, maindir, cache_dir, model_name, lower,
                   upper, out_dir, max_steps, query_strings, intervals,
                   _exp_advanced, expect_nres, imp, expect_nimp, plot,
                   do_movie, expect_res, make)
Esempio n. 5
0
    def define_jobs_context(self, context):
        options = self.get_options()

        if options.mcdp_settings:
            MCDPManualConstants.activate_tilde_as_nbsp = False
            MCDPConstants.softy_mode = False

        logger.setLevel(logging.DEBUG)

        src = options.src
        src_dirs = [_.strip() for _ in src.split(":") if _ and _.strip()]
        self.info("Src dirs: \n" + "\n -".join(src_dirs))

        raise_errors = options.raise_errors
        out_dir = options.output
        generate_pdf = options.pdf
        output_file = options.output_file
        remove = options.remove
        stylesheet = options.stylesheet
        symbols = options.symbols
        do_last_modified = options.last_modified
        use_mathjax = True if options.mathjax else False

        logger.info('use mathjax: %s' % use_mathjax)
        logger.info('use symbols: %s' % symbols)

        if symbols is not None:
            symbols = open(symbols).read()

        if out_dir is None:
            out_dir = os.path.join('out', 'mcdp_render_manual')

        for s in src_dirs:
            check_bad_input_file_presence(s)

        resolve_references = not options.no_resolve_references

        manual_jobs(context,
                    src_dirs=src_dirs,
                    output_file=output_file,
                    generate_pdf=generate_pdf,
                    stylesheet=stylesheet,
                    remove=remove,
                    use_mathjax=use_mathjax,
                    raise_errors=raise_errors,
                    symbols=symbols,
                    resolve_references=resolve_references,
                    do_last_modified=do_last_modified)
Esempio n. 6
0
    def define_jobs_context(self, context):
        ifilename = self.options.filename
        output_dir = self.options.output_dir
        mathjax = self.options.mathjax
        preamble = self.options.preamble
        nworkers = self.options.workers
        logger.setLevel(logging.DEBUG)

        self.debug("Using n = %d workers" % nworkers)

        data = open(ifilename).read()
        data_aug = AugmentedResult()
        data_aug.set_result(data)
        create_split_jobs(context,
                          data_aug,
                          mathjax,
                          preamble,
                          output_dir,
                          nworkers=nworkers)
Esempio n. 7
0
File: eval.py Progetto: rusi/mcdp
    def go(self):
        from mcdp import logger
        logger.setLevel(logging.DEBUG)

        options = self.get_options()

        if not options.contracts:
            disable_all()

        params = options.get_extra()

        if len(params) < 1:
            raise ValueError('Please specify name.')

        name = params[0]

        config_dirs = options.config_dirs.split(":")
        maindir = options.maindir
        out_dir = options.out

        if out_dir is None:
            out_dir = os.path.join('out', 'mcdp_eval')

        if options.cache:
            cache_dir = os.path.join(out_dir, '_cached', 'solve')
        else:
            cache_dir = None

        librarian = Librarian()
        for e in config_dirs:
            librarian.find_libraries(e)

        library = librarian.get_library_by_dir(maindir)
        if cache_dir is not None:
            library.use_cache_dir(cache_dir)

        context = library._generate_context_with_hooks()
        c = library.load_constant(name, context)
        print(c)
Esempio n. 8
0
    def go(self):
        logger.setLevel(logging.DEBUG)

        options = self.get_options()

        symbols = self.options.symbols
        if symbols is not None:
            symbols = open(symbols).read()
        else:
            symbols = ''

        if not options.contracts:
            disable_all()

        stylesheet = options.stylesheet
        # make sure it exists
        get_css_filename('compiled/%s' % stylesheet)

        params = options.get_extra()

        if len(params) < 1:
            raise ValueError('Please specify name.')

        config_dirs = options.config_dirs.split(":")
        maindir = options.maindir
        out_dir = options.out

        if options.cache:
            cache_dir = os.path.join(out_dir, '_cached', 'solve')
        else:
            cache_dir = None

        librarian = Librarian()
        for e in config_dirs:
            librarian.find_libraries(e)

        library = librarian.get_library_by_dir(maindir)
        if cache_dir is not None:
            library.use_cache_dir(cache_dir)

        docs = params

        if not docs:
            msg = 'At least one argument required.'
            raise_desc(UserError, msg)

        for docname in docs:
            if '/' in docname:
                docname0 = os.path.split(docname)[-1]
                logger.info("Using %r rather than %r" % (docname0, docname))
                docname = docname0
            suffix = '.' + MCDPConstants.ext_doc_md
            if docname.endswith(suffix):
                docname = docname.replace(suffix, '')
            basename = docname + suffix
            f = library._get_file_data(basename)
            data = f['data']
            realpath = f['realpath']

            generate_pdf = options.pdf_figures
            if out_dir is None:
                use_out_dir = os.path.dirname(realpath)
            else:
                use_out_dir = os.path.join('out', 'mcdp_render')

            raise_errors = not options.forgiving
            use_mathjax = bool(options.mathjax)

            html_filename = render(library,
                                   docname,
                                   data,
                                   realpath,
                                   use_out_dir,
                                   generate_pdf,
                                   stylesheet=stylesheet,
                                   symbols=symbols,
                                   raise_errors=raise_errors,
                                   use_mathjax=use_mathjax)
            if options.pdf:
                run_prince(html_filename)
Esempio n. 9
0
    def define_jobs_context(self, context):
        options = self.get_options()

        logger.info(" ".join(sys.argv))

        if options.mcdp_settings:
            MCDPManualConstants.activate_tilde_as_nbsp = False
            MCDPConstants.softy_mode = False

        logger.setLevel(logging.DEBUG)

        def split_colons(x):
            return [_.strip() for _ in x.split(":") if _ and _.strip()]

        src_dirs = split_colons(options.src)
        resources_dirs = split_colons(options.resources)

        self.info("Src dirs: \n" + "\n -".join(src_dirs))
        self.info("Resources dirs: \n" + "\n -".join(resources_dirs))

        raise_errors = options.raise_errors
        # out_dir = options.output
        generate_pdf = options.generate_pdf
        out_split_dir = options.split
        out_pdf = options.pdf
        output_file = options.output_file
        remove = options.remove
        stylesheet = options.stylesheet
        stylesheet_pdf = options.stylesheet_pdf
        symbols = options.symbols
        do_last_modified = options.last_modified
        permalink_prefix = options.permalink_prefix
        compose_config = options.compose
        output_crossref = options.output_crossref
        wordpress_integration = options.wordpress_integration
        ignore_ref_errors = options.ignore_ref_errors
        only_refs = options.only_refs
        likebtn = options.likebtn
        extra_crossrefs = options.extra_crossrefs
        use_mathjax = True if options.mathjax else False

        logger.info('use mathjax: %s' % use_mathjax)
        logger.info('use symbols: %s' % symbols)

        if symbols is not None:
            symbols = open(symbols).read()

        for s in src_dirs:
            check_bad_input_file_presence(s)

        resolve_references = not options.no_resolve_references

        manual_jobs(context,
                    src_dirs=src_dirs,
                    resources_dirs=resources_dirs,
                    out_split_dir=out_split_dir,
                    output_file=output_file,
                    generate_pdf=generate_pdf,
                    stylesheet=stylesheet,
                    stylesheet_pdf=stylesheet_pdf,
                    remove=remove,
                    use_mathjax=use_mathjax,
                    raise_errors=raise_errors,
                    symbols=symbols,
                    out_pdf=out_pdf,
                    resolve_references=resolve_references,
                    do_last_modified=do_last_modified,
                    permalink_prefix=permalink_prefix,
                    compose_config=compose_config,
                    output_crossref=output_crossref,
                    wordpress_integration=wordpress_integration,
                    likebtn=likebtn,
                    ignore_ref_errors=ignore_ref_errors,
                    extra_crossrefs=extra_crossrefs,
                    only_refs=only_refs)