def create_jinja(layouts='_layouts', includes='_includes'): loaders = [] if not os.path.exists(layouts): raise RuntimeError('%s directory is required.' % layouts) loaders.append(layouts) if os.path.exists(includes): loaders.append(includes) from jinja2 import Environment, FileSystemLoader jinja = Environment( loader=FileSystemLoader(loaders), trim_blocks=True, lstrip_blocks=True, autoescape=False, extensions=[ 'jinja2.ext.do', 'jinja2.ext.loopcontrols', 'jinja2.ext.with_', ] ) from . import filters rv = {k: getattr(filters, k) for k in filters.__all__} jinja.filters.update(rv) jinja._mtime = max((os.path.getmtime(d) for d in loaders)) return jinja