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