
    |j                       U d dl mZ d dlmZ d dlmZ ddlmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZmZmZm Z m!Z!m"Z"m#Z# eez  ez  ez  ez  Z$de%d<    G d	 d
      Z& ed      d)d       Z' e(d      D  cg c]  }  e& e)|              c} Z*de%d<    G d d      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+      Z0 G d de+      Z1 G d d e+      Z2 G d! d"e+      Z3 G d# d$e+      Z4 G d% d&e+      Z5 ed      	 	 	 	 	 	 d*d'       Z6	 d+	 	 	 	 	 	 	 d,d(Z7yc c} w )-    )annotations)	lru_cache)	getLogger   )COMMON_CJK_CHARACTERSCOMMON_SAFE_ASCII_CHARACTERSTRACECompatibleFamillyRange_ACCENTUATED_ARABIC_ARABIC_ISOLATED_FORM&_BASIC_LATIN_COMPATIBLE_RANGE_FAMILIES_CJK_COMPATIBLE_RANGE_FAMILIES#_COMPATIBLE_WITH_ANY_RANGE_FAMILIES_HANGUL_HALFWIDTH_KATAKANA	_HIRAGANA	_KATAKANA_LATIN	_LIGATURE_RANGE_FAMILIES_SENTENCE_OPEN_PUNCTUATION_SUPERSCRIPT_THAI)_character_flagsis_emoticonis_punctuationis_separator	is_symbolremove_accentunicode_rangeint_GLYPH_MASKc                  6   e Zd ZU dZdZded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded <   ded!<   ded"<   d%d#Zy$)&CharInfoz>Pre-computed character properties shared across all detectors.)	character	printablealphaupperlowerspacedigitis_asciicase_variableflagsaccentuatedlatinis_cjkis_katakanais_halfwidth_katakana	is_arabicis_ligatureis_superscriptis_sentence_open_punctuationis_glyphpunctsymrangesepemoticonsafe
common_cjk
unaccentedstrr'   boolr(   r)   r*   r+   r,   r-   r.   r/   r#   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   
str | Noner=   r>   r?   r@   rA   rB   c                	   || _         t        |      }|dk  rwd| _        d| _        || _        d| _        d| _        |t        v | _        d| _	        d| _
        d| _        d| _        d| _        d| _        d| _        d| _        d|cxk  rdk  rVn nSd| _        d| _        d| _        d| _        d| _        d| _        d| _        t0        | _        d| _        d| _        d| _        nd|cxk  rdk  rVn nSd| _        d| _        d| _        d| _        d| _        d| _        d| _        t0        | _        d| _        d| _        d| _        nd|cxk  rd	k  rRn nOd| _        d| _        d| _        d| _        d| _        d| _        d| _        d
