grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a çÂ=b×0ã@s€dZddlZddlZddlZddlmZddlmZmZm Z ddl m Z ddl m Z ddlmZdd lmZGd d „d eƒ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é)ÚCharSetGroupProber)Ú InputStateÚLanguageFilterÚ ProbingState)ÚEscCharSetProber)Ú Latin1Prober)ÚMBCSGroupProber)ÚSBCSGroupProberc @sneZdZdZdZe d¡Ze d¡Ze d¡Z dddd d d d d dœZ e j fdd„Z dd„Zdd„Zdd„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)z iso-8859-1z iso-8859-2z iso-8859-5z iso-8859-6z iso-8859-7z iso-8859-8z iso-8859-9z iso-8859-13cCsNd|_g|_d|_d|_d|_d|_d|_||_t  t ¡|_ d|_ |  ¡dS)N)Ú_esc_charset_proberÚ_charset_probersÚresultÚdoneÚ _got_dataÚ _input_stateÚ _last_charÚ lang_filterÚloggingZ getLoggerÚ__name__ÚloggerÚ_has_win_bytesÚreset)Úselfr©rú=/usr/lib/python3.9/site-packages/chardet/universaldetector.pyÚ__init__Qs zUniversalDetector.__init__cCsVddddœ|_d|_d|_d|_tj|_d|_|jr>|j  ¡|j D] }|  ¡qDdS)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. Nç©ÚencodingÚ confidenceÚlanguageFó) rrrrrÚ PURE_ASCIIrrr rr )rÚproberrrrr^s  zUniversalDetector.resetcCs>|jr dSt|ƒsdSt|tƒs(t|ƒ}|jsÞ| tj¡rJddddœ|_nv| tj tj f¡rlddddœ|_nT| d¡r†ddddœ|_n:| d ¡r d dddœ|_n | tj tj f¡rÀd dddœ|_d |_|jd durÞd |_dS|j tjk�r.|j |¡�rtj|_ n*|j tjk�r.|j |j|¡�r.tj|_ |dd…|_|j tjk�r–|j�s^t|jƒ|_|j |¡tjk�r:|jj|j ¡|jjdœ|_d |_n¤|j tjk�r:|j�sät |jƒg|_|jt!j"@�rÖ|j #t$ƒ¡|j #t%ƒ¡|jD]:}| |¡tjk�rê|j| ¡|jdœ|_d |_�q&�qê|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-2143zUTF-16Tréÿÿÿÿ)(rÚlenÚ isinstanceÚ bytearrayrÚ startswithÚcodecsÚBOM_UTF8rÚ BOM_UTF32_LEÚ BOM_UTF32_BEÚBOM_LEÚBOM_BErrr#ÚHIGH_BYTE_DETECTORÚsearchÚ HIGH_BYTEÚ ESC_DETECTORrZ ESC_ASCIIr rrÚfeedrZFOUND_ITÚ charset_nameÚget_confidencer!r r rZNON_CJKÚappendr rÚWIN_BYTE_DETECTORr)rZbyte_strr$rrrr6osŽ  þ ÿþ  þ  þ þ ÿ û þ zUniversalDetector.feedc Cst|jr |jSd|_|js&|j d¡n²|jtjkrBddddœ|_n–|jtjkrØd}d}d}|j D]"}|sjq`|  ¡}||kr`|}|}q`|rØ||j krØ|j }|j   ¡}|  ¡}| d ¡rÈ|jrÈ|j ||¡}|||jdœ|_|j ¡tjk�rn|jd du�rn|j d ¡|j D]`}|�s�q t|tƒ�rP|jD] }|j d |j |j|  ¡¡�q,n|j d |j |j|  ¡¡�q |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!Úasciir%r&rNrziso-8859rz no probers hit minimum thresholdz%s %s confidence = %s)rrrrÚdebugrrr#r4r r8ÚMINIMUM_THRESHOLDr7Úlowerr+rÚ ISO_WIN_MAPÚgetr!ZgetEffectiveLevelrÚDEBUGr)rZprobers) rZprober_confidenceZmax_prober_confidenceZ max_proberr$r7Zlower_charset_namer Z group_proberrrrÚcloseÜsj  þ     ÿþ    ý ýzUniversalDetector.closeN)rÚ __module__Ú __qualname__Ú__doc__r=ÚreÚcompiler2r5r:r?rZALLrrr6rBrrrrr 3s$   ù  mr )rEr,rrFZcharsetgroupproberrZenumsrrrZ escproberrZ latin1proberrZmbcsgroupproberr Zsbcsgroupproberr Úobjectr rrrrÚs