Simple HTML Generation https://minihtml.trendels.name/
1import asyncio
2import sys
3from textwrap import dedent
4
5if sys.version_info >= (3, 11):
6 from asyncio import TaskGroup
7else:
8 from taskgroup import TaskGroup
9
10from minihtml import Element, make_prototype
11
12div = make_prototype("div")
13
14
15async def test_concurrent_templates():
16 async def template(name: str) -> Element:
17 with div[name] as result:
18 div(f"{name}-1")
19 await asyncio.sleep(0.1)
20 div(f"{name}-2")
21 return result
22
23 async with TaskGroup() as tg:
24 t1 = tg.create_task(template("a"))
25 t2 = tg.create_task(template("b"))
26
27 e1 = t1.result()
28 e2 = t2.result()
29
30 assert str(e1) == dedent("""\
31 <div class="a">
32 <div>a-1</div>
33 <div>a-2</div>
34 </div>""")
35
36 assert str(e2) == dedent("""\
37 <div class="b">
38 <div>b-1</div>
39 <div>b-2</div>
40 </div>""")