+
    NjU                      a  0 t $ ^ RIHt ^ RIt^ RIHt ^ RIHt ^ RIH	t	 ^RI
HtHtHtHt ^RIHtHtHtHtHt ^RIHt ^R	IHtHt ^R
IHtHtHtHtHtH t  ]PB                  ! R4      t"]PF                  ! 4       t$]$PK                  ]PL                  ! R4      4       ]'! ]R R7      t(R])R&   RR R llt*RR R llt+RR R llt,RR R llt-R# )    )annotationsN)	lru_cache)PathLike)BinaryIO)coherence_ratioencoding_languagesmb_encoding_languagesmerge_coherence_ratios)IANA_SUPPORTEDIANA_SUPPORTED_SIMILARTOO_BIG_SEQUENCETOO_SMALL_SEQUENCETRACE)
mess_ratio)CharsetMatchCharsetMatches)any_specified_encodingcut_sequence_chunks	iana_nameidentify_sig_or_bomis_multi_byte_encodingshould_strip_sig_or_bomcharset_normalizerz)%(asctime)s | %(levelname)s | %(message)sc                "    \        V 4      '       * # N)r   encodings   &X/data/cameron/venvs/serve_omidlab/lib/python3.14/site-packages/charset_normalizer/api.py<lambda>r   .   s    -CH-M)M    )keyz	list[str]IANA_SUPPORTED_MB_FIRSTc               D    V ^8  d   QhRRRRRRRRRR	R
R	RRRRRRRRRR/# )   	sequenceszbytes | bytearraystepsint
chunk_size	thresholdfloatcp_isolationlist[str] | Nonecp_exclusionpreemptive_behaviourboolexplainlanguage_thresholdenable_fallbackreturnr    )formats   "r   __annotate__r6   2   s     x x xx x 	x
 #x #x x x x x xr    c
                &   \        V \        \        34      '       g$   \        RP	                  \        V 4      4      4      hV'       dC   \        P                  p
\        P                  \        4       \        P                  \        4       \        V 4      pV^ 8X  df   \        P                  R4       V'       d/   \        P                  \        4       \        P                  X
4       \        \!        V RRR. R4      .4      # VeG   \        P#                  \        RR	P%                  V4      4       V Uu. uF  p\'        VR4      NK  	  ppM. pVeG   \        P#                  \        R
R	P%                  V4      4       V Uu. uF  p\'        VR4      NK  	  ppM. pWV,          8:  d"   \        P#                  \        RVVV4       ^pTpV^8  d   W,          V8  d   \)        W,          4      p\        V 4      \*        8  p\        V 4      \,        8  pV'       d+   \        P#                  \        RP	                  V4      4       M1V'       d*   \        P#                  \        RP	                  V4      4       . pV'       d   \/        V 4      MRpVe-   VP1                  V4       \        P#                  \        RV4       \3        4       p. p. p\3        4       p\3        4       p/ p\5        RR7      ! \6        4      p\5        RR7      ! \8        4      pRp\3        4       p^ p^pRpRpRpRp \        4       p!\        4       p"\;        V 4      w  p#p$V#e7   VP1                  V#4       \        P#                  \        R\        V$4      V#4       VP1                  R4       RV9  d   VP1                  R4       V\<        ,            EF  p%V'       d
   V%V9  d   K  V'       d
   V%V9   d   K&  V%V9   d   K/  VP?                  V%4       Rp&V#V%8H  p'T';'       d    \A        V%4      p(V%RC9   d&   V''       g   \        P#                  \        RV%4       K  V%RD9   d&   V''       g   \        P#                  \        RV%4       K  V%V9   d   \        P#                  \        RV%4       K  V%V9   d   \        P#                  \        RV%4       K   \C        V%4      p)T'       di   T)'       g   \3        \I        T%4      4      p*M\3        \K        T%4      4      p*T*PM                  T4      '       g!   \        P#                  \        RT%T*T4       EKx  T'       d0   T)'       g(   TT8  d!   \        P#                  \        RT%TT4       EK  T'       d'   T)'       g   \        P#                  \        RT%4       EK  T)'       * ;'       d    T'       * p+ T'       dB   T)'       g:   \O        T('       g   T R\)        R4       MT \        T$4      \)        R4       T%R7       MgT+'       g`   T%R8X  d6   T''       d.   \O        T T%R7      p&T&'       d   T&^ ,          R8X  d
   T&R ,          p&M#\O        T('       g   T MT \        T$4      R T%R7      p&\U        T''       g   ^ M
