o
    ȷe                     @   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__ N/var/www/ideatree/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{Gz?r   g      ?typical_positive_ratiogGz?)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   