CoolFace
Apppublic

Harshavard21/FinRAG

sourceHugging Faceupdated 19d agoView on Hugging Face
2likes
verify_setup.py181 linesDownload Raw Back to scripts
1"""2scripts/verify_setup.py3=======================4Run this after pip install to verify everything is working correctly.5Usage: python scripts/verify_setup.py6"""7 8import sys9import os10 11# Add project root to path12sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))13 14from rich.console import Console15from rich.table import Table16from rich import print as rprint17 18console = Console()19 20 21def check(label: str, fn):22    """Run a check function and return (passed, message)."""23    try:24        result = fn()25        return True, result or "OK"26    except Exception as e:27        return False, str(e)28 29 30def main():31    console.rule("[bold cyan]RAG Environment Verification[/bold cyan]")32    console.print()33 34    results = []35 36    # 1. Python version37    passed, msg = check(38        "Python version",39        lambda: f"{sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro} ✓"40    )41    results.append(("Python 3.12+", passed, msg))42 43    # 2. PyMuPDF44    def check_pymupdf():45        import fitz46        return f"PyMuPDF {fitz.version[0]} ✓"47    results.append(("PyMuPDF (PDF parsing)", *check("PyMuPDF", check_pymupdf)))48 49    # 3. pdfplumber50    def check_pdfplumber():51        import pdfplumber52        return f"pdfplumber {pdfplumber.__version__} ✓"53    results.append(("pdfplumber (tables)", *check("pdfplumber", check_pdfplumber)))54 55    # 4. sentence-transformers56    def check_st():57        import sentence_transformers58        return f"sentence-transformers {sentence_transformers.__version__} ✓"59    results.append(("sentence-transformers", *check("sentence-transformers", check_st)))60 61    # 5. PyTorch + CUDA62    def check_torch():63        import torch64        cuda = torch.cuda.is_available()65        if cuda:66            gpu = torch.cuda.get_device_name(0)67            vram = torch.cuda.get_device_properties(0).total_memory / 1e968            return f"PyTorch {torch.__version__} | CUDA ✓ | {gpu} ({vram:.1f}GB VRAM)"69        else:70            return f"PyTorch {torch.__version__} | CPU only (CUDA not detected)"71    results.append(("PyTorch + CUDA", *check("PyTorch", check_torch)))72 73    # 6. Qdrant client74    def check_qdrant():75        from qdrant_client import QdrantClient76        import qdrant_client77        return f"qdrant-client {qdrant_client.__version__} ✓"78    results.append(("Qdrant client", *check("Qdrant", check_qdrant)))79 80    # 7. rank-bm2581    def check_bm25():82        import rank_bm2583        return "rank-bm25 ✓"84    results.append(("rank-bm25 (sparse)", *check("BM25", check_bm25)))85 86    # 8. Groq87    def check_groq():88        import groq89        return f"groq {groq.__version__} ✓"90    results.append(("Groq SDK", *check("Groq", check_groq)))91 92    # 9. LangChain93    def check_langchain():94        import langchain95        return f"langchain {langchain.__version__} ✓"96    results.append(("LangChain", *check("LangChain", check_langchain)))97 98    # 10. Groq API key99    def check_api_key():100        from dotenv import load_dotenv101        load_dotenv()102        key = os.getenv("GROQ_API_KEY", "")103        if not key or key == "your_groq_api_key_here":104            raise ValueError("GROQ_API_KEY not set in .env file!")105        return f"Key found: {key[:8]}...{key[-4:]} ✓"106    results.append(("Groq API Key (.env)", *check("API Key", check_api_key)))107 108    # 11. Streamlit109    def check_streamlit():110        import streamlit111        return f"streamlit {streamlit.__version__} ✓"112    results.append(("Streamlit", *check("Streamlit", check_streamlit)))113 114    # 12. Plotly115    def check_plotly():116        import plotly117        return f"plotly {plotly.__version__} ✓"118    results.append(("Plotly", *check("Plotly", check_plotly)))119 120    # 13. RAGAS121    def check_ragas():122        import ragas123        return f"ragas {ragas.__version__} ✓"124    results.append(("RAGAS (evaluation)", *check("RAGAS", check_ragas)))125 126    # 14. Settings127    def check_settings():128        from config.settings import settings129        settings.ensure_dirs()130        device = settings.get_device()131        return f"Settings loaded | Device: {device} ✓"132    results.append(("Config/Settings", *check("Settings", check_settings)))133 134    # 15. Raw PDFs135    def check_pdfs():136        from config.settings import settings137        pdf_dir = settings.raw_pdfs_path138        if not pdf_dir.exists():139            raise FileNotFoundError(f"raw_pdfs/ directory not found at {pdf_dir}")140        pdfs = list(pdf_dir.glob("*.pdf"))141        if not pdfs:142            raise FileNotFoundError("No PDFs found in raw_pdfs/ directory")143        return f"{len(pdfs)} PDFs found in raw_pdfs/ ✓"144    results.append(("Raw PDFs", *check("PDFs", check_pdfs)))145 146    # ------------------------------------------------------------------ #147    # Print results table148    # ------------------------------------------------------------------ #149    console.print()150    table = Table(title="Setup Verification Results", show_lines=True)151    table.add_column("Component", style="cyan", no_wrap=True)152    table.add_column("Status", justify="center")153    table.add_column("Details", style="dim")154 155    all_passed = True156    for label, passed, msg in results:157        status = "[bold green]PASS ✓[/bold green]" if passed else "[bold red]FAIL ✗[/bold red]"158        table.add_row(label, status, msg)159        if not passed:160            all_passed = False161 162    console.print(table)163    console.print()164 165    if all_passed:166        console.print("[bold green]✨ All checks passed! Environment is ready.[/bold green]")167        console.print("[dim]Next step: run [cyan]python scripts/ingest_all.py[/cyan] to start the ingestion pipeline.[/dim]")168    else:169        console.print("[bold red]⚠ Some checks failed. Fix the issues above before proceeding.[/bold red]")170        console.print("[dim]Common fixes:[/dim]")171        console.print("  • Missing package? Run: [cyan]pip install -r requirements.txt[/cyan]")172        console.print("  • Missing GROQ_API_KEY? Copy [cyan].env.example → .env[/cyan] and add your key")173        console.print("  • CUDA not found? Run: [cyan]pip install torch --index-url https://download.pytorch.org/whl/cu121[/cyan]")174 175    console.print()176    return 0 if all_passed else 1177 178 179if __name__ == "__main__":180    sys.exit(main())181