U
    yc                     @   sl   d dl mZ ddlmZ ddlmZ ddlmZmZ ddl	m
Z
 ddlmZ ddlmZ G d	d
 d
eZdS )    )Union   )SJISDistributionAnalysis)CodingStateMachine)MachineStateProbingState)SJISContextAnalysis)MultiByteCharSetProber)SJIS_SM_MODELc                       s~   e Zd Zdd fddZdd fddZeedddZeedd	d
Ze	e
ef edddZedddZ  ZS )
SJISProberN)returnc                    s0   t    tt| _t | _t | _| 	  d S N)
super__init__r   r
   	coding_smr   distribution_analyzerr   context_analyzerresetself	__class__ =/tmp/pip-build-0we0fmvo/pip/pip/_vendor/chardet/sjisprober.pyr   '   s
    

zSJISProber.__init__c                    s   t    | j  d S r   )r   r   r   r   r   r   r   r   .   s    
zSJISProber.resetc                 C   s   | j jS r   )r   charset_namer   r   r   r   r   2   s    zSJISProber.charset_namec                 C   s   dS )NJapaneser   r   r   r   r   language6   s    zSJISProber.language)byte_strr   c                 C   s^  | j d k	st| jd k	stt|D ]\}}| j |}|tjkrf| jd| j	| j
| tj| _ q|tjkr~tj| _ q|tjkr$| j  }|dkr|| jd< | j| jd| d  | | j| j| q$| j||d | |d |  | | j||d |d  | q$|d | jd< | jtjkrX| j rX|  | jkrXtj| _| jS )Nz!%s %s prober hit error at byte %sr   r         )r   AssertionErrorr   	enumerate
next_stater   ERRORloggerdebugr   r   r   NOT_ME_stateITS_MEFOUND_ITSTARTget_current_charlen
_last_charr   feedstate	DETECTINGgot_enough_dataget_confidenceSHORTCUT_THRESHOLD)r   r   iZbytecoding_statechar_lenr   r   r   r.   :   sJ    




   zSJISProber.feedc                 C   s,   | j d k	st| j }| j  }t||S r   )r   r!   r   r2   max)r   context_confdistrib_confr   r   r   r2   d   s    

zSJISProber.get_confidence)__name__
__module____qualname__r   r   propertystrr   r   r   bytes	bytearrayr   r.   floatr2   __classcell__r   r   r   r   r   &   s   *r   N)typingr   chardistributionr   codingstatemachiner   enumsr   r   jpcntxr   mbcharsetproberr	   mbcssmr
   r   r   r   r   r   <module>   s   