from __future__ import annotations
import inspect
from pathlib import Path
import gradio as gr
from time_machine.application.blank_services import BlankExperienceServices
ASSET_DIR = Path(__file__).resolve().parent / "assets"
BLANK_CSS = """
:root, body, .gradio-container, main {
background: #020305 !important;
}
footer, .footer {
display: none !important;
}
.gradio-container {
min-height: 100vh;
padding: 0 !important;
}
.gradio-container .contain {
max-width: none !important;
padding: 0 !important;
}
.gradio-container .block,
.gradio-container .form,
.gradio-container .prose {
border: 0 !important;
background: transparent !important;
padding: 0 !important;
margin: 0 !important;
}
"""
def create_blank_app(services: BlankExperienceServices) -> gr.Blocks:
intro_css = (ASSET_DIR / "intro.css").read_text(encoding="utf-8")
intro_html = (ASSET_DIR / "intro.html").read_text(encoding="utf-8")
intro_js = (ASSET_DIR / "intro.js").read_text(encoding="utf-8")
blocks_kwargs = {
"title": "Trans-Temporal Express",
}
if "fill_height" in inspect.signature(gr.Blocks).parameters:
blocks_kwargs["fill_height"] = True
if "head" in inspect.signature(gr.Blocks).parameters:
blocks_kwargs["head"] = f""
with gr.Blocks(**blocks_kwargs) as demo:
gr.HTML(f"{intro_html}", elem_id="blank-style-anchor")
gr.State(
{
"adapter_profile": services.adapter_profile,
"model_budget": {
"enabled_parameters_billion": services.model_budget.enabled_parameters_billion,
"largest_enabled_parameters_billion": services.model_budget.largest_enabled_parameters_billion,
"parameter_limit_billion": services.model_budget.parameter_limit_billion,
},
}
)
return demo.queue()