again / controllers /utils /downloads.py
Beam2513's picture
Upload 127 files
798602c verified
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