| _        d| _        d| _        d| _        n<|dk(  sd|cxk  rdk  rUn nRd| _        d| _        d| _        d| _        d| _        |dk(  | _        d| _        d
| _        d| _        d| _        d| _        n|j;                         | _        d| _        d| _        d| _        d| _        d| _        d| _        d
| _        d| _        | j,                  rt=        |      nd| _        | j,                  rt?        |      nd| _        nLd| _        d| _        |j;                         | _        |jA                         | _        |jC                         | _        |jE                         | _        |jG                         | _        |jI                         | _        | j&                  | j$                  k7  | _        tK        |      }| j"                  rd| _        ntM        |      | _        || _        tO        |tP        z        | _        tO        |t0        z        | _        tO        |tR        z        | _	        tO        |tT        z        | _
        tO        |tV        z        | _        tO        |tX        z        | _        tO        |tZ        z        | _        tO        |t\        z        | _        tO        |t^        z        | _        tO        |t`        z        | _        | j4                  r| j                  rtc        |      | _        n|| _        | j                  xr |td        v | _        | j,                  r!t=        |      | _        t?        |      | _        nd| _        d| _        tg        |      | _4        tk        |      | _6        y)zkCompute all properties for *character* (built once per codepoint,
        every branch assigns every slot).   TFA   Z   a   z   0   9   r       	      N)7r'   ordr.   r1   rB   r?   rA   r   r@   r3   r4   r5   r6   r7   r8   r9   r:   r)   r*   r+   r,   r-   r(   r/   r   r0   r2   r;   r<   isprintabler   r    isalphaisupperislowerisspaceisdigitr   r   rD   r   r   r   r   r   r   r   r   r$   r!   r   r"   r=   r   r>   )selfr'   or0   s       M/opt/daily-market/.venv/lib/python3.12/site-packages/charset_normalizer/md.py__init__zCharInfo.__init__k   sL    # Ys7 DM$D'DO!DM#DO!%AADIDK$D).D&"DN$D"'D05D-!DMQ}"}!
!
"
"
"
!%%)"#
!
"
 qC!
"
!
"
"
!%%)"#
!
"
 qB"
"
"
"
!
!%%*"
"
"
 bQ!\r\"
"
"
!
"
!"b%*"
"
"
  "+!6!6!8"
"
"
"
"
%*"
"
:>..^I6e
37>>9Y/u "DMDI&224DN"**,DJ"**,DJ"**,DJ"**,DJ"**,DJ!%tzz!9D *)4Ezz % +I 6DJ#EL$89Defn-DJut|,DK#EI$56D)-e6I.I)JD&!%'/2DN#EI$56D"&u|';"<D04U=W5W0XD- !45DMzzd.."/	":"+"kkPi;P.PDO ~~+I6
$Y/"
 "9-
	*    N)r'   rC   returnNone)__name__
__module____qualname____doc__	__slots____annotations__r[    r\   rZ   r&   r&   ,   s    HI> NOKKKKKNJKLO"&&NK	I	IN
JOH+r\   r&   N)maxsizec                    t        |       S )zBBuild (once per codepoint) and cache the CharInfo for *character*.)r&   )r'   s    rZ   
_char_inforh      s     Ir\   rG   zlist[CharInfo]_ASCII_CHAR_INFOc                  6    e Zd ZdZdZddZddZed	d       Zy)
MessDetectorPluginzy
    Base abstract class used for mess detection plugins.
    All detectors MUST extend and implement given methods.
    re   c                    t         )z
        The main routine to be executed upon character.
        Insert the logic in witch the text would be considered chaotic.
        NotImplementedErrorrX   r'   infos      rZ   	feed_infozMessDetectorPlugin.feed_info  s
    
 "!r\   c                    t         )zB
        Permit to reset the plugin to the initial state.
        rm   rX   s    rZ   resetzMessDetectorPlugin.reset  s
     "!r\   c                    t         )z
        Compute the chaos ratio based on what your feed() has seen.
        Must NOT be lower than 0.; No restriction gt 0.
        rm   rs   s    rZ   ratiozMessDetectorPlugin.ratio  s
     "!r\   Nr'   rC   rp   r&   r]   r^   r]   r^   r]   float)	r_   r`   ra   rb   rc   rq   rt   propertyrv   re   r\   rZ   rk   rk     s,    
 I"" " "r\   rk   c                  :    e Zd ZdZddZddZddZed	d       Zy)
 TooManySymbolOrPunctuationPlugin_punctuation_count_symbol_count_character_count_last_printable_charc                <    d| _         d| _        d| _        d | _        y Nr   r~   rs   s    rZ   r[   z)TooManySymbolOrPunctuationPlugin.__init__*  s"    '("#%&04!r\   c                6   | xj                   dz  c_         || j                  k7  rn|j                  sb|j                  r| xj                  dz  c_        || _        y|j
                  s-|j                  r!|j                  s| xj                  dz  c_        || _        y)1Optimized feed using pre-computed character info.r      N)	r   r   r@   r;   r   r-   r<   r?   r   ro   s      rZ   rq   z*TooManySymbolOrPunctuationPlugin.feed_info1  sw    "111$))zz''1,' %.! ZZDHHT]]""a'"$-!r\   c                .    d| _         d| _        d| _        y r   )r   r   r   rs   s    rZ   rt   z&TooManySymbolOrPunctuationPlugin.reset=  s    "# !r\   c                    | j                   dk(  ry| j                  | j                  z   | j                   z  }|dk\  r|S dS )Nr           333333?)r   r   r   )rX   ratio_of_punctuations     rZ   rv   z&TooManySymbolOrPunctuationPlugin.ratioB  sO      A% ##d&8&88!!'" (<s'B#KKr\   Nrx   rw   ry   	r_   r`   ra   rc   r[   rq   rt   r{   rv   re   r\   rZ   r}   r}   "  s.    I5
.
 L Lr\   r}   c                  :    e Zd ZdZddZddZddZed	d       Zy)
