B
    x.;]                 @   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__ 6lib/python3.7/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   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
   get)r   r   r   r   r   F   s    z SingleByteCharSetProber.languagec       	      C   sn  | j d s| |}|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kr@| jd|| tj| _n(|| jk rh| 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   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      ?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   