" J d dl mZmZ ddlmZ ddlmZ G d de ZdS ) )ListUnion ) CharSetProber)ProbingStatec 8 e Zd ZdZdZdZd fdZd fdZede fd Z ede fd Zdefd Z defdZdefdZdefd ZdefdZdefdZdee ddfdZdee ddfdZdeeef defdZedefd ZdefdZ xZS ) UTF1632Proberad This class simply looks for occurrences of zero bytes, and infers whether the file is UTF16 or UTF32 (low-endian or big-endian) For instance, files looking like ( [nonzero] )+ have a good probability to be UTF32BE. Files looking like ( [nonzero] )+ may be guessed to be UTF16BE, and inversely for little-endian varieties. gGz?returnNc 2 t d| _ dgdz | _ dgdz | _ t j | _ g d| _ d| _ d| _ d| _ d| _ d| _ d| _ | d S )Nr r r r r F)super__init__positionzeros_at_modnonzeros_at_modr DETECTING_statequadinvalid_utf16beinvalid_utf16leinvalid_utf32beinvalid_utf32le'first_half_surrogate_pair_detected_16be'first_half_surrogate_pair_detected_16leresetself __class__s g/builddir/build/BUILD/cloudlinux-venv-1.0.10/venv/lib/python3.11/site-packages/chardet/utf1632prober.pyr zUTF1632Prober.__init__) s C!G !sQw", LL $$$$7<47<4 c t d| _ dgdz | _ dgdz | _ t j | _ d| _ d| _ d| _ d| _ d| _ d| _ g d| _ d S )Nr r Fr )r r r r r r r r r r r r r r r r s r! r zUTF1632Prober.reset8 s C!G !sQw",$$$$7<47<4 LL r" c | rdS | rdS | rdS | rdS dS )Nzutf-32bezutf-32lezutf-16bezutf-16lezutf-16)is_likely_utf32beis_likely_utf32leis_likely_utf16beis_likely_utf16ler s r! charset_namezUTF1632Prober.charset_nameF sk !!## :!!## :!!## :!!## :xr" c dS )N r) s r! languagezUTF1632Prober.languageS s rr" c 2 t d| j dz S )N ?g @maxr r) s r! approx_32bit_charsz UTF1632Prober.approx_32bit_charsW 3 +,,,r" c 2 t d| j dz S )Nr0 g @r1 r) s r! approx_16bit_charsz UTF1632Prober.approx_16bit_charsZ r4 r" c | }|| j k ok| j d |z | j k oR| j d |z | j k o9| j d |z | j k o | j d |z | j k o| j S Nr r )r3 MIN_CHARS_FOR_DETECTIONr EXPECTED_RATIOr r r approx_charss r! r% zUTF1632Prober.is_likely_utf32be] s ..00t;; a </$2EE )!!$|3d6II )!!$|3d6II ) $Q',69LL ) (( r" c | }|| j k ok| j d |z | j k oR| j d |z | j k o9| j d |z | j k o | j d |z | j k o| j S r8 )r3 r; r r<