Esta es una propuesta de arquitectura de software en python, donde se facilita la actualización automática de dependencias que no se encuentren en gestores de paquetes de python, sino en repositorios remotos.
El software clonará las versiones más actualizadas de los repositorios establecidos como dependencias.
"./project/projectConfig/projectConfig.py"
y los reinstalará automaticamente en:
./project/dependencies
Esto lo hará antes de la ejecución del proyecto, en caso tal que no se encuentre incluido aún, para prevenir que se rompa.
A continuación se estable la estructura de directorios del proyecto.
Descripción | comando |
---|---|
./enterprise | Facilita el uso de repositorios externos como dependencias. |
./enterprise/enterpriseDeployment | Está para establecer repositorios externos como dependencias. |
./enterprise/enterpriceDependecies | Garantiza que las dependencias esten presentes. |
./enterprise/enterpriseCore | Indexa dependencias por herencia en una sola clase. |
./project | Escenario de trabajo del desarrollador. |
./project/data | Está para trabajar en el acceso y tranformación de data. |
./project/projectConfig | Está para configurar la clonación automántica de las dependencias a ser utilizadas en el projecto. |
./project/dependencies | Está para almacenar y llevar un control transparente de las dependencias de software externos usados en el proyecto, en especial, se agradece que sea software libre debidamente licenciado. |
./project/extract | Está para configurar procesos de extracción de data. |
./project/transformData | Está para configurar procesos de transformación de data. |
./project/reports | Está para almacenar los reportes generados en PDF. |
En esta demo se ejecutaron exitosamente los códigos de repositorios externos, sin la necesidad de alterar su código, por decirlo de alguna manera, fueron usados como librerías:
script | comando | comando |
---|---|---|
demoClienteWebserviceSipsa.py | Accede a los datos de la Webservice de SIPSA - DANE. | py demoClienteWebserviceSipsa.py |
demoDelimitedData.py | Delimita la data por periodos de tiempo para un posterior análisis. | py demoDelimitedData.py |
demoTransformData.py | Toma la data delimitada por periodos de tiempo, la trasforma de acuerdo al modelo de negocio y la guarda en: ./project/data/transformedData/json | py demoTransformData.py |
demoMatplotDraw.py | Toma la data transformada, la interpreta y genera gráficos de líneas para guardarlos en: ./project/data/transformedData/images | py demoMatplotDraw.py |
demoAll.py | Ejecuta todos los scripts en cola. | py demoAll.py |
Paso | Descripción | comando |
---|---|---|
Paso 1 | Crear el entorno de trabajo. | python -m venv env |
Paso 2 | Activar el entorno de trabajo. | ./env/Scripts/activate |
Paso 3 | Actualizar el gestor de paquetes. | python -m pip install --upgrade pip |
Paso 4 | Prepare la receta de librerías. | pip install -r requirements.txt |
Paso 5 | Ejecuta todos los scripts en cola. | py demoAll.py |
Paso 6 | Visualiza la información. | flask run --debug |
librería | Descripción | Comando |
---|---|---|
fpdf2 | Permite la creación de PDFs | python -m pip install fpdf2 |
GitPython | Facilita la clonación de repositorios externos | python -m pip install GitPython |
zeep | Permite el acceso a SOAP | python -m pip install zeep |
xmltodict | Hace que trabajar con XML se sienta como si estuviera trabajando con JSON , | python -m pip install xmltodict |
Con la instalación de la librería fpdf2 se instalarán las siguientes librerías de manera automática:
- defusedxml==0.7.1
- fonttools==4.51.0
- fpdf2==2.7.8
- pillow==10.3.0
Con la instalación de la librería GitPython se instalarán las siguientes librerías de manera automática:
- gitdb==4.0.11
- GitPython==3.1.43
- smmap==5.0.1
Con la instalación de la librería zeep se instalarán las siguientes librerías de manera automática:
- attrs==23.2.0
- certifi==2024.2.2
- charset-normalizer==3.3.2
- idna==3.6
- isodate==0.6.1
- lxml==5.2.1
- platformdirs==4.2.0
- pytz==2024.1
- requests==2.31.0
- requests-file==2.0.0
- requests-toolbelt==1.0.0
- six==1.16.0
- urllib3==2.2.1
- zeep==4.2.1
Puedes actualizar, contribuir y mejorar el presente software, es libre. Licencia GNU v3.
No esta permitido modificar la licencia de trabajos derivados de este proyecto.
Por norma internacional debes conservar el mismo tipo de licencia.
Si agregas nuevas librerías al proyecto, no olvides actualizar la receta.
pip freeze > requirements.txt
Paso | Descripción | comando |
---|---|---|
Paso 1 | Desactive el entorno de trabajo. | deactivate |
Paso 2 | Elimine el entorno anterior. | rm -R env |
Paso 3 | Cree un entorno de python. | python -m venv env |
Paso 4 | Active el entorno de trabajo. | ./env/Scripts/activate |
Paso 5 | Actualice el gestor de paquetes. | python -m pip install --upgrade pip |
Paso 6 | Instale las librerías necesarias para operar. | pip install -r requirements.txt |
Paso 7 | Ejecuta todos los scripts en cola. | py demoAll.py |
Paso 8 | Visualiza la información. | flask run --debug |
Paso 9 | Finalice su gestión. | deactivate |