import random
import gradio as gr
ROWS = 5000
rng = random.Random(42)
headers = [
"date",
"str_short",
"str_long",
"num",
"bool",
"markdown",
"html",
]
datatype = ["date", "str", "str", "number", "bool", "markdown", "html"]
WORDS = [
"alpha", "beta", "gamma", "delta", "epsilon", "zeta", "eta", "theta",
"iota", "kappa", "lambda", "mu", "nu", "xi", "omicron", "pi",
]
MD_WRAPPERS = [
lambda s: f"**{s}**",
lambda s: f"*{s}*",
lambda s: f"`{s}`",
lambda s: f"[{s}](https://example.com)",
lambda s: f"# {s}",
lambda s: s,
]
HTML_WRAPPERS = [
lambda s: f"{s}",
lambda s: f"{s}",
lambda s: f'{s}',
lambda s: f'{s}',
lambda s: f"{s}",
lambda s: s,
]
def random_text(min_words: int, max_words: int) -> str:
n = rng.randint(min_words, max_words)
return " ".join(rng.choice(WORDS) for _ in range(n))
def random_md() -> str:
return rng.choice(MD_WRAPPERS)(random_text(1, 8))
def random_html() -> str:
return rng.choice(HTML_WRAPPERS)(random_text(1, 8))
data = [
[
f"2026-01-{(i % 28) + 1:02d}",
rng.choice(WORDS),
random_text(2, 6),
round(rng.random() * 1000, 2),
rng.random() > 0.5,
random_md(),
random_html(),
]
for i in range(ROWS)
]
with gr.Blocks() as demo:
gr.Markdown(
f"### Reproduction for #13279: {ROWS} rows × mixed dtypes (markdown/html/date/number/bool/str)"
)
gr.Dataframe(
value=data, headers=headers, datatype=datatype, interactive=False # type: ignore
)
if __name__ == "__main__":
demo.launch()