+
    ÎiX                    j   ^ 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 ^RIHt ^RIHtHt ^R	IHtHtHtHtHtHtHt ]P<                  ! R
4      t]P@                  ! 4       t!]!PE                  ]PF                  ! R4      4       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)PathLike)BinaryIO)coherence_ratioencoding_languagesmb_encoding_languagesmerge_coherence_ratios)IANA_SUPPORTEDTOO_BIG_SEQUENCETOO_SMALL_SEQUENCETRACE)
mess_ratio)CharsetMatchCharsetMatches)any_specified_encodingcut_sequence_chunks	iana_nameidentify_sig_or_bomis_cp_similaris_multi_byte_encodingshould_strip_sig_or_bomcharset_normalizerz)%(asctime)s | %(levelname)s | %(message)sc               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   "e/Users/ahmad/.openclaw/workspace/scripts/.venv/lib/python3.14/site-packages/charset_normalizer/api.py__annotate__r-   !   s     } } }} } 	}
 #} #} } } } } }    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  d~   \        P                  R4       V'       dG   \        P                  \        4       \        P                  X
;'       g    \        P                   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      \0        8  pV'       d+   \        P'                  \        RP	                  V4      4       M1V'       d*   \        P'                  \        RP	                  V4      4       . pV'       d   \3        V 4      MRpVe-   VP5                  V4       \        P'                  \        RV4       \7        4       p. p. pRpRpRp\#        4       p\#        4       p\9        V 4      w  ppVe7   VP5                  V4       \        P'                  \        R\        V4      V4       VP5                  R4       RV9  d   VP5                  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    \?        V4      pVR19   d&   V'       g   \        P'                  \        RV4       K  VR29   d&   V'       g   \        P'                  \        RV4       K   \A        V4      p T'       d>   TRJ d8   \G        TRJ d   T R\-        R4       MT \        T4      \-        R4       TR7       M"\G        TRJ d   T MT \        T4      R TR7      p Rp!T F  p"\M        TT"4      '       g   K  Rp! M	  T!'       d    \        P'                  \        RTX"4       EKp  \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#4      ^,          4      p%\Q        T%^4      p%^ p&Rp'. p(. p) \S        T TT#TTTTTT4	       F  p*T(P5                  T*4       T)P5                  \U        T*TTRJ ;'       d     ^\        T4      u;8*  ;'       d    ^8*  Mu 4      4       T)R3,          T8  d
   T&^,          p&T&T%8  g   T'       g   K  TRJ g   K   M	   T''       g1   T'       d)   T'       g!    T \-        R4      R PW                  TRR7       T)'       d   \Y        T)4      \        T)4      ,          MRp+T+T8  g   T&T%8  d   TP5                  T4       \        P'                  \        R!TT&\[        T+^d,          ^R"7      4       T	'       d=   TRRTRR39   d1   T''       g)   \%        T TTT. TTR#7      p,TT8X  d   T,pMTR8X  d   T,pMT,pEK  \        P'                  \        R$T\[        T+^d,          ^R"7      4       T'       g   \]        T4      p-M\_        T4      p-T-'       d4   \        P'                  \        R%P	                  T\G        T-4      4      4       . p.TR8w  dA   T( F:  p*\a        T*TT-'       d   R&P)                  T-4      MR4      p/T.P5                  T/4       K<  	  \c        T.4      p0T0'       d+   \        P'                  \        R'P	                  T0T4      4       \%        T TT+TT0TRJ g   TTRR39   d   TMRTR#7      p1TP5                  T14       TTRR39   d   T+R(8  d}   T+R8X  de   \        P                  R)T1Pd                  4       T'       d/   \        P                  \        4       \        P                  X
4       \#        T1.4      u # TP5                  T14       \        T4      '       d   Te   TT9   d   RT9   d|   RT9   du   TPg                  4       p2\        P                  R)T2Pd                  4       T'       d/   \        P                  \        4       \        P                  X
4       \#        T2.4      u # 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Pd                  4       VP5                  V4       MV'       d   Ve0   V'       d$   V'       d   VPh                  VPh                  8w  g   Ve(   \        P                  R-4       VP5                  V4       M.V'       d'   \        P                  R.4       VP5                  V4       V'       dA   \        P                  R/VPg                  4       Pd                  \        V4      ^,
          4       M\        P                  R04       V'       d/   \        P                  \        4       \        P                  X
