Open cesarjorgemartinez opened 2 years ago
Revisando con César, el problema está en que configparser soporta interpolación, por defecto interpreta un carácter %
en un fichero de config como prefijo de una variable que tiene que interpolar (https://docs.python.org/3/library/configparser.html#interpolation-of-values)
Ese problema está en la ETL que use configparser
, no en esta librería. Habría que desactivar la interpolación en la ETL que sea, llamando a la función configparser.ConfigParser
con el parámetro interpolation=None
.
Mismo caso casi seguro le pasará al vertical tpvs
Habría que trasladar el issue a la ETL del vertical concreto que te haya fallado para poder tener en cuenta el arreglo que comenta Rafa.
A modo informativo, en las prácticas recomendas para la creación de ETLs, se "deprecó el uso de configparser" a favor del uso de variables de entorno, sobre todo para el tema de contraseñas, se puede revisar aquí. Para las ETLs viejas que usen el configparser, se puede abrir issue directa en el vertical afectado, para las nuevas, entiendo que con el uso de variables de entorno ya no ocurrirá este problema.
Con este código de ejemplo en un fichero de nombre test.ppy (versión 0.6.0 de la libreria):
import tc_etl_lib as tc
import json
import os
pas = os.getenv('ETL_ALCALA_ENVIRONMENT_PASSWORD')
auth: tc.auth.authManager = tc.auth.authManager(endpoint='https://auth.iotplatform.telefonica.com:15001',
service = 'sc_alcala',
user = 'user_odata',
password = pas)
cbm: tc.cb.cbManager = tc.cb.cbManager(endpoint = 'https://cb.iotplatform.telefonica.com:10027')
entities = cbm.get_entities_page(subservice='/indicadores', auth=auth)
print (json.dumps(entities))
Lo invoco así:
$ export ETL_ALCALA_ENVIRONMENT_PASSWORD="Alcala2022%"
$ python test.py
Y obtengo el resultado esperado (las 25 entidades existentes en el subservicio en cuestión ahora mismo)
BUG Tratar caracteres especiales para el procesamiento de valores en ficheros de configuración
Te vuelve loco si por ejemplo hay un password con %. Te obliga a poner "%%", pero después de andar gastando mil tiempo (yo de python npi)