
    Ofc$                     .   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  G d de          Z G d d	e          Z G d
 de          Z G d de          Z G d de          Z G d de          Z G d de          ZdS )   )EUCTW_CHAR_TO_FREQ_ORDEREUCTW_TABLE_SIZE EUCTW_TYPICAL_DISTRIBUTION_RATIO)EUCKR_CHAR_TO_FREQ_ORDEREUCKR_TABLE_SIZE EUCKR_TYPICAL_DISTRIBUTION_RATIO)GB2312_CHAR_TO_FREQ_ORDERGB2312_TABLE_SIZE!GB2312_TYPICAL_DISTRIBUTION_RATIO)BIG5_CHAR_TO_FREQ_ORDERBIG5_TABLE_SIZEBIG5_TYPICAL_DISTRIBUTION_RATIO)JIS_CHAR_TO_FREQ_ORDERJIS_TABLE_SIZEJIS_TYPICAL_DISTRIBUTION_RATIOc                   B    e Zd ZdZdZdZdZd Zd Zd Z	d Z
d	 Zd
 ZdS )CharDistributionAnalysisi   gGz?g{Gz?   c                     d | _         d | _        d | _        d | _        d | _        d | _        |                                  d S N)_char_to_freq_order_table_sizetypical_distribution_ratio_done_total_chars_freq_charsresetselfs    8lib/python3.11/site-packages/chardet/chardistribution.py__init__z!CharDistributionAnalysis.__init__.   sF     $( 
 +/'
 

    c                 0    d| _         d| _        d| _        dS )zreset analyser, clear any stateF    N)r   r   r   r   s    r    r   zCharDistributionAnalysis.reset=   s!     
r"   c                     |dk    r|                      |          }nd}|dk    r>| xj        dz  c_        || j        k     r%d| j        |         k    r| xj        dz  c_        dS dS dS dS )z"feed a character with known length   r$   r   i   N)	get_orderr   r   r   r   )r   charchar_lenorders       r    feedzCharDistributionAnalysis.feedF   s    q= 	NN4((EEEA: 	*"t'' *1%88 *$$)$$$$	* 	** ** *r"   c                     | j         dk    s| j        | j        k    r| j        S | j         | j        k    r,| j        | j         | j        z
  | j        z  z  }|| j        k     r|S | j        S )z(return confidence based on existing datar$   )r   r   MINIMUM_DATA_THRESHOLDSURE_NOr   SURE_YES)r   rs     r    get_confidencez'CharDistributionAnalysis.get_confidenceT   s     ! 	 T%59T%T 	 < 00 	!d&7$:J&J2&3 4A4=   }r"   c                 "    | j         | j        k    S r   )r   ENOUGH_DATA_THRESHOLDr   s    r    got_enough_dataz(CharDistributionAnalysis.got_enough_datad   s      4#===r"   c                     dS )Nr'    )r   byte_strs     r    r(   z"CharDistributionAnalysis.get_orderi   s	    
 rr"   N)__name__
__module____qualname__r4   r0   r/   r.   r!   r   r,   r2   r5   r(   r7   r"   r    r   r   (   s         HG    * * *   > > >
    r"   r   c                   $     e Zd Z fdZd Z xZS )EUCTWDistributionAnalysisc                     t          t          |                                            t          | _        t
          | _        t          | _        d S r   )	superr=   r!   r   r   r   r   r   r   r   	__class__s    r    r!   z"EUCTWDistributionAnalysis.__init__r   >    '..77999#; +*J'''r"   c                 J    |d         }|dk    rd|dz
  z  |d         z   dz
  S dS )Nr$      ^   r      r'   r7   r   r8   
