+
    iH                    `  a  0 t $ ^ RIHt ^ RI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 ]P>                  ! R
4      t ]PB                  ! 4       t"]"PG                  ]PH                  ! R4      4       . t%R]&R&   . t'R]&R&   ] F6  t( ]! ](4      '       d   ]%PS                  ](4       K%  ]'PS                  ](4       K8  	  ]%]',           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#   ]* d    ]'PS                  ](4        K  i ; i)    )annotationsN)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)sz	list[str]_mb_supported_sb_supported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   "i/Users/igloo/.openclaw/workspace/scratch/fb_ad_env/lib/python3.14/site-packages/charset_normalizer/api.py__annotate__r0   9   s     V V VV V 	V
 #V #V V V V V V    c
                X#   \        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Rp\3        4       p^ p^pRpRpRpRp\        4       p\        4       p \5        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\6        ,            EFB  p#V'       d
   V#V9  d   K  V'       d
   V#V9   d   K&  V#V9   d   K/  VP9                  V#4       Rp$V!V#8H  p%T%;'       d    \;        V#4      p&V#R>9   d&   V%'       g   \        P#                  \        RV#4       K  V#R?9   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   \=        V#4      p'T'       di   T''       g   \3        \C        T#4      4      p(M\3        \E        T#4      4      p(T(PG                  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'RJ d8   \I        T&RJ d   T R\)        R4       MT \        T"4      \)        R4       T#R7       M"\I        T&RJ d   T MT \        T"4      R T#R7      p$ \O        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$EeG   T''       Eg>   \Q        T$4      p,TPS                  T,4      p-T-Ee   T-w  p.p/p0T0'       Ed   \!        T T#T.T%T/TRJ g   T#TRR39   d   T$MRTR7      p1TP1                  T14       TP9                  T#4       \        P#                  \        R T#\U        T.^d,          ^R!7      4       T#TRR39   d   T.R"8  d}   T.R8X  de   \        P                  R#T1PV                  4       T'       d/   \        P                  \        4       \        P                  X
4       \        T1.4      u # T P1                  T14       \        T 4      '       d   Te   TT9   d   RT9   d|   RT9   du   T PY                  4       p2\        P                  R#T2PV                  4       T'       d/   \        P                  \        4       \        P                  X
4       \        T2.4      u # EK  TP1                  T#4       \        P#                  \        R$T#4       T	'       d5   T#RRTRR39   d)   \!        T T#TT%. T$TR7      p3T#T8X  d   T3pMT#R8X  d   T3pMT3pEK  \)        \        T*4      ^,          4      p4\[        T4^4      p4^ p5Rp6. p7. p8 \]        T T#T*TT%T&T"T'T$4	       F  p9T7P1                  T94       T8P1                  \_        T9TTR%J ;'       d     ^\        T4      u;8*  ;'       d    ^8*  Mu 4      4       T8R@,          T8  d
   T5^,          p5T5T48  g   T%'       g   K  T&RJ g   K   M	   T6'       g1   T'       d)   T''       g!    T \)        R'4      R Pa                  T#R(R)7       T8'       d   \c        T84      \        T84      ,          MRp:T:T8  g   T5T48  d   TP1                  T#4       T#\d        9   d   TPg                  \d        T#,          4       T$e'   T''       g   TPi                  \Q        T$4      T:. R34       \        P#                  \        R+T#T5\U        T:^d,          ^R!7      4       T	'       d=   T#RRTRR39   d1   T6'       g)   \!        T T#TT%. T$TR7      p3T#T8X  d   T3pMT#R8X  d   T3pMT3pEK  \        P#                  \        R,T#\U        T:^d,          ^R!7      4       T''       g   \C        T#4      p;M\E        T#4      p;T;'       d4   \        P#                  \        R-P	                  T#\I        T;4      4      4       . p<T#R8w  dM   T7 F:  p9\k        T9TT;'       d   R.P%                  T;4      MR4      p=T<P1                  T=4       K<  	  \m        T<4      p>M\m        T<4      p>T>'       d+   \        P#                  \        R/P	                  T>T#4      4       \!        T T#T:T%T>TRJ g   T#TRR39   d   T$MRTR7      p?TP1                  T?4       T$e'   T''       g   TPi                  \Q        T$4      T:T>R%34       T'       d   T''       g   T:R08  d
   T^,          pT#TRR39   d   T:R"8  d}   T:R8X  de   \        P                  R#T?PV                  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 PY                  4       p2\        P                  R#T2PV                  4       T'       d/   \        P                  \        4       \        P                  X
4       \        T2.4      u # T'       gl   T''       gd   T>'       d   \[        R1 T> 4       RR27      MRp@T@R38  d?   RT9   d8   RT9   d1   R%pTPg                  T;4       \        P#                  \        R4T#T:X@4       T'       g   T''       dz   T+'       dr   T$en   \        T$4      TR5,          8  dW   T#RA9  dP   RT9   dI   RT9   dB   R%p\        P#                  \        R6T#T:\        T$4      T\        T$4      T,          ^d,          4       T#T!8X  g   E
K  \        P                  R7T#4       T'       d/   \        P                  \        4       \        P                  X
4       \        TT#,          .4      u # 	  \        V4      ^ 8X  d   V'       g   V'       g	   V'       d   \        P#                  \        R84       V'       d3   \        P                  R9VPV                  4       VP1                  V4       MV'       d   Ve0   V'       d$   V'       d   VPn                  VPn                  8w  g   Ve(   \        P                  R:4       VP1                  V4       M.V'       d'   \        P                  R;4       VP1                  V4       V'       dA   \        P                  R<VPY                  4       PV                  \        V4      ^,
          4       M\        P                  R=4       V'       d/   \        P                  \        4       \        P                  X
4       V# u upi u upi   \>        \@        3 d!    \        P#                  \        RT#4        EK"  i ; i  \J        \L        3 dY   p)\        T)\L        4      '       g&   \        P#                  \        RT#\I        T)4      4       TP1                  T#4        Rp)?)EK  Rp)?)ii ; i  \J         d5   p)\        P#                  \        R&T#\I        T)4      4       T4p5R%p6 Rp)?)ELRp)?)ii ; i  \J         dC   p)\        P#                  \        R*T#\I        T)4      4       TP1                  T#4        Rp)?)EK  Rp)?)ii ; i)Ba2  
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.zIDetected 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.zREncoding %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    A)encodingz9Code 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.)preemptive_declarationzM%s fast-tracked (identical decoded payload to a prior encoding, chaos=%f %%).)ndigits皙?z.Encoding detection: %s is most likely the one.zZ%s fast-skipped (identical decoded payload to a prior encoding that failed chaos probing).TzaLazyStr Loading: After MD chunk decode, code page %s does not fit given bytes sequence at ALL. %sg     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 %%.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)Nr-   ).0_vs   &  r/   	<genexpr>from_bytes.<locals>.<genexpr>  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.>   r6   r7   >   utf_7>	   rF   r3   r6   r7   	utf_16_be	utf_16_le	utf_32_be	utf_32_le	utf_8_sig)8
isinstance	bytearraybytes	TypeErrorr.   typeloggerlevel
addHandlerexplain_handlersetLevelr   lendebugremoveHandlerr   r   logjoinr   r    r   r   r   appendsetr   r   addr   r   ModuleNotFoundErrorImportErrorr   r   intersectionstrUnicodeDecodeErrorLookupErrorrangehashgetroundr8   bestmaxr   r   decodesumr   update
setdefaultr   r	   fingerprint)Ar   r   r!   r"   r$   r&   r'   r)   r*   r+   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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er_multi_byte_bonuspayload_hashcachedcached_mess	cached_cdcached_passed
fast_matchprobable_resultfallback_entrymax_chunk_gave_upearly_stop_countlazy_str_hard_failure	md_chunks	md_ratioschunkmean_mess_ratiotarget_languages	cd_ratioschunk_languagescd_ratios_mergedcurrent_matchbest_coherencesA   &&&&&&&&&&                                                       r/   
from_bytesr   9   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 $),/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
 	$)>%)G ,u4 "+CI.&s;'7#d)D* #& ,u4 "&s;'7'9:*#& )As;/?
 " . .t+. .O$v- 	 JJ-	 &/D/D $_ 5L)--l;F!8>5Y =!-!%#,! !6 >#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!$SWq[!1 115 ! %!		'	),$ %
   '  !4GGA\1B,G,Ga,G R=I-$)$$(99((-=-F7
V &%)
#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-!-!(#+=" !$66)7&"g-%3N"0K

K/C'3		
 %*<]*K4]CJJ8??!3'7#8 	 G# #"1&2BCHH-.#   1 #  6i@5i@JJ299$m %  *U2$);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":;;m Ip 7|q.,>JJa
 LLI"++ NN-.^3"++~/I/II'LLUVNN;'LLUVNN>*kLLN##L1	
 	TU_--.Ny E EL $[1 	JJD
 	X #K0 		a--

O!F	 $**=9		X 
	) JJsA	  1$(!
	)* & 

t!F	 (..}=s   3AA0?AA5AA:&AB..<AB.+!AB.>AADAADADADAD8AEA:,AB+B*AB+B.ADB?AADDADDAED%)AEEAEEAF)E'6AF$F$AF)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(   r)   r*   r+   r,   r   r-   )r.   s   "r/   r0   r0   R  sv        	
 # #     r1   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'   r)   r*   r+   s
   &&&&&&&&&&r/   from_fpr   R  s5      
	 r1   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(   r)   r*   r+   r,   r   r-   )r.   s   "r/   r0   r0   p  sv     
 

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

 #
 #
 
 
 
 
 
r1   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'   r)   r*   r+   r   s   &&&&&&&&&& r/   	from_pathr   p  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(   r)   r*   r+   r,   r-   )r.   s   "r/   r0   r0     sv     ? ?<?? ? 	?
 #? #? ? ? ? ? 
?r1   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'   r)   r*   r+   )rM   rb   r   r   rO   rN   r   r   )r   r   r!   r"   r$   r&   r'   r)   r*   r+   guessess   &&&&&&&&&& r/   	is_binaryr     s    " '#x99!!%%!51+
Z ;C 
	

 
 !!%%!51+
4 ; !!%%!51+
 ;r1   )	      皙?NNTFr;   T)	r   r   r   NNTFr;   F)0__conditional_annotations__
__future__r   loggingosr   typingr   cdr   r   r   r	   constantr
   r   r   r   r   mdr   modelsr   r   utilsr   r   r   r   r   r   	getLoggerrR   StreamHandlerrU   setFormatter	Formatterr   __annotations__r   _supported_encr\   r`   r   r   r   r   r   )r   s   @r/   <module>r      s   " "       0  
		/	0'')   AB y y $N-!.11  0  0 % &3]%B  BVr<
>? ?y  -^,-s   +DDD-,D-