Ë
    ­mâiÂ  ã                   ór   — d Z ddlZddlmZ ddlmZ ddlmZ  G d„ de«      Z G d„ d	«      Z G d
„ d«      Z	y)zC
Logger utility for detailed colored output with progress tracking
é    N)Údatetime)ÚOptional)ÚEnumc                   ó    — e Zd ZdZdZdZdZdZy)ÚLogLevelÚINFOÚSUCCESSÚWARNINGÚERRORÚDEBUGN)Ú__name__Ú
__module__Ú__qualname__r   r	   r
   r   r   © ó    ú1/home/factor_ks/STREAMA2026/tests/utils/logger.pyr   r   
   s   „ Ø€DØ€GØ€GØ€EØ�Er   r   c                   ó4   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
Zy)ÚColorzANSI color codesz[0mz[91mz[92mz[93mz[94mz[95mz[96mz[97mz[1mN)r   r   r   Ú__doc__ÚRESETÚREDÚGREENÚYELLOWÚBLUEÚMAGENTAÚCYANÚWHITEÚBOLDr   r   r   r   r      s2   „ ÙØ€EØ
€CØ€EØ€FØ€DØ€GØ€DØ€EØ�Dr   r   c            
       óú   — e Zd ZdZddefd„Zdefd„Zdededefd„Z	 dd
e	dedede
e   fd„Zdedefd„Zdedefd„Zdedefd„Zdededefd„Zdedefd„Zdedefd„Zdefd„Zdefd„Zdedededefd„Zd„ Zy	)ÚLoggerz1Detailed logger with colors and progress trackingÚverbosec                 óŠ   — || _         t        j                  «       | _        d| _        d| _        d| _        g | _        g | _        y )Nr   )	r!   r   ÚnowÚ
start_timeÚchecks_passedÚchecks_failedÚchecks_warningsÚerrorsÚwarnings)Úselfr!   s     r   Ú__init__zLogger.__init__"   s<   € ØˆŒÜ"Ÿ,™,›.ˆŒØˆÔØˆÔØ ˆÔØˆŒØˆ�r   Úreturnc                 óH   — t        j                  «       j                  d«      S )zGet formatted timestampz%H:%M:%S)r   r#   Ústrftime)r*   s    r   Ú_get_timestampzLogger._get_timestamp+   s   € ä�|‰|‹~×&Ñ& zÓ2Ð2r   ÚtextÚcolorc                 ó.   — |› |› t         j                  › �S )zApply color to text)r   r   )r*   r0   r1   s      r   Ú	_colorizezLogger._colorize/   s   € à�˜˜œuŸ{™{˜mÐ,Ð,r   NÚlevelÚcategoryÚmessageÚsuccessc                 óx  — | j                   sy| j                  «       }|du rt        j                  }d}n›|du rt        j                  }d}n„|t
        j                  k(  rt        j                  }d}n^|t
        j                  k(  rt        j                  }d}n8|t
        j                  k(  rt        j                  }d}nt        j                  }d}| j                  d|› d	�t        j                  t        j                  z   «      }| j                  d|j                  › d	�|«      }	t        |› d
|› d
|	› d
|› d
|› �	«       |du r| xj                   dz  c_        y|du r6| xj"                  dz  c_        | j$                  j'                  |› d|› �«       y|t
        j                  k(  r| xj(                  dz  c_        yy)zInternal log methodNTu   âœ“Fu   âœ—u   âš u   â€¢ú[ú]ú é   z: )r!   r/   r   r   r   r   r	   r   r
   r   r   r3   r   r   ÚvalueÚprintr%   r&   r(   Úappendr'   )
r*   r4   r5   r6   r7   Ú	timestampr1   ÚsymbolÚcategory_coloredÚlevel_coloreds
             r   Ú_logzLogger._log3   s‡  € ð �|Š|Øà×'Ñ'Ó)ˆ	ð �d‰?Ü—K‘KˆEØ‰FØ˜ÑÜ—I‘IˆEØ‰FØ”h×&Ñ&Ò&Ü—K‘KˆEØ‰FØ”h—n‘nÒ$Ü—I‘IˆEØ‰FØ”h×&Ñ&Ò&Ü—L‘LˆEØ‰Fä—J‘JˆEØˆFàŸ>™>¨A¨h¨Z°q¨/¼5¿:¹:ÌÏ
