Spaces:
Running
Running
| import os | |
| from pathlib import Path | |
| # Mapping of old import prefixes to new import prefixes | |
| IMPORT_MAP = { | |
| "app.services.ai.chat_engine": "app.services.chat.chat_engine", | |
| "app.services.ai.memory_manager": "app.services.chat.memory_manager", | |
| "app.services.ai.prompts": "app.services.chat.prompts", | |
| "app.services.ai.faq_data": "app.services.chat.faq_data", | |
| "app.services.ai.faq_matcher": "app.services.chat.faq_matcher", | |
| "app.services.ai.prediction_engine": "app.services.prediction.prediction_engine", | |
| "app.ml_artifacts.trainer": "app.services.prediction.trainer.trainer", | |
| "app.services.ai.function_registry": "app.services.tools.function_registry", | |
| "app.services.ai.tool_executor": "app.services.tools.tool_executor", | |
| "app.services.ai.document_analyzer": "app.services.document.document_analyzer", | |
| "app.services.stt": "app.services.voice", | |
| "app.services.ml": "app.services.feedback", | |
| "app.services.ai": "app.services", # fallback just in case | |
| } | |
| # The joblib file paths in code needs updating | |
| PATH_MAP = { | |
| '"app/services/prediction/trainer/models/': '"app/services/prediction/trainer/models/', | |
| "'app/services/prediction/trainer/models/": "'app/services/prediction/trainer/models/", | |
| '"app/services/ocr/providers/': '"app/services/ocr/providers/providers/' # this isn't stringly typed, but let's see | |
| } | |
| TARGET_DIRS = ["app", "scripts"] | |
| def process_file(filepath: Path): | |
| content = filepath.read_text(encoding="utf-8") | |
| original = content | |
| for old, new in IMPORT_MAP.items(): | |
| content = content.replace(f"from {old}", f"from {new}") | |
| content = content.replace(f"import {old}", f"import {new}") | |
| for old, new in PATH_MAP.items(): | |
| content = content.replace(old, new) | |
| # Fix OCR providers paths inside ocr_router.py | |
| if filepath.name == "ocr_router.py": | |
| content = content.replace("app.services.ocr.groq_provider", "app.services.ocr.providers.groq_provider") | |
| content = content.replace("app.services.ocr.gemini_provider", "app.services.ocr.providers.gemini_provider") | |
| content = content.replace("app.services.ocr.openai_provider", "app.services.ocr.providers.openai_provider") | |
| content = content.replace("app.services.ocr.huggingface_provider", "app.services.ocr.providers.huggingface_provider") | |
| if content != original: | |
| filepath.write_text(content, encoding="utf-8") | |
| print(f"Updated {filepath}") | |
| for d in TARGET_DIRS: | |
| for root, _, files in os.walk(d): | |
| for f in files: | |
| if f.endswith(".py") or f.endswith(".md"): | |
| process_file(Path(root) / f) | |
| # Also update main.py in root | |
| process_file(Path("main.py")) | |
| print("Refactoring complete.") | |