"""
Проверка синтаксиса и структуры парсеров
Работает без запуска кода
"""

import ast
import sys
import os

def check_file_syntax(filepath):
    """Проверка синтаксиса файла"""
    try:
        with open(filepath, 'r', encoding='utf-8') as f:
            code = f.read()
        ast.parse(code)
        return True, None
    except SyntaxError as e:
        return False, f"Syntax error: {e}"
    except Exception as e:
        return False, f"Error: {e}"

def check_imports(filepath):
    """Проверка импортов"""
    try:
        with open(filepath, 'r', encoding='utf-8') as f:
            code = f.read()
        
        tree = ast.parse(code)
        imports = []
        
        for node in ast.walk(tree):
            if isinstance(node, ast.Import):
                for alias in node.names:
                    imports.append(alias.name)
            elif isinstance(node, ast.ImportFrom):
                if node.module:
                    imports.append(node.module)
        
        return imports
    except:
        return []

def main():
    """Проверка всех парсеров"""
    print("=" * 70)
    print("🔍 Проверка парсинг скриптов SeaBot")
    print("=" * 70)
    print()
    
    files_to_check = [
        'src/parsers/base.py',
        'src/parsers/x_parser.py',
        'src/parsers/instagram_parser.py',
        'src/parsers/telegram_parser.py',
        'src/filters/topic_filter.py',
        'src/metrics/calculator.py',
        'src/config_loader.py',
        'test_parsing_simple.py',
        'test_parsers.py',
    ]
    
    results = {}
    
    for filepath in files_to_check:
        if not os.path.exists(filepath):
            print(f"⚠️  {filepath} - файл не найден")
            results[filepath] = False
            continue
        
        print(f"📄 Проверка {filepath}...")
        
        # Проверка синтаксиса
        is_valid, error = check_file_syntax(filepath)
        
        if is_valid:
            print(f"   ✅ Синтаксис корректен")
            
            # Проверка импортов
            imports = check_imports(filepath)
            if imports:
                print(f"   📦 Импорты: {len(imports)} модулей")
            
            results[filepath] = True
        else:
            print(f"   ❌ Ошибка: {error}")
            results[filepath] = False
        
        print()
    
    # Итог
    print("=" * 70)
    print("📊 Итоги проверки")
    print("=" * 70)
    
    passed = sum(1 for v in results.values() if v)
    total = len(results)
    
    for filepath, status in results.items():
        status_icon = "✅" if status else "❌"
        print(f"{status_icon} {filepath}")
    
    print()
    print(f"✅ Успешно: {passed}/{total}")
    print(f"❌ Ошибок: {total - passed}/{total}")
    print("=" * 70)
    
    return 0 if passed == total else 1

if __name__ == '__main__':
    sys.exit(main())

