U
    ƒIÀd0'  ã                   @   s  d dl mZmZ ddlmZmZmZ ddlmZm	Z	m
Z
 ddlmZmZmZ ddlmZmZmZ ddlmZmZmZ ddlmZ G d	d
„ d
ƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZ dS )é    )ÚTupleÚUnioné   )ÚBIG5_CHAR_TO_FREQ_ORDERÚBIG5_TABLE_SIZEÚBIG5_TYPICAL_DISTRIBUTION_RATIO)ÚEUCKR_CHAR_TO_FREQ_ORDERÚEUCKR_TABLE_SIZEÚ EUCKR_TYPICAL_DISTRIBUTION_RATIO)ÚEUCTW_CHAR_TO_FREQ_ORDERÚEUCTW_TABLE_SIZEÚ EUCTW_TYPICAL_DISTRIBUTION_RATIO)ÚGB2312_CHAR_TO_FREQ_ORDERÚGB2312_TABLE_SIZEÚ!GB2312_TYPICAL_DISTRIBUTION_RATIO)ÚJIS_CHAR_TO_FREQ_ORDERÚJIS_TABLE_SIZEÚJIS_TYPICAL_DISTRIBUTION_RATIO)ÚJOHAB_TO_EUCKR_ORDER_TABLEc                   @   s†   e Zd ZdZdZdZdZddœdd„Zddœd	d
„Ze	e
ef eddœdd„Zedœdd„Zedœdd„Ze	e
ef edœdd„ZdS )ÚCharDistributionAnalysisi   g®Gáz®ï?g{®Gáz„?é   N©Úreturnc                 C   s2   t ƒ | _d| _d| _d| _d| _d| _|  ¡  d S )Nr   g        F)ÚtupleÚ_char_to_freq_orderÚ_table_sizeÚtypical_distribution_ratioÚ_doneÚ_total_charsÚ_freq_charsÚreset©Úself© r#   ú]/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/pip/_vendor/chardet/chardistribution.pyÚ__init__@   s    z!CharDistributionAnalysis.__init__c                 C   s   d| _ d| _d| _dS )zreset analyser, clear any stateFr   N)r   r   r   r!   r#   r#   r$   r    O   s    zCharDistributionAnalysis.reset)ÚcharÚchar_lenr   c                 C   sX   |dkr|   |¡}nd}|dkrT|  jd7  _|| jk rTd| j| krT|  jd7  _dS )z"feed a character with known lengthé   éÿÿÿÿr   r   i   N)Ú	get_orderr   r   r   r   )r"   r&   r'   Úorderr#   r#   r$   ÚfeedX   s    
zCharDistributionAnalysis.feedc                 C   sT   | j dks| j| jkr| jS | j | jkrN| j| j | j | j  }|| jk rN|S | jS )z(return confidence based on existing datar   )r   r   ÚMINIMUM_DATA_THRESHOLDÚSURE_NOr   ÚSURE_YES)r"   Úrr#   r#   r$   Úget_confidencef   s    ÿ
z'CharDistributionAnalysis.get_confidencec                 C   s   | j | jkS ©N)r   ÚENOUGH_DATA_THRESHOLDr!   r#   r#   r$   Úgot_enough_dataw   s    z(CharDistributionAnalysis.got_enough_data)Ú_r   c                 C   s   dS )Nr)   r#   )r"   r5   r#   r#   r$   r*   |   s    z"CharDistributionAnalysis.get_order)Ú__name__Ú
__module__Ú__qualname__r3   r/   r.   r-   r%   r    r   ÚbytesÚ	bytearrayÚintr,   Úfloatr1   Úboolr4   r*   r#   r#   r#   r$   r   :   s   	r   c                       s:   e Zd Zddœ‡ fdd„Zeeef edœdd„Z‡  Z	S )ÚEUCTWDistributionAnalysisNr   c                    s    t ƒ  ¡  t| _t| _t| _d S r2   )Úsuperr%   r   r   r   r   r   r   r!   ©Ú	__class__r#   r$   r%   …   s    
z"EUCTWDistributionAnalysis.__init__©Úbyte_strr   c                 C   s,   |d }|dkr(d|d  |d  d S dS )Nr   éÄ   é^   r   é¡   r)   r#   ©r"   rC   Ú
first_charr#   r#   r$   r*   ‹   s    z#EUCTWDistributionAnalysis.get_order©
r6   r7   r8   r%   r   r9   r:   r;   r*   Ú__classcell__r#   r#   r@   r$   r>   „   s   r>   c                       s:   e Zd Zddœ‡ fdd„Zeeef edœdd„Z‡  Z	S )ÚEUCKRDistributionAnalysisNr   c                    s    t ƒ  ¡  t| _t| _t| _d S r2   ©r?   r%   r   r   r	   r   r
   r   r!   r@   r#   r$   r%   —   s    
