Ir para o conteúdo

tempest-core

O core de UI agnóstico de renderizador — o motor por trás do tempestroid (renderizadores nativos: Qt / Compose / Android) e do tempestweb (DOM, modos WASM + servidor). 🌩️

Uma árvore, muitos renderizadores. Você descreve a UI como Python tipado e o core produz uma árvore imutável (a IR) e calcula o diff entre duas árvores — os renderizadores só aplicam os patches.

from tempest_core import Column, Text, build, diff

antiga = build(Column(children=[Text(content="Contagem: 0", key="label")]))
nova = build(Column(children=[Text(content="Contagem: 1", key="label")]))

diff(antiga, nova)
# -> [Update(set_props={"content": "Contagem: 1"})]

O que tem dentro

Camada O que faz
IR + reconciliador build / diff (e build_scene / diff_scene para overlays), o modelo Node / Patch, e o App com loop de rebuild coalescido
Estilo tipado Style, Color, Edge, gradientes, sombras, bordas, transições — sem cascata CSS, inline e tipado
Widgets & componentes layout (Column/Row/Container/Stack), texto, botão, inputs, checkbox, listas (LazyColumn/Row/Grid), overlays, gestos, mídia, + componentes compostos (cards, forms, campos, tabelas, inputs BR…)
Transversais animação, i18n, navegação (Route/NavStack), tema, validadores (CPF/CNPJ/email/telefone), ícones

Sem código acoplado a plataforma

Nada de Qt, JNI, Android ou DOM aqui — o core importa limpo sob CPython, Pyodide e um servidor headless. Única dependência dura: pydantic>=2.

Próximos passos