Package: cleandev-config-loader
Properties Loader V 0.3.5 BetaEsta libreria ofrece una forma facil para cargar archivo de propiedades y usarlo para configurar partes del proyecto
de una forma dinamica y limpia.Env varsVariables de entornoValoresDescripciónROO_PATH/xxx/xxx/xxxRuta completa de la raiz del proyectoCONFIG_FILErelative path to config fileRuta relativa del fichero de configuración tomando como base la raiz del proyectoDiagrama UmlIntroduccion:A continuacion se mostraran el uso de cada clase de esta libreria para que puedas sacarle el maximo partido de una
forma simple.Existen 3 clases y a continuación explicaremos como se usan cada una de ellas.Todos los ejemplos aqui mencionados van a ser sobre el archivo de ejemploproperties.iniy la ruta raiz de mi proyecto es: "/home/daniel/Proyectos/CLEANDEV/04-scm/config-loader"LoadConfigLa clase "LoadConfig" es la encargada de gestionar el orden de prioridad para ubicar el archivo de configuración que
pueden ser de 3 formas.Por parametrosPor variables de entornoPor defectoEste metodo posee una propiedad "path_properties" que retorna la ruta absoluta del archivo de propiedades que se ha
encontrado.Parametros (root_path, path_file)La clase "LoadConfig" puede recibir 2 parametros "root_path" y "path_file"root_path:
Se ha de proporcionar la ruta raiz del proyecto.path_file:
Se ha de proporcionar la ruta relativa a partir de la ruta raiz del proyecto.Ejemplofromproperties_loaderimportLoadConfigImplif__name__=='__main__':load_config:LoadConfigImpl=LoadConfigImpl(root_path='/home/daniel/Proyectos/CLEANDEV/04-scm/config-loader',path_file='properties.ini')print(load_config.path_properties)/home/daniel/Proyectos/CLEANDEV/04-scm/config-loader/properties.iniVariables de entornoSe pueden definir la ruta raiz "root_path" y la ruta relativa "path_file" mediante las variables de entorno
respectivas.ROOT_PATHCONFIG_FILENOTA:Asegurate de que las variables de entorno esta bien asignadas antes de ejecutar el siguiente ejemplo.fromproperties_loaderimportLoadConfigImplif__name__=='__main__':load_config:LoadConfigImpl=LoadConfigImpl()print(load_config.path_properties)/home/daniel/Proyectos/CLEANDEV/04-scm/config-loader/properties.iniValor por defectoEste caso solo va a funcionar siempre y cuando el archivo de python que es ejecutado esta a la misma altura que el fichero
"properties.ini"fromproperties_loaderimportLoadConfigImplif__name__=='__main__':load_config:LoadConfigImpl=LoadConfigImpl()print(load_config.path_properties)/home/daniel/Proyectos/CLEANDEV/04-scm/config-loader/properties.iniErrorEn caso de error mostrara un mensaje indicando cual fue la ruta en la que fue a buscar el archivo
y no lo encontro...
properties_loader.exceptions.PropertiesNotFoundError: Error al cargar el archivo de properties -> /home/daniel/Proyectos/CLEANDEV/04-scm/config-loader/properties.iniPropertiesEsta clase hereda de "LoadConfig" por lo que incluye todo lo anterior. Es decir que el control
de la busqueda del archivo de propiedades se aplica a este de la misma forma.Posee los mismos parametros para su configuración que el anterior caso y unicamente se mostrara un ejemplo
de lo nuevo que se añade.fromproperties_loaderimportPropertiesImplif__name__=='__main__':properties:PropertiesImpl=PropertiesImpl(root_path='/home/daniel/Proyectos/CLEANDEV/04-scm/config-loader',path_file='properties.ini')print(properties.__dict__){'INFO': {'version': '0.1.0', 'name_module': 'config_reader', 'author': 'Daniel Rodriguez Rodriguez', 'enviroment': 'development'}, 'OTHERS': {'url': 'https://gitlab.com/cleansoftware/libs/public/config_reader', 'bug_tracker': 'https://gitlab.com/cleansoftware/libs/public/config_reader/-/issues', 'python_version': '>3.9'}}PropertiesClassLoaderEn esta ocacion pese a que esta clase hereda de "Properties" tiene otro objetivo particular.Su objetivo es cargar las propiedades como atributo de la clase hija que herede de esta, veamoslo
con un ejemplo.fromproperties_loaderimportPropertiesClassLoaderclassAutoLoad(PropertiesClassLoader):passif__name__=='__main__':auto_load:AutoLoad=AutoLoad()print(auto_load._INFO)print(auto_load._OTHERS)print(auto_load._INFO['version']){'version': '0.1.0', 'name_module': 'config_reader', 'author': 'Daniel Rodriguez Rodriguez', 'enviroment': 'development'}
{'url': 'https://gitlab.com/cleansoftware/libs/public/config_reader', 'bug_tracker': 'https://gitlab.com/cleansoftware/libs/public/config_reader/-/issues', 'python_version': '>3.9'}
0.1.0NotaComo se puede observar el archivo de ejemplo tiene como grupos "INFO" y "OTHERS"
Autoload que hereda de la clase "PropertiesClassLoader" automaticamente tiene como atributos
el nombre de los grupos con el prefijo "_" es decir "_INFO" y "_OTHERS".Estos parametros son del tipo dict y en su interior poseen toda la información de ese grupo de propiedadesFiltroDado que esta clase añade atributos de forma automatica posee un filtro para agregar unicamente
aquellos grupos que se deseen cargar.fromproperties_loaderimportPropertiesClassLoaderclassAutoLoad(PropertiesClassLoader):def__init__(self):super(AutoLoad,self).__init__(groups=['INFO'])if__name__=='__main__':auto_load:AutoLoad=AutoLoad()print(auto_load._INFO)# La siguiente linea arrojara un errorprint(auto_load._OTHERS){'version': '0.1.0', 'name_module': 'config_reader', 'author': 'Daniel Rodriguez Rodriguez', 'enviroment': 'development'}
Traceback (most recent call last):
  File "/home/daniel/Proyectos/CLEANDEV/04-scm/config-loader/main.py", line 14, in <module>
    print(auto_load._OTHERS)
AttributeError: 'AutoLoad' object has no attribute '_OTHERS'