o
    svXj  ã                   @   s4   d dl mZ d dlmZmZmZ G dd„ deƒZdS )é   )ÚCharSetProber)ÚCharacterCategoryÚProbingStateÚSequenceLikelihoodc                       sb   e Zd ZdZdZdZdZd‡ fdd„	Z‡ fd	d
„Ze	dd„ ƒZ
e	dd„ ƒZdd„ Zdd„ Z‡  ZS )ÚSingleByteCharSetProberé@   i   gffffffî?gš™™™™™©?FNc                    sJ   t t| ƒ ¡  || _|| _|| _d | _d | _d | _d | _	d | _
|  ¡  d S )N)Úsuperr   Ú__init__Ú_modelÚ	_reversedÚ_name_proberÚ_last_orderÚ_seq_countersÚ_total_seqsÚ_total_charÚ
_freq_charÚreset)ÚselfÚmodelÚreversedÚname_prober©Ú	__class__© úT/var/www/html/myproject/venv/lib/python3.10/site-packages/chardet/sbcharsetprober.pyr	   '   s   z SingleByteCharSetProber.__init__c                    s:   t t| ƒ ¡  d| _dgt ¡  | _d| _d| _d| _	d S )Néÿ   é    )
r   r   r   r   r   Úget_num_categoriesr   r   r   r   ©r   r   r   r   r   5   s   
zSingleByteCharSetProber.resetc                 C   s   | j r| j jS | jd S )NÚcharset_name)r   r   r
   r   r   r   r   r   ?   s   
z$SingleByteCharSetProber.charset_namec                 C   s   | j r| j jS | j d¡S )NÚlanguage)r   r    r
   Úgetr   r   r   r   r    F   s   z SingleByteCharSetProber.languagec           	      C   sf  | j d s
|  |¡}|s| jS | j d }t|ƒD ][\}}|| }|tjk r,|  jd7  _|| jk rp|  jd7  _| j	| jk rp|  j
d7  _
| jsX| j	| j | }| j d | }n|| j | j	 }| j d | }| j|  d7  < || _	q| j d }| jtjkr°| j
| jkr°|  ¡ }|| jkr�| j d||¡ tj| _| jS || jk r°| j d||| j¡ tj| _| jS )NÚkeep_english_letterÚchar_to_order_mapr   Úprecedence_matrixr   z$%s confidence = %s, we have a winnerz9%s confidence = %s, below negative shortcut threshhold %s)r
   Úfilter_international_wordsÚstateÚ	enumerater   ÚCONTROLr   ÚSAMPLE_SIZEr   r   r   r   r   r   Ú	DETECTINGÚSB_ENOUGH_REL_THRESHOLDÚget_confidenceÚPOSITIVE_SHORTCUT_THRESHOLDÚloggerÚdebugÚFOUND_ITÚ_stateÚNEGATIVE_SHORTCUT_THRESHOLDÚNOT_ME)	r   Úbyte_strr#   ÚiÚcÚorderr   r   Ú
confidencer   r   r   ÚfeedM   sL   






ÿ
ùýzSingleByteCharSetProber.feedc                 C   sN   d}| j dkr%d| jtj  | j  | jd  }|| j | j }|dkr%d}|S )Ng{®Gáz„?r   g      ð?Útypical_positive_ratiog®Gáz®ï?)r   r   r   ÚPOSITIVEr
   r   r   )r   Úrr   r   r   r,   |   s   
ÿÿz&SingleByteCharSetProber.get_confidence)FN)Ú__name__Ú
__module__Ú__qualname__r)   r+   r-   r2   r	   r   Úpropertyr   r    r9   r,   Ú__classcell__r   r   r   r   r   !   s    


/r   N)Úcharsetproberr   Úenumsr   r   r   r   r   r   r   r   Ú<module>   s   