Spaces:
Sleeping
Sleeping
| """Interface module for the AI Python C Extensions Generator application.""" | |
| from gradio import Blocks, Button, Dropdown, Examples, Markdown, Row, State, TextArea | |
| from gradio import Textbox | |
| from .examples import example_dict | |
| from .prompts import footer_disclaimer | |
| def _compile_extension(): | |
| return "COMPILE_EXTENSION PLACEHOLDER" | |
| def _test_extension(): | |
| return "TEST_EXTENSION PLACEHOLDER" | |
| def get_interface(optimize_function, compile_stage=False, | |
| compile_extension=_compile_extension, | |
| test_extension=_test_extension, | |
| default_platform="Windows", | |
| compile_path="compiled", | |
| models=["gpt-5.1-codex-mini"]): | |
| """Get the Gradio Blocks interface for the AI Python C Extensions Generator.""" | |
| with Blocks(title="AI Python C Extensions Generator") as ui: | |
| compile_path_st = State(value=compile_path) | |
| Markdown("## Convert code from Python to C Extension") | |
| with Row(): | |
| module_name = Textbox(label="Module name:", lines=1, value="sample_module") | |
| model = Dropdown(label="Select model", choices=models, value=models[0]) | |
| platform = Dropdown(label="Select platform", choices=["Windows", "Linux"], | |
| value=default_platform) | |
| with Row(): | |
| python = Textbox(label="Python code:", lines=30, | |
| buttons=["copy"], elem_classes=["python"], | |
| value=example_dict["Hello world"][0]) | |
| c_code = Textbox(label="C Extension code:", lines=30, | |
| buttons=["copy"], elem_classes=["c_ext"]) | |
| with Row(): | |
| Examples(label="Python examples: (From simple to complex)", | |
| inputs=[python, module_name], | |
| examples=list(example_dict.values()), | |
| example_labels=list(example_dict.keys())) | |
| with Row(): | |
| get_extension = Button("Generate extension code") | |
| with Row(): | |
| setup_code = Textbox(label="Compilation code:", lines=10, | |
| buttons=["copy"], elem_classes=["python"]) | |
| usage_code = Textbox(label="Test compare code:", lines=10, | |
| buttons=["copy"], elem_classes=["python"]) | |
| get_extension.click(optimize_function, | |
| inputs=[python, module_name, platform, | |
| compile_path_st, model], | |
| outputs=[c_code, setup_code, usage_code]) | |
| # ######### BUILD AND TEST SECTIONS ######### # | |
| if compile_stage: | |
| with Row(): | |
| compile_ext = Button("Compile extension") | |
| with Row(): | |
| c_ext_out = TextArea(label="C Extension result:", buttons=["copy"], | |
| elem_classes=["c_ext"]) | |
| with Row(): | |
| test_run = Button("Test code") | |
| with Row(): | |
| test_out = TextArea(label="Test result:", buttons=["copy"], | |
| elem_classes=["python"]) | |
| compile_ext.click(compile_extension, | |
| inputs=[c_code, setup_code, module_name, compile_path_st], | |
| outputs=[c_ext_out]) | |
| test_run.click(test_extension, | |
| inputs=[usage_code, compile_path_st], | |
| outputs=[test_out]) | |
| # Footer with disclaimer. | |
| with ui: | |
| Markdown(footer_disclaimer, elem_id="footer-disclaimer") | |
| return ui | |