Coverage for src\llm_code_lens\analyzer\__init__.py: 29%
28 statements
« prev ^ index » next coverage.py v7.7.0, created at 2025-05-25 12:07 +0300
« prev ^ index » next coverage.py v7.7.0, created at 2025-05-25 12:07 +0300
1from .base import ProjectAnalyzer, AnalysisResult, BaseAnalyzer
2from .python import PythonAnalyzer
3from .javascript import JavaScriptAnalyzer
4from .config import (
5 analyze_package_json,
6 analyze_tsconfig,
7 extract_readme_summary
8)
10# Create a lazy-loading proxy for SQLServerAnalyzer
11class SQLServerAnalyzerProxy:
12 def __new__(cls, *args, **kwargs):
13 try:
14 from .sql import SQLServerAnalyzer as RealSQLServerAnalyzer
15 return RealSQLServerAnalyzer(*args, **kwargs)
16 except ImportError as e:
17 import warnings
18 warnings.warn(f"SQL Server analysis functionality is not available: {e}. "
19 "Install pyodbc and required ODBC drivers to enable this feature.")
21 # Return a dummy analyzer that provides the same interface but does nothing
22 class DummySQLServerAnalyzer(BaseAnalyzer):
23 def __init__(self, *args, **kwargs):
24 pass
26 def analyze_file(self, file_path):
27 return {"type": "sql", "metrics": {"loc": 0}, "errors": ["SQL analysis not available"]}
29 def connect(self, connection_string=None):
30 pass
32 def list_databases(self):
33 return []
35 def analyze_database(self, database):
36 return {"stored_procedures": [], "views": [], "functions": []}
38 def __del__(self):
39 pass
41 return DummySQLServerAnalyzer(*args, **kwargs)
43# Use the proxy instead of direct import
44SQLServerAnalyzer = SQLServerAnalyzerProxy
46__all__ = [
47 'ProjectAnalyzer',
48 'AnalysisResult',
49 'BaseAnalyzer',
50 'PythonAnalyzer',
51 'JavaScriptAnalyzer',
52 'SQLServerAnalyzer',
53 'analyze_package_json',
54 'analyze_tsconfig',
55 'extract_readme_summary'
56]