iel-tools 0.0.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,9 @@
1
+ Metadata-Version: 2.1
2
+ Name: iel-tools
3
+ Version: 0.0.3
4
+ Summary: Librería unificada con herramientas PromptSQL y CheckSpace
5
+ Author: José Manuel Martin Coronado
6
+ Requires-Dist: pandas
7
+ Requires-Dist: numpy
8
+ Requires-Dist: openai
9
+ Requires-Dist: requests
@@ -0,0 +1,9 @@
1
+ Metadata-Version: 2.1
2
+ Name: iel-tools
3
+ Version: 0.0.3
4
+ Summary: Librería unificada con herramientas PromptSQL y CheckSpace
5
+ Author: José Manuel Martin Coronado
6
+ Requires-Dist: pandas
7
+ Requires-Dist: numpy
8
+ Requires-Dist: openai
9
+ Requires-Dist: requests
@@ -0,0 +1,9 @@
1
+ setup.py
2
+ iel_tools.egg-info/PKG-INFO
3
+ iel_tools.egg-info/SOURCES.txt
4
+ iel_tools.egg-info/dependency_links.txt
5
+ iel_tools.egg-info/requires.txt
6
+ iel_tools.egg-info/top_level.txt
7
+ ieltools/__init__.py
8
+ ieltools/checkspace/__init__.py
9
+ ieltools/promptsql/__init__.py
@@ -0,0 +1,4 @@
1
+ pandas
2
+ numpy
3
+ openai
4
+ requests
@@ -0,0 +1 @@
1
+ ieltools
File without changes
@@ -0,0 +1,72 @@
1
+
2
+ import sqlite3
3
+ import pandas as pd
4
+ import os
5
+
6
+ def check():
7
+ print("👋 ¡Bienvenido al Chequeo de Espacios de Iel Tools!")
8
+
9
+ bd = input("📂 Ingrese el nombre de la base de datos (*.db) o 'salir': ")
10
+ if bd.lower() == 'salir':
11
+ print("Salida exitosa.")
12
+ return
13
+
14
+ try:
15
+ conn = sqlite3.connect(bd)
16
+ print(f"✅ Conectado exitosamente a '{bd}'")
17
+ except Exception as e:
18
+ print(f"❌ Error al conectar con la base de datos: {e}")
19
+ return
20
+
21
+ while True:
22
+ print("\n" + "="*50)
23
+ print("🔍 NUEVA CONSULTA (Escribe 'salir' en cualquier momento para terminar)")
24
+
25
+ variable = input("1. ¿Cuál es la variable (columna)? : ")
26
+ if variable.lower() == 'salir': break
27
+
28
+ tabla = input("2. ¿Cuál es la tabla? : ")
29
+ if tabla.lower() == 'salir': break
30
+
31
+ valor = input("3. ¿Valor aproximado a buscar? : ")
32
+ if valor.lower() == 'salir': break
33
+
34
+ query = f"SELECT {variable} FROM {tabla} WHERE {variable} LIKE '%{valor}%' LIMIT 1"
35
+
36
+ try:
37
+ df_test = pd.read_sql_query(query, conn)
38
+
39
+ if not df_test.empty:
40
+ texto_real = str(df_test.iloc[0, 0]) # Convertir a string por seguridad
41
+ print("-" * 60)
42
+ print(f"🎯 TEXTO ENCONTRADO: '{texto_real}'")
43
+ print("-" * 60)
44
+ print(f"Pos | Char | ASCII | ¿Es Espacio?")
45
+ print("-" * 60)
46
+
47
+ contador_espacios = 0
48
+ for i, letra in enumerate(texto_real):
49
+ codigo_ascii = ord(letra)
50
+ es_espacio = ""
51
+ if letra == ' ':
52
+ es_espacio = "🔴 SI"
53
+ contador_espacios += 1
54
+ elif codigo_ascii == 160:
55
+ es_espacio = "👻 ESPACIO FANTASMA (160)"
56
+ contador_espacios += 1
57
+
58
+ print(f" {i:02d} | '{letra}' | {codigo_ascii:03d} | {es_espacio}")
59
+
60
+ print("-" * 60)
61
+ print(f"📊 LONGITUD TOTAL: {len(texto_real)} caracteres.")
62
+ print(f"🗑️ ESPACIOS TOTALES: {contador_espacios}")
63
+
64
+ else:
65
+ print("⚠️ No se encontró ninguna fila que coincida con esa búsqueda.")
66
+
67
+ except Exception as e:
68
+ print(f"❌ Error en la consulta SQL: {e}")
69
+ print("Verifica que la tabla y la columna existan.")
70
+
71
+ conn.close()
72
+ print("\n👋 ¡Gracias por usar Iel Tools! Conexión cerrada.")
@@ -0,0 +1,115 @@
1
+
2
+ import sqlite3
3
+ import pandas as pd
4
+ import io
5
+ import os
6
+ from google.colab import files
7
+
8
+ def inicio():
9
+ conn = None
10
+ nombre_db_actual = None
11
+
12
+ print("👋 ¡Bienvenido al Sistema SQL Dinámico v2.0!")
13
+
14
+ while True:
15
+
16
+ estado = f"🟢 Conectado a '{nombre_db_actual}'" if conn else "🔴 Desconectado"
17
+
18
+ print("\n" + "="*50)
19
+ print(f" 🛠️ MENÚ PRINCIPAL ({estado}) 🛠️")
20
+ print("="*50)
21
+ print("1. 📂 Importar Excel (Define o cambia Base de Datos)")
22
+ print("2. 🔍 Consultar datos (SQL: Select)")
23
+ print("3. ✏️ Modificar datos (SQL: Insert, Update, Delete)")
24
+ print("4. 🚪 Salir")
25
+ print("-" * 50)
26
+
27
+ opcion = input(">> Elige una opción (1-4): ")
28
+
29
+ # --- OPCIÓN 1: IMPORTAR EXCEL ---
30
+ if opcion == '1':
31
+ try:
32
+ print("\n📄 Paso 1: Sube tu archivo Excel (.xlsx):")
33
+ uploaded = files.upload()
34
+
35
+ if not uploaded:
36
+ print("⚠️ No se seleccionó archivo.")
37
+ continue
38
+
39
+ nombre_archivo_excel = list(uploaded.keys())[0]
40
+
41
+ # Configurar BD
42
+ cambiar_db = True
43
+ if conn is not None:
44
+ print(f"\n⚠️ Conectado a '{nombre_db_actual}'.")
45
+ resp = input(">> ¿Quieres cambiar de base de datos? (s/n): ").lower()
46
+ if resp != 's':
47
+ cambiar_db = False
48
+
49
+ if cambiar_db:
50
+ if conn: conn.close()
51
+ nuevo_nombre = input("\n🗄️ Paso 2: Nombre para la Base de Datos (ej: empresa.db): ")
52
+ if not nuevo_nombre.endswith('.db'): nuevo_nombre += '.db'
53
+ conn = sqlite3.connect(nuevo_nombre)
54
+ nombre_db_actual = nuevo_nombre
55
+ print(f"✅ Conectado a '{nombre_db_actual}'.")
56
+
57
+ # Cargar Excel
58
+ print(f" Leyendo '{nombre_archivo_excel}'...")
59
+ df = pd.read_excel(io.BytesIO(uploaded[nombre_archivo_excel]))
60
+ df.columns = df.columns.str.lower().str.replace('[^a-z0-9_]+', '_', regex=True)
61
+
62
+ nombre_tabla = input(">> Nombre para la TABLA en SQL: ")
63
+ df.to_sql(nombre_tabla, conn, if_exists='replace', index=False)
64
+ print(f"✅ Tabla '{nombre_tabla}' importada correctamente.")
65
+
66
+ except Exception as e:
67
+ print(f"❌ Error: {e}")
68
+
69
+ # --- OPCIÓN 2 y 3: CONSULTAR Y MODIFICAR ---
70
+ elif opcion in ['2', '3']:
71
+ # Verificar conexión
72
+ if conn is None:
73
+ print("\n⚠️ No hay conexión activa.")
74
+ db_input = input(">> Nombre de la base de datos a conectar (ej: empresa.db): ")
75
+ try:
76
+ conn = sqlite3.connect(db_input)
77
+ nombre_db_actual = db_input
78
+ print(f"✅ Conectado a '{nombre_db_actual}'.")
79
+ except Exception as e:
80
+ print(f"❌ Error al conectar: {e}")
81
+ continue
82
+
83
+ # Lógica diferenciada por opción
84
+ try:
85
+ # --- OPCIÓN 2: CONSULTAR (SELECT) ---
86
+ if opcion == '2':
87
+ print("\n🔍 Modo Consulta. Escribe tu SELECT:")
88
+ comando_sql = input("SQL >> ")
89
+ if comando_sql.strip().lower().startswith("select"):
90
+ resultado = pd.read_sql_query(comando_sql, conn)
91
+ print("\n--- RESULTADO ---")
92
+ print(resultado if not resultado.empty else "⚠️ Consulta vacía.")
93
+ else:
94
+ print("⚠️ En la opción 2 solo se permiten consultas SELECT.")
95
+
96
+ # --- OPCIÓN 3: MODIFICAR (INSERT/UPDATE/DELETE) ---
97
+ else:
98
+ print("\n✏️ Modo Edición. Escribe tu INSERT/UPDATE/DELETE:")
99
+ comando_sql = input("SQL >> ")
100
+ cursor = conn.cursor()
101
+ cursor.execute(comando_sql)
102
+ conn.commit()
103
+ print(f"✅ Comando ejecutado. Filas afectadas: {cursor.rowcount}")
104
+
105
+ except Exception as e:
106
+ print(f"❌ Error SQL: {e}")
107
+
108
+ # --- OPCIÓN 4: SALIR ---
109
+ elif opcion == '4':
110
+ if conn: conn.close()
111
+ print("👋 ¡Hasta luego!")
112
+ break
113
+
114
+ else:
115
+ print("⚠️ Opción no válida.")
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,16 @@
1
+ from setuptools import setup, find_packages
2
+
3
+ setup(
4
+ name="iel-tools", # Nombre para instalar: pip install iel-tools
5
+ version="0.0.3",
6
+ author="José Manuel Martin Coronado",
7
+ description="Librería unificada con herramientas PromptSQL y CheckSpace",
8
+ packages=find_packages(),
9
+
10
+ install_requires=[
11
+ "pandas",
12
+ "numpy",
13
+ "openai",
14
+ "requests"
15
+ ],
16
+ )