zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
U
L±d:ã@sÂdZddlZddlZddlZddlmZmZmZddlm    Z    ddl
m Z ddl m Z mZmZddlmZdd    lmZdd
lmZdd lmZdd lmZdd lmZddlmZGdd„dƒZdS)a
Module containing the UniversalDetector detector class, which is the primary
class a user of ``chardet`` should use.
 
:author: Mark Pilgrim (initial port to Python)
:author: Shy Shalom (original C code)
:author: Dan Blanchard (major refactoring for 3.0)
:author: Ian Cordasco
éN)ÚListÚOptionalÚUnioné)ÚCharSetGroupProber)Ú CharSetProber)Ú
InputStateÚLanguageFilterÚ ProbingState)ÚEscCharSetProber)Ú Latin1Prober)ÚMacRomanProber)ÚMBCSGroupProber)Ú
ResultDict)ÚSBCSGroupProber)Ú UTF1632Proberc    @säeZdZdZdZe d¡Ze d¡Ze d¡Z    dddd    d
d d d dœZ
dddd ddddœZ e j dfe eddœdd„Zeedœdd„ƒZeedœdd„ƒZeeedœdd„ƒZddœd d!„Zeeefdd"œd#d$„Zedœd%d&„ZdS)'ÚUniversalDetectoraq
    The ``UniversalDetector`` class underlies the ``chardet.detect`` function
    and coordinates all of the different charset probers.
 
    To get a ``dict`` containing an encoding and its confidence, you can simply
    run:
 
    .. code::
 
            u = UniversalDetector()
            u.feed(some_bytes)
            u.close()
            detected = u.result
 
    gš™™™™™É?s[€-ÿ]s(|~{)s[€-Ÿ]z Windows-1252z Windows-1250z Windows-1251z Windows-1256z Windows-1253z Windows-1255z Windows-1254z Windows-1257)ú
iso-8859-1z
iso-8859-2z
iso-8859-5z
iso-8859-6z
iso-8859-7z
iso-8859-8ú
iso-8859-9z iso-8859-13z ISO-8859-11ZGB18030ÚCP949úUTF-16)Úasciirztis-620rÚgb2312zeuc-krzutf-16leFN)Ú lang_filterÚshould_rename_legacyÚreturncCsdd|_d|_g|_ddddœ|_d|_d|_tj|_d|_    ||_
t   t ¡|_d|_||_| ¡dS)Nç©ÚencodingÚ
confidenceÚlanguageFó)Ú_esc_charset_proberÚ_utf1632_proberÚ_charset_probersÚresultÚdoneÚ    _got_datarÚ
PURE_ASCIIÚ _input_stateÚ
_last_charrÚloggingÚ    getLoggerÚ__name__ÚloggerÚ_has_win_bytesrÚreset)Úselfrr©r2úPd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\chardet/universaldetector.pyÚ__init__ds ý zUniversalDetector.__init__)rcCs|jS©N)r)©r1r2r2r3Ú input_state{szUniversalDetector.input_statecCs|jSr5)r/r6r2r2r3Ú has_win_bytesszUniversalDetector.has_win_bytescCs|jSr5)r$r6r2r2r3Úcharset_probersƒsz!UniversalDetector.charset_proberscCsfddddœ|_d|_d|_d|_tj|_d|_|jr>|j     ¡|j
rN|j
     ¡|j D] }|     ¡qTdS)zæ
        Reset the UniversalDetector and all of its probers back to their
        initial states.  This is called by ``__init__``, so you only need to
        call this directly in between analyses of different documents.
        NrrFr!) r%r&r'r/rr(r)r*r"r0r#r$)r1Úproberr2r2r3r0‡s
 
 
