î
)Ú X¹  ã               @   s„   d  d l  Z  d d l m Z d d l m Z d d l m Z d Z d Z d Z	 d	 Z
 d
 Z d Z e d Z Gd d „  d e ƒ Z d S)é    Né   )Ú	constants)ÚCharSetProber)Úwrap_ordé@   i   gffffffî?gš™™™™™©?éú   é   c               @   sR   e  Z d  Z d d d d „ Z d d „  Z d d „  Z d	 d
 „  Z d d „  Z d S)ÚSingleByteCharSetProberFNc             C   s6   t  j |  ƒ | |  _ | |  _ | |  _ |  j ƒ  d  S)N)r   Ú__init__Ú_mModelÚ
_mReversedÚ_mNameProberÚreset)ÚselfÚmodelÚreversedZ
nameProber© r   úY/home/ubuntu/projects/ifolica/build/requests/requests/packages/chardet/sbcharsetprober.pyr
   -   s
    			z SingleByteCharSetProber.__init__c             C   sE   t  j |  ƒ d |  _ d g t |  _ d |  _ d |  _ d |  _ d  S)Néÿ   r   )r   r   Ú_mLastOrderÚNUMBER_OF_SEQ_CATÚ_mSeqCountersÚ_mTotalSeqsÚ_mTotalCharÚ
_mFreqChar)r   r   r   r   r   6   s    			zSingleByteCharSetProber.resetc             C   s%   |  j  r |  j  j ƒ  S|  j d Sd  S)NÚcharsetName)r   Úget_charset_namer   )r   r   r   r   r   @   s    	z(SingleByteCharSetProber.get_charset_namec             C   sý  |  j  d s |  j | ƒ } n  t | ƒ } | s; |  j ƒ  Sxì | D]ä } |  j  d t | ƒ } | t k  r} |  j d 7_ n  | t k  r|  j d 7_ |  j	 t k  r|  j
 d 7_
 |  j sä |  j	 t | } |  j  d | } n" | t |  j	 } |  j  d | } |  j | d 7<qn  | |  _	 qB W|  j ƒ  t j k ró|  j
 t k ró|  j ƒ  } | t k r¢t j r“t j j d |  j  d | f ƒ n  t j |  _ qð| t k  rðt j rÞt j j d |  j  d | t f ƒ n  t j |  _ qðqón  |  j ƒ  S)NZkeepEnglishLetterZcharToOrderMapr   ZprecedenceMatrixz$%s confidence = %s, we have awinner
r   z9%s confidence = %s, below negativeshortcut threshhold %s
)r   Zfilter_without_english_lettersÚlenZ	get_stater   ÚSYMBOL_CAT_ORDERr   ÚSAMPLE_SIZEr   r   r   r   r   r   Z
eDetectingÚSB_ENOUGH_REL_THRESHOLDÚget_confidenceÚPOSITIVE_SHORTCUT_THRESHOLDÚ_debugÚsysÚstderrÚwriteZeFoundItZ_mStateÚNEGATIVE_SHORTCUT_THRESHOLDZeNotMe)r   ÚaBufZaLenÚcÚorderÚir   Zcfr   r   r   ÚfeedF   sF    
			zSingleByteCharSetProber.feedc             C   sh   d } |  j  d k rd d |  j t |  j  |  j d } | |  j |  j } | d k rd d } qd n  | S)Ng{®Gáz„?r   g      ð?ZmTypicalPositiveRatiog®Gáz®ï?)r   r   ÚPOSITIVE_CATr   r   r   )r   Úrr   r   r   r!   p   s    #z&SingleByteCharSetProber.get_confidence)Ú__name__Ú
__module__Ú__qualname__r
   r   r   r,   r!   r   r   r   r   r	   ,   s
   	
*r	   )r$   Ú r   Zcharsetproberr   Úcompatr   r   r    r"   r'   r   r   r-   r	   r   r   r   r   Ú<module>   s   