TooManyAccentuatedPluginr   _accentuated_countc                     d| _         d| _        y r   r   rs   s    rZ   r[   z!TooManyAccentuatedPlugin.__init__Q  s    %&'(r\   c                r    | xj                   dz  c_         |j                  r| xj                  dz  c_        yyr   r   N)r   r1   r   ro   s      rZ   rq   z"TooManyAccentuatedPlugin.feed_infoU  s2    "##q(# r\   c                     d| _         d| _        y r   r   rs   s    rZ   rt   zTooManyAccentuatedPlugin.reset\  s     !"#r\   c                f    | j                   dk  ry| j                  | j                   z  }|dk\  r|S dS )N   r   gffffff?r   )rX   ratio_of_accentuations     rZ   rv   zTooManyAccentuatedPlugin.ratio`  s=      1$'+'>'>AVAV'V(=(E$N3Nr\   Nrx   rw   ry   r   re   r\   rZ   r   r   N  s,    :I))$ O Or\   r   c                  :    e Zd ZdZddZddZddZed	d       Zy)
UnprintablePlugin_unprintable_countr   _has_escapec                .    d| _         d| _        d| _        y Nr   Fr   rs   s    rZ   r[   zUnprintablePlugin.__init__l  s    '(%&!&r\   c                    |dk(  rd| _         |j                  s+|j                  s|dk7  r|dk7  r| xj                  dz  c_        | xj                  dz  c_        y)r   Tu   ﻿r   N)r   r(   r,   r   r   ro   s      rZ   rq   zUnprintablePlugin.feed_infoq  sT    #D JJV#X%##q(#"r\   c                     d| _         d| _        y r   )r   r   rs   s    rZ   rt   zUnprintablePlugin.reset  s    "# r\   c                t    | j                   dk(  ry| j                  ry| j                  dz  | j                   z  S )Nr   r         ?r   )r   r   r   rs   s    rZ   rv   zUnprintablePlugin.ratio  s;      A%''!+t/D/DDDr\   Nrx   rw   ry   r   re   r\   rZ   r   r   i  s,    II'
#! E Er\   r   c                  :    e Zd ZdZddZddZddZed	d       Zy)
SuspiciousDuplicateAccentPlugin_successive_countr   _last_latin_character_last_was_accentuatedc                <    d| _         d| _        d | _        d| _        y r   r   rs   s    rZ   r[   z(SuspiciousDuplicateAccentPlugin.__init__  s"    &'%&6:"+0"r\   c                   | xj                   dz  c_         | j                  |j                  r{| j                  ro|j                  r+| j                  j                  r| xj
                  dz  c_        |j                  | j                  j                  k(  r| xj
                  dz  c_        || _        |j                  | _        yr   )r   r   r1   r   r*   r   rB   ro   s      rZ   rq   z)SuspiciousDuplicateAccentPlugin.feed_info  s    "&&2  **zzd88>>&&!+&$"<"<"G"GG&&!+&%)"%)%5%5"r\   c                <    d| _         d| _        d | _        d| _        y r   r   rs   s    rZ   rt   z%SuspiciousDuplicateAccentPlugin.reset  s"    !" !%)"%*"r\   c                Z    | j                   dk(  ry| j                  dz  | j                   z  S )Nr   r   r   )r   r   rs   s    rZ   rv   z%SuspiciousDuplicateAccentPlugin.ratio  s/      A%&&*d.C.CCCr\   Nrx   rw   ry   r   re   r\   rZ   r   r     s.    I16+ D Dr\   r   c                  :    e Zd ZdZddZddZddZed	d       Zy)
SuspiciousRange"_suspicious_successive_range_countr   _last_printable_seen_last_printable_rangec                <    d| _         d| _        d | _        d | _        y r   r   rs   s    rZ   r[   zSuspiciousRange.__init__  s"    78/%&04!15"r\   c                z   | xj                   dz  c_         |j                  s|j                  s|j                  rd| _        d| _        y| j                  || _        |j                  | _        y| j
                  }|j                  }||k7  s|!t        ||      r| xj                  dz  c_        || _        || _        yr   )	r   r,   r;   r@   r   r   r=    is_suspiciously_successive_ranger   )rX   r'   rp   unicode_range_aunicode_range_bs        rZ   rq   zSuspiciousRange.feed_info  s    "::tyy(,D%)-D&$$,(1D%)-D&&*&@&@&*jj o-1H/Q771<7$-!%4"r\   c                <    d| _         d| _        d | _        d | _        y r   )r   r   r   r   rs   s    rZ   rt   zSuspiciousRange.reset  s"     !23/$(!%)"r\   c                ^    | j                   dk  ry| j                  dz  | j                   z  }|S )NrP   r   r   )r   r   )rX   ratio_of_suspicious_range_usages     rZ   rv   zSuspiciousRange.ratio  s<      B& 33a7!!2"' /.r\   Nrx   rw   ry   r   re   r\   rZ   r   r     s,    I652* / /r\   r   c                  :    e Zd ZdZddZddZddZed	d       Zy)
