python类StrictUndefined()的实例源码

jinja_helper.py 文件源码 项目:brigade 作者: napalm-automation 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def render_from_string(template, **kwargs):
    env = Environment(undefined=StrictUndefined,
                      trim_blocks=True)
    template = env.from_string(template)
    return template.render(**kwargs)
commands.py 文件源码 项目:releasewarrior 作者: mozilla 项目源码 文件源码 阅读 25 收藏 0 点赞 0 评论 0
def generate_wiki(self, data, wiki_template):
        """generates wiki file based on data file and wiki template"""
        env = Environment(loader=FileSystemLoader(TEMPLATES_PATH),
                          undefined=StrictUndefined, trim_blocks=True)
        for b in data.get('builds', []):
            b['issues'] = convert_bugs_to_links(b['issues'])
        template = env.get_template(wiki_template)
        return template.render(**data)
Template_Parser.py 文件源码 项目:campus_ztp 作者: tbraly 项目源码 文件源码 阅读 21 收藏 0 点赞 0 评论 0
def get_parsed_lines(self):
        ''' Returns a set of lines with all variables filed in '''
        try:
            return Template(self.profile, undefined=StrictUndefined).render(self.variables)
        except UndefinedError as e:
            raise Exception(e)
client_server_genhtml.py 文件源码 项目:network-testing 作者: crossdistro 项目源码 文件源码 阅读 17 收藏 0 点赞 0 评论 0
def build(staticdatadir, outdir, templatedir, input_file):
    try:
        shutil.rmtree(outdir)
    except Exception:
        pass
    os.makedirs(outdir)

    data = {ident: load_data(os.path.join(staticdatadir, filename))
            for ident, filename in STATIC_DATA_FILES.items()}
    data['schema'] = registered_properties

    data['results'] = results = {}
    for filename in input_file:
        result = load_data(filename)
        try:
            result = dict(result)
        except ValueError:
            raise ValueError('Data needs to be a mapping: ', filename)
        if not set(result.keys()).isdisjoint(results.keys()):
            raise ValueError('Overwriting data: ', filename)
        results.update(result)

    loader = jinja2.FileSystemLoader(templatedir)
    template_env = jinja2.Environment(
        loader=loader,
        undefined=jinja2.StrictUndefined,
        )

    def render(out_name, template_name, **env):
        template = template_env.get_template(template_name)
        result = template.render(data=data, **env)
        output_filename = os.path.join(outdir, out_name)
        dirname = os.path.dirname(output_filename)
        try:
            os.makedirs(dirname)
        except OSError:
            pass
        print('Writing:', output_filename)
        with open(output_filename, 'w') as file:
            file.write(result)

    # Render all the pages
    render('index.html', 'index.html', breadcrumbs=())

    for name, testcase in data['results'].items():
        render('cases/{}.html'.format(name), 'testcase.html',
               testcase_name=name, testcase=testcase,
               breadcrumbs=[
                   ('Network Test Report', '../index.html'),
                   (name, None),
               ])

    print('Wrote to', os.path.abspath(outdir))
builder.py 文件源码 项目:pando-core 作者: DLR-RY 项目源码 文件源码 阅读 27 收藏 0 点赞 0 评论 0
def _template(self, filename, filters=None, alternate_marking=False):
        """ Open a template file

        """
        def filter_wordwrap(value, width=79):
            return '\n\n'.join([textwrap.fill(str, width) for str in value.split('\n\n')])

        def filter_indent(value, level=0, prefix=""):
            return ('\n' + '\t' * level + prefix).join(value.split('\n'))

        def global_abort_helper(msg):
            raise BuilderException(msg)

        if filename.startswith('#'):
            name = filename[1:]
            loader = jinja2.PackageLoader('pando', 'resources')
        else:
            # if not os.path.isabs(filename):
            #   relpath = os.path.dirname(os.path.abspath(__file__))
            #   path = os.path.join(relpath, path)
            path = os.path.dirname(filename)
            name = os.path.basename(filename)
            loader = jinja2.FileSystemLoader(path)

        if alternate_marking:
            environment = jinja2.Environment(
                block_start_string='<%',
                block_end_string='%>',
                variable_start_string='<<',
                variable_end_string='>>',
                comment_start_string='<#',
                comment_end_string='#>',

                line_statement_prefix='##',
                line_comment_prefix='###',

                loader=loader,
                undefined=jinja2.StrictUndefined,
                extensions=["jinja2.ext.loopcontrols"])
        else:
            environment = jinja2.Environment(
                line_statement_prefix='##',
                line_comment_prefix='###',

                loader=loader,
                undefined=jinja2.StrictUndefined,
                extensions=["jinja2.ext.loopcontrols"])
        environment.filters['xpcc.wordwrap'] = filter_wordwrap
        environment.filters['xpcc.indent'] = filter_indent

        environment.globals['abort'] = global_abort_helper
        if filters:
            environment.filters.update(filters)
        template = environment.get_template(name, globals=self.globals)
        return template
base.py 文件源码 项目:omniduct 作者: airbnb 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def render_template(self, name_or_statement, context=None, by_name=False):

        if by_name:
            if name_or_statement not in self._templates:
                raise ValueError("No such template of name: '{}'.".format(name_or_statement))
            statement = self._templates[name_or_statement]
        else:
            statement = name_or_statement

        try:
            from sqlalchemy.sql.base import Executable
            if isinstance(statement, Executable):
                statement = str(statement.compile(compile_kwargs={"literal_binds": True}))
        except ImportError:
            pass

        if context is None or context is False:
            context = {}

        template_context = {}
        template_context.update(self._template_context)  # default context
        template_context.update(context)  # context passed in
        intersection = set(self._template_context.keys()) & set(context.keys())
        if intersection:
            logger.warning(
                "The following default template context keys have been overridden "
                "by the local context: {}."
                .format(intersection)
            )

        # Substitute in any other named statements recursively
        while '{{{' in statement or '{{%' in statement:
            statement = Template(statement,
                                 block_start_string='{{%',
                                 block_end_string='%}}',
                                 variable_start_string='{{{',
                                 variable_end_string='}}}',
                                 comment_start_string='{{#',
                                 comment_end_string='#}}',
                                 undefined=StrictUndefined).render(getattr(self, '_templates', {}))

        return Template(statement, undefined=StrictUndefined).render(template_context)


问题


面经


文章

微信
公众号

扫码关注公众号