HonestAI / verify_compatibility.py
JatsTheAIGen's picture
Security Enhancements: Production WSGI, Rate Limiting, Security Headers, Secure Logging
79ea999
#!/usr/bin/env python3
"""
Backward Compatibility Verification Script
This script verifies that the enhanced config.py maintains 100% backward
compatibility with existing code and API calls.
"""
import sys
import os
def test_imports():
"""Test that all import patterns work"""
print("=" * 60)
print("Testing Import Patterns")
print("=" * 60)
# Test 1: from config import settings
try:
from config import settings
assert hasattr(settings, 'hf_token')
assert hasattr(settings, 'hf_cache_dir')
assert hasattr(settings, 'db_path')
print("βœ… 'from config import settings' - PASSED")
except Exception as e:
print(f"❌ 'from config import settings' - FAILED: {e}")
return False
# Test 2: from src.config import settings
try:
from src.config import settings
assert hasattr(settings, 'hf_token')
assert hasattr(settings, 'hf_cache_dir')
print("βœ… 'from src.config import settings' - PASSED")
except Exception as e:
print(f"❌ 'from src.config import settings' - FAILED: {e}")
return False
# Test 3: from .config import settings (relative import)
try:
import src
from src.config import settings
assert hasattr(settings, 'hf_token')
print("βœ… Relative import - PASSED")
except Exception as e:
print(f"❌ Relative import - FAILED: {e}")
return False
return True
def test_attributes():
"""Test that all attributes work as expected"""
print("\n" + "=" * 60)
print("Testing Attribute Access")
print("=" * 60)
from config import settings
# Test hf_token
try:
token = settings.hf_token
assert isinstance(token, str)
print(f"βœ… settings.hf_token: {type(token).__name__} - PASSED")
except Exception as e:
print(f"❌ settings.hf_token - FAILED: {e}")
return False
# Test hf_cache_dir
try:
cache_dir = settings.hf_cache_dir
assert isinstance(cache_dir, str)
assert len(cache_dir) > 0
print(f"βœ… settings.hf_cache_dir: {cache_dir} - PASSED")
except Exception as e:
print(f"❌ settings.hf_cache_dir - FAILED: {e}")
return False
# Test db_path
try:
db_path = settings.db_path
assert isinstance(db_path, str)
print(f"βœ… settings.db_path: {db_path} - PASSED")
except Exception as e:
print(f"❌ settings.db_path - FAILED: {e}")
return False
# Test max_workers
try:
max_workers = settings.max_workers
assert isinstance(max_workers, int)
assert 1 <= max_workers <= 16
print(f"βœ… settings.max_workers: {max_workers} - PASSED")
except Exception as e:
print(f"❌ settings.max_workers - FAILED: {e}")
return False
# Test all other attributes
attributes = [
'cache_ttl', 'faiss_index_path', 'session_timeout',
'max_session_size_mb', 'mobile_max_tokens', 'mobile_timeout',
'gradio_port', 'gradio_host', 'log_level', 'log_format',
'default_model', 'embedding_model', 'classification_model'
]
for attr in attributes:
try:
value = getattr(settings, attr)
print(f"βœ… settings.{attr}: {type(value).__name__} - PASSED")
except Exception as e:
print(f"❌ settings.{attr} - FAILED: {e}")
return False
return True
def test_context_manager_compatibility():
"""Test that context_manager can import settings"""
print("\n" + "=" * 60)
print("Testing Context Manager Compatibility")
print("=" * 60)
try:
# Simulate what context_manager does
from config import settings
db_path = settings.db_path
assert isinstance(db_path, str)
print(f"βœ… Context manager import pattern works - PASSED")
print(f" db_path: {db_path}")
return True
except Exception as e:
print(f"❌ Context manager compatibility - FAILED: {e}")
return False
def test_cache_directory():
"""Test cache directory functionality"""
print("\n" + "=" * 60)
print("Testing Cache Directory Management")
print("=" * 60)
try:
from src.config import settings
cache_dir = settings.hf_cache_dir
# Verify directory exists
assert os.path.exists(cache_dir), f"Cache directory does not exist: {cache_dir}"
print(f"βœ… Cache directory exists: {cache_dir}")
# Verify write access
test_file = os.path.join(cache_dir, ".test_write")
try:
with open(test_file, 'w') as f:
f.write("test")
os.remove(test_file)
print(f"βœ… Cache directory is writable")
except PermissionError:
print(f"⚠️ Cache directory not writable (may need permissions)")
return True
except Exception as e:
print(f"❌ Cache directory test - FAILED: {e}")
return False
def main():
"""Run all compatibility tests"""
print("Backward Compatibility Verification")
print("=" * 60)
print()
results = []
results.append(("Imports", test_imports()))
results.append(("Attributes", test_attributes()))
results.append(("Context Manager", test_context_manager_compatibility()))
results.append(("Cache Directory", test_cache_directory()))
print("\n" + "=" * 60)
print("Test Summary")
print("=" * 60)
all_passed = True
for test_name, passed in results:
status = "βœ… PASSED" if passed else "❌ FAILED"
print(f"{test_name}: {status}")
if not passed:
all_passed = False
print("=" * 60)
if all_passed:
print("βœ… ALL TESTS PASSED - Backward compatibility verified!")
return 0
else:
print("❌ SOME TESTS FAILED - Please review errors above")
return 1
if __name__ == "__main__":
sys.exit(main())