z"EUCKRDistributionAnalysis.__init__rB   c                 C   s,   |d }|dkr(d|d  |d  d S dS )Nr   é°   rE   r   rF   r)   r#   rG   r#   r#   r$   r*   �   s    z#EUCKRDistributionAnalysis.get_orderrI   r#   r#   r@   r$   rK   –   s   rK   c                       s:   e Zd Zddœ‡ fdd„Zeeef edœdd„Z‡  Z	S )ÚJOHABDistributionAnalysisNr   c                    s    t ƒ  ¡  t| _t| _t| _d S r2   rL   r!   r@   r#   r$   r%   ©   s    
z"JOHABDistributionAnalysis.__init__rB   c                 C   s@   |d }d|  krdk r<n n|d |d  }t  |d¡S dS )Nr   éˆ   éÔ   é   r   r)   )r   Úget)r"   rC   rH   Úcoder#   r#   r$   r*   ¯   s
    z#JOHABDistributionAnalysis.get_orderrI   r#   r#   r@   r$   rN   ¨   s   rN   c                       s:   e Zd Zddœ‡ fdd„Zeeef edœdd„Z‡  Z	S )ÚGB2312DistributionAnalysisNr   c                    s    t ƒ  ¡  t| _t| _t| _d S r2   )r?   r%   r   r   r   r   r   r   r!   r@   r#   r$   r%   ¸   s    
z#GB2312DistributionAnalysis.__init__rB   c                 C   s:   |d |d  }}|dkr6|dkr6d|d  | d S dS )Nr   r   rM   rF   rE   r)   r#   ©r"   rC   rH   Úsecond_charr#   r#   r$   r*   ¾   s    z$GB2312DistributionAnalysis.get_orderrI   r#   r#   r@   r$   rT   ·   s   rT   c                       s:   e Zd Zddœ‡ fdd„Zeeef edœdd„Z‡  Z	S )ÚBig5DistributionAnalysisNr   c                    s    t ƒ  ¡  t| _t| _t| _d S r2   )r?   r%   r   r   r   r   r   r   r!   r@   r#   r$   r%   Ê   s    
z!Big5DistributionAnalysis.__init__rB   c                 C   sR   |d |d  }}|dkrN|dkr:d|d  | d d S d|d  | d S dS )	Nr   r   é¤   rF   é�   é?   é@   r)   r#   rU   r#   r#   r$   r*   Ð   s    z"Big5DistributionAnalysis.get_orderrI   r#   r#   r@   r$   rW   É   s   rW   c                       s:   e Zd Zddœ‡ fdd„Zeeef edœdd„Z‡  Z	S )ÚSJISDistributionAnalysisNr   c                    s    t ƒ  ¡  t| _t| _t| _d S r2   ©r?   r%   r   r   r   r   r   r   r!   r@   r#   r$   r%   Þ   s    
z!SJISDistributionAnalysis.__init__rB   c                 C   s‚   |d |d  }}d|  kr&dkr8n nd|d  }n.d|  krLdkrbn nd|d d  }nd	S || d
 }|dkr~d	}|S )Nr   r   é�   éŸ   é¼   éà   éï   é   r)   r[   é   r#   )r"   rC   rH   rV   r+   r#   r#   r$   r*   ä   s    z"SJISDistributionAnalysis.get_orderrI   r#   r#   r@   r$   r\   Ý   s   r\   c                       s:   e Zd Zddœ‡ fdd„Zeeef edœdd„Z‡  Z	S )ÚEUCJPDistributionAnalysisNr   c                    s    t ƒ  ¡  t| _t| _t| _d S r2   r]   r!   r@   r#   r$   r%   ÷   s    
z"EUCJPDistributionAnalysis.__init__rB   c                 C   s,   |d }|dkr(d|d  |d  d S dS )Nr   é    rE   rF   r   r)   r#   )r"   rC   r&   r#   r#   r$   r*   ý   s    z#EUCJPDistributionAnalysis.get_orderrI   r#   r#   r@   r$   re   ö   s   re   N)!Útypingr   r   Úbig5freqr   r   r   Ú	euckrfreqr   r	   r
   Ú	euctwfreqr   r   r   Ú
gb2312freqr   r   r   Újisfreqr   r   r   Ú	johabfreqr   r   r>   rK   rN   rT   rW   r\   re   r#   r#   r#   r$   Ú<module>   s   J