import gradio as gr from utils.text_utils_interface import letter_counter_interface from maths.elementary.arithmetic_interface import ( add_interface, subtract_interface, multiply_interface, divide_interface, array_calc_interface, array_calc_vis_interface, gcd_interface, lcm_interface, is_prime_interface # Assuming these were added earlier from a subtask ) from maths.middleschool.algebra_interface import ( solve_linear_equation_interface, evaluate_expression_interface, solve_quadratic_interface, simplify_radical_interface, polynomial_interface # Assuming these ) from maths.highschool.trigonometry_interface import ( trig_interface, inverse_trig_interface, solve_trig_equations_interface, trig_identities_interface # Assuming these ) from maths.university.calculus_interface import ( derivative_interface, integral_interface, limit_interface, taylor_series_interface, fourier_series_interface, # Assuming these partial_derivative_interface, multiple_integral_interface # Assuming these ) from maths.university.linear_algebra_interface import ( matrix_add_interface, matrix_subtract_interface, matrix_multiply_interface, matrix_determinant_interface, matrix_inverse_interface, vector_add_interface, vector_subtract_interface, vector_dot_product_interface, vector_cross_product_interface, solve_linear_system_interface ) from maths.university.differential_equations_interface import ( first_order_ode_interface, second_order_ode_interface ) from maths.university.operations_research.operations_research_interface import ( branch_and_bound_interface, dual_simplex_interface, simplex_solver_interface ) # Group interfaces by education level # Note: I'm assuming previous subtasks correctly added GCD, LCM, Polynomial, Quadratic, etc. interfaces to their respective files. # If not, this app.py will have import errors for those. I'm focusing on the current task's imports. elementary_interfaces_list = [ add_interface, subtract_interface, multiply_interface, divide_interface, gcd_interface, lcm_interface, is_prime_interface, # Added from subtask 1 array_calc_interface, array_calc_vis_interface ] elementary_tab_names = [ "Addition", "Subtraction", "Multiplication", "Division", "GCD", "LCM", "Prime Check", # Added from subtask 1 "Array Calculation", "Array Calc Viz" ] middleschool_interfaces_list = [ solve_linear_equation_interface, evaluate_expression_interface, solve_quadratic_interface, simplify_radical_interface, polynomial_interface # Added from subtask 2 ] middleschool_tab_names = [ "Linear Equations", "Evaluate Expressions", "Quadratic Solver", "Radical Simplifier", "Polynomial Ops" # Added from subtask 2 ] highschool_interfaces_list = [ trig_interface, inverse_trig_interface, solve_trig_equations_interface, trig_identities_interface # Added from subtask 3 ] highschool_tab_names = [ "Trig Functions", "Inverse Trig", "Solve Trig Eqs", "Trig Identities" # Added from subtask 3 ] university_interfaces_list = [ derivative_interface, integral_interface, limit_interface, taylor_series_interface, fourier_series_interface, # Added from subtask 4 partial_derivative_interface, multiple_integral_interface, # Added from subtask 4 matrix_add_interface, matrix_subtract_interface, matrix_multiply_interface, matrix_determinant_interface, matrix_inverse_interface, vector_add_interface, vector_subtract_interface, vector_dot_product_interface, vector_cross_product_interface, solve_linear_system_interface, first_order_ode_interface, second_order_ode_interface # OR Tab will be added below ] university_tab_names = [ "Poly Derivatives", "Poly Integrals", "Limits", "Taylor Series", "Fourier Series", # Added from subtask 4 "Partial Derivatives", "Multiple Integrals", # Added from subtask 4 "Matrix Add", "Matrix Subtract", "Matrix Multiply", "Matrix Determinant", "Matrix Inverse", "Vector Add", "Vector Subtract", "Vector Dot Product", "Vector Cross Product", "Solve Linear System", "1st Order ODE", "2nd Order ODE" # "Operations Research" will be added below ] # Operations Research Tab or_interfaces_list = [branch_and_bound_interface, dual_simplex_interface, simplex_solver_interface] or_tab_names = ["Branch & Bound", "Dual Simplex", "Simplex (Steps)"] or_tab = gr.TabbedInterface(or_interfaces_list, or_tab_names, title="Operations Research Solvers") # Add OR tab to University interfaces university_interfaces_list.append(or_tab) university_tab_names.append("Operations Research") elementary_tab = gr.TabbedInterface(elementary_interfaces_list, elementary_tab_names, title="Elementary School Math") middleschool_tab = gr.TabbedInterface(middleschool_interfaces_list, middleschool_tab_names, title="Middle School Math") highschool_tab = gr.TabbedInterface(highschool_interfaces_list, highschool_tab_names, title="High School Math") university_tab = gr.TabbedInterface(university_interfaces_list, university_tab_names, title="University Math") # Main demo with tabs for each education level demo = gr.TabbedInterface( [letter_counter_interface, elementary_tab, middleschool_tab, highschool_tab, university_tab], ["Text Utils", "Elementary", "Middle School", "High School", "University"] ) # Launch the Gradio app if __name__ == "__main__": demo.launch(mcp_server=True)