Skip to main content

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'

Metadata

Release files for cleandev-config-loader 0.3.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cleandev-config-loader 0.3.5
File Size Uploaded Provenance Actions
cleandev_config_loader-0.3.5.tar.gz 5.0 kB Without provenance Details for cleandev_config_loader-0.3.5.tar.gz

Release files / cleandev_config_loader-0.3.5.tar.gz

Download URL cleandev_config_loader-0.3.5.tar.gz
Size 5.0 kB
Tags Source
SHA-256 checksum
How to use checksums
0bc8c84f0280d30802d59e22ad73ae567712c68881ef9aabb683b86b812b3003
BLAKE2b-256 checksum
How to use checksums
08098c9601afc437598875acfec1312602d8bf1d9c2d2eaf158b3d7c9e01b6ac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.10

Security for cleandev-config-loader 0.3.5

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page