100 lines
3.7 KiB
Python
100 lines
3.7 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Diagnóstico de problemas específicos del usuario:
|
|
1. IP4Mask(mask) no funciona
|
|
2. 10.1.1.1 + 1 devuelve Integer en lugar de FourBytes
|
|
"""
|
|
|
|
if __name__ == "__main__":
|
|
print("🔍 DIAGNOSTICANDO PROBLEMAS ESPECÍFICOS DEL USUARIO")
|
|
print("=" * 60)
|
|
|
|
try:
|
|
from main_evaluation import HybridEvaluationEngine
|
|
|
|
# Crear motor con debug
|
|
engine = HybridEvaluationEngine()
|
|
engine.debug = True
|
|
|
|
print("📋 Reproduciendo secuencia del usuario:")
|
|
|
|
# 1. Crear mask
|
|
print(f"\n1. Creando mask:")
|
|
result1 = engine.evaluate_line("mask=255.240.0.3")
|
|
print(f" mask asignada: {result1.result} (tipo: {type(result1.result)})")
|
|
|
|
# Ver qué hay en mask
|
|
mask_value = engine.get_variable('mask')
|
|
print(f" mask en symbol_table: {mask_value} (tipo: {type(mask_value)})")
|
|
|
|
print(f"\n2. Problema 1: IP4Mask(mask) no funciona")
|
|
print(f" Intentando: IP4Mask(mask)")
|
|
|
|
# Probar directamente
|
|
try:
|
|
result2 = engine.evaluate_line("IP4Mask(mask)")
|
|
print(f" Resultado: {result2.result} (tipo: {type(result2.result)})")
|
|
if result2.is_error:
|
|
print(f" Error: {result2.error}")
|
|
except Exception as e:
|
|
print(f" Excepción: {e}")
|
|
|
|
# Ver qué pasa cuando llamamos IP4Mask directamente con el valor
|
|
print(f"\n Probando IP4Mask directamente con el valor de mask:")
|
|
try:
|
|
# Obtener IP4Mask del contexto
|
|
IP4Mask = engine.base_context.get('IP4Mask')
|
|
if IP4Mask:
|
|
print(f" IP4Mask disponible: {IP4Mask}")
|
|
direct_result = IP4Mask(mask_value)
|
|
print(f" Resultado directo: {direct_result} (tipo: {type(direct_result)})")
|
|
else:
|
|
print(f" IP4Mask no encontrada en contexto")
|
|
except Exception as e:
|
|
print(f" Error en llamada directa: {e}")
|
|
import traceback
|
|
traceback.print_exc()
|
|
|
|
print(f"\n3. Problema 2: 10.1.1.1 + 1 devuelve Integer")
|
|
print(f" Intentando: 10.1.1.1 + 1")
|
|
|
|
result3 = engine.evaluate_line("10.1.1.1 + 1")
|
|
print(f" Resultado: {result3.result} (tipo: {type(result3.result)})")
|
|
|
|
# Analizar paso a paso
|
|
print(f"\n Análisis paso a paso:")
|
|
|
|
# Crear FourBytes manualmente para probar
|
|
try:
|
|
FourBytes = engine.base_context.get('FourBytes')
|
|
if FourBytes:
|
|
print(f" FourBytes disponible: {FourBytes}")
|
|
fb = FourBytes("10.1.1.1")
|
|
print(f" FourBytes creado: {fb} (tipo: {type(fb)})")
|
|
print(f" fb._numeric_value: {fb._numeric_value}")
|
|
|
|
# Probar suma manual
|
|
sum_result = fb + 1
|
|
print(f" fb + 1 = {sum_result} (tipo: {type(sum_result)})")
|
|
|
|
# Ver el método __add__
|
|
print(f" Método __add__ de FourBytes: {fb.__add__}")
|
|
|
|
except Exception as e:
|
|
print(f" Error en análisis: {e}")
|
|
import traceback
|
|
traceback.print_exc()
|
|
|
|
print(f"\n4. Verificando contexto:")
|
|
relevant_classes = ['FourBytes', 'IP4Mask', 'IP4']
|
|
for cls_name in relevant_classes:
|
|
cls_obj = engine.base_context.get(cls_name)
|
|
if cls_obj:
|
|
print(f" ✅ {cls_name}: {cls_obj}")
|
|
else:
|
|
print(f" ❌ {cls_name}: No encontrada")
|
|
|
|
except Exception as e:
|
|
print(f"Error general: {e}")
|
|
import traceback
|
|
traceback.print_exc() |