\        T$4      T\)        Y,          4      4      p-T);'       d    T&RJ;'       d    \        T&4      T8  p.T.'       d   \        P#                  \        R"T%4       \)        \        T-4      ^,          4      p/\W        T/^4      p/^ p0Rp1. p2. p3 \Y        T T%T-TT'T(T$T)T&T+4
       F  p4T2P1                  T44       T3P1                  T! T4TT;'       d     ^\        T4      u;8*  ;'       d    ^8*  Mu 4      4       T3RE,          T8  d
   T0^,          p0T0T/8  g   T''       g   K|  T('       d   K   M	   T1'       g1   T'       d)   T)'       g!    T \)        R%4      R P[                  T%R&R'7       T3'       d   \]        T34      \        T34      ,          MRp5T5T8  g	   T0T/8  Ed   TP1                  T%4       T%\^        9   d   TPa                  \^        T%,          4       T&e'   T)'       g   TPc                  \e        T&4      T5. R34       \        P#                  \        R)T%T0\g        T5^d,          ^R*7      4       T	'       do   T%RRTRR39   dc   T1'       g[   T&f/    \O        T('       g   T MT \        T$4      R T%R7      p&T'       d   Rp&\!        T T%TT'. T&TR,7      p6T%T8X  d   T6p MT%R8X  d   T6pMT6pEK_  T+'       d%    \O        T('       g   T MT \        T$4      R T%R7      p&T&EeI   T)'       Eg@   \e        T&4      p7TPi                  T74      p8T8Ee   T8w  p9p:p;T;'       Ed   \!        T T%T9T'T:T'       d   T%TRR39   d   T&MRTR,7      p<T!P1                  T<4       TP?                  T%4       \        P#                  \        R-T%\g        T9^d,          ^R*7      4       T%TRR39   d   T9R.8  d}   T9R8X  de   \        P                  R/T<Pj                  4       T'       d/   \        P                  \        4       \        P                  X
4       \        T<.4      u # T"P1                  T<4       \        T"4      '       d   Te   TT9   d   RT9   d|   RT9   du   T"Pm                  4       p=\        P                  R/T=Pj                  4       T'       d/   \        P                  \        4       \        P                  X
4       \        T=.4      u # EKm  TP1                  T%4       \        P#                  \        R0T%4       T	'       d5   T%RRTRR39   d)   \!        T T%TT'. T&TR,7      p6T%T8X  d   T6p MT%R8X  d   T6pMT6pEK  \        P#                  \        R1T%\g        T5^d,          ^R*7      4       T)'       g   \I        T%4      p>M\K        T%4      p>T>'       d4   \        P#                  \        R2P	                  T%\O        T>4      4      4       . p?T%R8w  d@   T>'       d   R3P%                  T>4      MRp@T2 F  p4T! T4TX@4      pAT?P1                  TA4       K   	  \o        T?4      pBTB'       d+   \        P#                  \        R4P	                  XBT%4      4       \!        T T%T5T'XBT'       d   T%TRR39   d   T&MRTR,7      pCT!P1                  TC4       T&e'   T)'       g   TPc                  \e        T&4      T5XBR$34       T'       d   T)'       g   T5R58  d
   T^,          pT%TRR39   d   T5R.8  d}   T5R8X  de   \        P                  R/XCPj                  4       T'       d/   \        P                  \        4       \        P                  X
4       \        XC.4      u # T"P1                  XC4       \        T"4      '       d   Te   TT9   d   RT9   d|   RT9   du   T"Pm                  4       p=\        P                  R/T=Pj                  4       T'       d/   \        P                  \        4       \        P                  X
4       \        T=.4      u # T'       gl   T)'       gd   XB'       d   \W        R6 XB 4       RR77      MRpDTDR88  d?   RT9   d8   RT9   d1   R$pTPa                  T>4       \        P#                  \        R9T%T5XD4       T'       g   T)'       dz   T.'       dr   T&en   \        T&4      TR:,          8  dW   T%RF9  dP   RT9   dI   RT9   dB   R$p\        P#                  \        R;T%T5\        T&4      T\        T&4      T,          ^d,          4       T%T#8X  g   EK  \        P                  R<T%4       T'       d/   \        P                  \        4       \        P                  X
4       \        T!T%,          .4      u # 	  \        V!4      ^ 8X  d   V'       g   V'       g	   V '       d   \        P#                  \        R=4       V '       d3   \        P                  R>V Pj                  4       V!P1                  V 4       MV'       d   Ve0   V'       d$   V'       d   VPp                  VPp                  8w  g   Ve(   \        P                  R?4       V!P1                  V4       M.V'       d'   \        P                  R@4       V!P1                  V4       V!'       dA   \        P                  RAV!Pm                  4       Pj                  \        V!4      ^,
          4       M\        P                  RB4       V'       d/   \        P                  \        4       \        P                  X
