from pathlib import Path from dataclasses import asdict, dataclass from jinja2 import Environment, FileSystemLoader, Template def render_dataclass(configs: list[dataclass], tmp_path: Path, out_path: Path, other = None) -> str: "from dataclasses to jinja template" env = Environment(loader=FileSystemLoader(str(tmp_path.parent), encoding='utf-8')) template: Template = env.get_template(str(tmp_path.name)) data = [asdict(config) for config in configs] res = template.render({'autoconfigs': data}, **other) out_path.write_text(res, encoding='utf-8') return res