Skip to main content

...

Project description

## Componenti del gruppo

Danilo Fumagalli, mat 830683

Marta Pelusi, mat 800444

## Introduzione

Si vuole implementare una pipeline con GitLab per una applicazione scritta in lunguaggio Python che utilizza le seguenti librerie:

​ - matplotlib

​ - numpy

​ - MySQLdb

L’applicazione vuole creare effetti di colore da immagini estratte da un database mySQL.

## Come funziona

Questo è un progetto strutturato in più script:

​ - media.py

​ - scambia.py

​ - main.py

[media.py](https://gitlab.com/Bakedsloth/2020_assignment1_a1/-/blob/develop/media.py) è composto da una funzione get_media che prende in input un’immagine e restituisce un array 1x3 delle medie del colore nei tre canali colore RGB dell’immagine in input.

[scambia.py](https://gitlab.com/Bakedsloth/2020_assignment1_a1/-/blob/develop/scambia.py) è composto da una funzione scambia che prende in input un’immagine e un intero pos e, in base al valore di pos, scambia tra loro due canali colore restituendo l’immagine modificata.

l’intero pos corrisponde alla posizione (nell’array restituito dallo script media.py) della media colore che ha il valore più alto.

media.py e scambia.py sono due script che possono essere eseguiti indipendentemente tra loro.

[main.py](https://gitlab.com/Bakedsloth/2020_assignment1_a1/-/blob/develop/main.py) è lo script che unisce l’operato degli altri due script.

L’altro componente dell’applicazione è un database mySQL composto da 5 righe e 4 colonne.

Le quattro colonne sono rappresentative dell’id, del nome, dell’estensione e del percorso di 5 immagini.

Le immagini sono contenute in una cartella chiamata immagini all’interno del repository GitLab.

Il database è popolato attraverso un file csv chiamato metadata.csv, anch’esso all’interno del repository GitLab.

## Assunzioni realizzazione della pipeline

Il file [.gitlab-ci.yml](https://gitlab.com/Bakedsloth/2020_assignment1_a1/-/blob/develop/.gitlab-ci.yml) contiene la nostra pipeline.

Abbiamo scelto di non imporre una versione precisa di Python, ma usare l’ultima versione installata.

Come servizi abbiamo scelto di utilizzare l’ultima versione di mySQL per connetterci al nostro database.

Abbiamo creato diverse variabili MYSQL username e password al fine di poterci connettere al nostro database, e altre variabili PYPI username e password per connetterci a PyPi. Tali variabili sono inserite anche come variabili d’ambiente in GitLab.

Salviamo i moduli nella cache per risparmiare tempo nelle esecuzioni successive.

Prima di eseguire lo script installiamo virtualenv e creiamo e attiviamo un ambiente virtuale che abbiamo nominato venv.

Gli stages che andiamo ad eseguire sono:

Nello stage verify utilizziamo le librerie prospector e bandit per individuare eventuali errori nello script main, in quanto esso è quello che mette insieme i vari script richiamandoli, come spiegato sopra.

Nello stage unit-test utilizziamo la libreria pytest per eseguire i test all’interno dello script [test_unit.py](https://gitlab.com/Bakedsloth/2020_assignment1_a1/-/blob/develop/test_unit.py). Questo script testa il corretto funzionamento degli script media.py e scambia.py facendo delle prove: nel caso di media.py viene testata una proprietà specifica del calcolo della media aritmetica, mentre nel caso di scambia.py viene verificato se scambiando canali colore due volte l’immagine resta la stessa in quanto lo scambio è commutativo.

Nello stage integration-test utilizziamo la libreria pytest per verificare che viene eseguita correttamente la connessione tra applicazione e database. Abbiamo scelto di utilizzare un nostro database in locale come secondo componente della nostra applicazione, ma per fare l’integration-test abbiamo utilizzato la funzione mySQL che offre gitlab e, attraverso lo script [popola_db.py](https://gitlab.com/assignment1_pelusi_fumagalli/2020_assignment1_a1_gruppo/-/blob/master/pss-marta-danilo/popola_db.py), abbiamo popolato il database su gitlab e lo abbiamo testato insieme allo script di test [test_integration.py](https://gitlab.com/assignment1_pelusi_fumagalli/2020_assignment1_a1_gruppo/-/blob/master/pss-marta-danilo/test_integration.py).

Nello stage package installiamo ed utilizziamo le librerie setuptools wheel e, attraverso il file setup.py, creiamo un package in cui sono contenuti i nostri file di progetto. Nel file [setup.py](https://gitlab.com/assignment1_pelusi_fumagalli/2020_assignment1_a1_gruppo/-/blob/master/setup.py) precisiamo il nome del package che stiamo creando (nel nostro caso “pss_marta_danilo”), la versione, l’autore, una descrizione d’esempio, una licenza, nelle parole chiave d’esempio, l’url del nostro progetto e includiamo anche il file README.md.

Nello stage release installiamo ed utilizziamo la libreria twine al fine di caricare sulla pagina del nostro account PyPi il package contenente il nostro progetto GitLab. Per accedervi utilizziamo le variabili contenti username e password precisate nell’elenco variabili in cima al file .gitlab-ci.yml.

Nello stage deploy […]

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

pss_marta_danilo-0.0.19.tar.gz (784.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pss_marta_danilo-0.0.19-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

Details for the file pss_marta_danilo-0.0.19.tar.gz.

File metadata

  • Download URL: pss_marta_danilo-0.0.19.tar.gz
  • Upload date:
  • Size: 784.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.9.0

File hashes

Hashes for pss_marta_danilo-0.0.19.tar.gz
Algorithm Hash digest
SHA256 df99fedd112f2257243c3361c49645b73fd8c1c40592a2c8dd3d550824ae0f0a
MD5 2ba547b611c5656b7f8d1e6d3b8a8d12
BLAKE2b-256 8ae6b2377f6d48a4777e22c47bcc7ca42cc8b02f9318c0a2006f6d1350efc8b7

See more details on using hashes here.

File details

Details for the file pss_marta_danilo-0.0.19-py3-none-any.whl.

File metadata

  • Download URL: pss_marta_danilo-0.0.19-py3-none-any.whl
  • Upload date:
  • Size: 7.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.9.0

File hashes

Hashes for pss_marta_danilo-0.0.19-py3-none-any.whl
Algorithm Hash digest
SHA256 b5ab4676a79bf0c2ed8961c9b6a66aab470a120830b3061cfe2b69615f1bd965
MD5 fc500cafa3bfeb26eb46f7ee356b7b5c
BLAKE2b-256 86e3c6ff786dfa0e065a2735e366539b036e06b190687d6d9f87a2bd4a2a04e5

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