Ë
    Dü´j*7  ã                  ó¬  — U d dl mZ d dlZd dlZd dlZd dlmZ 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"m#Z#m$Z$m%Z% d.d	„Z&d/d
„Z'd0d„Z( e)d„  ejT                  «       D «       «      Z+de,d<   e+D � cg c]  } | d    ‘Œ	 c} Z-de,d<   d1d„Z.d/d„Z/d/d„Z0d/d„Z1d/d„Z2d/d„Z3d/d„Z4d/d„Z5d/d„Z6d/d„Z7d/d„Z8d/d„Z9d/d„Z:d/d„Z;d/d„Z<d2d „Z=d/d!„Z>	 d3	 	 	 	 	 d4d"„Z? e
d¬#«      d5d$„«       Z@d6d%„ZAd7d&„ZBd8d9d'„ZCd:d(„ZDd;d)„ZEd*ejŒ                  d+f	 	 	 	 	 	 	 d<d,„ZG	 	 d=	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d>d-„ZHyc c} w )?é    )ÚannotationsN)Úbisect_right)ÚIncrementalDecoder)Ú	lru_cache)Ú	Generatoré   )ÚENCODING_MARKSÚIANA_SUPPORTED_SIMILARÚRE_POSSIBLE_ENCODING_INDICATIONÚUNICODE_RANGES_COMBINEDÚ_SECONDARY_RANGE_NAMESÚCOMMON_CJK_CHARACTERSÚ_LATINÚ_CJKÚ_HANGULÚ	_KATAKANAÚ	_HIRAGANAÚ_HALFWIDTH_KATAKANAÚ_THAIÚ_ARABICÚ_ARABIC_ISOLATED_FORMÚ	_LIGATUREÚ_SUPERSCRIPTÚ_SENTENCE_OPEN_PUNCTUATIONÚ_ACCENT_KEYWORDSÚ_ACCENTUATEDÚ_KNOWN_MB_DECODERSÚ_KNOWN_MB_CLASSESÚ_IANA_NAMESÚ_MULTIBYTE_SEARCH_RADIUSc                óä  — 	 t        j                  | «      }d}d|v r	|t        z  }d|v r	|t        z  }d|v r	|t
        z  }d|v r|t        z  }d|v r	|t        z  }d|v r	|t        z  }d|v r	|t        z  }d	|v r|t        z  }d
|v r	|t        z  }d|v s|j                  d«      r	|t        z  }d|v r	|t        z  }|dv r	|t        z  }t         D ]  }||v sŒ|t"        z  } |S  |S # t        $ r Y yw xY w)zRCompute all name-based classification flags with a single unicodedata.name() call.r   ÚLATINÚCJKÚHANGULÚKATAKANAÚ	HALFWIDTHÚHIRAGANAÚTHAIÚARABICzISOLATED FORMÚLIGATUREz	LETTER AEÚSUPERSCRIPT>   úINVERTED QUESTION MARKúINVERTED EXCLAMATION MARK)ÚunicodedataÚnameÚ
ValueErrorr   r   r   r   r   r   r   r   r   Úendswithr   r   r   r   r   )Ú	characterÚdescÚflagsÚkws       úV/root/workspace/ytshorts/venv/lib/python3.12/site-packages/charset_normalizer/utils.pyÚ_character_flagsr7   '   sC  € ðÜ×$Ñ$ YÓ/ˆð €Eà�$�Ø”‰ˆØ��}Ø”‰ˆØ�4ÑØ”ÑˆØ�TÑØ”ÑˆØ˜$ÑØÔ(Ñ(ˆEØ�TÑØ”ÑˆØ��~Ø”‰ˆØ�4ÑØ”ÑˆØ˜dÑ"ØÔ*Ñ*ˆEØ�TÑ˜TŸ]™]¨;Ô7Ø”ÑˆØ˜ÑØ”ÑˆØÐFÑFØÔ+Ñ+ˆäò ˆØ�Š:Ø”\Ñ!ˆEØà€Lðð
 €LøôG ò Ùðús   ‚C# Ã#	C/Ã.C/c                ó8   — t        t        | «      t        z  «      S ©N)Úboolr7   r   ©r2   s    r6   Úis_accentuatedr<   Q   s   € ÜÔ  Ó+¬lÑ:Ó;Ð;ó    c                ó†   — t        j                  | «      }|s| S |j                  d«      }t        t	        |d   d«      «      S )Nú r   é   )r.   ÚdecompositionÚsplitÚchrÚint)r2   Ú