4       V# u upi u upi   \B        \D        3 d!    \        P'                  \        RT4        EK_  i ; i  \H        \J        3 dY   p \        T \J        4      '       g&   \        P'                  \        RT\G        T 4      4       TP5                  T4        Rp ? EK  Rp ? ii ; i  \H         d5   p \        P'                  \        RT\G        T 4      4       T%p&Rp' Rp ? ELRRp ? ii ; i  \H         dC   p \        P'                  \        R T\G        T 4      4       TP5                  T4        Rp ? E	KY  Rp ? ii ; i)4a2  
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.z2Encoding %s does not provide an IncrementalDecoderg    A)encodingz9Code page %s does not fit given bytes sequence at ALL. %sTzW%s is deemed too similar to code page %s and was consider unsuited already. Continuing!zpCode 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. %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 %%.)ndigits)preemptive_declarationz=%s passed initial chaos probing. Mean measured chaos is %f %%z&{} should target any language(s) of {},z We detected language {} using {}皙?z.Encoding detection: %s is most likely the one.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.>   r3   r4   >   utf_7)5
isinstance	bytearraybytes	TypeErrorr+   typeloggerlevel
addHandlerexplain_handlersetLevelr   lendebugremoveHandlerloggingWARNINGr   r   logjoinr   r   r   r   r   appendsetr   r
   addr   r   ModuleNotFoundErrorImportErrorstrUnicodeDecodeErrorLookupErrorr   rangemaxr   r   decodesumroundr   r   r   r	   r5   bestfingerprint)3r   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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esimilar_soft_failure_testencoding_soft_failed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target_languages	cd_ratioschunk_languagescd_ratios_mergedcurrent_matchprobable_results3   &&&&&&&&&&                                         r,   
from_bytesr   !   su   < i)U!344AHHY
 	
 %+\\/*i.F{ST  1OO1DDW__E|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)+)+*.N'+K.2,.G)7)9 3I >L+$$\2

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

=!&*%1]%B!5 "
 "
:Q;
 009MJJn
 I%.BJJd
 	*@*O!	$)>%)G ,u4 "+CI.&s;'7#d)D* #& ,u4 "&s;'7'9:*#& +0!$; ],@AA,0) %<
 %JJi$	 )As;/?
 " . .t+. .O$v- 	 JJ-	 "%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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 # 2)<JJ299$m %  *U2$);Wg(NN  
 #5
" 	}% 0'7CC#% #%D!** ((9OO$9:%}o66%%m4 "###+/AV/K6!6!,>,C,C,EOLL@(( $$_5 56!?"344L(LL1
 $$_5 56!7=#9":;;	 @B
 7|q.,>JJa
 LLI"++ NN-.^3"++~/I/II'LLUVNN;'LLUVNN>*kLLN##L1	
 	TU_--.NG E Eb $[1 	JJD
 	6 #K0 		a--

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

t!F	 (..}=s   nn"-n'9o<o>!oAqAq"q*q,qr	',ooq,Ap??qr)rr	s6ss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,   r-   r-   !  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$   r&   r'   r(   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%   r&   r'   r(   r)   r   r*   )r+   s   "r,   r-   r-   ?  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$   r&   r'   r(   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%   r&   r'   r(   r)   r*   )r+   s   "r,   r-   r-   ^  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$   r&   r'   r(   )r>   rT   r   r   r@   r?   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+
 ;r.   )	      皙?NNTFr;   T)	r   r   r   NNTFr;   F)(
__future__r   rK   osr   typingr   cdr   r   r   r	   constantr
   r   r   r   mdr   modelsr   r   utilsr   r   r   r   r   r   r   	getLoggerrC   StreamHandlerrF   setFormatter	Formatterr   r   r   r   r*   r.   r,   <module>r      s    "     R Q  0   
		/	0'')   AB
}@<
>? ?r.   