U
    `9Y                     @   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reversedZname_prober	__class__ 9/usr/lib/python3/dist-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   Z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 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 d S )Nlanguage)r   r   r
   getr   r   r   r   r   F   s    z SingleByteCharSetProber.languagec           	      C   sj  | j d s| |}|s| jS | j d }t|D ]\}}|| }|tjk rX|  jd7  _|| jk r|  jd7  _| j	| jk r|  j
d7  _
| js| j	| j | }| j d | }n|| j | j	 }| j d | }| j|  d7  < || _	q0| j d }| jtjkrd| j
| jkrd|  }|| jkr<| jd|| tj| _n(|| jk rd| jd||| j tj| _| jS )NZkeep_english_letterchar_to_order_mapr   Zprecedence_matrixr   z$%s confidence = %s, we have a winnerz9%s confidence = %s, below negative shortcut threshhold %s)r
   Zfilter_international_wordsstate	enumerater   ZCONTROLr   SAMPLE_SIZEr   r   r   r   r   r   Z	DETECTINGSB_ENOUGH_REL_THRESHOLDget_confidencePOSITIVE_SHORTCUT_THRESHOLDZloggerdebugZFOUND_ITZ_stateNEGATIVE_SHORTCUT_THRESHOLDZNOT_ME)	r   Zbyte_strr    icorderr   r   Z
confidencer   r   r   feedM   sL    





 
zSingleByteCharSetProber.feedc                 C   sN   d}| j dkrJd| jtj  | j  | jd  }|| j | j }|dkrJd}|S )Ng{Gz?r   g      ?Ztypical_positive_ratiogGz?)r   r   r   ZPOSITIVEr
   r   r   )r   rr   r   r   r%   |   s    
z&SingleByteCharSetProber.get_confidence)FN)__name__
__module____qualname__r#   r$   r&   r(   r	   r   propertyr   r   r,   r%   __classcell__r   r   r   r   r   !   s   


/r   N)Zcharsetproberr   Zenumsr   r   r   r   r   r   r   r   <module>   s   