""" Program Try App - Python Backend Docker version for HuggingFace Spaces """ import gradio as gr from pydantic import BaseModel from typing import Optional import subprocess import sys # Models class Project(BaseModel): id: str name: str type: str content: Optional[str] = "" # Language configurations LANGUAGES = { "python": {"run": lambda code: run_python(code)}, "html": {"run": lambda code: run_html(code)}, "css": {"run": lambda code: run_css(code)}, "javascript": {"run": lambda code: run_javascript(code)}, "react": {"run": lambda code: run_react(code)}, "nextjs": {"run": lambda code: run_nextjs(code)} } def run_python(code: str) -> str: try: result = subprocess.run([sys.executable, "-c", code], capture_output=True, text=True, timeout=5) return result.stdout if result.returncode == 0 else f"Error: {result.stderr}" except Exception as e: return f"Error: {str(e)}" def run_html(code: str) -> str: if " str: if "{" in code and "}" in code: return "✓ Valid CSS" return "Warning: CSS not found" def run_javascript(code: str) -> str: return f"JavaScript validated:\n{code[:200]}" def run_react(code: str) -> str: return "✓ Valid React" if "react" in code.lower() else "Warning: React not found" def run_nextjs(code: str) -> str: return "✓ Valid Next.js" if "next" in code.lower() else "Warning: Next.js not found" def process_code(language: str, code: str) -> str: if language not in LANGUAGES: return f"Unknown: {language}" try: return LANGUAGES[language]["run"](code) except Exception as e: return f"Error: {str(e)}" # Gradio Interface with gr.Blocks(title="Program Try App", theme=gr.themes.Soft()) as demo: gr.Markdown("# đŸ–Ĩī¸ Program Try App - Language Tester") with gr.Tab("đŸ’ģ Code Tester"): lang_input = gr.Dropdown(choices=list(LANGUAGES.keys()), label="Language", value="python") code_input = gr.Textbox(label="Code", lines=10, placeholder="Write code here...") submit_btn = gr.Button("đŸŸĸ Run", variant="primary") output = gr.Textbox(label="Output", lines=5) submit_btn.click(process_code, inputs=[lang_input, code_input], outputs=output) with gr.Tab("â„šī¸ About"): gr.Markdown("## About\n- Version: 1.0.0\n- Author: AMKyawDev") demo.launch(server_name="0.0.0.0", server_port=7860, share=True)