decomposedÚcodess      r6   Úremove_accentrG   U   sA   € Ü!×/Ñ/°	Ó:€JÙØÐà!×'Ñ'¨Ó,€EäŒs�5˜‘8˜RÓ Ó!Ð!r=   c              #  óT   K  — | ]   \  }}|j                   |j                  |f–— Œ" y ­wr9   )ÚstartÚstop)Ú.0r/   Ú	ord_ranges      r6   ú	<genexpr>rM   a   s+   è ø€ ò <áˆˆið ‡_�_�i—n‘n dÔ+ñ<ùs   ‚&(zlist[tuple[int, int, str]]Ú_UNICODE_RANGES_SORTEDz	list[int]Ú_UNICODE_RANGE_STARTSc                óŠ   — t        | «      }|dk  ry|dk  ryt        t        |«      dz
  }|dk\  rt        |   \  }}}||k  r|S y)zK
    Retrieve the Unicode range official name from a single character.
    é    zControl characteré€   zBasic Latinr   r   N)Úordr   rO   rN   )r2   Úcharacter_ordÚidxrI   rJ   r/   s         r6   Úunicode_rangerV   h   s_   € ô ˜Y›€Mà�rÒØ"Ø�sÒØô Ô,¨mÓ
<¸qÑ
@€CØ
ˆa‚xÜ2°3Ñ7Ñˆˆt�TØ˜4ÒØˆKàr=   c                ó8   — t        t        | «      t        z  «      S r9   )r:   r7   r   r;   s    r6   Úis_latinrX   }   s   € ÜÔ  Ó+¬fÑ4Ó5Ð5r=   c                óZ   — t        j                  | «      }d|v ryt        | «      }|€yd|v S )NÚPTFÚPunctuation©r.   ÚcategoryrV   ©r2   Úcharacter_categoryÚcharacter_ranges      r6   Úis_punctuationra   �   s=   € Ü)×2Ñ2°9Ó=Ðà
Ð Ñ Øä"/°	Ó":€OàÐØà˜OÐ+Ð+r=   c                óp   — t        j                  | «      }d|v sd|v ryt        | «      }|€yd|v xr |dk7  S )NÚSÚNTFÚFormsÚLor\   r^   s      r6   Ú	is_symbolrg   �   sP   € Ü)×2Ñ2°9Ó=Ðà
Ð Ñ  CÐ+=Ñ$=Øä"/°	Ó":€OàÐØà�oÐ%ÒDÐ*<ÀÑ*DÐDr=   c                ó2   — t        | «      }|€yd|v xs d|v S )NFÚ	EmoticonsÚPictographs)rV   )r2   r`   s     r6   Úis_emoticonrk   �   s*   € Ü"/°	Ó":€OàÐØà˜/Ð)ÒM¨]¸oÐ-MÐMr=   c                ój   — | j                  «       s| dv ryt        j                  | «      }d|v xs |dv S )N>   õ   ï½œú+ú<ú>TÚZ>   ÚPcÚPdÚPo)Úisspacer.   r]   )r2   r_   s     r6   Úis_separatorrv   ¦   sB   € Ø×ÑÔ˜iÐ+AÑAØä)×2Ñ2°9Ó=ÐàÐ$Ð$ÒPÐ(:Ð>PÐ(PÐPr=   c                óD   — | j                  «       | j                  «       k7  S r9   )ÚislowerÚisupperr;   s    r6   Úis_case_variablerz   ¯   s   € Ø×ÑÓ )×"3Ñ"3Ó"5Ñ5Ð5r=   c                ó8   — t        t        | «      t        z  «      S r9   )r:   r7   r   r;   s    r6   Úis_cjkr|   ³   s   € ÜÔ  Ó+¬dÑ2Ó3Ð3r=   c                ó8   — t        t        | «      t        z  «      S r9   )r:   r7   r   r;   s    r6   Úis_hiraganar~   ·   ó   € ÜÔ  Ó+¬iÑ7Ó8Ð8r=   c                ó8   — t        t        | «      t        z  «      S r9   )r:   r7   r   r;   s    r6   Úis_katakanar�   »   r   r=   c                ó8   — t        t        | «      t        z  «      S r9   )r:   r7   r   r;   s    r6   Ú	is_hangulrƒ   ¿   ó   € ÜÔ  Ó+¬gÑ5Ó6Ð6r=   c                ó8   — t        t        | «      t        z  «      S r9   )r:   r7   r   r;   s    r6   Úis_thair†   Ã   s   € ÜÔ  Ó+¬eÑ3Ó4Ð4r=   c                ó8   — t        t        | «      t        z  «      S r9   )r:   r7   r   r;   s    r6   Ú	is_arabicrˆ   Ç   r„   r=   c                ó8   — t        t        | «      t        z  «      S r9   )r:   r7   r   r;   s    r6   Úis_arabic_isolated_formrŠ   Ë   s   € ÜÔ  Ó+Ô.CÑCÓDÐDr=   c                ó   — | t         vS r9   )r   r;   s    r6   Úis_cjk_uncommonrŒ   Ï   s   € ØÔ1Ð1Ð1r=   c                ó   — | t         v S r9   )r   )Ú
range_names    r6   Úis_unicode_range_secondaryr�   Ó   s   € ØÔ/Ð/Ð/r=   c                óf   — | j                  «        xr | j                  «        xr | dk7  xr | dk7  S )Núu   ï»¿)ru   Úisprintabler;   s    r6   Úis_unprintabler“   ×   sF   € à×ÑÓÐò 	"Ø×%Ñ%Ó'Ð'ò	"à˜Ñò	"ð ˜Ñ!ð	r=   c                ó�  — t        | t        t        f«      st        ‚t	        | «      }| dt        ||«       }|j                  «       }d|vrd|vry|j                  dd¬«      }t        j                  |«      D ]L  }|j                  d«      j                  «       j                  dd	«      }t        j                  |«      }|€ŒJ|c S  y)
zW
    Extract using ASCII-only decoder any specified encoding in the first n-bytes.
    Ns   codings   charsetÚasciiÚignore©Úerrorsr   ú-Ú_)Ú
isinstanceÚbytesÚ	bytearrayÚ	TypeErrorÚlenÚminÚlowerÚdecoder   ÚfinditerÚgroupÚreplacer   Úget)	ÚsequenceÚsearch_zoneÚseq_lenÚsearch_bytesÚlowered_bytesÚdecoded_zoneÚmatchÚspecified_encodingÚencoding_ianas	            r6   Úany_specified_encodingr°   á   sÊ   € ô �h¤¬	Ð 2Ô3Üˆä�x“=€Gð Ð7œc '¨;Ó7Ð8€LØ ×&Ñ&Ó(€MØ˜Ñ%¨*¸MÑ*IØà$×+Ñ+¨G¸HÐ+ÓE€Lä0×9Ñ9¸,ÓGò !ˆØ"Ÿ[™[¨›^×1Ñ1Ó3×;Ñ;¸CÀÓEÐÜ#Ÿ™Ð(:Ó;ˆØÑ$Ø Ò ð	!ð r=   )Úmaxsizec                ó¬   — | t         v ryt        D ](  }	 t        j                  |«      j	                  | «        y y# t
        t        t        f$ r Y ŒBw xY w)zQ
    Verify is a specific encoding is a multi byte one based on it IANA name
    TF)r   r   Ú	importlibÚimport_moduleÚgetcodecÚImportErrorÚAttributeErrorÚLookupError)r/   Úproviders     r6   Úis_multi_byte_encodingrº   ý   sd   € ð
 Ô!Ñ!Øô &ò ˆð	Ü×#Ñ# HÓ-×6Ñ6°tÔ<ñ ðð øô	 œ^¬[Ð9ò 	Ùð	ús   ”$<¼AÁAc                ó’   — t         D ]>  }t         |   }t        |t        «      r|g}|D ]  }| j                  |«      sŒ||fc c S  Œ@ y)z9
    Identify and extract SIG/BOM in given sequence.
    )Nr=   )r	   r›   rœ   Ú
startswith)r§   Úiana_encodingÚmarksÚmarks       r6   Úidentify_sig_or_bomrÀ     s[   € ô
 (ò +ˆÜ%3°MÑ%Bˆä�eœUÔ#Ø�GˆEàò 	+ˆDØ×"Ñ" 4Õ(Ø$ dÐ*Ô*ñ	+ð+ð r=   c                ó
   — | dvS )N>   Úutf_16Úutf_32© )r½   s    r6   Úshould_strip_sig_or_bomrÅ   (  s   € ØÐ 4Ð4Ð4r=   c                óš   — | j                  «       j                  dd«      } t        j                  | «      }|�|S |rt	        d| › d�«      ‚| S )zIReturns the Python normalized encoding name (Not the IANA official name).r™   rš   zUnable to retrieve IANA for 'ú')r¡   r¥   r   r¦   r0   )Úcp_nameÚstrictr¯   s      r6   Ú	iana_namerÊ   ,  sQ   € à�m‰m‹o×%Ñ% c¨3Ó/€Gä—O‘O GÓ,€MØÐ ØÐáÜÐ8¸¸	ÀÐCÓDÐDà€Nr=   c                ót  — t        | «      st        |«      ryt        j                  d| › �«      j                  }t        j                  d|› �«      j                  } |d¬«      } |d¬«      }d}t	        d«      D ]7  }t        |g«      }|j                  |«      |j                  |«      k(  sŒ3|dz  }Œ9 |dz  S )Ng        z
encodings.r–   r—   r   é   r   )rº   r³   r´   r   Úrangerœ   r¢   )	Úiana_name_aÚiana_name_bÚ	decoder_aÚ	decoder_bÚid_aÚid_bÚcharacter_match_countÚiÚto_be_decodeds	            r6   Úcp_similarityr×   :  s¹   € Ü˜kÔ*Ô.DÀ[Ô.QØä×'Ñ'¨*°[°MÐ(BÓC×VÑV€IÜ×'Ñ'¨*°[°MÐ(BÓC×VÑV€Iá(°Ô9€DÙ(°Ô9€Dà!"Ðä�3‹Zò 'ˆÜ$ a S›zˆØ�;‰;�}Ó%¨¯©°]Ó)CÓCØ! QÑ&Ñ!ð'ð
 ! 3Ñ&Ð&r=   c                ó,   — | t         v xr |t         |    v S )zŽ
    Determine if two code page are at least 80% similar. IANA_SUPPORTED_SIMILAR dict was generated using
    the function cp_similarity.
    )r
   )rÎ   rÏ   s     r6   Úis_cp_similarrÙ   N  s%   € ð 	Ô-Ð-ò 	?ØÔ1°+Ñ>Ð>ðr=   Úcharset_normalizerz)%(asctime)s | %(levelname)s | %(message)sc                óâ   — t        j                  | «      }|j                  |«       t        j                  «       }|j	                  t        j
                  |«      «       |j                  |«       y r9   )ÚloggingÚ	getLoggerÚsetLevelÚStreamHandlerÚsetFormatterÚ	FormatterÚ
addHandler)r/   ÚlevelÚformat_stringÚloggerÚhandlers        r6   Úset_logging_handlerrç   Y  sU   € ô
 ×Ñ˜tÓ$€FØ
‡O�O�EÔä×#Ñ#Ó%€GØ×Ñœ×*Ñ*¨=Ó9Ô:Ø
×Ñ�gÕr=   c
              #  óP  K  — |rG|j                  d«      r6t        |«      }
t        | «      }|D ]  }||
z  |z  }||||z    }|s y |–— Œ y |r|s|D ]  }||||z    }|s y |–— Œ y |	r4|s| n| t        |«      d  }|D ]  }||||z    }|s y t        ||«      –— Œ y |D �]  }||z   }|t        | «      dz   kD  rŒ| |||z    }|r|s||z   }|j                  ||rdnd¬«      }|r¹|dkD  r´t	        |d«      }|d | }d}|rXt        |«      }
||
z  t        | «      z  }t        d|t        z
  «      }t	        |
|t        z   «      }|j                  |||«      dk\  }|rE|sC||vr?t        ||d	z
  d
«      D ],  }| || }|r|s||z   }|j                  |d¬«      }|d | |v sŒ, n |–— �Œ y ­w)NÚiso2022_é   r–   rÉ   r—   r   r@   Fé   éÿÿÿÿ)	r¼   rŸ   Ústrr¢   r    Úmaxr    ÚfindrÍ   )Ú	sequencesr¯   ÚoffsetsÚ
chunk_sizeÚbom_or_sig_availableÚstrip_sig_or_bomÚsig_payloadÚis_multi_byte_decoderÚdecoded_payloadÚdeferred_decodingÚdecoded_lengthÚsequence_lengthrÕ   Údecoded_offsetÚchunkÚ
base_bytesÚcut_sequenceÚ	chunk_endÚchunk_partial_size_chkÚchunk_prefixÚfound_nearbyÚexpected_offsetÚsearch_startÚ
search_endÚjs                            r6   Úcut_sequence_chunksr  f  sd  è ø€ ñ ˜=×3Ñ3°JÔ?Ü˜_Ó-ˆÜ˜i›.ˆØò 	ˆAØ Ñ/°?ÑBˆNØ# N°^ÀjÑ5PÐQˆEÙÙØ‹Kñ	ñ 
Ñ!6Øò 	ˆAØ# A¨¨J©Ð7ˆEÙÙØ‹Kñ		ñ
 
ñ .‰I°9¼SÀÓ=MÐ=OÐ3Pð 	ð ò 	3ˆAØ% a¨!¨j©.Ð9ˆLÙÙÜ�l MÓ2Ó2ñ		3ð ó 2	ˆAØ˜J™ˆIØœ3˜y›>¨AÑ-Ò-Øà$ Q¨¨Z©Ð8ˆLá#Ñ,<Ø*¨\Ñ9�à ×'Ñ'ØÙ#8‘x¸hð (ó ˆEñ %¨¨QªÜ.1°*¸bÓ.AÐ&Ø$Ð%<Ð&<Ð=�Ø$�á"Ü%(¨Ó%9�NØ&'¨.Ñ&8¼CÀ	»NÑ&J�OÜ#& q¨/Ô<TÑ*TÓ#U�LÜ!$Ø&¨Ô:RÑ(Ró"�Jð (×,Ñ,¨\¸<ÈÓTØñð !ñ $Ù(Ø$¨OÑ;ä" 1 a¨!¡e¨RÓ0ò 	"˜Ø'0°°9Ð'=˜á/Ñ8HØ+6¸Ñ+E˜Là ,× 3Ñ 3°MÈ(Ð 3Ó S˜à Ð!8Ð"8Ð9¸_ÒLÙ!ð	"ð ŒKñe2	ùs   ‚FF&ÆF&)r2   rí   ÚreturnrD   )r2   rí   r  r:   )r2   rí   r  rí   )r2   rí   r  ú
str | None)rŽ   rí   r  r:   )i    )r§   úbytes | bytearrayr¨   rD   r  r	  )r/   rí   r  r:   )r§   r
  r  ztuple[str | None, bytes])r½   rí   r  r:   )T)rÈ   rí   rÉ   r:   r  rí   )rÎ   rí   rÏ   rí   r  Úfloat)rÎ   rí   rÏ   rí   r  r:   )r/   rí   rã   rD   rä   rí   r  ÚNone)NF)rð   r
  r¯   rí   rñ   rÍ   rò   rD   ró   r:   rô   r:   rõ   rœ   rö   r:   r÷   r	  rø   r:   r  zGenerator[str, None, None])IÚ
__future__r   r³   rÜ   r.   Úbisectr   Úcodecsr   Ú	functoolsr   Útypingr   Úconstantr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r7   r<   rG   ÚsortedÚitemsrN   Ú__annotations__rO   rV   rX   ra   rg   rk   rv   rz   r|   r~   r�   rƒ   r†   rˆ   rŠ   rŒ   r�   r“   r°   rº   rÀ   rÅ   rÊ   r×   rÙ   ÚINFOrç   r  )Úes   0r6   ú<module>r     s
  ðÞ "ã Û Û Ý Ý %Ý Ý ÷÷ ÷ ÷ ÷ ÷ ó ó8'óT<ó"ñ 6<ñ <à8Ð2×8Ñ8Ó:ô<ó 6Ð Ð2ó ð 3IÖ#I¨Q A a£DÒ#IÐ �yÓ Ióó*6ó,óEóNóQó6ó4ó9ó9ó7ó5ó7óEó2ó0óð 59ðØðØ.1ðàóñ8 �4Ôòó ðó0ó$5ôó'ó(ð %Ø—‘ØDð
Ø
ð
àð
ð ð
ð 
ó	
ð, #'Ø#ð^Ø ð^àð^ð ð^ð ð	^ð
 ð^ð ð^ð ð^ð  ð^ð  ð^ð ð^ð  ô^ùòC $Js   ÂE