
0c@_  ã               @   sF   d  d l  m Z d  d l m Z m Z m Z Gd d „  d e ƒ Z d S)é   )ÚCharSetProber)ÚCharacterCategoryÚProbingStateÚSequenceLikelihoodc                   sŽ   e  Z d  Z d Z d Z d Z d Z d d ‡  f d d † Z ‡  f d	 d
 †  Z e	 d d „  ƒ Z
 e	 d d „  ƒ Z d d „  Z d d „  Z ‡  S)ÚSingleByteCharSetProberé@   i   gffffffî?gš™™™™™©?FNc                si   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ÚreversedZname_prober)Ú	__class__© úB/tmp/pip-build-jynh7p1z/pip/pip/_vendor/chardet/sbcharsetprober.pyr	   '   s    								z SingleByteCharSetProber.__init__c                sQ   t  t |  ƒ j ƒ  d |  _ d g t j ƒ  |  _ 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 Sd  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 ƒ Sd  S)NÚlanguage)r   r   r
   Úget)r   r   r   r   r   F   s    	
z SingleByteCharSetProber.languagec       	      C   sÙ  |  j  d s |  j | ƒ } | s) |  j S|  j  d } xñ t | ƒ D]ã \ } } | | } | t j k  rw |  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<| |  _	 qC W|  j  d } |  j t j k rÒ|  j
 |  j k rÒ|  j ƒ  } | |  j k r›|  j j d | | ƒ t j |  _ n7 | |  j k  rÒ|  j 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_THRESHOLDÚloggerÚdebugZFOUND_ITÚ_stateÚNEGATIVE_SHORTCUT_THRESHOLDZNOT_ME)	r   Zbyte_strr   ÚiÚcÚorderr   r   Ú
confidencer   r   r   ÚfeedM   sF    
	

zSingleByteCharSetProber.feedc             C   se   d } |  j  d k ra d |  j t j |  j  |  j d } | |  j |  j } | d k ra d } | S)Ng{®Gáz„?r   g      ð?Ztypical_positive_ratiog®Gáz®ï?)r   r   r   ZPOSITIVEr
   r   r   )r   Úrr   r   r   r#   |   s    &z&SingleByteCharSetProber.get_confidence)Ú__name__Ú
__module__Ú__qualname__r!   r"   r$   r(   r	   r   Úpropertyr   r   r-   r#   r   r   )r   r   r   !   s   
/r   N)Zcharsetproberr   Zenumsr   r   r   r   r   r   r   r   Ú<module>   s   