Skip to main content

Loader for properties.ini make more easy

Project description

Properties Loader V 0.3.5 Beta

Esta libreria ofrece una forma facil para cargar archivo de propiedades y usarlo para configurar partes del proyecto de una forma dinamica y limpia.

Env vars

Variables de entorno Valores Descripción
ROO_PATH /xxx/xxx/xxx Ruta completa de la raiz del proyecto
CONFIG_FILE relative path to config file Ruta relativa del fichero de configuración tomando como base la raiz del proyecto

Diagrama Uml

Diagrama

Introduccion:

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 ejemplo properties.ini y la ruta raiz de mi proyecto es: "/home/daniel/Proyectos/CLEANDEV/04-scm/config-loader"

LoadConfig

La 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 parametros
  • Por variables de entorno
  • Por defecto

Este 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.

Ejemplo

from properties_loader import LoadConfigImpl

if __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.ini

Variables de entorno

Se pueden definir la ruta raiz "root_path" y la ruta relativa "path_file" mediante las variables de entorno respectivas.

  • ROOT_PATH
  • CONFIG_FILE

NOTA:

Asegurate de que las variables de entorno esta bien asignadas antes de ejecutar el siguiente ejemplo.

from properties_loader import LoadConfigImpl

if __name__ == '__main__':
    load_config: LoadConfigImpl = LoadConfigImpl()
    print(load_config.path_properties)
/home/daniel/Proyectos/CLEANDEV/04-scm/config-loader/properties.ini

Valor por defecto

Este 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"

from properties_loader import LoadConfigImpl

if __name__ == '__main__':
    load_config: LoadConfigImpl = LoadConfigImpl()
    print(load_config.path_properties)
/home/daniel/Proyectos/CLEANDEV/04-scm/config-loader/properties.ini

Error

En 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.ini

Properties

Esta 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.

from properties_loader import PropertiesImpl

if __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'}}

PropertiesClassLoader

En 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.

from properties_loader import PropertiesClassLoader


class AutoLoad(PropertiesClassLoader):
    pass


if __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.0

Nota


Como 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 propiedades


Filtro

Dado que esta clase añade atributos de forma automatica posee un filtro para agregar unicamente aquellos grupos que se deseen cargar.

from properties_loader import PropertiesClassLoader


class AutoLoad(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 error
    print(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'

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cleandev_config_loader-0.3.5.tar.gz (5.0 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page