3
[                 @   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| j  || _|| _|| _d | _d | _d | _d | _	d | _
| j  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__ D/tmp/pip-install-65viz3iy/pip/pip/_vendor/chardet/sbcharsetprober.pyr	   '   s    z SingleByteCharSetProber.__init__c                s:   t t| j  d| _dgtj  | _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 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jdS d S )Nlanguage)r   r   r
   get)r   r   r   r   r   F   s    z SingleByteCharSetProber.languagec       	      C   sn  | j d s| j|}|s| jS | j d }xt|D ]\}}|| }|tjk rZ|  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  < || _	q2W | j d }| jtjkrh| j
| jkrh| j }|| jkr@| jjd|| tj| _n(|| jk rh| j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   sF    







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      ?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+   r0   r	   r   propertyr   r   r7   r*   __classcell__r   r   )r   r   r   !   s   
/r   N)charsetproberr   enumsr   r   r   r   r   r   r   r   <module>   s   