B
    He                 @   sh   d dl mZmZ ddlmZ ddlmZ ddlmZm	Z	m
Z
 ddlmZmZmZmZ G dd deZd	S )
    )OptionalUnion   )CharSetProber)CodingStateMachine)LanguageFilterMachineStateProbingState)HZ_SM_MODELISO2022CN_SM_MODELISO2022JP_SM_MODELISO2022KR_SM_MODELc                   s   e Zd ZdZejfedd fddZdd fddZee	e
 dd	d
Zee	e
 dddZedddZeeef edddZ  ZS )EscCharSetProberz
    This CharSetProber uses a "code scheme" approach for detecting encodings,
    whereby easily recognizable escape or shift sequences are relied on to
    identify these encodings.
    N)lang_filterreturnc                s   t  j|d g | _| jtj@ r@| jtt | jtt	 | jtj
@ r\| jtt | jtj@ rx| jtt d| _d | _d | _tj| _|   d S )N)r   r   )super__init__	coding_smr   r   CHINESE_SIMPLIFIEDappendr   r
   r   JAPANESEr   KOREANr   active_sm_count_detected_charset_detected_languager	   	DETECTING_statereset)selfr   )	__class__ q/var/www/downstreamdata.science/rtclock/rtclock-venv/lib/python3.7/site-packages/pip/_vendor/chardet/escprober.pyr   0   s    zEscCharSetProber.__init__)r   c                sD   t    x| jD ]}d|_|  qW t| j| _d | _d | _d S )NT)r   r   r   activelenr   r   r   )r   r   )r   r    r!   r   @   s    
zEscCharSetProber.resetc             C   s   | j S )N)r   )r   r    r    r!   charset_nameI   s    zEscCharSetProber.charset_namec             C   s   | j S )N)r   )r   r    r    r!   languageM   s    zEscCharSetProber.languagec             C   s   | j r
dS dS )NgGz?g        )r   )r   r    r    r!   get_confidenceQ   s    zEscCharSetProber.get_confidence)byte_strr   c             C   s   x|D ]}x| j D ]x}|jsq||}|tjkr`d|_|  jd8  _| jdkrtj| _| j	S q|tj
krtj| _| | _|j| _| j	S qW qW | j	S )NFr   r   )r   r"   
next_stater   ERRORr   r	   NOT_MEr   stateITS_MEFOUND_ITget_coding_state_machiner   r%   r   )r   r'   cr   coding_stater    r    r!   feedT   s"    





zEscCharSetProber.feed)__name__
__module____qualname____doc__r   NONEr   r   propertyr   strr$   r%   floatr&   r   bytes	bytearrayr	   r1   __classcell__r    r    )r   r!   r   )   s   	r   N)typingr   r   charsetproberr   codingstatemachiner   enumsr   r   r	   escsmr
   r   r   r   r   r    r    r    r!   <module>   s
   