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

1import logging 

2 

3from jinja2 import Environment, PackageLoader 

4 

5 

6from rfpy import conf 

7from rfpy.conf.settings import RunMode 

8 

9JINJA_ENV: Environment | None = None 

10 

11log = logging.getLogger(__name__) 

12 

13 

14def init_jinja(debug=None): 

15 if debug is None: 

16 debug = conf.CONF.run_mode is RunMode.development 

17 

18 cache_size = 0 if debug else 100 

19 global JINJA_ENV 

20 

21 if JINJA_ENV is not None: 

22 log.debug("Skipping jinja initialisation - already done") 

23 return 

24 

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 

34 

35 JINJA_ENV.tests["list"] = lambda x: isinstance(x, list) 

36 log.info("Initialised jinja2 with cache_size of %s", cache_size) 

37 

38 

39def get_template(template_name): 

40 assert JINJA_ENV is not None, "Jinja environment not initialised" 

41 return JINJA_ENV.get_template(template_name)