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 details)

Uploaded Source

File details

Details for the file cleandev_config_loader-0.3.5.tar.gz.

File metadata

  • Download URL: cleandev_config_loader-0.3.5.tar.gz
  • Upload date:
  • Size: 5.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.10

File hashes

Hashes for cleandev_config_loader-0.3.5.tar.gz
Algorithm Hash digest
SHA256 0bc8c84f0280d30802d59e22ad73ae567712c68881ef9aabb683b86b812b3003
MD5 a316504b2cb16ebe95018e28f40dc3bc
BLAKE2b-256 08098c9601afc437598875acfec1312602d8bf1d9c2d2eaf158b3d7c9e01b6ac

See more details on using hashes here.

Supported by

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