streaming_installer
streaming_installer
¶
Script di installazione del software Streaming Santa Croce
VenvPaths
¶
Bases: NamedTuple
Raccoglie tutti i percorsi relativi al virtual environment.
Source code in streaming_installer.py
from_base(base_dir)
staticmethod
¶
Costruisce i percorsi del venv a partire dalla directory base. :param base_dir: Directory root del progetto. :return: Istanza di VenvPaths.
Source code in streaming_installer.py
ask_yes(prompt, default_yes=False)
¶
Chiede conferma all'utente e restituisce True se la risposta è affermativa. :param prompt: Testo della domanda da mostrare. :param default_yes: Se True, INVIO senza testo conta come 'sì'. :return: True se l'utente ha risposto affermativamente.
Source code in streaming_installer.py
build_docs(paths)
¶
Genera la documentazione HTML con mkdocs build usando la configurazione
in mkdocs.yml. L'output viene scritto nella cartella site/.
:param paths: Istanza VenvPaths.
Source code in streaming_installer.py
build_exe(paths)
¶
Compila l'eseguibile con PyInstaller e copia i file JSON nella cartella dist. :param paths: Istanza VenvPaths.
Source code in streaming_installer.py
check_and_enter_venv(paths)
¶
Verifica che il venv esista ed entra se non siamo già dentro. Termina lo script se il venv non esiste. :param paths: Istanza VenvPaths con i percorsi del venv.
Source code in streaming_installer.py
clean_build()
¶
Rimuove i file e le directory temporanei generati dalla build (spec, log, pycache, build, dist).
Source code in streaming_installer.py
delete_sources(paths)
¶
Elimina tutti i file sorgente del progetto, mantenendo solo i file elencati in SOURCES_KEEP (.json, .exe, streaming_installer.py, .env). Chiede conferma prima di procedere. :param paths: Istanza VenvPaths.
Source code in streaming_installer.py
deploy_exe()
¶
Copia l'eseguibile dalla cartella dist alla directory base del progetto. Non fa nulla se l'eseguibile non è stato ancora compilato.
Source code in streaming_installer.py
download_from_github(paths, branch=GITHUB_DEFAULT_BRANCH)
¶
scarica l'ultima versione del software da GitHub ed estrae lo zip nella directory base del progetto, proteggendo i file di configurazione esistenti. :param paths: Istanza VenvPaths (serve python_path e base_dir). :param branch: Branch GitHub da scaricare (default: master). :return: Tupla con i percorsi dei file estratti.
Source code in streaming_installer.py
248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 | |
enter_venv(paths)
¶
Attiva il virtual environment modificando PATH e sys.path. :param paths: Istanza VenvPaths con i percorsi del venv.
Source code in streaming_installer.py
format_code(paths)
¶
Riformatta i sorgenti Python con autopep8, escludendo la cartella venv. :param paths: Istanza VenvPaths.
Source code in streaming_installer.py
get_base_prefix()
¶
Restituisce il prefisso base dell'ambiente Python corrente. :return: Prefisso base.
github_url(branch=GITHUB_DEFAULT_BRANCH)
¶
Restituisce l'URL API per scaricare lo zip del branch indicato. L'endpoint API funziona sia per repository pubblici che privati (con token). :param branch: Nome del branch da scaricare. :return: URL completo dello zip via API GitHub.
Source code in streaming_installer.py
handle_exit()
¶
Su Windows, se lo script è stato aperto con doppio clic (processo console solitario), attende che l'utente prema INVIO prima di chiudere.
Source code in streaming_installer.py
in_virtualenv()
¶
Controlla se Python è in esecuzione dentro un virtualenv. :return: True se siamo dentro un virtualenv.
Source code in streaming_installer.py
install_dependencies(paths)
¶
Installa le dipendenze del progetto (requirements.txt) e gli strumenti di sviluppo (pyinstaller, mkdocs). Gestisce il blocco antivirus su pyinstaller chiedendo all'utente di aggiungere un'eccezione. :param paths: Istanza VenvPaths.
Source code in streaming_installer.py
lint_code(paths)
¶
Esegue pylint su tutti i file .py del progetto (esclusa la cartella
venv) e logga il report completo. Termina con exit code 0 anche in
presenza di warning: pylint usa exit code non-zero per qualsiasi
osservazione, quindi l'errore viene loggato ma non fa fallire lo script.
:param paths: Istanza VenvPaths.
Source code in streaming_installer.py
main(args)
¶
Punto di ingresso del flusso di installazione/build. Ogni step corrisponde a una funzione dedicata, selezionata tramite i flag passati da riga di comando.
Flag azione
(nessuno) setup venv → download opzionale → install dipendenze --install setup completo + build exe + deploy + clean + delete sorgenti --exe compila l'eseguibile con PyInstaller --format riformatta i sorgenti con autopep8 --lint analisi statica con pylint --docs genera la documentazione HTML con mkdocs --clean rimuove file e directory temporanei di build
Flag modificatori (non attivano il setup da soli): --verbose mostra l'output di debug (incluso pip riga per riga) --dry-run mostra gli step senza eseguirli --branch branch GitHub da scaricare (default: master)
:param args: Argomenti parsati da ArgumentParser.
Source code in streaming_installer.py
605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 | |
run_package_manager(package, python_path='python', tool='pip', extra_flags=None)
¶
Esegue pip o pipwin per installare uno o più pacchetti, mostrando l'output in tempo reale riga per riga tramite il logger. :param package: Pacchetto o lista di pacchetti da installare. :param python_path: Percorso dell'interprete Python. :param tool: Stringa 'pip' oppure 'pipwin'. :param extra_flags: Flag aggiuntivi da passare al tool (es. ['--upgrade']). :return: Codice di ritorno del sottoprocesso. :raises ValueError: Se il tool non è 'pip' o 'pipwin'. :raises subprocess.CalledProcessError: Se il comando fallisce.
Source code in streaming_installer.py
setup_venv(paths)
¶
Crea o ricrea il virtual environment nella directory del progetto. Chiede conferma prima di sovrascrivere un venv esistente. :param paths: Istanza VenvPaths.
Source code in streaming_installer.py
validate_args(args)
¶
Controlla combinazioni di flag incompatibili o ridondanti e termina lo
script con un messaggio chiaro se ne trova. Emette warning per
combinazioni legali ma potenzialmente inaspettate (es. --branch
senza un'azione che scarica).
:param args: Argomenti parsati da ArgumentParser. :raises SystemExit: Se viene rilevata una combinazione non valida.
Source code in streaming_installer.py
zip_no_root(zip_file, main_dir='', extracted_files=None, protected=CONFIG_FILES_PROTECTED)
¶
Itera i file dentro lo zip saltando la cartella root e i file protetti già presenti su disco. :param zip_file: Oggetto ZipFile da iterare. :param main_dir: Nome della cartella root da rimuovere dai percorsi. :param extracted_files: Lista in cui accumulare i nomi dei file estratti. :param protected: Tuple di suffissi di file da non sovrascrivere se già esistenti su disco. :yield: oggetti ZipInfo con il percorso relativo corretto.