o
    n_                     @   sN   d dl mZ ddlmZ ddlmZmZmZ edg dZG dd deZ	d	S )
    )
namedtuple   )CharSetProber)CharacterCategoryProbingStateSequenceLikelihoodSingleByteCharSetModel)charset_namelanguagechar_to_order_maplanguage_modeltypical_positive_ratiokeep_ascii_lettersZalphabetc                       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)selfZmodelreversedZname_prober	__class__ 9/usr/lib/python3/dist-packages/chardet/sbcharsetprober.pyr   3   s   z SingleByteCharSetProber.__init__c                    s:   t t|   d| _dgt  | _d| _d| _d| _	d S )N   r   )
r   r   r   r   r   Zget_num_categoriesr   r   r   r   r   r   r!   r"   r   A   s   
zSingleByteCharSetProber.resetc                 C      | j r| j jS | jjS r   )r   r	   r   r$   r!   r!   r"   r	   K      z$SingleByteCharSetProber.charset_namec                 C   r%   r   )r   r
   r   r$   r!   r!   r"   r
   R   r&   z SingleByteCharSetProber.languagec           	      C   sF  | j js	| |}|s| jS | j j}| j j}|D ]L}||tj}|tj	k r-|  j
d7  _
|| jk ra|  jd7  _| j| jk ra|  jd7  _| jsQ|| j | }n|| | j }| j|  d7  < || _q| j j}| 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 )Nr   z$%s confidence = %s, we have a winnerz9%s confidence = %s, below negative shortcut threshhold %s)r   r   Zfilter_international_wordsstater   r   getr   Z	UNDEFINEDZCONTROLr   SAMPLE_SIZEr   r   r   r   r   r	   r   Z	DETECTINGSB_ENOUGH_REL_THRESHOLDget_confidencePOSITIVE_SHORTCUT_THRESHOLDloggerdebugZFOUND_ITZ_stateNEGATIVE_SHORTCUT_THRESHOLDZNOT_ME)	r   Zbyte_strr   r   charZorderZlm_catr	   Z
confidencer!   r!   r"   feedY   sJ   




zSingleByteCharSetProber.feedc                 C   sL   d}| j dkr$d| jtj  | j  | jj }|| j | j }|dkr$d}|S )Ng{Gz?r   g      ?gGz?)r   r   r   ZPOSITIVEr   r   r   r   )r   rr!   r!   r"   r+      s   
z&SingleByteCharSetProber.get_confidence)FN)__name__
__module____qualname__r)   r*   r,   r/   r   r   propertyr	   r
   r1   r+   __classcell__r!   r!   r   r"   r   -   s    


0r   N)
collectionsr   Zcharsetproberr   Zenumsr   r   r   r   r   r!   r!   r!   r"   <module>   s   
