Spaces:
Sleeping
Sleeping
| # main.py | |
| import gradio as gr | |
| from fastapi import FastAPI, HTTPException | |
| from models import CalculationRequest | |
| # FastAPI setup | |
| app = FastAPI() | |
| def calculate(request: CalculationRequest): | |
| operation = request.operation.value | |
| try: | |
| if operation == "add": | |
| answer = request.x + request.y | |
| elif operation == "subtract": | |
| answer = request.x - request.y | |
| elif operation == "multiply": | |
| answer = request.x * request.y | |
| else: # only option left is divide | |
| if request.y == 0: | |
| raise HTTPException(status_code=400, detail="Division by zero is not allowed") | |
| answer = request.x / request.y | |
| return {"result": answer} | |
| except ValueError: | |
| raise HTTPException(status_code=400, detail="Invalid input types") | |
| # Gradio interface | |
| def perform_calculation(operation, x, y): | |
| try: | |
| x = float(x) | |
| y = float(y) | |
| except ValueError: | |
| return "Error: Invalid input. Please enter numbers only." | |
| request = CalculationRequest(operation=operation, x=x, y=y) | |
| response = calculate(request) | |
| return f"Result: {response['result']}" | |
| demo = gr.Interface( | |
| fn=perform_calculation, | |
| inputs=[ | |
| gr.Dropdown(["add", "subtract", "multiply", "divide"], label="Operation"), | |
| gr.Textbox(label="First Number"), | |
| gr.Textbox(label="Second Number") | |
| ], | |
| outputs="text", | |
| title="Simple Calculator", | |
| description="Enter two numbers and select an operation to perform a calculation." | |
| ) | |
| # Run the application | |
| if __name__ == "__main__": | |
| demo.launch() | |