o
    e
                     @   sT   d dl mZ ddlmZ ddlmZ ddlmZmZ ddl	m
Z
 G dd deZd	S )
    )Union   )CharSetProber)CodingStateMachine)MachineStateProbingState)UTF8_SM_MODELc                       s|   e Zd ZdZd fddZd fddZedefdd	Zedefd
dZ	de
eef defddZdefddZ  ZS )
UTF8Proberg      ?returnNc                    s&   t    tt| _d| _|   d S Nr   )super__init__r   r   	coding_sm_num_mb_charsresetself	__class__ 2lib/python3.10/site-packages/chardet/utf8prober.pyr   '   s   

zUTF8Prober.__init__c                    s   t    | j  d| _d S r   )r   r   r   r   r   r   r   r   r   -   s   


zUTF8Prober.resetc                 C      dS )Nzutf-8r   r   r   r   r   charset_name2      zUTF8Prober.charset_namec                 C   r   )N r   r   r   r   r   language6   r   zUTF8Prober.languagebyte_strc                 C   s   |D ]1}| j |}|tjkrtj| _ n|tjkr tj| _ n|tj	kr3| j 
 dkr3|  jd7  _q| jtjkrE|  | jkrEtj| _| jS )N   r   )r   Z
next_stater   ZERRORr   ZNOT_MEZ_stateZITS_MEZFOUND_ITZSTARTZget_current_charlenr   stateZ	DETECTINGget_confidenceZSHORTCUT_THRESHOLD)r   r   cZcoding_stater   r   r   feed:   s    


zUTF8Prober.feedc                 C   s*   d}| j dk r|| j| j  9 }d| S |S )NgGz?   g      ?)r   ONE_CHAR_PROB)r   Zunliker   r   r   r   M   s
   
zUTF8Prober.get_confidence)r
   N)__name__
__module____qualname__r#   r   r   propertystrr   r   r   bytes	bytearrayr   r!   floatr   __classcell__r   r   r   r   r	   $   s    r	   N)typingr   Zcharsetproberr   Zcodingstatemachiner   Zenumsr   r   Zmbcssmr   r	   r   r   r   r   <module>   s   