Simple HTML Generation https://minihtml.trendels.name/
at main 40 lines 896 B view raw
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>""")