Skip to content

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.

License

Notifications You must be signed in to change notification settings

oigonzalezp2024/python-software-architecture

Repository files navigation

Python Software Architecture

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.

Estructura y lógica de funcionamiento:

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.

Modo de uso:

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

Documentación técnica

Configuración del entorno de desarrollo.

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ías del proyecto.

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

Realice sus pruebas, actualizaciones o modificaciones.

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.

Actualizar la receta.

Si agregas nuevas librerías al proyecto, no olvides actualizar la receta.

pip freeze > requirements.txt

Comprobar que todo está en orden.

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

About

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.

Topics

Resources

License

Stars

Watchers

Forks