É
Ñ;RÓSÐØŸ™¨¨5¯;©;¨-°qÐ'9¸5ÓAˆä��˜1Ð-Ð.¨a°¨¸aÀ¸yÈÈ&ÈÐRÔSð �d‰?Ø×Ò !Ñ#ÖØ˜ÑØ×Ò !Ñ#ÕØ�K‰K×Ñ ( ¨2¨g¨YÐ7Õ8Ø”h×&Ñ&Ò&Ø× Ò  AÑ%Ö ð 'r   c                 óF   — | j                  t        j                  ||«       y)zLog info messageN)rD   r   r   ©r*   r5   r6   s      r   ÚinfozLogger.info]   s   € à�	‰	”(—-‘- ¨7Õ3r   c                 óJ   — | j                  t        j                  ||d¬«       y)zLog success messageT©r7   N)rD   r   r	   rF   s      r   r7   zLogger.successa   s   € à�	‰	”(×"Ñ" H¨g¸tˆ	ÕDr   c                 óF   — | j                  t        j                  ||«       y)zLog warning messageN)rD   r   r
   rF   s      r   ÚwarningzLogger.warninge   s   € à�	‰	”(×"Ñ" H¨gÕ6r   Údetailsc                 ó„   — | j                  t        j                  ||«       | j                  j	                  |||dœ«       y)z Log warning message with details)r5   r6   rL   N)rD   r   r
   r)   r?   )r*   r5   r6   rL   s       r   Úwarning_with_detailszLogger.warning_with_detailsi   s8   € à�	‰	”(×"Ñ" H¨gÔ6Ø�‰×ÑØ ØØñ
õ 	r   c                 óJ   — | j                  t        j                  ||d¬«       y)zLog error messageFrI   N)rD   r   r   rF   s      r   ÚerrorzLogger.errorr   s   € à�	‰	”(—.‘. (¨G¸Uˆ	ÕCr   c                 óF   — | j                  t        j                  ||«       y)zLog debug messageN)rD   r   r   rF   s      r   ÚdebugzLogger.debugv   s   € à�	‰	”(—.‘. (¨GÕ4r   c                 ó”  — | j                   syt        «        t        | j                  dt        j                  t        j
                  z   «      «       t        | j                  d|› �t        j                  t        j
                  z   «      «       t        | j                  dt        j                  t        j
                  z   «      «       y)zPrint section headerNú<============================================================ú  )r!   r>   r3   r   r   r   ©r*   r0   s     r   ÚheaderzLogger.headerz   sw   € à�|Š|ØÜŒÜˆd�n‰n˜X¤u§z¡z´E·J±JÑ'>Ó?Ô@Üˆd�n‰n˜r $ ˜[¬%¯*©*´u·z±zÑ*AÓBÔCÜˆd�n‰n˜X¤u§z¡z´E·J±JÑ'>Ó?Õ@r   c                 óþ   — | j                   syt        «        t        | j                  d|› �t        j                  t        j
                  z   «      «       t        | j                  dt        j
                  «      «       y)zPrint subsection headerNrU   z(----------------------------------------)r!   r>   r3   r   r   r   rV   s     r   Ú	subheaderzLogger.subheaderƒ   sN   € à�|Š|ØÜŒÜˆd�n‰n˜r $ ˜[¬%¯*©*´u·}±}Ñ*DÓEÔFÜˆd�n‰n˜X¤u§}¡}Ó5Õ6r   ÚcurrentÚtotalc                 ó|  — | j                   sy||z  dz  }d}t        ||z  |z  «      }d|z  d||z
  z  z   }| j                  «       }	| j                  d|› d�t        j
                  t        j                  z   «      }
| j                  |t        j                  «      }t        |	› d|
› d|› d	|› d
|d›d|› d|› d�«       y)zShow progress barNéd   é   u   â–ˆu   â–‘r9   r:   r;   z [ú] z.1fz% (ú/ú))	r!   Úintr/   r3   r   r   r   r   r>   )r*   r5   r6   rZ   r[   Ú
percentageÚ
bar_lengthÚfilledÚbarr@   rB   Úbar_coloreds               r   ÚprogresszLogger.progress‹   sÕ   € à�|Š|Øà ‘o¨Ñ,ˆ
Øˆ
Ü�Z 'Ñ)¨EÑ1Ó2ˆØ�f‰n˜u¨
°VÑ(;Ñ<Ñ<ˆà×'Ñ'Ó)ˆ	ØŸ>™>¨A¨h¨Z°q¨/¼5¿:¹:ÌÏ
É
Ñ;RÓSÐØ—n‘n S¬%¯+©+Ó6ˆô 	��˜1Ð-Ð.¨a°¨y¸¸;¸-ÀrÈ*ÐUXÐIYÐY\Ð]dÐ\eÐefÐglÐfmÐmnÐoÕpr   c                 óø  — | j                   syt        j                  «       | j                  z
  }| j                  | j
                  z   }t        «        t        | j                  dt        j                  t        j                  z   «      «       t        | j                  dt        j                  t        j                  z   «      «       t        | j                  dt        j                  t        j                  z   «      «       t        «        t        d|› �«       t        d| j                  dt        j                  «      › d| j                  › �«       t        d| j                  dt        j                  «      › d| j
                  › �«       t        d| j                  d	t        j                  «      › d| j                  › �«       t        d
