
    vg                     b    d dl mZmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
mZmZ  G d de      Zy	)
    )OptionalUnion   )CharDistributionAnalysis)CharSetProber)CodingStateMachine)LanguageFilterMachineStateProbingStatec                   v     e Zd ZdZej
                  fdeddf fdZd
 fdZdee	e
f   defdZdefd	Z xZS )MultiByteCharSetProberz 
    MultiByteCharSetProber
    lang_filterreturnNc                 b    t         |   |       d | _        d | _        t	        d      | _        y )N)r        )super__init__distribution_analyzer	coding_sm	bytearray
_last_char)selfr   	__class__s     c/home/mcse/projects/flask/flask/lib/python3.12/site-packages/pip/_vendor/chardet/mbcharsetprober.pyr   zMultiByteCharSetProber.__init__+   s.    [1IM"7;#G,    c                     t         |           | j                  r| j                  j                          | j                  r| j                  j                          t	        d      | _        y )Nr   )r   resetr   r   r   r   )r   r   s    r   r   zMultiByteCharSetProber.reset1   sJ    >>NN  "%%&&,,.#G,r   byte_strc                    | j                   J | j                  J t        |      D ]6  \  }}| j                   j                  |      }|t        j
                  k(  rI| j                  j                  d| j                  | j                  |       t        j                  | _         n|t        j                  k(  rt        j                  | _         n|t        j                  k(  s| j                   j!                         }|dk(  r7|| j"                  d<   | j                  j%                  | j"                  |       | j                  j%                  ||dz
  |dz    |       9 |d   | j"                  d<   | j&                  t        j(                  k(  rL| j                  j+                         r2| j-                         | j.                  kD  rt        j                  | _        | j&                  S )Nz!%s %s prober hit error at byte %sr   r   )r   r   	enumerate
next_stater
   ERRORloggerdebugcharset_namelanguager   NOT_ME_stateITS_MEFOUND_ITSTARTget_current_charlenr   feedstate	DETECTINGgot_enough_dataget_confidenceSHORTCUT_THRESHOLD)r   r   ibytecoding_statechar_lens         r   r.   zMultiByteCharSetProber.feed9   s   ~~)))))555 * 	WGAt>>44T:L|111!!7%%MM	 +11|222*33|111>>==?6)-DOOA&..33DOOXN..33HQUQU4KXV)	W, &b\::///))99;##%(?(??*33zzr   c                 R    | j                   J | j                   j                         S )N)r   r2   )r   s    r   r2   z%MultiByteCharSetProber.get_confidence]   s)    ))555))88::r   )r   N)__name__
__module____qualname____doc__r	   NONEr   r   r   bytesr   r   r.   floatr2   __classcell__)r   s   @r   r   r   &   sV     6D5H5H -N -T --"U5)#34 " "H; ;r   r   N)typingr   r   chardistributionr   charsetproberr   codingstatemachiner   enumsr	   r
   r   r    r   r   <module>rG      s%   < # 6 ( 2 = =9;] 9;r   