Skip to content

jinja

Attributes

Classes

JinjaEnv

Bases: BaseModel

Source code in /opt/hostedtoolcache/Python/3.10.12/x64/lib/python3.10/site-packages/kiara/renderers/jinja.py
22
23
24
25
26
27
28
29
30
31
32
33
34
class JinjaEnv(BaseModel):

    template_base: Union[str, None] = Field(
        description="The alias of the base loader to use. Defaults to a special loader that combines all template sources.",
        default=None,
    )

    _render_registry: "RenderRegistry" = PrivateAttr(default=None)

    @property
    def instance(self) -> Environment:

        return self._render_registry.retrieve_jinja_env(self.template_base)

Attributes

template_base: Union[str, None] = Field(description='The alias of the base loader to use. Defaults to a special loader that combines all template sources.', default=None) instance-attribute class-attribute
instance: Environment property

JinjaRndererConfig

Bases: KiaraRendererConfig

Source code in /opt/hostedtoolcache/Python/3.10.12/x64/lib/python3.10/site-packages/kiara/renderers/jinja.py
37
38
39
class JinjaRndererConfig(KiaraRendererConfig):

    env: JinjaEnv = Field(description="The loader to use for the jinja environment.")

Attributes

env: JinjaEnv = Field(description='The loader to use for the jinja environment.') instance-attribute class-attribute

BaseJinjaRenderer

Bases: KiaraRenderer[SOURCE_TYPE, INPUTS_SCHEMA, str, JinjaRndererConfig], Generic[SOURCE_TYPE, INPUTS_SCHEMA]

Source code in /opt/hostedtoolcache/Python/3.10.12/x64/lib/python3.10/site-packages/kiara/renderers/jinja.py
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
class BaseJinjaRenderer(
    KiaraRenderer[SOURCE_TYPE, INPUTS_SCHEMA, str, JinjaRndererConfig],
    Generic[SOURCE_TYPE, INPUTS_SCHEMA],
):

    _renderer_config_cls = JinjaRndererConfig

    def __init__(
        self,
        kiara: "Kiara",
        renderer_config: Union[None, Mapping[str, Any], KiaraRendererConfig] = None,
    ):

        self._jinja_env: Union[Environment, None] = None
        super().__init__(kiara=kiara, renderer_config=renderer_config)

    def get_jinja_env(self) -> Environment:

        if self._jinja_env is None:
            je = self.retrieve_jinja_env()
            je._render_registry = self._kiara.render_registry
            self._jinja_env = je.instance
        return self._jinja_env

    def retrieve_jinja_env(self) -> JinjaEnv:
        return JinjaEnv()

    @abc.abstractmethod
    def get_template(self, render_config: INPUTS_SCHEMA) -> Template:
        pass

    @abc.abstractmethod
    def assemble_render_inputs(
        self, instance: Any, render_config: INPUTS_SCHEMA
    ) -> Mapping[str, Any]:
        pass

    def _render(self, instance: SOURCE_TYPE, render_config: INPUTS_SCHEMA) -> str:

        template = self.get_template(render_config=render_config)
        if template is None:
            msg = "Available templates:\n"
            for template_name in self.get_jinja_env().list_templates():
                msg += f" - {template_name}\n"
            raise KiaraException(msg=f"Could not find requested template for renderer '{self.__class__._renderer_name}'", details=msg)  # type: ignore

        inputs = self.assemble_render_inputs(instance, render_config=render_config)
        rendered = template.render(**inputs)
        return rendered

Functions

get_jinja_env() -> Environment
Source code in /opt/hostedtoolcache/Python/3.10.12/x64/lib/python3.10/site-packages/kiara/renderers/jinja.py
58
59
60
61
62
63
64
def get_jinja_env(self) -> Environment:

    if self._jinja_env is None:
        je = self.retrieve_jinja_env()
        je._render_registry = self._kiara.render_registry
        self._jinja_env = je.instance
    return self._jinja_env
retrieve_jinja_env() -> JinjaEnv
Source code in /opt/hostedtoolcache/Python/3.10.12/x64/lib/python3.10/site-packages/kiara/renderers/jinja.py
66
67
def retrieve_jinja_env(self) -> JinjaEnv:
    return JinjaEnv()
get_template(render_config: INPUTS_SCHEMA) -> Template abstractmethod
Source code in /opt/hostedtoolcache/Python/3.10.12/x64/lib/python3.10/site-packages/kiara/renderers/jinja.py
69
70
71
@abc.abstractmethod
def get_template(self, render_config: INPUTS_SCHEMA) -> Template:
    pass
assemble_render_inputs(instance: Any, render_config: INPUTS_SCHEMA) -> Mapping[str, Any] abstractmethod
Source code in /opt/hostedtoolcache/Python/3.10.12/x64/lib/python3.10/site-packages/kiara/renderers/jinja.py
73
74
75
76
77
@abc.abstractmethod
def assemble_render_inputs(
    self, instance: Any, render_config: INPUTS_SCHEMA
) -> Mapping[str, Any]:
    pass

JinjaRenderInputsSchema

Bases: RenderInputsSchema

Source code in /opt/hostedtoolcache/Python/3.10.12/x64/lib/python3.10/site-packages/kiara/renderers/jinja.py
93
94
class JinjaRenderInputsSchema(RenderInputsSchema):
    template: str = Field(description="The template to use for rendering.")

Attributes

template: str = Field(description='The template to use for rendering.') instance-attribute class-attribute

JinjaRenderer

Bases: BaseJinjaRenderer[Any, JinjaRenderInputsSchema]

Source code in /opt/hostedtoolcache/Python/3.10.12/x64/lib/python3.10/site-packages/kiara/renderers/jinja.py
 97
 98
 99
100
101
102
103
104
105
106
107
108
class JinjaRenderer(BaseJinjaRenderer[Any, JinjaRenderInputsSchema]):

    _renderer_name = "jinja"
    _inputs_schema_cls = JinjaRenderInputsSchema

    def get_template(self, render_config: JinjaRenderInputsSchema) -> Template:

        try:
            template = self.get_jinja_env().get_template(render_config.template)
            return template
        except Exception as e:
            raise Exception(f"Error loading template '{render_config.template}': {e}")

Functions

get_template(render_config: JinjaRenderInputsSchema) -> Template
Source code in /opt/hostedtoolcache/Python/3.10.12/x64/lib/python3.10/site-packages/kiara/renderers/jinja.py
102
103
104
105
106
107
108
def get_template(self, render_config: JinjaRenderInputsSchema) -> Template:

    try:
        template = self.get_jinja_env().get_template(render_config.template)
        return template
    except Exception as e:
        raise Exception(f"Error loading template '{render_config.template}': {e}")