4       V!# u upi u upi   \D        \F        3 d!    \        P#                  \        RT%4        EK  i ; i  \P        \R        3 dY   p,\        T,\R        4      '       g&   \        P#                  \        R!T%\O        T,4      4       TP1                  T%4        Rp,?,EK=  Rp,?,ii ; i  \P        \R        3 dz   p,T+'       d>   \        P#                  \        R!T%\O        T,4      4       TP1                  T%4        Rp,?,EK  \        P#                  \        R#T%\O        T,4      4       T/p0R$p1 Rp,?,E
LRp,?,ii ; i  \P         dC   p,\        P#                  \        R(T%\O        T,4      4       TP1                  T%4        Rp,?,EK  Rp,?,ii ; i  \P        \R        3 d!    \        P#                  \        R+T%4        EKR  i ; i  \P        \R        3 dC   p,\        P#                  \        R!T%\O        T,4      4       TP1                  T%4        Rp,?,EK  Rp,?,ii ; i)Ga2  
Given a raw bytes sequence, return the best possibles charset usable to render str objects.
If there is no results, it is a strong indicator that the source is binary/not text.
By default, the process will extract 5 blocks of 512o each to assess the mess and coherence of a given sequence.
And will give up a particular code page after 20% of measured mess. Those criteria are customizable at will.

The preemptive behavior DOES NOT replace the traditional detection workflow, it prioritize a particular code page
but never take it for granted. Can improve the performance.

You may want to focus your attention to some code page or/and not others, use cp_isolation and cp_exclusion for that
purpose.

