-
✅
agentic_reliability_framework/arf_core/__init__.py- Removed lazy loading system
- Added direct imports for all OSS components
- Used property-based dynamic loading for
OSSMCPClient - Fixed circular import chain
-
✅
agentic_reliability_framework/arf_core/engine/simple_mcp_client.py- Fixed line 17: Changed
from ...arf_core.models.healing_intenttofrom ..models.healing_intent - This was the exact cause of the circular import
- Fixed line 17: Changed
-
✅
agentic_reliability_framework/__init__.py- Removed lazy loading for OSS components
- Added direct imports from
arf_core - Added graceful fallback if OSS unavailable
- Simplified
__getattr__to only handle non-OSS components
-
✅
Test/test_basic.py- Updated import expectations for OSS edition
- Added circular import detection test
- Graceful handling of missing components
- Updated test paths
-
✅
verify_circular_fix.py(this file)- Complete verification script
- Tests all critical import paths
- Detects circular dependencies
- Ensure all 5 files above are updated in GitHub UI
- Commit message:
fix: resolve circular import dependencies in __init__.py files
Since you can't run terminal commands, here's how to verify in GitHub UI:
- Navigate to
verify_circular_fix.py - Click "Run" button (if available in GitHub UI)
- Or copy this test code into a temporary Python file:
# Quick test for GitHub UI
import sys
# Clear module cache
modules_to_clear = [
'agentic_reliability_framework',
'agentic_reliability_framework.arf_core',
]
for module in modules_to_clear:
sys.modules.pop(module, None)
print("Testing imports...")
try:
import agentic_reliability_framework as arf
print(f"✅ Main package: v{arf.__version__}")
from agentic_reliability_framework import HealingIntent
print(f"✅ HealingIntent imported")
from agentic_reliability_framework import OSSMCPClient
print(f"✅ OSSMCPClient imported")
print("\n🎉 SUCCESS: No circular imports detected!")
except RecursionError as e:
print(f"❌ FAILURE: Circular import detected!")
print(f"Error: {e}")
except Exception as e:
print(f"⚠️ Warning: {type(e).__name__}: {e}")