Spaces:
Sleeping
Sleeping
| """ | |
| Swiper Match - Car Dealer Predictor | |
| Main application file using modular components | |
| """ | |
| import gradio as gr | |
| import logging | |
| # Import core modules | |
| from core.matcher import CarDealerMatcher | |
| from core.config import DETAILED_MODEL_PATH, SIMPLE_MODEL_PATH, UI_CONFIG, GRADIO_CSS | |
| # Import UI components | |
| from ui.interface import ( | |
| update_models, predict_dealers_interface, simple_predict_dealers_interface, | |
| search_data_interface, simple_search_data_interface, range_search_data_interface | |
| ) | |
| from ui.tabs.simple_tab import create_simple_tab | |
| from ui.tabs.detailed_tab import create_detailed_tab | |
| from ui.tabs.traditional_tab import create_traditional_tab | |
| from ui.tabs.simple_search_tab import create_simple_search_tab | |
| from ui.tabs.range_search_tab import create_range_search_tab | |
| # Import utilities | |
| from utils.helpers import get_model_status_info, get_app_header, get_app_description, setup_event_handlers | |
| # Set up logging | |
| logging.basicConfig(level=logging.INFO) | |
| logger = logging.getLogger(__name__) | |
| def create_app(): | |
| """Create and configure the Gradio application""" | |
| # Initialize the matchers | |
| logger.info("π Initializing Car Dealer Matchers...") | |
| matcher = CarDealerMatcher(model_path=DETAILED_MODEL_PATH) | |
| simple_matcher = CarDealerMatcher(model_path=SIMPLE_MODEL_PATH) | |
| # Create the Gradio interface | |
| with gr.Blocks( | |
| title=UI_CONFIG['title'], | |
| theme=gr.themes.Default(), | |
| css=GRADIO_CSS | |
| ) as demo: | |
| # App header | |
| gr.Markdown(get_app_header()) | |
| gr.Markdown(get_app_description()) | |
| # Create tabs | |
| with gr.Tabs(): | |
| simple_search_tab = create_simple_search_tab(matcher) | |
| range_search_tab = create_range_search_tab(matcher) | |
| traditional_tab = create_traditional_tab(matcher) | |
| simple_tab = create_simple_tab(simple_matcher) | |
| detailed_tab = create_detailed_tab(matcher) | |
| # Model Information Footer | |
| gr.Markdown("---") | |
| gr.Markdown(get_model_status_info(matcher, simple_matcher)) | |
| # Setup event handlers | |
| interface_functions = { | |
| 'update_models': update_models, | |
| 'predict': predict_dealers_interface, | |
| 'simple_predict': simple_predict_dealers_interface, | |
| 'search': search_data_interface, | |
| 'simple_search': simple_search_data_interface, | |
| 'simple_range_search': range_search_data_interface | |
| } | |
| tabs_data = (simple_tab, detailed_tab, traditional_tab, simple_search_tab, range_search_tab) | |
| matchers = (matcher, simple_matcher) | |
| setup_event_handlers(tabs_data, interface_functions, matchers) | |
| return demo | |
| # Launch the app | |
| if __name__ == "__main__": | |
| logger.info("π― Starting Swiper Match application...") | |
| demo = create_app() | |
| demo.launch() |