import os
from multigen.jinja import JinjaTask, JinjaGenerator
[docs]class CompPyTask(JinjaTask):
template_name = 'comp.py.tpl'
def __init__(self, part):
super(CompPyTask, self).__init__()
self.part = part
[docs] def filtered_elements(self, model):
return model['py']
[docs] def relative_path_for_element(self, element):
return f'{element["name"]}.py'
[docs]class CompGenerator(JinjaGenerator):
def __init__(self):
self.use_capnp = True
self.templates_path = os.path.join(
os.path.abspath(os.path.dirname(__file__)),
'tpl'
)
self.tasks = [
CompPyTask('components'),
CompPyTask('devices')
]
super(CompGenerator, self).__init__()
[docs] def create_environment(self, **kwargs):
environment = super().create_environment(**kwargs)
environment.trim_blocks = True
environment.globals["use_capnp"] = self.use_capnp
return environment