SuperWeirdWordPlugin_word_count_bad_word_count_foreign_long_count_is_current_word_bad_foreign_long_watchr   _bad_character_count_buffer_length_buffer_last_char_buffer_last_char_accentuated_buffer_accent_count_buffer_glyph_count_buffer_upper_count_buffer_first_lower_buffer_has_non_ascii_buffer_last_char_ligature_buffer_has_internal_ligature_is_current_word_invalid_invalid_word_countc                   d| _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        d | _        d| _	        d| _
        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        y r   r   rs   s    rZ   r[   zSuperWeirdWordPlugin.__init__
  s     !$%() */!). %&)*!#$-138*)*!() () ). +0"05'38*.3%() r\   c                   |j                   r| j                  rd| _        |j                  | _        | j                  dk(  r|j
                  | _        | xj                  dz  c_        || _        |j                  r| xj                  dz  c_	        |j                  sd| _        |j                  | _        |j                  r| xj                  dz  c_        |j                  r| xj                   dz  c_        y| j"                  s|j$                  r|j                  rd| _        y| j                  sy|j&                  s|j(                  r| j                  rd| _        d| _        |j.                  s|j0                  s|j2                  r| xj4                  dz  c_        | j                  }| xj6                  |z  c_        |dk\  r| j                  |z  dk\  rd| _        n| j                  rF| j                  j9                         r,| j                  |k7  r| xj:                  dz  c_        d| _        nr| j                   dk(  rd| _        | xj:                  dz  c_        nF| j                  r:| j                  r.| j                  |dz
  k(  r| xj:                  dz  c_        d| _        |dk\  rM| j"                  rA| j                  dkD  xr | j                  |z  dk  }|s| xj:                  dz  c_        d| _        | j*                  r1| xj<                  dz  c_        | xj>                  |z  c_        d	| _        | j,                  r| xj@                  dz  c_         d	| _        d	| _        d| _        d| _        d	| _        d| _        d| _        d| _	        d	| _        d	| _        d	| _        d	| _        y|d
vrE|jB                  s8|jD                  r+d| _        | xj                  dz  c_        || _        d	| _        yyyy)r   Tr   r   N         ?   r   F>   _-<=>|~)#r)   r   r   r7   r   r+   r   r   r*   r   r.   r   r1   r   r   r:   r   r   r2   r9   r8   r   r   r,   r;   r>   r   r   rT   r   r   r   r   r-   r<   )rX   r'   rp   buffer_lengthprobable_camel_caseds        rZ   rq   zSuperWeirdWordPlugin.feed_info"  s   ::..592.2.>.>D+""a'+/::(1$%.D"zz((A-(==-1*151A1AD.))Q.)}}((A-(  --tzzTEUEU+/("",,D$F$F(,D%,0D)::txx!!%!4!4M!!]2!!,,}<C04D-66..66800MA,,1,04D---204D-,,1,..0000MA4EE
 ,,1,04D-"t'?'?,,q0 H00=@CG %
 ,,,1,04D-(($$)$))]:),1),,((A-(05-',D$"#D%)D"16D.()D%'(D$'(D$',D$).D&.3D+16D.@@JJ(,D%1$%.D"16D.   Ar\   c                   d| _         d | _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _	        d| _
        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        y r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rs   s    rZ   rt   zSuperWeirdWordPlugin.reset  s    !%-2*$)!#(   !$%!#$ $%!#$ #$ #( %*"*/'-2*(-%#$ r\   c                    | j                   ry| j                  dk  r| j                  dk(  ry| j                  | j                  z  S )Nr   
   r   r   )r   r   r   r   r   rs   s    rZ   rv   zSuperWeirdWordPlugin.ratio  sC    ##r!d&>&>!&C((4+@+@@@r\   Nrx   rw   ry   r   re   r\   rZ   r   r     s0    I,*0b7H%* A Ar\   r   c                  >    e Zd ZdZdZddZd	dZddZed
d       Z	y)CjkUncommonPluginz<
    Detect messy CJK text that probably means nothing.
    r   _uncommon_countc                     d| _         d| _        y r   r   rs   s    rZ   r[   zCjkUncommonPlugin.__init__  s    %&$%r\   c                r    | xj                   dz  c_         |j                  s| xj                  dz  c_        yyr   )r   rA   r   ro   s      rZ   rq   zCjkUncommonPlugin.feed_info  s0    "  A%  r\   c                     d| _         d| _        y r   r   rs   s    rZ   rt   zCjkUncommonPlugin.reset  s     ! r\   c                l    | j                   dk  ry| j                  | j                   z  }|dkD  r|dz  S dS )Nr   r   r      r   )rX   uncommon_form_usages     rZ   rv   zCjkUncommonPlugin.ratio  sD      1$%)%9%9D<Q<Q%Q +>*C"Q&LLr\   Nrx   rw   ry   
r_   r`   ra   rb   rc   r[   rq   rt   r{   rv   re   r\   rZ   r   r     s3     8I&&! M Mr\   r   c                  >    e Zd ZdZdZddZd	dZddZed
d       Z	y)SuspiciousKatakanaPluginzDDetect implausible halfwidth Katakana and uncommon CJK combinations._katakana_count_halfwidth_katakana_count
_cjk_count_uncommon_cjk_countc                <    d| _         d| _        d| _        d| _        y r   r   rs   s    rZ   r[   z!SuspiciousKatakanaPlugin.__init__  s!    $%./& () r\   c                    |j                   r7| xj                  dz  c_        |j                  r| xj                  dz  c_        y| xj                  dz  c_        |j
                  s| xj                  dz  c_        yyr   )r4   r   r5   r   r   rA   r   ro   s      rZ   rq   z"SuspiciousKatakanaPlugin.feed_info  sd      A% ))..!3.1$$)$ r\   c                <    d| _         d| _        d| _        d| _        y r   r   rs   s    rZ   rt   zSuspiciousKatakanaPlugin.reset  s!     )*&#$ r\   c                    | j                   dk\  r;| j                   | j                  k(  r"d| j                  cxk  r| j                  k(  ry yy)Nr      r   r   )r   r   r   r   rs   s    rZ   rv   zSuspiciousKatakanaPlugin.ratio  sK     **a/..$2F2FFT__@(@(@@ A r\   Nrx   rw   ry   r   re   r\   rZ   r   r     s/    NI*
*%  r\   r   c                  :    e Zd ZdZddZddZddZed	d       Zy)
ArchaicUpperLowerPlugin_buf_character_count_since_last_sep_successive_upper_lower_count#_successive_upper_lower_count_finalr   _last_alpha_seen_upper_last_alpha_seen_lower_current_ascii_onlyc                t    d| _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        y )NFr   Tr   rs   s    rZ   r[   z ArchaicUpperLowerPlugin.__init__  sA    	45,23*890%&,1#,1#)- r\   c                   |j                   xr |j                  }| }|r| j                  dkD  rx| j                  dk  r7|j                  s+| j                  s| xj
                  | j                  z  c_        d| _        d| _        d| _        | xj                  dz  c_        d| _        y| j                  r|j                  sd| _        | j                  dkD  rh|j                  r| j                  s|j                  r=| j                  r1| j                  r| xj                  dz  c_        d| _        nd| _        nd| _        | xj                  dz  c_        | xj                  dz  c_        |j                  | _        |j                  | _        y)r   r   @   Fr   TNr   )r)   r/   r   r-   r  r  r   r   r   r.   r*   r  r+   r  )rX   r'   rp   is_concerned	chunk_seps        rZ   rq   z!ArchaicUpperLowerPlugin.feed_info  sE   !ZZ>D,>,>**	==A44:

0088668 23D.34D0DI!!Q&!'+D$##DMM',D$//!3

t::

t::9966!;6 %DI $DI!	",,1,&*jj#&*jj#r\   c                t    d| _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        y )Nr   FT)r   r   r   r  r  r  r   r  rs   s    rZ   rt   zArchaicUpperLowerPlugin.reset;  sA     !/0,-.*340&+#&+#	#' r\   c                T    | j                   dk(  ry| j                  | j                   z  S )Nr   r   )r   r  rs   s    rZ   rv   zArchaicUpperLowerPlugin.ratioE  s*      A%77$:O:OOOr\   Nrx   rw   ry   r   re   r\   rZ   r   r     s/    	I.)1V( P Pr\   r   c                  :    e Zd ZdZddZddZddZed	d       Zy)
ArabicIsolatedFormPluginr   _isolated_form_countc                     d| _         d| _        y r   r  rs   s    rZ   r[   z!ArabicIsolatedFormPlugin.__init__P  s    %&)*!r\   c                     d| _         d| _        y r   r  rs   s    rZ   rt   zArabicIsolatedFormPlugin.resetT  s     !$%!r\   c                    | xj                   dz  c_         |j                  t        z  r| xj                  dz  c_        yyr   )r   r0   r   r  ro   s      rZ   rq   z"ArabicIsolatedFormPlugin.feed_infoX  s6    "::--%%*% .r\   c                X    | j                   dk  ry| j                  | j                   z  }|S )Nr   r   r  )rX   isolated_form_usages     rZ   rv   zArabicIsolatedFormPlugin.ratio_  s0      1$%)%>%>AVAV%V""r\   Nrx   rw   ry   )	r_   r`   ra   rc   r[   rt   rq   r{   rv   re   r\   rZ   r  r  M  s*    <I+&+ # #r\   r  c                    | |yt         |    }t         |   }||k(  ry|t        v s|t        v ryt        ||      t        v ry| dk(  r|t        vS |dk(  r|t        vS y)z_
    Determine if two Unicode ranges seen next to each other can be considered suspicious.
    TFzBasic Latin)r   r   r
   r   r   )r   r   	familly_a	familly_bs       rZ   r   r   i  s     /"9$_5I$_5II 	88;;i37QQ -' FFF-' FFFr\   c           
        t        |       }|dk  rd}n
