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.

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

Prima di eseguire lo script installiamo virtualenv e creiamo un ambiente virtuale in cui inseriamo tutte le librerie necessarie all’esecuzione della nostra applicazione. Queste in particolare sono:

​ - matplotlib

​ - numpy

​ - mysqlclient

​ - mysql-connector-python

​ - pymysql

Gli stages che andiamo ad eseguire sono:

​ - build

​ - verify

​ - unit-test

Nello stage build creiamo il file di testo requirements.txt all’interno del quale andiamo ad inserire tutte le librerie che vogliamo installare ed utilizzare con le loro rispettive versioni.

Nello stage verify utilizziamo 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 installiamo ed 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.

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.13.tar.gz (5.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.13-py3-none-any.whl (6.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pss_marta_danilo-0.0.13.tar.gz
  • Upload date:
  • Size: 5.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.13.tar.gz
Algorithm Hash digest
SHA256 68b4de64d181268b16294375965a3d0f5b06231a5c4a008d1f1885f647b4412c
MD5 95c8d2d6d45a149587b13ee2b366936b
BLAKE2b-256 acab7c923b275e47f8a364460f8f7b31de1e96d8011854cc918eca0f4aea92f5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pss_marta_danilo-0.0.13-py3-none-any.whl
  • Upload date:
  • Size: 6.6 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.13-py3-none-any.whl
Algorithm Hash digest
SHA256 4836260c76cd0ddd7f3d7a51a8be1a9c7c97a0450735337fb529289eebac0da9
MD5 28f61a5ab9e12b822a4471ce201a24a4
BLAKE2b-256 9739cef522a0edfb6fe9d3fcab6235cd34bfcb71e78476aeaa9edfcbe49aa2f2

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