first_chars      r    r(   z#EUCTWDistributionAnalysis.get_orderx   =    
 a[
 	d*+hqk9D@@2r"   r9   r:   r;   r!   r(   __classcell__rA   s   @r    r=   r=   q   L        K K K K K	 	 	 	 	 	 	r"   r=   c                   $     e Zd Z fdZd Z xZS )EUCKRDistributionAnalysisc                     t          t          |                                            t          | _        t
          | _        t          | _        d S r   )	r?   rO   r!   r   r   r   r   r   r   r@   s    r    r!   z"EUCKRDistributionAnalysis.__init__   rB   r"   c                 J    |d         }|dk    rd|dz
  z  |d         z   dz
  S dS )Nr$      rE   r   rF   r'   r7   rG   s      r    r(   z#EUCKRDistributionAnalysis.get_order   rI   r"   rJ   rL   s   @r    rO   rO      rM   r"   rO   c                   $     e Zd Z fdZd Z xZS )GB2312DistributionAnalysisc                     t          t          |                                            t          | _        t
          | _        t          | _        d S r   )	r?   rT   r!   r	   r   r
   r   r   r   r@   s    r    r!   z#GB2312DistributionAnalysis.__init__   s>    ($//88:::#< ,*K'''r"   c                 Z    |d         |d         }}|dk    r|dk    rd|dz
  z  |z   dz
  S dS )Nr$   r   rR   rF   rE   r'   r7   r   r8   rH   second_chars       r    r(   z$GB2312DistributionAnalysis.get_order   sM    
 #+1+x{K
$ 	[D%8 	d*+k9D@@2r"   rJ   rL   s   @r    rT   rT      sL        L L L L L	 	 	 	 	 	 	r"   rT   c                   $     e Zd Z fdZd Z xZS )Big5DistributionAnalysisc                     t          t          |                                            t          | _        t
          | _        t          | _        d S r   )	r?   rZ   r!   r   r   r   r   r   r   r@   s    r    r!   z!Big5DistributionAnalysis.__init__   s>    &--66888#: **I'''r"   c                 |    |d         |d         }}|dk    r%|dk    rd|dz
  z  |z   dz
  dz   S d|dz
  z  |z   dz
  S dS )	Nr$   r      rF      ?   @   r'   r7   rW   s       r    r(   z"Big5DistributionAnalysis.get_order   sn    
 #+1+x{K
 	d" Fj4/0;>EJJj4/0;>EE2r"   rJ   rL   s   @r    rZ   rZ      sL        J J J J J      r"   rZ   c                   $     e Zd Z fdZd Z xZS )SJISDistributionAnalysisc                     t          t          |                                            t          | _        t
          | _        t          | _        d S r   )	r?   rb   r!   r   r   r   r   r   r   r@   s    r    r!   z!SJISDistributionAnalysis.__init__   s>    &--66888#9 )*H'''r"   c                     |d         |d         }}|dk    r|dk    r	d|dz
  z  }n|dk    r|dk    rd|dz
  dz   z  }nd	S ||z   d
z
  }|dk    rd	}|S )Nr$   r                     r'   r`      r7   )r   r8   rH   rX   r+   s        r    r(   z"SJISDistributionAnalysis.get_order   s    
 #+1+x{K
$ 	Z4%7 	:,-EED  	zT'9 	:,r12EE2#d* 	Er"   rJ   rL   s   @r    rb   rb      sL        I I I I I      r"   rb   c                   $     e Zd Z fdZd Z xZS )EUCJPDistributionAnalysisc                     t          t          |                                            t          | _        t
          | _        t          | _        d S r   )	r?   rm   r!   r   r   r   r   r   r   r@   s    r    r!   z"EUCJPDistributionAnalysis.__init__   s>    '..77999#9 )*H'''r"   c                 J    |d         }|dk    rd|dz
  z  |d         z   dz
  S dS )Nr$      rE   rF   r   r'   r7   )r   r8   r)   s      r    r(   z#EUCJPDistributionAnalysis.get_order   s;    
 {4< 	%3d::2r"   rJ   rL   s   @r    rm   rm      sL        I I I I I	 	 	 	 	 	 	r"   rm   N)	euctwfreqr   r   r   	euckrfreqr   r   r   
gb2312freqr	   r
   r   big5freqr   r   r   jisfreqr   r   r   objectr   r=   rO   rT   rZ   rb   rm   r7   r"   r    <module>rw      s>  8: : : : : : : : : :: : : : : : : : : :< < < < < < < < < <8 8 8 8 8 8 8 8 8 86 6 6 6 6 6 6 6 6 6F F F F Fv F F FR     8   &     8   &    !9   &    7   ,    7   2     8     r"   