|dk  rd}nd}| j                         }t        }t        }t	               }t               }	t               }
t               }t               }t               }t               }t               }t               }t               }|j                  }|	j                  }|
j                  }|j                  }|j                  }|j                  }|j                  }|j                  }|j                  }|j                  }t        d||      D ]|  }| |||z    D ]  }t!        |      }|dk  r||   }n ||      } |||        |||       |r|j"                  r	 |||       K |||       |j"                  r |||        |||       |j$                  s |||       |j&                  r	 |||       |j(                  r |||        |||       n|j*                  r	 |||       |j,                  s |||        |j.                  |	j.                  z   |
j.                  z   |j.                  z   |j.                  z   |j.                  z   |j.                  z   |j.                  z   |j.                  z   |j.                  z   } | |k\  s} n |d   }! |d|!       |s	 |d|!        |d|!       |j.                  |	j.                  z   |
j.                  z   |j.                  z   |j.                  z   |j.                  z   |j.                  z   |j.                  z   |j.                  z   |j.                  z   } |rt1        d	      }"|"j3                  t4        d
| d|  d|        |dkD  r8|"j3                  t4        d| dd         |"j3                  t4        d| dd         ||	|
|||||||f
D ]1  }#|"j3                  t4        |#j6                   d|#j.                          3 t9        | d      S )zw
    Compute a mess ratio given a decoded bytes sequence. The maximum threshold does stop the computation earlier.
    i  rN   i   r  rG   r   r   