|j                  «       d›d�«       t        «        | j                   r}t        | j                  dt        j                  t        j                  z   «      «       | j                   D ]*  }t        d|d   › d|d   › �«       t        d|d   › �«       Œ, t        «        | j"                  rct        | j                  dt        j                  t        j                  z   «      «       | j"                  D ]  }t        d|› �«       Œ t        «        | j
                  dk(  rEt        | j                  dt        j                  t        j                  z   «      «       t        «        yt        | j                  dt        j                  t        j                  z   «      «       t        «        y)zPrint final summaryNrT   z	  SUMMARYz  Total checks: rU   zPassed:r;   zFailed:z	Warnings:z  Total time: z.2fÚsz  WARNINGS:z    - [r5   r_   r6   z      rL   z	  ERRORS:z    - r   u     âœ“ All tests passed!u     âœ— Some tests failed!)r!   r   r#   r$   r%   r&   r>   r3   r   r   r   r   r   r   r'   Útotal_secondsr)   r(   )r*   ÚelapsedÚtotal_checksrK   rP   s        r   Úprint_summaryzLogger.print_summaryœ   sy  € à�|Š|Øä—,‘,“. 4§?¡?Ñ2ˆØ×)Ñ)¨D×,>Ñ,>Ñ>ˆäŒÜˆd�n‰n˜X¤u§z¡z´E·J±JÑ'>Ó?Ô@Üˆd�n‰n˜[¬%¯*©*´u·z±zÑ*AÓBÔCÜˆd�n‰n˜X¤u§z¡z´E·J±JÑ'>Ó?Ô@ÜŒÜÐ   Ð/Ô0Ü��4—>‘> )¬U¯[©[Ó9Ð:¸!¸D×<NÑ<NÐ;OÐPÔQÜ��4—>‘> )¬U¯Y©YÓ7Ð8¸¸$×:LÑ:LÐ9MÐNÔOÜ��4—>‘> +¬u¯|©|Ó<Ð=¸Q¸t×?SÑ?SÐ>TÐUÔVÜ�˜w×4Ñ4Ó6°sÐ;¸1Ð=Ô>ÜŒà�=Š=Ü�$—.‘. ´·
±
¼U¿\¹\Ñ0IÓJÔKØŸ=™=ò 5�Ü˜ ¨
Ñ 3Ð4°B°w¸yÑ7IÐ6JÐKÔLÜ˜˜w yÑ1Ð2Ð3Õ4ð5ô ŒGà�;Š;Ü�$—.‘. ¬e¯j©j¼5¿9¹9Ñ.DÓEÔFØŸ™ò (�Ü˜˜u˜gÐ&Õ'ð(äŒGà×Ñ Ò"Ü�$—.‘.Ð!:¼E¿J¹JÌÏÉÑ<TÓUÔVô 	�ô �$—.‘.Ð!;¼U¿Z¹ZÌ%Ï)É)Ñ=SÓTÔUä�r   )T)N)r   r   r   r   Úboolr+   Ústrr/   r3   r   r   rD   rG   r7   rK   rN   rP   rR   rW   rY   rb   rh   rn   r   r   r   r    r       s'  „ Ù;ñ ó ð3 ó 3ð-˜cð -¨#ð -°#ó -ð
 (,ñ(&˜(ð (&¨cð (&¸Cð (&Ø˜t‘nó(&ðT4˜Sð 4¨3ó 4ðE ð E¨có Eð7 ð 7¨có 7ð¨Sð ¸3ð Èó ðD˜cð D¨Có Dð5˜cð 5¨Có 5ðA˜3ó Að7˜có 7ðq ð q¨sð q¸Sð qÈó qó"&r   r    )
r   Úsysr   Útypingr   Úenumr   r   r   r    r   r   r   ú<module>rt      s:   ðñó Ý Ý Ý ôˆtô ÷
ñ 
÷cò cr   