zUniversalDetector.reset)Úbyte_strrcCsœ|jr
dS|sdSt|tƒs$t|ƒ}|jsÚ| tj¡rFddddœ|_nv| tjtj    f¡rhddddœ|_nT| d¡r‚ddddœ|_n:| d    ¡rœd
dddœ|_n | tj
tj f¡r¼d dddœ|_d |_|jd dk    rÚd |_dS|j t jkr(|j |¡rþt j|_ n*|j t jkr(|j |j|¡r(t j|_ |dd…|_|jsFtƒ|_|jjtjkrŒ|j |¡tjkrŒ|jj|j ¡ddœ|_d |_dS|j t jkræ|js®t|j ƒ|_|j |¡tjkr˜|jj|j ¡|jj!dœ|_d |_n²|j t jkr˜|j"sBt#|j ƒg|_"|j t$j%@r&|j" &t'ƒ¡|j" &t(ƒ¡|j" &t)ƒ¡|j"D]:}| |¡tjkrH|j| ¡|j!dœ|_d |_q„qH|j* |¡r˜d |_+dS)aý
        Takes a chunk of a document and feeds it through all of the relevant
        charset probers.
 
        After calling ``feed``, you can check the value of the ``done``
        attribute to see if you need to continue feeding the
        ``UniversalDetector`` more data, or if it has made a prediction
        (in the ``result`` attribute).
 
        .. note::
           You should always call ``close`` when you're done feeding in your
           document if ``done`` is not already ``True``.
        Nz    UTF-8-SIGçð?ÚrzUTF-32sþÿzX-ISO-10646-UCS-4-3412sÿþzX-ISO-10646-UCS-4-2143rTréÿÿÿÿ),r&Ú
isinstanceÚ    bytearrayr'Ú
startswithÚcodecsÚBOM_UTF8r%Ú BOM_UTF32_LEÚ BOM_UTF32_BEÚBOM_LEÚBOM_BEr)rr(ÚHIGH_BYTE_DETECTORÚsearchÚ    HIGH_BYTEÚ ESC_DETECTORr*Ú    ESC_ASCIIr#rÚstater
Ú    DETECTINGÚfeedÚFOUND_ITÚ charset_nameÚget_confidencer"r rr r$rr    ÚNON_CJKÚappendrr r ÚWIN_BYTE_DETECTORr/)r1r;r:r2r2r3rOšs–
 ý
 
ü
 
ü
 
 
ÿþý ý
ý
zUniversalDetector.feedc        Csš|jr |jSd|_|js&|j d¡nØ|jtjkrBddddœ|_n¼|jtjkrþd}d}d}|j    D]"}|sjq`| 
¡}||kr`|}|}q`|rþ||j krþ|j }|dk    s¤t ‚| ¡}| 
¡}| d    ¡rÒ|jrÒ|j ||¡}|jrî|j |päd ¡|¡}|||jdœ|_|j ¡tjkr”|jd
dkr”|j d ¡|j    D]`}|s@q2t|tƒrv|jD] }|j d |j |j| 
¡¡qRn|j d |j |j| 
¡¡q2|jS) zæ
        Stop analyzing the current document and come up with a final
        prediction.
 
        :returns:  The ``result`` attribute, a ``dict`` with the keys
                   `encoding`, `confidence`, and `language`.
        Tzno data received!rr<r=rNrziso-8859rz no probers hit minimum thresholdz%s %s confidence = %s)r&r%r'r.Údebugr)rr(rJr$rRÚMINIMUM_THRESHOLDrQÚAssertionErrorÚlowerrAr/Ú ISO_WIN_MAPÚgetrÚ
LEGACY_MAPr ÚgetEffectiveLevelr+ÚDEBUGr?rÚprobers)    r1Úprober_confidenceÚmax_prober_confidenceÚ
max_proberr:rQÚlower_charset_namerÚ group_proberr2r2r3Úclosesv      
 
ÿ
ÿý 
 
ü
üzUniversalDetector.close)r-Ú
__module__Ú __qualname__Ú__doc__rWÚreÚcompilerHrKrUrZr\r    ÚALLÚboolr4ÚpropertyÚintr7r8rrr9r0rÚbytesr@rOrrer2r2r2r3r8sN
 
 
øù ýü r)rhrBr+riÚtypingrrrÚcharsetgroupproberrÚ charsetproberrÚenumsrr    r
Ú    escproberr Ú latin1proberr Zmacromanproberr ÚmbcsgroupproberrZ
resultdictrÚsbcsgroupproberrZ utf1632proberrrr2r2r2r3Ú<module>s