Coverage for rfpy/templates/__init__.py: 100%
20 statements
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-24 10:52 +0000
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-24 10:52 +0000
1import logging
3from jinja2 import Environment, PackageLoader
6from rfpy import conf
7from rfpy.conf.settings import RunMode
9JINJA_ENV: Environment | None = None
11log = logging.getLogger(__name__)
14def init_jinja(debug=None):
15 if debug is None:
16 debug = conf.CONF.run_mode is RunMode.development
18 cache_size = 0 if debug else 100
19 global JINJA_ENV
21 if JINJA_ENV is not None:
22 log.debug("Skipping jinja initialisation - already done")
23 return
25 JINJA_ENV = Environment(
26 loader=PackageLoader("rfpy", "templates"),
27 autoescape=True,
28 extensions=["jinja2.ext.loopcontrols"],
29 cache_size=cache_size,
30 lstrip_blocks=True,
31 trim_blocks=True,
32 )
33 JINJA_ENV.globals["debug"] = debug
35 JINJA_ENV.tests["list"] = lambda x: isinstance(x, list)
36 log.info("Initialised jinja2 with cache_size of %s", cache_size)
39def get_template(template_name):
40 assert JINJA_ENV is not None, "Jinja environment not initialised"
41 return JINJA_ENV.get_template(template_name)