File size: 997 Bytes
798602c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import re
import tempfile
import gradio as gr

def sanitize_filename(name: str, default: str):
    if not name or not name.strip():
        return default
    clean = re.sub(r'[\\/*?:"<>|]', "", name).strip()
    return clean if clean else default


def dataframe_to_csv(df, filename):
    if df is None:
        gr.Warning("❌ No table available to download.")
        return None

    base = sanitize_filename(filename, "descriptive_statistics")

    with tempfile.NamedTemporaryFile(
        delete=False,
        mode="w",
        suffix=".csv",
        prefix=base + "_",
        encoding="utf-8",
    ) as tmp:
        df.to_csv(tmp.name, index=False)
        return tmp.name

def figure_to_png(fig, filename: str):
    if fig is None:
        return None

    tmp = tempfile.NamedTemporaryFile(
        delete=False,
        suffix=".png",
        prefix=filename + "_"
    )
    fig.savefig(tmp.name, dpi=200, bbox_inches="tight")
    return tmp.name