77from json import load
88from time import sleep
99from random import choice
10- import colorama
1110import threading
11+ import colorama
12+
1213
1314class AfficheurCLI :
1415 """
@@ -51,7 +52,7 @@ def __init__(self):
5152 "rayon_laser" : elements_animations ["rayons_laser" ]
5253 }
5354
54- def reecrire_ligne (self , message : str ):
55+ def reecrire_ligne (self , message : str ) -> None :
5556 """
5657 Permet d'écrire des caractères par dessus la dernière ligne dans la
5758 ligne de commande.
@@ -68,11 +69,12 @@ def reecrire_ligne(self, message: str):
6869 # Validation du paramètre
6970 if not isinstance (message , str ):
7071 raise TypeError ("Le message pour la réécriture doit être une chaîne de caractères." )
72+
7173 # Ecriture du message
7274 sys .stdout .write ("\r " + self .COULEUR_MESSAGE_NORMAL + message )
7375 sys .stdout .flush ()
7476
75- def affiche_message (self , message : str ):
77+ def affiche_message (self , message : str ) -> None :
7678 """
7779 Permet d'écrire un message commun dans la ligne de commande avec la bonne
7880 couleur.
@@ -89,10 +91,11 @@ def affiche_message(self, message: str):
8991 # Validation du paramètre
9092 if not isinstance (message , str ):
9193 raise TypeError ("Le message doit être une chaîne de caractères." )
94+
9295 # Ecriture du message
9396 print (self .COULEUR_MESSAGE_NORMAL + message , flush = True )
9497
95- def affiche_erreur (self , message : str , exception : Exception ):
98+ def affiche_erreur (self , message : str , exception : Exception ) -> None :
9699 """
97100 Permet d'écrire un message d'erreur dans la ligne de commande avec la bonne
98101 couleur.
@@ -113,10 +116,11 @@ def affiche_erreur(self, message: str, exception: Exception):
113116 raise TypeError ("Le message d'erreur doit être une chaîne de caractères." )
114117 if not isinstance (exception , Exception ):
115118 raise TypeError ("L'exception à afficher doit être une instance de Exception." )
119+
116120 # Ecriture du message
117121 print (self .COULEUR_MESSAGE_ERREUR + f"{ message } \n { exception } " , flush = True )
118122
119- def lance_animation_chargement (self ):
123+ def lance_animation_chargement (self ) -> None :
120124 """
121125 Lance une animation de chargement dans la ligne de commande via un thread non bloquant.
122126 Si l'animation de chargement est déjà en cours, cette méthode ne fait rien.
@@ -130,11 +134,12 @@ def lance_animation_chargement(self):
130134 self ._thread_chargement_termine .clear ()
131135 self ._thread_chargement_erreur .clear ()
132136 # Initialisation du thread pour le chargement
133- self ._thread_chargement = threading .Thread (target = self ._animation_chargement , daemon = True )
137+ self ._thread_chargement = threading .Thread (target = self ._animation_chargement ,
138+ daemon = True )
134139 # Lancement du thread pour le chargement
135140 self ._thread_chargement .start ()
136-
137- def _animation_chargement (self ):
141+
142+ def _animation_chargement (self ) -> None :
138143 """
139144 Lance l'animation de chargement en boucle jusqu'à la demande d'arrêt via
140145 l'attribut :attr:`_thread_chargement_demande_arret`.
@@ -147,7 +152,7 @@ def _animation_chargement(self):
147152 fantome_chargement = self ._animations_actuelles ["fantome" ][0 ]
148153 signes_rayon_laser = self ._animations_actuelles ["rayon_laser" ]
149154 couleurs = ["\033 [91m" , "\033 [93m" , "\033 [94m" , "\033 [95m" ] # Rouge, Jaune, Bleu, Magenta
150-
155+
151156 # Eléments de l'animation de fin de chargement en cas de succès
152157 chasseur_gagne = self ._animations_actuelles ["chasseur" ][2 ]
153158 fantome_perd = self ._animations_actuelles ["fantome" ][1 ]
@@ -164,30 +169,32 @@ def _animation_chargement(self):
164169 while not (self ._thread_chargement_termine .is_set ()
165170 or self ._thread_chargement_erreur .is_set ()):
166171 # Arrête d'ajouter des caractères lorsque la chaîne est trop longue
167- if ( index_boucle < 40 ) :
172+ if index_boucle < 40 :
168173 # Récupération de la prochaine couleur
169174 couleur_courante = couleurs [(index_boucle % len (couleurs ))]
170175 # Récupération du prochain signe du rayon
171176 signe_courant = signes_rayon_laser [(index_boucle % len (signes_rayon_laser ))]
172177 # Ajout du dernier signe avec la nouvelle couleur au rayon
173178 rayon_laser += couleur_courante + signe_courant
174179 # Réactualisation de l'animation de chargement
175- self .reecrire_ligne (f"{ chasseur_chargement } { rayon_laser } \033 [0m{ fantome_chargement } " )
180+ self .reecrire_ligne (
181+ f"{ chasseur_chargement } { rayon_laser } \033 [0m{ fantome_chargement } "
182+ )
176183 index_boucle += 1
177184 sleep (0.05 )
178185
179186 # Suppression de la ligne de chargement
180187 self .reecrire_ligne ("\033 [K" )
181188 espace_rayon_laser = " " * index_boucle
182- if ( self ._thread_chargement_termine .is_set () ):
189+ if self ._thread_chargement_termine .is_set ():
183190 # Message d'animation terminée
184191 self .reecrire_ligne (f"{ chasseur_gagne } { espace_rayon_laser } \033 [0m{ fantome_perd } \n " )
185- self .affiche_message (f "Analyse terminée! We came, we saw, we logged it." )
192+ self .affiche_message ("Analyse terminée! We came, we saw, we logged it." )
186193 else :
187194 # Message d'animation erreur
188195 self .reecrire_ligne (f"{ chasseur_perd } { espace_rayon_laser } \033 [0m{ fantome_gagne } \n " )
189196
190- def stop_animation_chargement (self , erreur : bool = False ):
197+ def stop_animation_chargement (self , erreur : bool = False ) -> None :
191198 """
192199 Lance une demande d'arrêt au thread qui gère l'animation de chargement
193200 en cours. Si aucune animation n'est en cours, cette méthode ne fait rien.
@@ -198,6 +205,10 @@ def stop_animation_chargement(self, erreur: bool = False):
198205 Returns:
199206 None
200207 """
208+ # Vérification du type du paramètre
209+ if not isinstance (erreur , bool ):
210+ raise TypeError ("L'indication d'une erreur doit être un booléan." )
211+
201212 # Si le thread de chargement existe et est lancé
202213 if self ._thread_chargement and self ._thread_chargement .is_alive ():
203214 # Lancement de la demade d'arrêt
0 commit comments