ParamManagerScripts/backend/script_groups/ObtainIOFromProjectTia/.doc/test_x1.py

190 lines
7.1 KiB
Python

"""
Explorador de la API real del paquete siemens_tiaportal_scripting instalado
Descubre qué está realmente disponible
"""
def explore_actual_api():
"""Explore what's actually available in the installed package."""
print("="*70)
print("EXPLORADOR DE LA API REAL INSTALADA")
print("="*70)
try:
import siemens_tiaportal_scripting as ts
print("✅ Paquete importado correctamente")
# Get all available attributes
all_attrs = dir(ts)
public_attrs = [attr for attr in all_attrs if not attr.startswith('_')]
print(f"\n📋 TODOS LOS ATRIBUTOS DISPONIBLES ({len(public_attrs)}):")
for i, attr in enumerate(sorted(public_attrs), 1):
try:
obj = getattr(ts, attr)
obj_type = type(obj).__name__
print(f" {i:2d}. {attr:<25} : {obj_type}")
# If it's a callable, try to get more info
if callable(obj):
try:
doc = obj.__doc__
if doc:
# Show first line of docstring
first_line = doc.split('\n')[0].strip()
if first_line:
print(f" └─ {first_line}")
except:
pass
except Exception as attr_ex:
print(f" {i:2d}. {attr:<25} : Error - {attr_ex}")
# Look for functions that might be entry points
print(f"\n🔍 FUNCIONES DISPONIBLES:")
functions = [attr for attr in public_attrs if callable(getattr(ts, attr, None))]
for func_name in functions:
try:
func = getattr(ts, func_name)
print(f" 📞 {func_name}")
# Try to get function signature
import inspect
try:
sig = inspect.signature(func)
print(f" Signature: {func_name}{sig}")
except:
print(f" Signature: No disponible")
# Get docstring
doc = func.__doc__
if doc:
lines = doc.strip().split('\n')
for line in lines[:3]: # Show first 3 lines
if line.strip():
print(f" Doc: {line.strip()}")
except Exception as func_ex:
print(f" 📞 {func_name}: Error - {func_ex}")
# Look for classes or types
print(f"\n🏗️ CLASES/TIPOS DISPONIBLES:")
types_found = []
for attr in public_attrs:
try:
obj = getattr(ts, attr)
obj_type = type(obj)
# Check if it's a type/class
if str(obj_type) in ['<class \'type\'>', '<class \'ABCMeta\'>'] or hasattr(obj, '__bases__'):
types_found.append(attr)
print(f" 🏷️ {attr}: {obj_type}")
# Show methods of the class
methods = [m for m in dir(obj) if not m.startswith('_') and callable(getattr(obj, m, None))]
if methods:
print(f" Methods: {', '.join(methods[:5])}")
if len(methods) > 5:
print(f" ... and {len(methods)-5} more")
except Exception as type_ex:
continue
if not types_found:
print(" ❌ No se encontraron clases obvias")
# Try to find TIA Portal related functionality
print(f"\n🎯 BÚSQUEDA DE FUNCIONALIDAD TIA PORTAL:")
tia_keywords = ['tia', 'portal', 'open', 'connect', 'project', 'export']
tia_related = []
for attr in public_attrs:
attr_lower = attr.lower()
if any(keyword in attr_lower for keyword in tia_keywords):
tia_related.append(attr)
if tia_related:
print(" Elementos relacionados con TIA Portal:")
for attr in tia_related:
try:
obj = getattr(ts, attr)
print(f"{attr}: {type(obj).__name__}")
except:
print(f"{attr}: Error")
else:
print(" ❌ No se encontraron elementos obvios relacionados con TIA Portal")
# Try some common function names that might exist
print(f"\n🔍 PROBANDO FUNCIONES COMUNES:")
common_functions = [
'open_portal',
'OpenPortal',
'open_project',
'OpenProject',
'connect',
'Connect',
'TiaPortal',
'create_portal',
'get_portal'
]
for func_name in common_functions:
if hasattr(ts, func_name):
print(f"{func_name}: Disponible")
try:
func = getattr(ts, func_name)
print(f" Tipo: {type(func).__name__}")
if callable(func):
try:
sig = inspect.signature(func)
print(f" Signature: {func_name}{sig}")
except:
pass
except:
pass
else:
print(f"{func_name}: No disponible")
# Check the module file for more info
print(f"\n📁 INFORMACIÓN DEL ARCHIVO:")
if hasattr(ts, '__file__'):
print(f" Archivo: {ts.__file__}")
# Try to read some info from the file
import os
file_path = ts.__file__
if os.path.exists(file_path):
file_size = os.path.getsize(file_path)
print(f" Tamaño: {file_size:,} bytes")
# Check if there are any associated files
file_dir = os.path.dirname(file_path)
files_in_dir = os.listdir(file_dir)
related_files = [f for f in files_in_dir if 'siemens' in f.lower() or 'tia' in f.lower()]
if related_files:
print(f" Archivos relacionados:")
for f in related_files[:10]:
print(f" - {f}")
print(f"\n" + "="*70)
print("🎯 ANÁLISIS COMPLETADO")
print("="*70)
return True
except Exception as e:
print(f"❌ Error durante la exploración: {e}")
import traceback
traceback.print_exc()
return False
if __name__ == "__main__":
success = explore_actual_api()
if success:
print(f"\n📋 Basándome en esta información, crearé el exportador correcto")
else:
print(f"\n❌ No se pudo explorar la API")
input("\nPresiona Enter para salir...")