This function will strip the SIG in the payload/sequence every time except on UTF-16, UTF-32.
By default the library does not setup any handler other than the NullHandler, if you choose to set the 'explain'
toggle to True it will alter the logger configuration to add a StreamHandler that is suitable for debugging.
Custom logging format and handler can be set manually.
z3Expected object of type bytes or bytearray, got: {}z<Encoding detection on empty bytes, assuming utf_8 intention.utf_8g        F Nz`cp_isolation is set. use this flag for debugging purpose. limited list of encoding allowed : %s.z, zacp_exclusion is set. use this flag for debugging purpose. limited list of encoding excluded : %s.z^override steps (%i) and chunk_size (%i) as content does not fit (%i byte(s) given) parameters.z>Trying to detect encoding from a tiny portion of ({}) byte(s).zIUsing lazy str decoding because the payload is quite large, ({}) byte(s).z@Detected declarative mark in sequence. Priority +1 given for %s.)maxsizezIDetected a SIG or BOM mark on first %i byte(s). Priority +1 given for %s.asciiutf_16utf_32z\Encoding %s won't be tested as-is because it require a BOM. Will try some sub-encoder LE/BE.utf_7zREncoding %s won't be tested as-is because detection is unreliable without BOM/SIG.zY%s is deemed too similar to a code page that was already considered unsuited. Continuing!zESkipping %s: already fast-tracked from a similar successful encoding.z2Encoding %s does not provide an IncrementalDecoderzbSkipping %s: definitive match already found, this encoding targets different languages (%s vs %s).zXSkipping %s: already accumulated %d same-family results after definitive match (cap=%d).zCSkipping single-byte %s: multi-byte definitive match already found.g    Ar   u   ﻿:   NNz9Code page %s does not fit given bytes sequence at ALL. %szpCode page %s is a multi byte encoding table and it appear that at least one character was encoded using n-bytes.zaLazyStr Loading: After MD chunk decode, code page %s does not fit given bytes sequence at ALL. %sTg     j@strict)errorsz^LazyStr Loading: After final lookup, code page %s does not fit given bytes sequence at ALL. %szc%s was excluded because of initial chaos probing. Gave up %i time(s). Computed mean chaos is %f %%.)ndigitsz>%s does not decode the whole payload: fallback entry withheld.)preemptive_declarationzM%s fast-tracked (identical decoded payload to a prior encoding, chaos=%f %%).皙?z.Encoding detection: %s is most likely the one.zZ%s fast-skipped (identical decoded payload to a prior encoding that failed chaos probing).z=%s passed initial chaos probing. Mean measured chaos is %f %%z&{} should target any language(s) of {},z We detected language {} using {}g{Gz?c              3  *   "   T F	  w  rVx  K  	  R # 5ir   r4   ).0_vs   &  r   	<genexpr>from_bytes.<locals>.<genexpr>C  s     4#341Q#3s   )defaultg      ?zyDefinitive match found: %s (chaos=%.3f, coherence=%.2f). Encodings targeting different language families will be skipped.g\(\?zjMulti-byte definitive match: %s (chaos=%.3f, decoded=%d/%d=%.1f%%). Single-byte encodings will be skipped.zoEncoding detection: %s is most likely the one as we detected a BOM or SIG within the beginning of the sequence.zONothing got out of the detection process. Using ASCII/UTF-8/Specified fallback.z7Encoding detection: %s will be used as a fallback matchz:Encoding detection: utf_8 will be used as a fallback matchz:Encoding detection: ascii will be used as a fallback matchz]Encoding detection: Found %s as plausible (best-candidate) for content. With %i alternatives.z=Encoding detection: Unable to determine any suitable charset.>   r<   r=   >   r>   >	   r>   r8   r<   r=   	utf_16_be	utf_16_le	utf_32_be	utf_32_le	utf_8_sig)9
isinstance	bytearraybytes	TypeErrorr5   typeloggerlevel
addHandlerexplain_handlersetLevelr   lendebugremoveHandlerr   r   logjoinr   r'   r   r   r   appendsetr   r   r   r   r"   addr   r   ModuleNotFoundErrorImportErrorr   r	   intersectionstrUnicodeDecodeErrorLookupErrorrangemaxr   decodesumr   update
setdefaulthashroundgetr   bestr
   fingerprint)Er%   r&   r(   r)   r+   r-   r.   r0   r1   r2   previous_logger_levellengthcpis_too_small_sequenceis_too_large_sequenceprioritized_encodingsspecified_encodingtestedtested_but_hard_failuretested_but_soft_failuresoft_failure_skipsuccess_fast_trackedpayload_result_cachecached_mess_ratiocached_coherence_ratiodefinitive_match_founddefinitive_target_languages post_definitive_sb_success_countPOST_DEFINITIVE_SB_CAPmb_definitive_match_foundfallback_asciifallback_u8fallback_specifiedresultsearly_stop_resultssig_encodingsig_payloadencoding_ianadecoded_payloadbom_or_sig_availablestrip_sig_or_bomis_multi_byte_decoderenc_languagesdeferred_decodinger_multi_byte_bonusmax_chunk_gave_upearly_stop_countlazy_str_hard_failure	md_chunks	md_ratioschunkmean_mess_ratiofallback_entrypayload_hashcachedcached_mess	cached_cdcached_passed
fast_matchprobable_resulttarget_languages	cd_ratioslg_inclusionchunk_languagescd_ratios_mergedcurrent_matchbest_coherencesE   &&&&&&&&&&                                                           r   
from_bytesr   2   s   < i)U!344AHHY
 	
 %+\\/*i.F{ST  1OO12|IwUBPRSTUU

5IIl#		
 8DD|	"e,|D

6IIl#		
 8DD|	"e,|Du$%

l	
 
qyV^j0(
"%i.3E"E"%i.4D"D

LSS	
 


W^^	
 (* .By)t  %$$%78

N	
 uF)+)+"%%%(U
 TV "$/
;&t4_E $),/E -.$"# ',*.N'+K.2,.G)7)9 3I >L+$$\2

W		
   )++$$W-.1HHHM=M\9F"

=!&*%1]%B!5 "
 "
:Q;
 009MJJn
 I%.BJJd
  --JJk
  00JJW
 	*@*O! "( #$6}$E F #$9-$H I --.IJJ

x!!/  #)04JJJJj0& 
 %-BJJU
  &%CC.C*C 	*	$-B  0 "+CI.&s;'7#d)D* ' !G+0D&)!!.'O '?1+=+I*9"*=&) $4 &!*3{+;+=!>!.'O& )As;/?
 " . .t+. .O$v- 	 JJ-	 "%SWq[!1 115 ! %!		5	),$ %!   '  %!??A\):$?$?a$? R=I-$)$$(99((1A1A9r &%)
#d)+&--mH-M ENY#i.!@SVi'+;?P+P#**=9 66!(()?)NO *3H$//)OR+G JJ0 o+Q7  !W&8(HMN- #*!*- (8 !*%.s;/?/A%B%2+ -*.!-!(#+=" !$66)7&"g-%3N"0K"%  0 "&s;'7'9:*#, &/D/D $_ 5L)--l;F!8>5Y =!-!%#,! %:#0$6#I$J , "&/A"J" NN:.(,,];JJg%kC/;	 &*<gw)OO'#-&#-"LL P * 3 3  ' & 4 4_ E &0E F#1:,#??*11*= .///7;MQW;W#v-#v-8J8O8O8QL+44 #"00A"OO,AB-.?@@ ,22=AJJt% '=*  = , *6%)%0+3E* ),>>1?.*g5-;N*8K

K/C'3		
 %*<]*K4]CJJ8??!3'7#8 	 G# /?)*D  #"8& #   1 # 2)<JJ299$m %  .$);Wg(NN  
 #5
" 	}% &/D ++_% "2D9 #)$&,1, 0'7CC#% #%D!** ((9OO$9:%}o66%%m4 "###+/AV/K6!6!0557OLL@(( $$_5 56!?"344 &.C $ 4#34cB 
 $F):w&?P)-&+223CD

 P!#" *% +O$v}4
 6!6!(,%JJ|O$O$v-3 L(LL1
 $$_5 56!7=#9":;;c If 7|q.,>JJa
 LLI"++ NN-.^3"++~/I/II'LLUVNN;'LLUVNN>*kLLN##L1	
 	TU_--.N} E EZ $[1 	JJD
 	H #K0 		a--

O!F	 $**=9		N 
 	) ! 

O!F	 (..}=JJsA	  1$(!/	)D & 

t!F	 (..}=d /< !

!\)
 !!P '4 

O!F	 (..}=s  3AE?AE1AE(AF0AF88AF1AF9AF,AF5#AF>?AG9>AAG9AG9AG9AG96AJ;#AK#AL
E,AF
F	AF
FAG6FAAG1G1AG6G9AJH
>AI>I)AI>I>AJJAKJ6AKKAKK,ALLALL
AML6AMMAMc               D    V ^8  d   QhRRRRRRRRRR	R
R	RRRRRRRRRR/# )r$   fpr   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r   r4   )r5   s   "r   r6   r6     sv        	
 # #     r    c
                F    \        V P                  4       VVVVVVVVV	4
      # )zz
Same thing than the function from_bytes but using a file pointer that is already ready.
Will not close the file pointer.
)r   read)
r   r&   r(   r)   r+   r-   r.   r0   r1   r2   s
   &&&&&&&&&&r   from_fpr     s5      
	 r    c               D    V ^8  d   QhRRRRRRRRRR	R
R	RRRRRRRRRR/# )r$   pathzstr | bytes | PathLiker&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r   r4   )r5   s   "r   r6   r6     sv     
 

 

 
 	

 #
 #
 
 
 
 
 
r    c
                    \        V R4      ;_uu_ 4       p
\        V
VVVVVVVVV	4
      uuRRR4       #   + '       g   i     R# ; i)z
Same thing than the function from_bytes but with one extra step. Opening and reading given file path in binary mode.
Can raise IOError.
rbN)openr   )r   r&   r(   r)   r+   r-   r.   r0   r1   r2   r   s   &&&&&&&&&& r   	from_pathr     sH      
dD		R 
 
			s	   4A	c               D    V ^8  d   QhRRRRRRRRRR	R
R	RRRRRRRRRR/# )r$   fp_or_path_or_payloadz!PathLike | str | BinaryIO | bytesr&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   )r5   s   "r   r6   r6     sv     ? ?<?? ? 	?
 #? #? ? ? ? ? 
?r    c
                   \        V \        \        34      '       d   \        V VVVVVVVVV	R7
      p
V
'       * # \        V \        \
        34      '       d   \        V VVVVVVVVV	R7
      p
V
'       * # \        V VVVVVVVVV	R7
      p
V
'       * # )a  
Detect if the given input (file, bytes, or path) points to a binary file. aka. not a string.
Based on the same main heuristic algorithms and default kwargs at the sole exception that fallbacks match
are disabled to be stricter around ASCII-compatible but unlikely to be a string.
)	r&   r(   r)   r+   r-   r.   r0   r1   r2   )rS   rh   r   r   rU   rT   r   r   )r   r&   r(   r)   r+   r-   r.   r0   r1   r2   guessess   &&&&&&&&&& r   	is_binaryr     s    " '#x99!!%%!51+
Z ;C 
	

 
 !!%%!51+
4 ; !!%%!51+
 ;r    )	      皙?NNTFrD   T)	r   r   r   NNTFrD   F).__conditional_annotations__
__future__r   logging	functoolsr   osr   typingr   cdr   r   r	   r
   constantr   r   r   r   r   mdr   modelsr   r   utilsr   r   r   r   r   r   	getLoggerrX   StreamHandlerr[   setFormatter	Formattersortedr"   __annotations__r   r   r   r   )r   s   @r   <module>r      s    " "        0  
		/	0'')   AB &,M&  
xv<
>? ?r    