charset_normalizerzIMess-detector extended-analysis start. intermediary_mean_mess_ratio_calc=z mean_mess_ratio=z maximum_threshold=   zStarting with: NzEnding with: iz: r   )lenisasciiri   rh   r}   r   r   r   r   r   r   r   r   r  rq   r=   rQ   r(   r)   r2   r3   r4   r6   rv   r   logr	   	__class__round)$decoded_sequencemaximum_thresholddebugseq_lenstepis_pure_ascii
ascii_info	char_infod_spd_tad_upd_sdad_srd_swd_cud_skd_aud_ai	d_sp_feed	d_ta_feed	d_up_feed
d_sda_feed	d_sr_feed	d_sw_feed	d_cu_feed	d_sk_feed	d_au_feed	d_ai_feedblock_startr'   	codepointrp   mean_mess_rationl_infologgerdts$                                       rZ   
mess_ratiorC    s2    '(G}	4
 +224M
 "JI .N-OD%=%?D/1D-L-NE+-D!5!7D/1D%=%?D$;$=D%=%?D IIIJIIIIIIQ. N
)+d8JK )	/I !^I3!), + i&i&>>i.i& ~~)T*)T* zz)T*::y$/;;i.i.%%i.>>i.S)	/X JJjjjj kk jj	
 jj jj jj jj jj	 	 //uN
z R.$ dG$$  JJjjjj kk jj	
 jj jj jj jj jj	 	 /0

1156GGX Y!!2 35	
 R<JJu0@"0E/FGHJJu.>su.E-FGHtUD$dD$O 	=BJJub
;<	= !$$r\   )r'   rC   r]   r&   )r   rE   r   rE   r]   rD   )g?F)r!  rC   r"  rz   r#  rD   r]   rz   )8
__future__r   	functoolsr   loggingr   constantr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   utilsr   r   r   r   r    r!   r"   r$   rd   r&   rh   r=   chrri   rk   r}   r   r   r   r   r   r   r   r   r  r   rC  )
_codepoints   0rZ   <module>rK     s   "       .   '>I-	9EAS AG+ G+X 4  16c
$",HS_$ . 
" "<)L'9 )LXO1 O6"E* "EJ)D&8 )DX6/( 6/rpA- pAfM* MD+1 +\TP0 TPn#1 #8 4  2< 	   H JOZ%Z%.3Z%BFZ%
Z%]$s   E