ó
    Ô…g :  ã                   óÈ   • S r SSKrSSKrSSKrSSKJrJrJr  SSKJ	r	  SSK
Jr  SSKJrJrJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr   " S S5      rg)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            	       óf  • \ rS rSrSrSr\R                  " S5      r\R                  " S5      r	\R                  " S5      r
SSS	S
SSSSS.rSSSSSSSS.r\R                  S4S\S\SS4S jjr\S\4S j5       r\S\4S j5       r\S\\   4S j5       rS#S jrS\\\4   SS4S  jrS\4S! jrS"rg)$ÚUniversalDetectoré8   aI  
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-11ÚGB18030ÚCP949úUTF-16)Úasciir   ztis-620r   Úgb2312zeuc-krzutf-16leFÚlang_filterÚshould_rename_legacyÚreturnNc                 ó  • S U l         S U l        / U l        S SS S.U l        SU l        SU l        [        R                  U l        SU l	        Xl
        [        R                  " [        5      U l        SU l        X l        U R#                  5         g )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)Úselfr   r   s      Ú;/usr/lib/python3/dist-packages/chardet/universaldetector.pyÚ__init__ÚUniversalDetector.__init__d   s„   € ð
 @DˆÔ Ø8<ˆÔØ57ˆÔàØØñ#
ˆŒð
 ˆŒ	ØˆŒÜ&×1Ñ1ˆÔØˆŒØ&ÔÜ×'Ò'¬Ó1ˆŒØ#ˆÔØ$8Ô!Ø�
‰
�r&   c                 ó   • U R                   $ ©N)r.   ©r6   s    r7   Úinput_stateÚUniversalDetector.input_state{   s   € à× Ñ Ð r&   c                 ó   • U R                   $ r;   )r4   r<   s    r7   Úhas_win_bytesÚUniversalDetector.has_win_bytes   s   € à×"Ñ"Ð"r&   c                 ó   • U R                   $ r;   )r)   r<   s    r7   Úcharset_probersÚ!UniversalDetector.charset_probersƒ   s   € à×$Ñ$Ð$r&   c                 ón  • SSSS.U l         SU l        SU l        SU l        [        R
                  U l        SU l        U R                  (       a  U R                  R                  5         U R                  (       a  U R                  R                  5         U R                   H  nUR                  5         M     g)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.
Nr!   r"   Fr&   )r*   r+   r,   r4   r	   r-   r.   r/   r'   r5   r(   r)   )r6   Úprobers     r7   r5   ÚUniversalDetector.reset‡   sŒ   € ð $(°sÈÑMˆŒØˆŒ	ØˆŒØ#ˆÔÜ&×1Ñ1ˆÔØˆŒØ×#×#Ø×$Ñ$×*Ñ*Ô,Ø××Ø× Ñ ×&Ñ&Ô(Ø×+Ô+ˆFØ�L‰LŽNò ,r&   Úbyte_strc                 ó
  • U R                   (       a  gU(       d  g[        U[        5      (       d  [        U5      nU R                  (       Gd  UR	                  [
        R                  5      (       a  SSSS.U l        OÃUR	                  [
        R                  [
        R                  45      (       a  SSSS.U l        OƒUR	                  S5      (       a  SSSS.U l        OaUR	                  S	5      (       a  S
SSS.U l        O?UR	                  [
        R                  [
        R                  45      (       a  SSSS.U l        SU l        U R                  S   b  SU l         gU R                  [        R                  :X  a–  U R                  R!                  U5      (       a  [        R"                  U l        O`U R                  [        R                  :X  aB  U R$                  R!                  U R&                  U-   5      (       a  [        R(                  U l        USS U l        U R*                  (       d  [-        5       U l        U R*                  R.                  [0        R2                  :X  al  U R*                  R5                  U5      [0        R6                  :X  a?  U R*                  R8                  U R*                  R;                  5       SS.U l        SU l         gU R                  [        R(                  :X  a¬  U R<                  (       d  [?        U R@                  5      U l        U R<                  R5                  U5      [0        R6                  :X  aS  U R<                  R8                  U R<                  R;                  5       U R<                  RB                  S.U l        SU l         ggU R                  [        R"                  :X  GaL  U RD                  (       d¦  [G        U R@                  5      /U l"        U R@                  [H        RJ                  -  (       a#  U RD                  RM                  [O        5       5        U RD                  RM                  [Q        5       5        U RD                  RM                  [S        5       5        U RD                   H\  nUR5                  U5      [0        R6                  :X  d  M(  UR8                  UR;                  5       URB                  S.U l        SU l           O   U RT                  R!                  U5      (       a  SU l+        ggg)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ç      ð?Ú r"   zUTF-32s   þÿ  zX-ISO-10646-UCS-4-3412s     ÿþzX-ISO-10646-UCS-4-2143r   Tr#   éÿÿÿÿ),r+   Ú
isinstanceÚ	bytearrayr,   Ú
startswithÚcodecsÚBOM_UTF8r*   ÚBOM_UTF32_LEÚBOM_UTF32_BEÚBOM_LEÚBOM_BEr.   r	   r-   ÚHIGH_BYTE_DETECTORÚsearchÚ	HIGH_BYTEÚESC_DETECTORr/   Ú	ESC_ASCIIr(   r   Ústater   Ú	DETECTINGÚfeedÚFOUND_ITÚcharset_nameÚget_confidencer'   r   r   r%   r)   r   r
   ÚNON_CJKÚappendr   r   r   ÚWIN_BYTE_DETECTORr4   )r6   rH   rF   s      r7   r]   ÚUniversalDetector.feedš   sí  € ð �9�9ØæØä˜(¤I×.Ñ.Ü  Ó*ˆHð �~�~ˆ~à×"Ñ"¤6§?¡?×3Ñ3ð !,Ø"%Ø "ñ�•ð
 ×$Ñ$¤f×&9Ñ&9¼6×;NÑ;NÐ%O×PÑPð ,4À3ÐTVÑW�•Ø×$Ñ$Ð%8×9Ñ9ð !9Ø"%Ø "ñ	�•ð ×$Ñ$Ð%8×9Ñ9ð !9Ø"%Ø "ñ	�•ð ×$Ñ$¤f§m¡m´V·]±]Ð%C×DÑDð ,4À3ÐTVÑW�”à!ˆDŒNØ�{‰{˜:Ñ&Ñ2Ø �”	Øð ×Ñ¤
× 5Ñ 5Ó5Ø×&Ñ&×-Ñ-¨h×7Ñ7Ü$.×$8Ñ$8�Õ!à×!Ñ!¤Z×%:Ñ%:Ó:Ø×%Ñ%×,Ñ,¨T¯_©_¸xÑ-G×HÑHä$.×$8Ñ$8�Ô!à" 2 3˜-ˆŒð ×#×#Ü#0£?ˆDÔ à×Ñ×%Ñ%¬×)?Ñ)?Ó?Ø×#Ñ#×(Ñ(¨Ó2´l×6KÑ6KÓKà $× 4Ñ 4× AÑ AØ"&×"6Ñ"6×"EÑ"EÓ"GØ "ñ�”ð
 !�”	Øð ×Ñ¤
× 4Ñ 4Ó4Ø×+×+Ü+;¸D×<LÑ<LÓ+M�Ô(Ø×'Ñ'×,Ñ,¨XÓ6¼,×:OÑ:OÓOà $× 8Ñ 8× EÑ EØ"&×":Ñ":×"IÑ"IÓ"KØ $× 8Ñ 8× AÑ Añ�”ð
 !�•	ð Pð ×Ñ¤*×"6Ñ"6Ô6Ø×(×(Ü)8¸×9IÑ9IÓ)JÐ(K�Ô%à×#Ñ#¤n×&<Ñ&<×<Ø×)Ñ)×0Ñ0´Ó1BÔCØ×%Ñ%×,Ñ,¬\«^Ô<Ø×%Ñ%×,Ñ,¬^Ó-=Ô>Ø×/Ô/�Ø—;‘;˜xÓ(¬L×,AÑ,AÕAà$*×$7Ñ$7Ø&,×&;Ñ&;Ó&=Ø$*§O¡Oñ#�D”Kð
 !%�D”IÙñ 0ð ×%Ñ%×,Ñ,¨X×6Ñ6Ø&*�Õ#ð 7ð# 7r&   c           	      óÊ  • U R                   (       a  U R                  $ SU l         U R                  (       d  U R                  R	                  S5        GOiU R
                  [        R                  :X  a  SSSS.U l        GO>U R
                  [        R                  :X  Ga  SnSnSnU R                   H'  nU(       d  M  UR                  5       nX:”  d  M#  UnUnM)     U(       aÛ  X R                  :”  aÌ  UR                  nUc   eUR                  5       nUR                  5       nUR                  S	5      (       a,  U R                  (       a  U R                   R#                  Xe5      nU R$                  (       a3  U R&                  R#                  U=(       d    SR                  5       U5      nUUUR(                  S.U l        U R                  R+                  5       [,        R.                  ::  añ  U R                  S
   cá  U R                  R	                  S5        U R                   H¶  nU(       d  M  [1        U[2        5      (       aU  UR4                   HC  nU R                  R	                  SUR                  UR(                  UR                  5       5        ME     Mv  U R                  R	                  SUR                  UR(                  UR                  5       5        M¸     U R                  $ )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`.
Tzno data received!r   rJ   rK   r"   Nr!   ziso-8859r#   z no probers hit minimum thresholdz%s %s confidence = %s)r+   r*   r,   r3   Údebugr.   r	   r-   rX   r)   r`   ÚMINIMUM_THRESHOLDr_   ÚlowerrO   r4   ÚISO_WIN_MAPÚgetr   Ú
LEGACY_MAPr%   ÚgetEffectiveLevelr0   ÚDEBUGrM   r   Úprobers)	r6   Úprober_confidenceÚmax_prober_confidenceÚ
max_proberrF   r_   Úlower_charset_namer$   Úgroup_probers	            r7   ÚcloseÚUniversalDetector.close  s`  € ð �9�9Ø—;‘;ÐØˆŒ	à�~�~Ø�K‰K×ÑÐ1Ö2ð ×Ñ¤*×"7Ñ"7Ó7Ø'.¸cÈrÑRˆDŽKð ×Ñ¤*×"6Ñ"6Ô6Ø $ÐØ$'Ð!ØˆJØ×/Ô/�ÞÙØ$*×$9Ñ$9Ó$;Ð!Ø$Õ<Ø,=Ð)Ø!'’Jñ 0ö Ð4×7MÑ7MÓMØ)×6Ñ6�Ø#Ñ/Ð/Ð/Ø%1×%7Ñ%7Ó%9Ð"Ø'×6Ñ6Ó8�
ð &×0Ñ0°×<Ñ<Ø×*×*Ø'+×'7Ñ'7×';Ñ';Ø.ó(˜ð ×,×,Ø#'§?¡?×#6Ñ#6Ø%×+¨×2Ñ2Ó4°ló$�Lð !-Ø",Ø *× 3Ñ 3ñ�”ð �;‰;×(Ñ(Ó*¬g¯m©mÓ;Ø�{‰{˜:Ñ&Ñ.Ø—‘×!Ñ!Ð"DÔEØ$(×$9Ô$9�LÞ'Ù Ü! ,Ô0B×CÑCØ&2×&:Ô&:˜FØ ŸK™K×-Ñ-Ø 7Ø &× 3Ñ 3Ø &§¡Ø &× 5Ñ 5Ó 7ö	ó ';ð Ÿ™×)Ñ)Ø3Ø(×5Ñ5Ø(×1Ñ1Ø(×7Ñ7Ó9ö	ñ %:ð$ �{‰{Ðr&   )r)   r'   r,   r4   r.   r/   r(   r+   r   r3   r*   r   )r   N) r2   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rg   ÚreÚcompilerV   rY   rc   ri   rk   r
   ÚALLÚboolr8   ÚpropertyÚintr=   r@   r   r   rC   r5   r   ÚbytesrN   r]   r   rt   Ú__static_attributes__© r&   r7   r   r   8   s1  † ñð  ÐØŸš NÓ3ÐØ—:’:˜lÓ+€LØŸ
š
 >Ó2Ðà$Ø$Ø$Ø$Ø$Ø$Ø$Ø%ñ	€Kð  Ø$Ø Ø$ØØØñ€Jð '5×&8Ñ&8Ø%*ñà#ðð #ðð 
õ	ð. ð!˜Só !ó ð!ð ð#˜tó #ó ð#ð ð%  mÑ!4ó %ó ð%ôð&A+˜U 5¨)Ð#3Ñ4ð A+¸ô A+ðFM�z÷ Mr&   r   )ry   rP   r0   rz   Útypingr   r   r   Úcharsetgroupproberr   Úcharsetproberr   Úenumsr	   r
   r   Ú	escproberr   Úlatin1proberr   Úmacromanproberr   Úmbcsgroupproberr   Ú
resultdictr   Úsbcsgroupproberr   Úutf1632proberr   r   r‚   r&   r7   Ú<module>rŽ      sH   ðñ8ó Û Û 	ß (Ñ (å 2Ý (ß ;Ñ ;Ý 'Ý &Ý *Ý ,Ý "Ý ,Ý (÷rò rr&   