ó
    ´OÂf¯j ã            	       óÔ  • S r  SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKJr  SSKJr   SrSSKJrJrJrJrJrJr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$J%r%  SSK&J'r'  SSK(r( " S S5      r) " S S5      r* " S S5      r+ " S S\+5      r, " S S\+5      r- " S S\+5      r. " S S\+5      r/ " S S\+5      r0 " S S\+5      r1 " S S \+5      r2 " S! S"\+5      r3 " S# S$\+5      r4 " S% S&\+5      r5 " S' S(\+5      r6 " S) S*\+5      r7 " S+ S,\+5      r8 " S- S.5      r9 " S/ S05      r: " S1 S25      r;S3 r<S4 r=S_S5 jr>S_S6 jr?S7 r@S`S8 jrAS9 rBS: rCS; rDS< rE\9" 5       rF\FRŽ                  rGS= rHS> rIS? rJ\KS@:X  GaM  SSAKLJMrM  \M" 5       rN\NRŸ                  SBSCSDSESFSG9  \NRŸ                  SHSISJSKS
SLSM9  \NRŸ                  SNSOSPSKS
SQSM9  \NRŸ                  SRSSSTSKS
SUSM9  \NRŸ                  SVSWSX\R                   R£                  SY5      SZS[9  \NR¥                  5       u  rSrT\9" \SRª                  S\9rV\T(       a`  \T HY  rW\VR�                  \W\SR°                  \SR²                  \SR´                  \SR¶                  S]9r\\\S
:X  d  MF  \SR¶                  (       d  MY    g   g\VR�                  \SR°                  \SR²                  \SR´                  \SR¶                  S^9  gg! \! a    S
r\"r GNf = f)aaH	  
The NLTK corpus and module downloader.  This module defines several
interfaces which can be used to download corpora, models, and other
data packages that can be used with NLTK.

Downloading Packages
====================
If called with no arguments, ``download()`` will display an interactive
interface which can be used to download and install new packages.
If Tkinter is available, then a graphical interface will be shown,
otherwise a simple text interface will be provided.

Individual packages can be downloaded by calling the ``download()``
function with a single argument, giving the package identifier for the
package that should be downloaded:

    >>> download('treebank') # doctest: +SKIP
    [nltk_data] Downloading package 'treebank'...
    [nltk_data]   Unzipping corpora/treebank.zip.

NLTK also provides a number of "package collections", consisting of
a group of related packages.  To download all packages in a
colleciton, simply call ``download()`` with the collection's
identifier:

    >>> download('all-corpora') # doctest: +SKIP
    [nltk_data] Downloading package 'abc'...
    [nltk_data]   Unzipping corpora/abc.zip.
    [nltk_data] Downloading package 'alpino'...
    [nltk_data]   Unzipping corpora/alpino.zip.
      ...
    [nltk_data] Downloading package 'words'...
    [nltk_data]   Unzipping corpora/words.zip.

Download Directory
==================
By default, packages are installed in either a system-wide directory
(if Python has sufficient access to write to it); or in the current
user's home directory.  However, the ``download_dir`` argument may be
used to specify a different installation target, if desired.

See ``Downloader.default_download_dir()`` for more a detailed
description of how the default download directory is chosen.

NLTK Download Server
====================
Before downloading any packages, the corpus and module downloader
contacts the NLTK download server, to retrieve an index file
describing the available packages.  By default, this index file is
loaded from ``https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/index.xml``.
If necessary, it is possible to create a new ``Downloader`` object,
specifying a different URL for the package index file.

Usage::

    python nltk/downloader.py [-d DATADIR] [-q] [-f] [-k] PACKAGE_IDS

or::

    python -m nltk.downloader [-d DATADIR] [-q] [-f] [-k] PACKAGE_IDS
é    N)Úmd5)ÚElementTreeT)	ÚButtonÚCanvasÚEntryÚFrameÚIntVarÚLabelÚMenuÚTclErrorÚTk)Ú	showerror)ÚTable)ÚShowTextF)Ú	HTTPErrorÚURLError)Úurlopenc                   óT   • \ rS rSrSr           S	S jr\S 5       rS rS r	Sr
g)
ÚPackageéÇ   a  
A directory entry for a downloadable package.  These entries are
extracted from the XML index file that is downloaded by
``Downloader``.  Each package consists of a single file; but if
that file is a zip file, then it can be automatically decompressed
when the package is installed.
Nc                 ó
  • Xl          U=(       d    UU l         X@l         X l         [	        U5      U l         [	        U5      U l         Xpl         X€l         X�l	         X l
         X°l         XÀl         [        R                  R                  UR!                  S5      S   5      S   n[        R                  R#                  XAU-   5      U l         ['        [	        U5      5      U l         U R*                  R-                  U5        g )NÚ/éÿÿÿÿé   )ÚidÚnameÚsubdirÚurlÚintÚsizeÚunzipped_sizeÚchecksumÚsvn_revisionÚ	copyrightÚcontactÚlicenseÚauthorÚosÚpathÚsplitextÚsplitÚjoinÚfilenameÚboolÚunzipÚ__dict__Úupdate)Úselfr   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r/   ÚkwÚexts                   Ú1/usr/lib/python3/dist-packages/nltk/downloader.pyÚ__init__ÚPackage.__init__Ð   só   € ð" ŒØ3à—J˜BˆŒ	Ø-àŒð	4ð ŒØEä˜“IˆŒ	Ø:ä  Ó/ˆÔð	ð !ŒØ4à(ÔØ<à"ŒØ0àŒð	,ð ŒØ3àŒØ%ä�g‰g×Ñ˜sŸy™y¨›~¨bÑ1Ó2°1Ñ5ˆÜŸ™Ÿ™ V°#©XÓ6ˆŒð	3ô œ#˜e›*Ó%ˆŒ
ð	ð 	�‰×Ñ˜RÕ ó    c                 óò   • [        U [        5      (       a  [        R                  " U 5      n U R                   H(  n[        U R                  U   5      U R                  U'   M*     [        S0 U R                  D6$ )N© )Ú
isinstanceÚstrr   ÚparseÚattribr   )ÚxmlÚkeys     r5   ÚfromxmlÚPackage.fromxml  sY   € ä�cœ3×ÑÜ×#Ò# CÓ(ˆCØ—:”:ˆCÜ! #§*¡*¨S¡/Ó2ˆC�J‰J�s‹Oñ äÑ$˜Ÿ™Ñ$Ð$r8   c                 ó4   • U R                   UR                   :  $ ©N©r   ©r2   Úothers     r5   Ú__lt__ÚPackage.__lt__  ó   € Ø�w‰w˜Ÿ™Ñ!Ð!r8   c                 ó    • SU R                   -  $ )Nz<Package %s>rE   ©r2   s    r5   Ú__repr__ÚPackage.__repr__   s   € Ø §¡Ñ'Ð'r8   )r'   r"   r%   r$   r-   r   r&   r   r    r   r#   r/   r!   r   )NÚ NNNNÚUnknownrP   rP   rP   T©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r6   ÚstaticmethodrA   rH   rM   Ú__static_attributes__r:   r8   r5   r   r   Ç   sO   † ñð ØØØØØØØØØØôC!ðJ ñ%ó ð%ò"õ(r8   r   c                   ó>   • \ rS rSrSrS	S jr\S 5       rS rS r	Sr
g)
Ú
Collectioni$  z˜
A directory entry for a collection of downloadable packages.
These entries are extracted from the XML index file that is
downloaded by ``Downloader``.
Nc                 óˆ   • Xl          U=(       d    UU l         X l         S U l         U R                  R                  U5        g rD   )r   r   ÚchildrenÚpackagesr0   r1   )r2   r   r\   r   r3   s        r5   r6   ÚCollection.__init__+  sD   € ØŒØ6à—J˜BˆŒ	Ø0à Œð	,ð ˆŒð	3ð 	�‰×Ñ˜RÕ r8   c                 ó^  • [        U [        5      (       a  [        R                  " U 5      n U R                   H(  n[        U R                  U   5      U R                  U'   M*     U R                  S5       Vs/ s H  o"R                  S5      PM     nn[        SSU0U R                  D6$ s  snf )NÚitemÚrefr\   r:   )r;   r<   r   r=   r>   ÚfindallÚgetrZ   )r?   r@   Úchildr\   s       r5   rA   ÚCollection.fromxml=  sŠ   € ä�cœ3×ÑÜ×#Ò# CÓ(ˆCØ—:”:ˆCÜ! #§*¡*¨S¡/Ó2ˆC�J‰J�s‹Oñ à25·+±+¸fÔ2EÓFÒ2E¨—I‘I˜eÖ$Ñ2EˆÐFÜÑ: 8Ð:¨s¯z©zÑ:Ð:ùò Gs   Á7B*c                 ó4   • U R                   UR                   :  $ rD   rE   rF   s     r5   rH   ÚCollection.__lt__F  rJ   r8   c                 ó    • SU R                   -  $ )Nz<Collection %s>rE   rL   s    r5   rM   ÚCollection.__repr__I  s   € Ø  4§7¡7Ñ*Ð*r8   )r\   r   r   r]   rD   rQ   r:   r8   r5   rZ   rZ   $  s*   † ñô!ð$ ñ;ó ð;ò"õ+r8   rZ   c                   ó   • \ rS rSrSrSrg)ÚDownloaderMessageiR  zOA status message object, used by ``incr_download`` to
communicate its progress.r:   N)rR   rS   rT   rU   rV   rX   r:   r8   r5   rk   rk   R  s   † ô!r8   rk   c                   ó   • \ rS rSrSrS rSrg)ÚStartCollectionMessageiW  z<Data server has started working on a collection of packages.c                 ó   • Xl         g rD   ©Ú
collection©r2   rp   s     r5   r6   ÚStartCollectionMessage.__init__Z  ó   € Ø$�r8   ro   N©rR   rS   rT   rU   rV   r6   rX   r:   r8   r5   rm   rm   W  s
   † ÙFõ%r8   rm   c                   ó   • \ rS rSrSrS rSrg)ÚFinishCollectionMessagei^  z=Data server has finished working on a collection of packages.c                 ó   • Xl         g rD   ro   rq   s     r5   r6   Ú FinishCollectionMessage.__init__a  rs   r8   ro   Nrt   r:   r8   r5   rv   rv   ^  s
   † ÙGõ%r8   rv   c                   ó   • \ rS rSrSrS rSrg)ÚStartPackageMessageie  z-Data server has started working on a package.c                 ó   • Xl         g rD   ©Úpackage©r2   r}   s     r5   r6   ÚStartPackageMessage.__init__h  ó   € Ø�r8   r|   Nrt   r:   r8   r5   rz   rz   e  ó
   † Ù7õr8   rz   c                   ó   • \ rS rSrSrS rSrg)ÚFinishPackageMessageil  z.Data server has finished working on a package.c                 ó   • Xl         g rD   r|   r~   s     r5   r6   ÚFinishPackageMessage.__init__o  r€   r8   r|   Nrt   r:   r8   r5   rƒ   rƒ   l  ó
   † Ù8õr8   rƒ   c                   ó   • \ rS rSrSrS rSrg)ÚStartDownloadMessageis  z.Data server has started downloading a package.c                 ó   • Xl         g rD   r|   r~   s     r5   r6   ÚStartDownloadMessage.__init__v  r€   r8   r|   Nrt   r:   r8   r5   rˆ   rˆ   s  r†   r8   rˆ   c                   ó   • \ rS rSrSrS rSrg)ÚFinishDownloadMessageiz  z/Data server has finished downloading a package.c                 ó   • Xl         g rD   r|   r~   s     r5   r6   ÚFinishDownloadMessage.__init__}  r€   r8   r|   Nrt   r:   r8   r5   rŒ   rŒ   z  ó
   † Ù9õr8   rŒ   c                   ó   • \ rS rSrSrS rSrg)ÚStartUnzipMessagei�  z,Data server has started unzipping a package.c                 ó   • Xl         g rD   r|   r~   s     r5   r6   ÚStartUnzipMessage.__init__„  r€   r8   r|   Nrt   r:   r8   r5   r‘   r‘   �  s
   † Ù6õr8   r‘   c                   ó   • \ rS rSrSrS rSrg)ÚFinishUnzipMessageiˆ  z-Data server has finished unzipping a package.c                 ó   • Xl         g rD   r|   r~   s     r5   r6   ÚFinishUnzipMessage.__init__‹  r€   r8   r|   Nrt   r:   r8   r5   r•   r•   ˆ  r�   r8   r•   c                   ó   • \ rS rSrSrS rSrg)ÚUpToDateMessagei�  z/The package download file is already up-to-datec                 ó   • Xl         g rD   r|   r~   s     r5   r6   ÚUpToDateMessage.__init__’  r€   r8   r|   Nrt   r:   r8   r5   r™   r™   �  r�   r8   r™   c                   ó   • \ rS rSrSrS rSrg)ÚStaleMessagei–  z3The package download file is out-of-date or corruptc                 ó   • Xl         g rD   r|   r~   s     r5   r6   ÚStaleMessage.__init__™  r€   r8   r|   Nrt   r:   r8   r5   r�   r�   –  s
   † Ù=õr8   r�   c                   ó   • \ rS rSrSrS rSrg)ÚErrorMessagei�  z Data server encountered an errorc                 óh   • Xl         [        U[        5      (       a  [        U5      U l        g X l        g rD   )r}   r;   Ú	Exceptionr<   Úmessage)r2   r}   r¤   s      r5   r6   ÚErrorMessage.__init__   s$   € ØŒÜ�gœy×)Ñ)Ü˜w›<ˆD�Là"�Lr8   )r¤   r}   Nrt   r:   r8   r5   r¡   r¡   �  s
   † Ù*õ#r8   r¡   c                   ó   • \ rS rSrSrS rSrg)ÚProgressMessagei¨  z4Indicates how much progress the data server has madec                 ó   • Xl         g rD   ©Úprogress)r2   rª   s     r5   r6   ÚProgressMessage.__init__«  s   € Ø �r8   r©   Nrt   r:   r8   r5   r§   r§   ¨  s
   † Ù>õ!r8   r§   c                   ó   • \ rS rSrSrS rSrg)ÚSelectDownloadDirMessagei¯  z:Indicates what download directory the data server is usingc                 ó   • Xl         g rD   ©Údownload_dir©r2   r°   s     r5   r6   Ú!SelectDownloadDirMessage.__init__²  s   € Ø(Õr8   r¯   Nrt   r:   r8   r5   r­   r­   ¯  s
   † ÙDõ)r8   r­   c                   ó`  • \ rS rSrSrSr Sr Sr Sr Sr	 Sr
 S*S
 jr      S+S jrS rS rS rS rS rS,S jrS rS rS rS	S	SSSSS\R.                  4S jrS-S jrS-S jrS-S jrS-S jrS rS.S jrS-S jrS  r S! r!S" r"S# r#S$ r$\%" \#\$5      r&S% r'S& r(S' r)\%" \(\)5      r*S( r+S)r,g	)/Ú
Downloaderi»  zm
A class used to access the NLTK data server, which can be used to
download corpora and other data packages.
i  zChttps://raw.githubusercontent.com/nltk/nltk_data/gh-pages/index.xmlÚ	installedznot installedzout of dateÚpartialNc                 óî   • U=(       d    U R                   U l         0 U l         0 U l         X l         S U l         S U l         0 U l         S U l         U R                  c  U R                  5       U l        g g rD   )
ÚDEFAULT_URLÚ_urlÚ_collectionsÚ	_packagesÚ_download_dirÚ_indexÚ_index_timestampÚ_status_cacheÚ_errorsÚdefault_download_dir)r2   Úserver_index_urlr°   s      r5   r6   ÚDownloader.__init__ä  sŒ   € Ø$×8¨×(8Ñ(8ˆŒ	Ø7àˆÔØEàˆŒØ?à)ÔØIàˆŒØ@à $ˆÔð	Lð  ˆÔð	ð
 ˆŒØRð ×ÑÑ%Ø!%×!:Ñ!:Ó!<ˆDÕð &r8   TFc                 ó6  • SnUc  U R                   n[        SU-  5        U(       ae  [        SS[        U R                  5      -   -  5        [        SU R                  -  5        [        SS[        U R                  5      -   -  5        US-  nS=p‰/ n
U(       a  U
R	                  S5        U(       a  U
R	                  S	5        U
 GH–  n[        S
UR                  5       -  5        US-  n[        [        X5      " 5       [        S9 GHF  nU R                  XÁ5      nXÐR                  :X  a	  U(       a  M-  XÐR                  :X  a  SnXÐR                  :X  a  Sn	U R                  SU R                  SU R                  SU R                  S0U   n[        R                  " SUR                   =(       d    UR"                  -   SSS9SS  n[        SR%                  XìR"                  R'                  SS5      U5      5        U[        UR)                  S5      5      -  nU(       d  GM  US:”  d  GM"  [+        S5      nUR-                  5       S;   a      g SnGMI     [        5         GM™     SnU(       a  US-  nU	(       a  US-  n[        [        R                  " US -   SS!S"95        g )#Nr   z!Using default data directory (%s)Ú=é   z Data server index for <%s>é   Fr]   Úcollectionsz%s:r   ©r@   TÚ*Ú-ÚPÚ ú---------------------------éK   ú                           ©Úsubsequent_indenté   z  [{}] {} {}é   Ú.Ú
zHit Enter to continue: )ÚxÚqz([*] marks installed packagesz+; [-] marks out-of-date or corrupt packagesz+; [P] marks partially installed collectionsÚ)éL   )rÒ   Úwidth)r¼   ÚprintÚlenr¹   ÚappendÚ
capitalizeÚsortedÚgetattrr<   ÚstatusÚ	INSTALLEDÚSTALEÚPARTIALÚNOT_INSTALLEDÚtextwrapÚfillr   r   ÚformatÚljustr+   ÚinputÚlower)r2   r°   Úshow_packagesÚshow_collectionsÚheaderÚmore_promptÚskip_installedÚlinesÚstaler¶   Ú
categoriesÚcategoryÚinforâ   Úprefixr   Ú
user_inputÚmsgs                     r5   ÚlistÚDownloader.list	  sA  € ð ˆØÑØ×-Ñ-ˆLÜÐ5¸ÑDÔEÞÜ�#˜œc $§)¡)›nÑ,Ñ-Ô.ÜÐ/°$·)±)Ñ;Ô<Ü�#˜œc $§)¡)›nÑ,Ñ-Ô.Ø�Q‰JˆEØÐˆàˆ
ÞØ×Ñ˜jÔ)ÞØ×Ñ˜mÔ,Ü"ˆHÜ�%˜(×-Ñ-Ó/Ñ/Ô0Ø�Q‰JˆEÜœw tÔ6Ó8¼cÕB�ØŸ™ TÓ8�ØŸ^™^Ó+¶ÙØŸZ™ZÓ'Ø �EØŸ\™\Ó)Ø"�Gà—N‘N CØ—J‘J Ø—L‘L #Ø×&Ñ&¨ð	ð
 ñ�ô  —}’}Ø §	¡	× 4¨T¯W©WÑ5°rÈXñà�#ð�ô �n×+Ñ+¨F·G±G·M±MÀ"ÀcÓ4JÈDÓQÔRØœ˜TŸZ™Z¨Ó-Ó.Ñ.�ß‘; 5¨2¦:Ü!&Ð'@Ó!A�JØ!×'Ñ'Ó)¨ZÓ7ÚØ“Eñ/ Cô0 �Gñ7 #ð8 .ˆÞØÐ@Ñ@ˆCÞØÐ@Ñ@ˆCÜŒh�mŠm˜C #™I¸ÀBÑGÕHr8   c                 óV   • U R                  5         U R                  R                  5       $ rD   )Ú_update_indexr»   ÚvaluesrL   s    r5   r]   ÚDownloader.packagesE  s!   € Ø×ÑÔØ�~‰~×$Ñ$Ó&Ð&r8   c                 ó°   • U R                  5         U R                  R                  5        VVs/ s H  u  pUR                  S:X  d  M  UPM     snn$ s  snnf ©NÚcorpora©rý   r»   Úitemsr   ©r2   r   Úpkgs      r5   r  ÚDownloader.corporaI  óB   € Ø×ÑÔØ%)§^¡^×%9Ñ%9Ô%;ÔWÒ%;™	˜¸s¿z¹zÈYÑ?V—Ñ%;ÒWÐWùÓWó   ®AÁAc                 ó°   • U R                  5         U R                  R                  5        VVs/ s H  u  pUR                  S:w  d  M  UPM     snn$ s  snnf r  r  r  s      r5   ÚmodelsÚDownloader.modelsM  r  r	  c                 óV   • U R                  5         U R                  R                  5       $ rD   )rý   rº   rþ   rL   s    r5   rÈ   ÚDownloader.collectionsQ  s#   € Ø×ÑÔØ× Ñ ×'Ñ'Ó)Ð)r8   c                 óR   • [        U[        5      (       a  U R                  U5      $ U$ rD   )r;   r<   rö   )r2   Ú
info_or_ids     r5   Ú_info_or_idÚDownloader._info_or_idY  s$   € Ü�j¤#×&Ñ&Ø—9‘9˜ZÓ(Ð(àÐr8   c              #   ó  #   • Uc  U R                   n[        U5      v •  [        U[        [        45      (       a  U R                  XU5       S h  v•N   g  U R                  U5      n[        U[        5      (       a?  [        U5      v •  U R                  UR                  X#5       S h  v•N   [        U5      v •  g U R                  XBU5       S h  v•N   g  N†! [        [        4 a  n[        S SU SU 35      v •   S nAg S nAff = f N` N:7f)NzError loading ú: )r¼   r­   r;   rú   ÚtupleÚ_download_listr  ÚOSErrorÚ
ValueErrorr¡   rZ   rm   Úincr_downloadr\   rv   Ú_download_package)r2   r  r°   Úforcerö   Úes         r5   r  ÚDownloader.incr_downloadh  sÿ   é € àÑØ×-Ñ-ˆLÜ*¨<Ó8Ò8ô �j¤4¬ -×0Ñ0Ø×*Ñ*¨:ÀUÓK×KÐKØð	Ø×#Ñ# JÓ/ˆDô �dœJ×'Ñ'Ü(¨Ó.Ò.Ø×)Ñ)¨$¯-©-¸ÓM×MÐMÜ)¨$Ó/Ó/ð ×-Ñ-¨dÀ%ÓH×HÑHñ% Løô œÐ$ó 	Ü˜t ~°j°\ÀÀAÀ3Ð%GÓHÒHÜûð	úñ Nñ
 Iùs[   ‚ADÁCÁDÁC Á'ADÂ(D	Â)'DÃDÃDÃDÃ(DÃ<DÄDÄDÄDc                 óX   • [        U[        5      (       a  g[        UR                  5      $ )Nr   )r;   r   rÝ   r]   )r2   r`   s     r5   Ú_num_packagesÚDownloader._num_packages„  s!   € Ü�dœG×$Ñ$Øä�t—}‘}Ó%Ð%r8   c              #   ó8  ^ #   • [        [        U5      5       H  n T R                  X   5      X'   M     [        U 4S jU 5       5      nSn[        U5       H�  u  pH[        U[        5      (       a  SU-  n	O[        UR                  5      U-  n	T R                  X‚U5       H:  n
[        U
[        5      (       a  [        XzR                  U	-  -   5      v •  M6  U
v •  M<     USU	-  -  nM’     g ! [        [        4 a  n[        X   U5      v •   S nA  g S nAff = f7f)Nc              3   óF   >#   • U  H  nTR                  U5      v •  M     g 7frD   )r  )Ú.0r`   r2   s     €r5   Ú	<genexpr>Ú,Downloader._download_list.<locals>.<genexpr>”  s   øé € ÐFÂ¸˜4×-Ñ-¨d×3Ð3Âùs   ƒ!r   g      ð?éd   )ÚrangerÝ   r  r  r  r¡   ÚsumÚ	enumerater;   r   r]   r  r§   rª   )r2   r  r°   r  Úir  Únum_packagesrª   r`   Údeltarù   s   `          r5   r  ÚDownloader._download_listŠ  sý   øé € ä”s˜5“zÖ"ˆAðØ×+Ñ+¨E©HÓ5�“ñ #ô ÔFÁÓFÓFˆØˆÜ  Ö'‰GˆAÜ˜$¤×(Ñ(Ø˜lÑ*‘ä˜DŸM™MÓ*¨\Ñ9�Ø×)Ñ)¨$¸eÖD�Ü˜c¤?×3Ñ3Ü)¨(·\±\ÀEÑ5IÑ*IÓJÔJà”Iñ	 Eð ˜˜e™Ñ#ŠHò (øô œZÐ(ó Ü" 5¡8¨QÓ/Ò/Ýûðüs.   ƒDœC,±B;DÃ,DÃ<DÄDÄDÄDc              #   ó8  #   • [        U5      v •  [        S5      v •  U R                  X5      nU(       d7  X@R                  :X  a(  [	        U5      v •  [        S5      v •  [        U5      v •  g U R                  R                  UR                  S 5        [        R                  R                  X!R                  5      n[        R                  R                  U5      (       a2  X@R                  :X  a  [        U5      v •  [        R                   " U5        [        R"                  " USS9  [        R"                  " [        R                  R                  X!R$                  5      SS9  ['        U5      v •  [        S5      v •   [)        UR*                  5      n[-        US5       n[/        SUR0                  S-  5      n[2        R4                  " 5        HX  n	UR7                  S5      n
UR9                  U
5        U
(       d    O.U	S	-  S:X  d  M9  [        [;        S
SSX˜-  -  -   5      5      v •  MZ     S S S 5        UR=                  5         [C        U5      v •  [        S
5      v •  UR                  RE                  S5      (       aº  [        R                  R                  X!R$                  5      nURF                  (       dK  [        R                  R                  [        R                  R                  XÁR                  5      5      (       a5  [I        U5      v •  [K        X\SS9 H  nXl&        Uv •  M     [O        U5      v •  [        U5      v •  g ! , (       d  f       GN!= f! [>         a8  n[A        USUR                  < SUR*                  < SU< 35      v •   S nAg S nAff = f7f)Nr   r&  T)Úexist_oké   Úwbr   é @  é   éP   rÏ   zError downloading z from <ú>:
  ú.zipF)Úverbose)(rz   r§   râ   rã   r™   rƒ   r¿   Úpopr   r(   r)   r,   r-   Úexistsrä   r�   ÚremoveÚmakedirsr   rˆ   r   r   ÚopenÚmaxr    Ú	itertoolsÚcountÚreadÚwriteÚminÚcloser  r¡   rŒ   Úendswithr/   r‘   Ú_unzip_iterr}   r•   )r2   rö   r°   r  râ   ÚfilepathÚinfileÚoutfileÚ
num_blocksÚblockÚsr  Úzipdirrù   s                 r5   r  ÚDownloader._download_package£  s›  é € Ü! $Ó'Ò'Ü˜aÓ Ò ð —‘˜TÓ0ˆÞ˜§>¡>Ó1Ü! $Ó'Ò'Ü! #Ó&Ò&Ü& tÓ,Ò,Øð 	×Ñ×Ñ˜tŸw™w¨Ô-ô —7‘7—<‘< ¯m©mÓ<ˆÜ�7‰7�>‰>˜(×#Ñ#ØŸ™Ó#Ü" 4Ó(Ò(Ü�IŠI�hÔô 	�Š�L¨4Ò0Ü
�Š”B—G‘G—L‘L ¯{©{Ó;ÀdÒKô # 4Ó(Ò(Ü˜aÓ Ò ð	Ü˜TŸX™XÓ&ˆFÜ�h Ô%¨Ü   D§I¡I°Ñ$;Ó<�
Ü&Ÿ_š_Ö.�EØŸ™ IÓ.�AØ—M‘M !Ô$ÞÙØ˜q‘y A•~Ü-¬c°"°a¸"ÀÑ@RÑ:SÑ6SÓ.TÓUÔUñ /÷ &ð �L‰LŒNô $ DÓ)Ò)Ü˜bÓ!Ò!ð �=‰=×!Ñ! &×)Ñ)Ü—W‘W—\‘\ ,·±Ó<ˆFð �z�zœRŸW™WŸ^™^¬B¯G©G¯L©L¸ÇÁÓ,I×JÑJÜ'¨Ó-Ò-Ü& xÀÔG�Cà"&”KØ”Iñ Hô )¨Ó.Ò.ä" 4Ó(Ó(÷A &Ö%ûô ó 	ÜÙØ>B¿g¼gÀtÇxÄxÒQRÐSóò ô ûð	üsP   ‚E:NÅ=!M ÆA$MÈ#MÈ)M ÉDNÍ
MÍM Í
NÍ.NÎNÎNÎNú[nltk_data] c	           
      ó\  ^^• [         R                  " [        US9mUc  Ub  X l        U R	                  5         gSUU4S jjn	U R                  XU5       GHT  n
[        U
[        5      (       a¦  U	" U
R                  5        U(       a  [        U
R                  5      eU(       a    gSU l
        U(       da  T" S5        [        5       R                  5       nUS;   a3  U R                  U
R                  R                  UUUTUU5      (       d    gOUS;   a    gU(       a  MÈ  [        U
[         5      (       a/  U	" SU
R"                  R                  -  5        TS	-  mT" T5        GM  [        U
[$        5      (       ab  T" T5        TS S
 mU R                  (       a"  U	" SU
R"                  R                  -  5        GMa  U	" SU
R"                  R                  -  5        GMƒ  [        U
[&        5      (       a(  U	" SU
R                  R                  < SU< S35        GMÀ  [        U
[(        5      (       a#  U	" SU
R                  R                  -  S5        GMø  [        U
[*        5      (       a#  U	" SU
R                  R,                  -  S5        GM0  [        U
[.        5      (       d  GMH  U
R0                  nGMW     g)N)ÚfileTc                 óP   >• T" [         R                  " U TU-   TU-   S-   S95        g )Nú    )Úinitial_indentrÒ   )rç   rè   )rK  Úprefix2r÷   Úprint_tos     €€r5   ÚshowÚ!Downloader.download.<locals>.showý  s/   ø€ ÙÜ—M’MØØ'-°Ñ'7Ø*0°7Ñ*:¸WÑ*Dñõr8   Fz(Error installing package. Retry? [n/y/e])ÚyÚY)r  ÚEúDownloading collection %rz   | éüÿÿÿz$Downloaded collection %r with errorszDone downloading collection %szDownloading package z to z...z!Package %s is already up-to-date!ú  zUnzipping %s.©rO   )Ú	functoolsr¶   rÜ   r¼   Ú_interactive_downloadr  r;   r¡   r¤   r  rÀ   rë   ÚstripÚdownloadr}   r   rm   rp   rv   rz   r™   r‘   r-   r­   r°   )r2   r  r°   Úquietr  r÷   Úhalt_on_errorÚraise_on_errorÚprint_error_torV  rù   ÚchoicerU  s        `      @r5   rb  ÚDownloader.downloadå  s7  ù€ ô ×$Ò$¤U°Ñ@ˆàÑð Ñ'Ø%1Ô"Ø×&Ñ&Ô(Ø÷ð ð ×)Ñ)¨*ÀE×J�ä˜c¤<×0Ñ0Ù˜Ÿ™Ô%Þ%Ü(¨¯©Ó5Ð5Þ$Ù$Ø#'�D”LÞ Ù Ð!KÔLÜ!&£§¡£˜Ø! ZÓ/Ø#'§=¡=Ø #§¡§¡Ø ,Ø %Ø %Ø &Ø -Ø .÷$ñ $ñ (-ð$ð $ zÓ1Ù#(÷ �uä! #Ô'=×>Ñ>ÙÐ8¸3¿>¹>×;LÑ;LÑLÔMØ 'Ñ)˜Ù  ×(Ü# CÔ)@×AÑAÙ  Ô(Ø!'¨¨ ˜ØŸ<Ÿ<Ù Ø FØ"%§.¡.×"3Ñ"3ñ!4÷ñ
 !Ð!AÀCÇNÁN×DUÑDUÑ!U×Vô $ CÔ)<×=Ñ=Úà"Ÿ{™{Ÿ~œ~«|ð=÷ô $ C¬×9Ñ9ÙÐ@À3Ç;Á;Ç>Á>ÑQÐSW×Xô $ CÔ):×;Ñ;Ù˜_¨s¯{©{×/CÑ/CÑCÀT×Jô $ CÔ)A×BÔBØ'*×'7Ñ'7›ñy Kðz r8   c                 ó>   • U R                  X5      U R                  :H  $ rD   )râ   rä   ©r2   r  r°   s      r5   Úis_staleÚDownloader.is_staleE  s   € Ø�{‰{˜:Ó4¸¿
¹
ÑBÐBr8   c                 ó>   • U R                  X5      U R                  :H  $ rD   )râ   rã   rj  s      r5   Úis_installedÚDownloader.is_installedH  s   € Ø�{‰{˜:Ó4¸¿¹ÑFÐFr8   c                 óx   • Uc  U R                   R                  5         g U R                   R                  US 5        g rD   )r¿   Úclearr8  ©r2   r   s     r5   Úclear_status_cacheÚDownloader.clear_status_cacheK  s/   € Ø‰:Ø×Ñ×$Ñ$Õ&à×Ñ×"Ñ" 2 tÕ,r8   c                 ó>  • Uc  U R                   nU R                  U5      n[        U[        5      (       aÀ  UR                   Vs/ s H  o@R                  UR                  5      PM     nnU R                  U;   a  U R                  $ U R                  U;   a  U R                  $ U R                  U;   a  U R                  U;   a  U R                  $ U R                  U;   a  U R                  $ U R                  $ [        R                  R                  X#R                  5      nX R                   :w  a  U R                  X65      $ UR                  U R                   ;  a(  U R                  X65      U R                   UR                  '   U R                   UR                     $ s  snf )z 
Return a constant describing the status of the given package
or collection.  Status can be one of ``INSTALLED``,
``NOT_INSTALLED``, ``STALE``, or ``PARTIAL``.
)r¼   r  r;   rZ   r]   râ   r   rä   rå   rã   ræ   r(   r)   r,   r-   Ú_pkg_statusr¿   )r2   r  r°   rö   r  Ú
pkg_statusrF  s          r5   râ   ÚDownloader.statusQ  sK  € ð ÑØ×-Ñ-ˆLØ×Ñ 
Ó+ˆô �dœJ×'Ñ'Ø9=¿ºÓGº°#Ÿ+™+ c§f¡fÖ-¹ˆJÐGØ�z‰z˜ZÓ'Ø—z‘zÐ!Ø—‘ Ó+Ø—|‘|Ð#Ø—‘ :Ó-°$×2DÑ2DÈ
Ó2RØ—|‘|Ð#Ø×#Ñ# zÓ1Ø×)Ñ)Ð)à—~‘~Ð%ô —w‘w—|‘| L·-±-Ó@ˆHØ×1Ñ1Ó1Ø×'Ñ'¨Ó7Ð7à—7‘7 $×"4Ñ"4Ó4Ø26×2BÑ2BÀ4Ó2R�D×&Ñ& t§w¡wÑ/Ø×)Ñ)¨$¯'©'Ñ2Ð2ùò) Hs   Á$Fc                 ó   • [         R                  R                  U5      (       d  U R                  $  [         R                  " U5      nUR                  [        UR                  5      :w  a  U R                  $ [        U5      UR                  :w  a  U R                  $ UR                  S5      (       a¦  US S n[         R                  R                  U5      (       d  U R                  $ [         R                  R                  U5      (       d  U R                  $ [        S [         R                   " U5       5       5      nXQR"                  :w  a  U R                  $ U R                  $ ! [
         a    U R                  s $ f = f)Nr6  r\  c              3   ó¶   #   • U  HO  u  pnU  HB  n[         R                  " [         R                  R                  X5      5      R                  v •  MD     MQ     g 7frD   )r(   Ústatr)   r,   Úst_size)r#  ÚdÚ_ÚfilesÚfs        r5   r$  Ú)Downloader._pkg_status.<locals>.<genexpr>Œ  sD   é € ð  â#4‘K�A˜%Ü�Aô —’œŸ™Ÿ™ QÓ*Ó+×3Ö3áñ 4Ú#4ùs   ‚AA)r(   r)   r9  ræ   r{  r  r|  r   r    rä   Úmd5_hexdigestr"   rD  rã   Úisdirr(  Úwalkr!   )r2   rö   rF  ÚfilestatÚunzipdirr!   s         r5   rv  ÚDownloader._pkg_statuss  s,  € Ü�w‰w�~‰~˜h×'Ñ'Ø×%Ñ%Ð%ð	&Ü—w’w˜xÓ(ˆHð ×Ñœs 4§9¡9›~Ó-Ø—:‘:Ðô ˜Ó" d§m¡mÓ3Ø—:‘:Ðð ×Ñ˜V×$Ñ$Ø  �}ˆHÜ—7‘7—>‘> (×+Ñ+Ø—~‘~Ð%Ü—7‘7—=‘= ×*Ñ*Ø—z‘zÐ!äñ  ä#%§7¢7¨8Ô#4ó ó ˆMð
 × 2Ñ 2Ó2Ø—z‘zÐ!ð �~‰~Ðøô7 ó 	&Ø×%Ñ%Ò%ð	&ús   ²E$ Å$E=Å<E=c                 ó´   • U R                  5         U R                  5        H4  nU R                  U5      U R                  :X  d  M$  U R	                  X1US9  M6     g)z1
Re-download any packages whose status is STALE.
)rc  r÷   N)rs  r]   râ   rä   rb  )r2   rc  r÷   r  s       r5   r1   ÚDownloader.update—  sE   € ð 	×ÑÔ!Ø—=‘=–?ˆCØ�{‰{˜3Ó 4§:¡:Õ-Ø—‘˜c°v�Ó>ò #r8   c                 ó2  • U R                   b4  Uc1  [        R                  " 5       U R                  -
  U R                  :”  d  gU=(       d    U R                  U l        [
        R                  R                  [        R                  " [        U R                  5      5      R                  5       5      U l         [        R                  " 5       U l        U R                   R                  S5       Vs/ s H  n[        R                  U5      PM     nnU Vs0 s H  o"R                  U_M     snU l        U R                   R                  S5       Vs/ s H  n["        R                  U5      PM     nnU Vs0 s H  oDR                  U_M     snU l        U R$                  R'                  5        H¢  n[)        UR*                  5       H†  u  pxX€R                   ;   a  U R                   U   UR*                  U'   M2  X€R$                  ;   a  U R$                  U   UR*                  U'   M_  [-        SR/                  U5      5        UR*                  U	 Mˆ     M¤     U R$                  R'                  5        H}  n0 nU/n	U	 HZ  n
[1        U
["        5      (       a  U	R3                  U
R*                  5        M5  [1        U
[        5      (       a  X£U
R                  '   MZ  M\     UR'                  5       Ul        M     U R6                  R9                  5         gs  snf s  snf s  snf s  snf )z†A helper function that ensures that self._index is
up-to-date.  If the index is older than self.INDEX_TIMEOUT,
then download it again.Núpackages/packageúcollections/collectionz.removing collection member with no package: {})r½   Útimer¾   ÚINDEX_TIMEOUTr¹   ÚnltkÚ	internalsÚElementWrapperr   r=   r   Úgetrootrb   r   rA   r   r»   rZ   rº   rþ   r)  r\   rÜ   ré   r;   Úextendr]   r¿   rq  )r2   r   Úpr]   ÚcrÈ   rp   r*  Úchild_idÚqueuerd   s              r5   rý   ÚDownloader._update_index¤  s}  € ð �K‰KÑØ‰Ü�yŠy‹{˜T×2Ñ2Ñ2°T×5GÑ5GÓGàð ×$˜4Ÿ9™9ˆŒ	ô —n‘n×3Ñ3Ü×Òœg d§i¡iÓ0Ó1×9Ñ9Ó;ó
ˆŒô !%§	¢	£ˆÔð 15·±×0CÑ0CÐDVÔ0WÓXÒ0W¨1”G—O‘O AÖ&Ñ0WˆÐXÙ+3Ó4ª8 aŸ$™$ š'©8Ñ4ˆŒð ,0¯;©;×+>Ñ+>Ð?WÔ+Xó
Ú+X aŒJ×Ñ˜qÖ!Ñ+Xð 	ð 
ñ /:Ó:ªk¨ŸT™T 1šW©kÑ:ˆÔð ×+Ñ+×2Ñ2Ö4ˆJÜ(¨×)<Ñ)<Ö=‘�ØŸ~™~Ó-Ø-1¯^©^¸HÑ-E�J×'Ñ'¨Ó*Ø×!2Ñ!2Ó2Ø-1×->Ñ->¸xÑ-H�J×'Ñ'¨Ó*äØH×OÑOØ$óôð
 #×+Ñ+¨AÒ.ó  >ñ 5ð ×+Ñ+×2Ñ2Ö4ˆJØˆHØ�LˆEÛ�Ü˜e¤Z×0Ñ0Ø—L‘L §¡Ö0Ü ¤w×/Ñ/Ø).˜UŸX™XÓ&áñ ð #+§/¡/Ó"3ˆJÖñ 5ð 	×Ñ× Ñ Õ"ùòM YùÚ4ùò
ùò ;s   Ã,LÄL
ÅLÅ1Lc                 ó:   • U R                  5         U R                  $ )z‘
Return the XML index describing the packages available from
the data server.  If necessary, this index will be downloaded
from the data server.
)rý   r½   rL   s    r5   ÚindexÚDownloader.indexâ  s   € ð 	×ÑÔØ�{‰{Ðr8   c                 ó¶   • U R                  5         XR                  ;   a  U R                  U   $ XR                  ;   a  U R                  U   $ [        SU-  5      e)zCReturn the ``Package`` or ``Collection`` record for the
given item.úPackage %r not found in index)rý   r»   rº   r  rr  s     r5   rö   ÚDownloader.infoë  sW   € ð 	×ÑÔØ—‘ÓØ—>‘> "Ñ%Ð%Ø×"Ñ"Ó"Ø×$Ñ$ RÑ(Ð(ÜÐ8¸2Ñ=Ó>Ð>r8   c                 ó*  • U R                  5         U R                  R                  S5       H  nUR                  S5      U:X  d  M  Us  $    U R                  R                  S5       H  nUR                  S5      U:X  d  M  Us  $    [	        SU-  5      e)z-Return the XML info record for the given itemr‹  r   rŒ  r�  )rý   r½   rb   rc   r  )r2   r   r}   rp   s       r5   ÚxmlinfoÚDownloader.xmlinfoõ  s…   € à×ÑÔØ—{‘{×*Ñ*Ð+=Ö>ˆGØ�{‰{˜4Ó  BÕ&Ø’ñ ?ð Ÿ+™+×-Ñ-Ð.FÖGˆJØ�~‰~˜dÓ# rÕ)Ø!Ò!ñ Hô Ð8¸2Ñ=Ó>Ð>r8   c                 ó   • U R                   $ )z)The URL for the data server's index file.)r¹   rL   s    r5   Ú_get_urlÚDownloader._get_url  s   € à�y‰yÐr8   c                 óX   • U R                   n U R                  U5        g!   X l         e = f)zm
Set a new URL for the data server. If we're unable to contact
the given url, then the original url is kept.
N)r¹   rý   )r2   r   Úoriginal_urls      r5   Ú_set_urlÚDownloader._set_url  s/   € ð
 —y‘yˆð	Ø×Ñ˜sÕ#øð	Ø$ŒIØús   Ž   	)c                 ó"  • S[         R                  ;   a  g[        R                  R                   HQ  n[         R                  R                  U5      (       d  M)  [        R                  R                  U5      (       d  MO  Us  $    [        R                  S:X  a(  S[         R                  ;   a  [         R                  S   nO0[         R                  R                  S5      nUS:X  a  [        S5      e[         R                  R                  US5      $ )aw  
Return the directory to which packages will be downloaded by
default.  This value can be overridden using the constructor,
or on a case-by-case basis using the ``download_dir`` argument when
calling ``download()``.

On Windows, the default download directory is
``PYTHONHOME/lib/nltk``, where *PYTHONHOME* is the
directory containing Python, e.g. ``C:\Python25``.

On all other platforms, the default directory is the first of
the following which exists or which can be created with write
permission: ``/usr/share/nltk_data``, ``/usr/local/share/nltk_data``,
``/usr/lib/nltk_data``, ``/usr/local/lib/nltk_data``, ``~/nltk_data``.
ÚAPPENGINE_RUNTIMENÚwin32ÚAPPDATAz~/z+Could not find a default download directoryÚ	nltk_data)r(   Úenvironr�  Údatar)   r9  r�  Úis_writableÚsysÚplatformÚ
expanduserr  r,   )r2   ÚnltkdirÚhomedirs      r5   rÁ   ÚDownloader.default_download_dir  sº   € ð" ¤"§*¡*Ó,Øô —y‘y—~”~ˆGÜ�w‰w�~‰~˜g×&Ó&¬4¯>©>×+EÑ+EÀg×+NÓ+NØ’ñ &ô
 �<‰<˜7Ó" y´B·J±JÓ'>Ü—j‘j Ñ+‰Gô —g‘g×(Ñ(¨Ó.ˆGØ˜$‹Ü Ð!NÓOÐOô �w‰w�|‰|˜G [Ó1Ð1r8   c                 ó   • U R                   $ )zñ
The default directory to which packages will be downloaded.
This defaults to the value returned by ``default_download_dir()``.
To override this default on a case-by-case basis, use the
``download_dir`` argument when calling ``download()``.
)r¼   rL   s    r5   Ú_get_download_dirÚDownloader._get_download_dir=  s   € ð ×!Ñ!Ð!r8   c                 óD   • Xl         U R                  R                  5         g rD   )r¼   r¿   rq  r±   s     r5   Ú_set_download_dirÚDownloader._set_download_dirF  s   € Ø)Ôà×Ñ× Ñ Õ"r8   c                 óÔ   • [         (       a   [        U 5      R                  5         g [	        U 5      R                  5         g ! [         a    [	        U 5      R                  5          g f = frD   )ÚTKINTERÚDownloaderGUIÚmainloopr   ÚDownloaderShellÚrunrL   s    r5   r`  Ú Downloader._interactive_downloadQ  sT   € ÷ Š7ð,Ü˜dÓ#×,Ñ,Õ.ô ˜DÓ!×%Ñ%Õ'øô ó ,Ü Ó%×)Ñ)Ö+ð,ús   �A Á#A'Á&A')rº   r¼   rÀ   r½   r¾   r»   r¿   r¹   )NN)NTTTFF)NFrD   )FrN  )-rR   rS   rT   rU   rV   rŽ  r¸   rã   ræ   rä   rå   r6   rú   r]   r  r  rÈ   r  r  r  r  r  r±  Ústderrrb  rk  rn  rs  râ   rv  r1   rý   rš  rö   r   r£  r§  Úpropertyr   rÁ   r¸  r»  r°   r`  rX   r:   r8   r5   r´   r´   »  s7  † ñð €Mðð X€Kð!ð €Ið$à#€Mðà€Eð"à€GðEô=ðN ØØØØØô:Iòx'òXòXò*òôIò8&ò$ò2@)ðH ØØØØØØØ—z‘zô^ô@CôGô-ô 3òD"ôH?ô<#ò|ò?ò	?òò
ñ �8˜XÓ
&€Cò%2òN"ò#ñ
 Ð-Ð/@ÓA€Lõ	(r8   r´   c                   óD   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)rÁ  i]  c                 ó   • Xl         g rD   ©Ú_ds)r2   Ú
dataservers     r5   r6   ÚDownloaderShell.__init__^  s   € Ø�r8   c                 ó¸   • [        S5        S[        S U 5       5      -
  [        U5      S-
  -  S-  n[        SUR                  U5      -   5        [        S5        g )NzK---------------------------------------------------------------------------éD   c              3   ó8   #   • U  H  n[        U5      v •  M     g 7frD   )rÝ   )r#  Úos     r5   r$  Ú;DownloaderShell._simple_interactive_menu.<locals>.<genexpr>c  s   é € Ð0ª 1œ˜AŸ˜ªùó   ‚r   rÍ   rR  )rÜ   r(  rÝ   r,   )r2   ÚoptionsÚspcs      r5   Ú_simple_interactive_menuÚ(DownloaderShell._simple_interactive_menua  sN   € ÜˆhŒØ”CÑ0©Ó0Ó0Ñ0´c¸'³lÀQÑ6FÑGÈ#ÑMˆÜˆf�s—x‘x Ó(Ñ(Ô)Üˆh�r8   c                 ó&  • [        S5         U R                  SSSSSS5        [        S	5      R                  5       nU(       d  [        5         MC  UR	                  5       R                  5       S
   nUR                  5       SS  n US:X  a:  [        5         U R                  R                  U R                  R                  SSS9  OsUS:X  a  U R                  5         O\US:X  a  U R                  5         OEUS;   a  g US:X  a  U R                  U5        O&US:X  a  U R                  5         O[        SU-  5         [        5         GM7  ! [         a  n[        SU-  5         S nAN*S nAf[         a"  n[        SUR                  -  5         S nANTS nAff = f)NúNLTK DownloaderTzd) Downloadzl) Listz
 u) Updatez	c) Configzh) Helpzq) QuitzDownloader> r   r   ÚlF)rï   rð   Úhr•  )rØ   r×   r}  ÚuzCommand %r unrecognizedzError reading from server: %szError connecting to server: %s)rÜ   rÔ  rë   ra  rì   r+   rÉ  rú   r°   Ú_simple_interactive_helpÚ_simple_interactive_configÚ_simple_interactive_downloadÚ_simple_interactive_updater   r   Úreason)r2   rø   ÚcommandÚargsr  s        r5   rÂ  ÚDownloaderShell.rung  si  € ÜÐÔ ØØ×)Ñ)ØØØØØØôô ˜~Ó.×4Ñ4Ó6ˆJÞÜ”ÙØ ×&Ñ&Ó(×.Ñ.Ó0°Ñ3ˆGØ×#Ñ#Ó% a bÐ)ˆDðCØ˜c“>Ü”GØ—H‘H—M‘M $§(¡(×"7Ñ"7ÀÐSW�MÒXØ “^Ø×1Ñ1Õ3Ø “^Ø×3Ñ3Õ5Ø 
Ó*ØØ “^Ø×5Ñ5°dÕ;Ø “^Ø×3Ñ3Õ5äÐ3°jÑ@ÕAô ŒGòK øô> ó ;ÜÐ5¸Ñ9×:Ñ:ûÜó CÜÐ6¸¿¹ÑA×BÑBûðCúsH   Â?E ÃE ÃE Ã2E Ã9E ÄE Ä(E Å
FÅE!Å!FÅ.FÆFc                 ón  • U(       a%  U H  n U R                   R                  USS9  M      g  [	        5         [	        S5        [        S5      nUR                  5       S:X  a2  U R                   R                  U R                   R                  SSSS9  Mg  UR                  5       S	;   a  g U(       a3  UR                  5        H  n U R                   R                  USS9  M      g M·  ! [        [        4 a  n[	        U5         S nAMü  S nAff = f! [        [        4 a  n[	        U5         S nAMo  S nAff = f)
NrR  ©r÷   Tz*Download which package (l=list; x=cancel)?ú  Identifier> rØ  F)rï   rð   rñ   ©r×   rØ   rO   )
rÉ  rb  r  r  rÜ   rë   rì   rú   r°   r+   )r2   rá  Úargr  rø   r   s         r5   rÝ  Ú,DownloaderShell._simple_interactive_download�  s  € ÞÛ�ðØ—H‘H×%Ñ% c°&Ð%Ó9ò ð Ü”ÜÐBÔCÜ"Ð#3Ó4�
Ø×#Ñ#Ó%¨Ó,Ø—H‘H—M‘MØŸ™×-Ñ-Ø$Ø$(Ø'+ð	 "ñ ñ Ø×%Ñ%Ó'¨>Ó9ØÞØ(×.Ñ.Ö0˜ð%Ø ŸH™H×-Ñ-¨b¸Ð-Ó@ñ 1ð
 ñ) øô  ¤Ð,ó Ü˜!—H’Hûðûô* !(¬Ð4ó %Ü! !ŸHšHûð%ús/   ŽC%ÃDÃ%DÃ5DÄDÄD4ÄD/Ä/D4c           	      ó:  •  / nS=p#[        [        U R                  S5      " 5       [        S9 H_  nU R                  R	                  U5      U R                  R
                  :X  d  M8  UR                  UR                  UR                  45        Ma     [        5         U(       aÃ  [        S5        U HL  u  pV[        R                  " SU-   SSS9S	S  n[        S
R                  UR                  SS5      U5      5        MN     [        5         [        S5      nUR                  5       S:X  a'  U H   u  pV U R                  R!                  USS9  M"     g UR                  5       S;   a  g O[        S5        g GMr  ! ["        [$        4 a  n	[        U	5         S n	A	Mk  S n	A	ff = f)NFr]   rÉ   z/Will update following packages (o=ok; x=cancel)rÎ   rÏ   rÐ   rÑ   rÓ   z  [ ] {} {}rÔ   rÕ   rå  rÏ  rR  rä  ræ  zNothing to update.)rà   rá   rÉ  r<   râ   rä   rÞ   r   r   rÜ   rç   rè   ré   rê   rë   rì   rb  r  r  )
r2   Ústale_packagesró   r¶   rö   ÚpidÚpnamer   rø   r  s
             r5   rÞ  Ú*DownloaderShell._simple_interactive_update®  sk  € ØØˆNØ#Ð#ˆEÜœw t§x¡x°Ô<Ó>ÄCÔH�Ø—8‘8—?‘? 4Ó(¨D¯H©H¯N©NÕ:Ø"×)Ñ)¨4¯7©7°D·I±IÐ*>Ö?ñ Iô ŒGÞÜÐGÔHÛ"0‘J�CÜ#Ÿ=š=Ø  EÑ*¨BÀ(ñà�cð�Dô ˜-×.Ñ.¨s¯y©y¸¸SÓ/AÀ4ÓHÖIñ	 #1ô
 ”ä"Ð#3Ó4�
Ø×#Ñ#Ó%¨Ó,Û&4™
˜ð%Ø ŸH™H×-Ñ-¨c¸&Ð-ÓAñ '5ð
 Ø×%Ñ%Ó'¨>Ó9Øð :ô Ð*Ô+Øò; øô, !(¬Ð4ó %Ü! !ŸHšHûð%ús   Ä0E4Å4FÆFÆFc                 óp   • [        5         [        S5        [        S5        [        S5        [        S5        g )Nz	Commands:zH  d) Download a package or collection     u) Update out of date packagesz1  l) List packages & collections          h) Helpz1  c) View & Modify Configuration          q) Quit)rÜ   rL   s    r5   rÛ  Ú(DownloaderShell._simple_interactive_helpÎ  s.   € ÜŒÜˆkÔÜØVô	
ô 	ÐAÔBÜÐAÕBr8   c                 óœ  • [        5         [        S5        [        SU R                  R                  -  5        [        S[        U R                  R	                  5       5      -  5        [        S[        U R                  R                  5       5      -  5        [        5         [        S5        [        SU R                  R                  -  5        g )NzData Server:z  - URL: <%s>z$  - %d Package Collections Availablez$  - %d Individual Packages AvailablezLocal Machine:z  - Data directory: %s)rÜ   rÉ  r   rÝ   rÈ   r]   r°   rL   s    r5   Ú_show_configÚDownloaderShell._show_config×  sŠ   € ÜŒÜˆnÔÜˆo §¡§¡Ñ,Ô-ÜÐ4´s¸4¿8¹8×;OÑ;OÓ;QÓ7RÑRÔSÜÐ4´s¸4¿8¹8×;LÑ;LÓ;NÓ7OÑOÔPÜŒÜÐÔÜÐ&¨¯©×)>Ñ)>Ñ>Õ?r8   c                 óè  • U R                  5          [        5         U R                  SSSS5        [        S5      R	                  5       R                  5       nUS:X  a  U R                  5         OÚUS:X  ao  [        S5      R	                  5       nUS	;   a  [        S
5        O©[        R                  R                  U5      (       a  X R                  l
        Ot[        SU-  5        OeUS:X  aX  [        S5      R	                  5       nUS	;   a  [        S
5        O4UR                  S5      (       d  SU-   n X0R                  l        OUS:X  a  g GM9  ! [         a  n[        SU< SU 35         S nAN$S nAff = f)Nzs) Show Configzu) Set Server URLzd) Set Data Dirzm) Main MenuzConfig> rK  r}  z  New Directory> )rO   r×   rØ   ÚXÚQz  Cancelled!z)Directory %r not found!  Create it first.rÚ  z  New URL> )zhttp://úhttps://rö  zError reading <r5  Úm)rñ  rÜ   rÔ  rë   ra  rì   r(   r)   rƒ  rÉ  r°   Ú
startswithr   r£   )r2   rø   Ú
new_dl_dirÚnew_urlr  s        r5   rÜ  Ú*DownloaderShell._simple_interactive_configá  sN  € Ø×ÑÔØÜŒGØ×)Ñ)Ø Ð"5Ð7HÈ.ôô ˜zÓ*×0Ñ0Ó2×8Ñ8Ó:ˆJØ˜SÓ Ø×!Ñ!Õ#Ø˜sÓ"Ü"Ð#6Ó7×=Ñ=Ó?�
ØÐ!9Ó9Ü˜.Õ)Ü—W‘W—]‘] :×.Ñ.Ø,6—H‘HÕ)äÐEÈ
ÑRÕSØ˜sÓ"Ü Ó.×4Ñ4Ó6�ØÐ6Ó6Ü˜.Õ)à"×-Ñ-Ð.E×FÑFØ",¨wÑ"6˜ðFØ'.Ÿ™�ð ˜sÓ"Øò9 øô2 %ó FÜ °©{¸&ÀÀÐD×EÑEûðFús   Ä0E Å
E1ÅE,Å,E1rÈ  N)rR   rS   rT   rU   r6   rÔ  rÂ  rÝ  rÞ  rÛ  rñ  rÜ  rX   r:   r8   r5   rÁ  rÁ  ]  s.   † òòò'òRò<ò@Cò@õr8   rÁ  c                   ó€  • \ rS rSrSr/ SQr SSSSS.r SSS	S
S
SS.r Sr / SQr	 \ H  r
\
\;   a  M   e   \ H  r
\
\;   a  M   e   \	 H  r
\
\;   a  M   e   Sr\R                  S\R                  S\R                  S\R                   S0rSrSrSrSrSrSDS jrS rS rS rS rS rS rSES  jrS! rS" r S# r!S$ r"S% r#S& r$S' r%S(r&Sr'S) r(S* r)S+ r*S
r+S, r,S- r-S. r.S/ r/S0 r0S1 r1S2 r2S3 r3S4 r4S5 r5S6 r6\7Rp                  " S75      r9S8 r:S9 r;Sr<S: r=S; r>S< r?S= r@S> rA " S? S@\BR†                  5      rDSArESB rFSCrGg)Fr¿  i  zI
Graphical interface for downloading packages from the NLTK data
server.
)rO   Ú
IdentifierÚNameÚSizeÚStatusúUnzipped SizeÚ	CopyrightÚContactÚLicenseÚAuthorÚSubdirÚChecksumr   r0  )rO   rþ  rÿ  r   r   rÔ   é-   é
   é   )rO   rý  rþ  rÿ  r  r   é   )rO   rý  rþ  rÿ  r   )z#000z#ccc)z#afaz#080)z#ffaz#880)z#faaz#800)ú#fffz#888)r  z#45c)ú#aaaz#67a)z#f00r  zhelvetica -16 boldc                 ó¨  • Xl         X l        [        R                  " 5       U l        / U l        / U l        SU l        0 U l        / U l	        SU l
        U R                  S5        [        5       =o0l        UR                  S5        UR                  S5        UR!                  U R"                  S   S9  UR%                  SU R&                  5        UR%                  S	U R&                  5        SU l        0 U l        U R-                  5         U R/                  5          U R1                  5         U R;                  5         U R=                  5         U R>                  RA                  S5        U R>                  R%                  SU RB                  5        g ! [2         a  n[5        S
U5         S nAN}S nAf[6         a   n[5        SUR8                  5         S nAN¥S nAff = f)NFr   zNLTK Downloader Started!z+50+50r×  r   )Ú
backgroundz<Control-q>z<Control-x>úError reading from serverúError connecting to serverz	<Destroy>)"rÉ  Ú_use_threadsÚ	threadingÚLockÚ_download_lockÚ_download_msg_queueÚ_download_abort_queueÚ_downloadingÚ_afteridÚ_log_messagesÚ_log_indentÚ_logr   ÚtopÚgeometryÚtitleÚ	configureÚ_BACKDROP_COLORÚbindÚdestroyÚ
_destroyedÚ_column_varsÚ_init_widgetsÚ
_init_menuÚ_fill_tabler   r   r   rß  Ú
_show_infoÚ_select_columnsÚ_tableÚselectÚ_destroy)r2   rÊ  Úuse_threadsr  r  s        r5   r6   ÚDownloaderGUI.__init__\  s{  € ØŒØ'Ôô (ŸnšnÓ.ˆÔØ#%ˆÔ Ø%'ˆÔ"Ø!ˆÔð ˆŒð  ˆÔØˆÔØ�	‰	Ð,Ô-ô ›ÐˆŒhØ�‰�XÔØ�	‰	Ð#Ô$Ø�‰ ×!5Ñ!5°aÑ!8ˆÑ9ð 	�‰� §¡Ô-Ø�‰� §¡Ô-ØˆŒàˆÔð 	×ÑÔØ�‰Ôð	>Ø×ÑÔð 	�‰ÔØ×ÑÔØ�‰×Ñ˜1Ôð 	�‰×Ñ˜ d§m¡mÕ4øô ó 	6ÜÐ1°1×5Ñ5ûÜó 	>ÜÐ2°A·H±H×=Ñ=ûð	>ús$   ÄF	 Æ	
GÆF$Æ$GÆ1GÇGc                 óœ   • U R                   R                  SR                  [        R                  " 5       SU R
                  -  U5      5        g )Nz{} {}{}z | )r  rÞ   ré   r�  Úctimer  ©r2   rù   s     r5   r  ÚDownloaderGUI._log�  s9   € Ø×Ñ×!Ñ!Ø×ÑœTŸZšZ›\¨5°4×3CÑ3CÑ+CÀSÓIõ	
r8   c           	      ó”  ^ • [        T R                  SSSSS9nUR                  SSSS	9  UR                  SS
S9  UR	                  SS
S9  [        USS9R                  SSS9  [        U5      nUR                  SS
SS9  [        U5      nUR                  SSSS9  [        U5      nUR                  SSSS9  [        USS9R                  SSS9  [        U5      nUR                  SSSS9  [        USS9R                  SSS9  [        T R                  SST R                  S
   S9nUR                  SSS9  ST R                  S'   ST R                  S'   / SQT l        0 T l        [        T R                  5       Hk  u  px[        X(T R                  S9n	U	R                  SUS
-   S-  S-  S9  U	R                  ST R                  5        U	T R                  UR                  5       '   Mm     T R                   V
s/ s H  n
T R                   R#                  U
S
5      PM!     nn
[%        UT R                  USS T R&                  S!9T l        T R(                  R+                  ST R,                  S   S"9  [        T R                  5       HD  u  pzT R.                  R#                  U
T R0                  5      nT R(                  R+                  X|S#9  MF     T R(                  R                  SSS$9  T R(                  R3                  5         T R(                  R5                  S%T R6                  5        T R(                  R                  S&T R8                  5        T R(                  R                  S'T R6                  5        T R(                  R                  S(T R:                  5        T R(                  R                  S)T R<                  5        T R(                  R                  S*T R>                  5        UR	                  S
S
S9  S+S,T R@                  4S-S.T RB                  4/n0 T l"        [        U5       H…  u  nu  pén[        XYS/9R                  SUS0S9  [G        US1S2S3S3S49nUU4T RD                  U'   UR                  S'T RH                  5        UR                  SU4U 4S5 jj5        UR                  S
US6S9  M‡     T R                  R                  ST RH                  5        [K        US7T R6                  SS89T l&        T RL                  R                  SS99  [K        US:T RN                  SS89T l(        T RP                  R                  S;S99  [        US<T R                  S   T R                  S
   S=9T l)        [U        US>S T RV                  S
   S?S
S@9T l,        T R[                  5         T RX                  R                  S;S99  T RR                  R                  SS99  g s  sn
f )ANÚraisedr3  é   r   )ÚreliefÚborderÚpadxÚpadyr  TÚboth)ÚsidÚexpandrè   r   )Úweight)Úheight)ÚcolumnÚrowÚnews)r@  rA  ÚstickyrÇ   é   r0  é   )r9  r:  r  Úbottomr×   )Úsiderè   r8  Úhighlightthickness)ÚCollectionsÚCorporaÚModelszAll Packages)ÚtextÚfontÚleftr	  )rG  r9  z
<Button-1>é   )Úcolumn_weightsrH  Úlistbox_heightÚreprfunc)Ú
foreground©rÛ   )r=  rè   z<Double-Button-1>z<space>z<Return>z<Left>z<Right>z<Control-a>r   zServer Index:r°   zDownload Directory:)rL  r  ÚcourierÚgroovez#007aff)rM  r7  ÚdisabledforegroundrS  c                 ó&   >• TR                  U5      $ rD   ©Ú
_info_edit)r  r@   r2   s     €r5   Ú<lambda>Ú-DownloaderGUI._init_widgets.<locals>.<lambda>á  s   ø€ ¸¿¹ÈÔ8Lr8   ÚewÚDownload)rL  rà  rÛ   )rG  ÚRefreshÚrightrO   )rL  rS  r  éÈ   Úsunken)rÛ   r?  r  r7  r8  ).r   r  ÚpackÚgrid_rowconfigureÚgrid_columnconfigureÚgridr!  Ú
_tab_namesÚ_tabsr)  r
   Ú	_TAB_FONTr"  Ú_select_tabrì   ÚCOLUMNSÚCOLUMN_WEIGHTSrc   r   Ú_table_reprfuncr+  ÚcolumnconfigÚ_MARK_COLORÚCOLUMN_WIDTHSÚDEFAULT_COLUMN_WIDTHÚfocusÚbind_to_listboxesÚ	_downloadÚ_table_markÚ	_prev_tabÚ	_next_tabÚ	_mark_allr§  r»  Ú_infor   Ú
_info_saver   Ú_download_buttonÚ_refreshÚ_refresh_buttonÚ_progresslabelr   Ú_PROGRESS_COLORÚ_progressbarÚ_init_progressbar)r2   Úf1ÚtabframeÚ
tableframeÚbuttonframeÚ	infoframeÚprogressframer*  ÚtabÚlabelr@  rP  rÛ   rö   r@   ÚcallbackÚentrys   `                r5   r&  ÚDownloaderGUI._init_widgets–  sV  ø€ ä�4—8‘8 H°Q¸QÀQÑGˆØ
�‰�E $¨VˆÑ4Ø
×Ñ˜Q qÐÑ)Ø
×Ñ ¨!ÐÑ,Üˆb˜Ñ× Ñ ¨¨qÐ Ñ1Ü˜“9ˆØ�‰˜Q A¨fˆÑ5Ü˜2“Yˆ
Ø�‰˜q a°ˆÑ7Ü˜B“iˆØ×Ñ  q°ÐÑ8Üˆb˜Ñ× Ñ ¨¨qÐ Ñ1Ü˜"“Iˆ	Ø�‰˜a Q¨vˆÑ6Üˆb˜Ñ× Ñ ¨¨qÐ Ñ1ÜØ�H‰H˜1 1°×1EÑ1EÀaÑ1Hñ
ˆð 	×Ñ ¨sÐÑ3Øˆ�‰�ÑØ)*ˆ�‰Ð%Ñ&ò OˆŒØˆŒ
Ü §¡Ö0‰FˆAÜ˜(°4·>±>ÑBˆEØ�J‰J˜F¨1¨q©5°A©+¸Ñ);ˆJÑ<Ø�J‰J�| T×%5Ñ%5Ô6Ø&+ˆD�J‰J�s—y‘y“{Ó#ñ	 1ð LPÏ<Ê<ÓXÊ<À˜$×-Ñ-×1Ñ1°&¸!Ö<É<ˆÐXÜØØ�L‰LØ)Ø ØØ×)Ñ)ñ
ˆŒð 	�‰× Ñ  ¨t×/?Ñ/?ÀÑ/BÐ ÑCÜ" 4§<¡<Ö0‰IˆAØ×&Ñ&×*Ñ*¨6°4×3LÑ3LÓMˆEØ�K‰K×$Ñ$ QÐ$Ó4ñ 1ð 	�‰×Ñ ¨6ÐÑ2Ø�‰×ÑÔØ�‰×%Ñ%Ð&9¸4¿>¹>ÔJØ�‰×Ñ˜ D×$4Ñ$4Ô5Ø�‰×Ñ˜ T§^¡^Ô4Ø�‰×Ñ˜ 4§>¡>Ô2Ø�‰×Ñ˜ D§N¡NÔ3Ø�‰×Ñ˜¨¯©Ô7ð 	×&Ñ& q°Ð&Ñ3ð �O T§]¡]Ð3ØÐ2°D×4JÑ4JÐKð
ˆð ˆŒ
Ü)2°4®Ñ%ˆAÑ%�˜HÜ�)Ñ(×-Ñ-°Q¸AÀcÐ-ÑJÜØØØØ#,Ø$ñˆEð  % hÐ/ˆD�J‰J�s‰OØ�J‰J�z 4§?¡?Ô3Ø�J‰J�|°3Ö%LÔMØ�J‰J˜a Q¨tˆJÓ4ñ *9ð  	�‰�‰�l D§O¡OÔ4ô !'Ø˜j°$·.±.Èñ!
ˆÔð 	×Ñ×"Ñ"¨Ð"Ñ/Ü%Ø˜i°·±Àañ 
ˆÔð 	×Ñ×!Ñ! wÐ!Ñ/ô $ØØØ×+Ñ+¨AÑ.Ø×+Ñ+¨AÑ.ñ	
ˆÔô #ØØØØ×+Ñ+¨AÑ.ØØñ
ˆÔð 	×ÑÔ Ø×Ñ×Ñ GÐÑ,Ø×Ñ× Ñ  fÐ Ò-ùòW Ys   Ç5&Wc                 ó|  ^ • [        T R                  5      n[        USS9nUR                  SST R                  SS9  UR	                  5         UR                  SSU 4S jS	9  UR                  S
SU 4S jS	9  UR	                  5         UR                  SST R
                  S	9  UR	                  5         UR                  SST R                  SS9  UR                  SSUS9  [        USS9nT R                  R                  SS   Hv  n[        T R                  5      nUT R                  ;  d   eUT R                  U'   UT R                  ;   a  UR                  S5        UR                  USUT R                  S9  Mx     UR                  SSUS9  [        USS9nT R                  R                  SS   H  nUR                  SU-  U4U 4S jjS9  M     UR	                  5         T R                  R                  SS   H  nUR                  SU-  U4U 4S jjS9  M     UR                  SSUS9  [        USS9nUR                  SST R                   S	9  UR                  SST R"                  SS9  UR                  SSUS9  T R                  R%                  S T R"                  5        T R                  R'                  US!9  g )"Nr   )Útearoffr^  ÚReturn)r‰  Ú	underlinerà  ÚacceleratorzChange Server Indexé   c                  ó&   >• T R                  S5      $ )Nr   rY  rL   s   €r5   r[  Ú*DownloaderGUI._init_menu.<locals>.<lambda>  s   ø€ ˜DŸO™O¨EÔ2r8   )r‰  r�  rà  zChange Download Directoryc                  ó&   >• T R                  S5      $ )Nr°   rY  rL   s   €r5   r[  r”    s   ø€ ˜DŸO™O¨NÔ;r8   zShow Logr0  ÚExitr   zCtrl-xÚFile)r‰  r�  Úmenur3  )r‰  r�  Úvariablerà  ÚViewz
Sort by %sc                 ó<   >• TR                   R                  U S5      $ )NÚ	ascending©r+  Úsort_by©r•  r2   s    €r5   r[  r”  5  s   ø€ ¨$¯+©+×*=Ñ*=¸aÀÔ*Mr8   )r‰  rà  zReverse sort by %sc                 ó<   >• TR                   R                  U S5      $ )NÚ
descendingr�  rŸ  s    €r5   r[  r”  <  s   ø€ ¨$¯+©+×*=Ñ*=¸aÀÔ*Nr8   ÚSortÚAboutÚInstructionsÚF1ÚHelpz<F1>)r˜  )r   r  Úadd_commandrt  Úadd_separatorÚ	_show_logr#  Úadd_cascader+  Úcolumn_namesr	   r%  ÚINITIAL_COLUMNSÚsetÚadd_checkbuttonr*  ÚaboutÚhelpr"  Úconfig)r2   ÚmenubarÚfilemenuÚviewmenur@  ÚvarÚsortmenuÚhelpmenus   `       r5   r'  ÚDownloaderGUI._init_menu  sÊ  ø€ Ü�t—x‘x“.ˆä˜¨Ñ+ˆØ×ÑØ¨°4·>±>Èxð 	ñ 	
ð 	×ÑÔ Ø×ÑØ'ØÜ2ð 	ñ 	
ð
 	×ÑØ-ØÜ;ð 	ñ 	
ð
 	×ÑÔ Ø×Ñ :¸ÀDÇNÁNÐÑSØ×ÑÔ Ø×ÑØ A¨t¯|©|Èð 	ñ 	
ð 	×Ñ &°A¸HÐÑEô
 ˜¨Ñ+ˆØ—k‘k×.Ñ.¨q¨rÓ2ˆFÜ˜Ÿ™Ó"ˆCØ ×!2Ñ!2Ó2Ð2Ð2Ø(+ˆD×Ñ˜fÑ%Ø˜×-Ñ-Ó-Ø—‘˜”
Ø×$Ñ$Ø¨°CÀ×AUÑAUð %ó ñ 3ð 	×Ñ &°A¸HÐÑEô
 ˜¨Ñ+ˆØ—k‘k×.Ñ.¨q¨rÓ2ˆFØ× Ñ Ø" VÑ+Ø"(ÖMð !ó ñ 3ð
 	×ÑÔ à—k‘k×.Ñ.¨q¨rÓ2ˆFØ× Ñ Ø*¨VÑ3Ø"(ÖNð !ó ñ 3ð
 	×Ñ &°A¸HÐÑEä˜¨Ñ+ˆØ×Ñ 7°aÀÇÁÐÑLØ×ÑØ ¨A°t·y±yÈdð 	ñ 	
ð 	×Ñ &°A¸HÐÑEØ�‰�‰�f˜dŸi™iÔ(à�‰�‰˜WˆÒ%r8   c                 óä   • U R                   R                  5        HR  u  pUR                  5       (       a  U R                  R	                  U5        M7  U R                  R                  U5        MT     g rD   )r%  r  rc   r+  Úshow_columnÚhide_column)r2   r@  rµ  s      r5   r*  ÚDownloaderGUI._select_columnsJ  sL   € Ø×,Ñ,×2Ñ2Ö4‰KˆFØ�w‰w�y‰yØ—‘×'Ñ'¨Ö/à—‘×'Ñ'¨Ö/ò	 5r8   c                 ó&  • U R                   R                  5          U R                  5         U R                  R                  S5        g ! [         a  n[	        SU5         S nAN7S nAf[
         a   n[	        SUR                  5         S nAN_S nAff = f)Nr  r  r   )	rÉ  rs  r(  r   r   r   rß  r+  r,  ©r2   r  s     r5   r|  ÚDownloaderGUI._refreshQ  sr   € Ø�‰×#Ñ#Ô%ð	>Ø×ÑÔð
 	�‰×Ñ˜1Õøô	 ó 	6ÜÐ1°1×5Ñ5ûÜó 	>ÜÐ2°A·H±H×=Ñ=ûð	>ús#   œA Á
BÁA#Á#BÁ0BÂBc                 óz   • U R                  5         U R                  U   u  p#SUS'   SUS'   UR                  5         g )NÚnormalÚstaterb  r7  )rz  ry  rr  )r2   Úinfo_keyr‹  rŠ  s       r5   rZ  ÚDownloaderGUI._info_edit[  s8   € Ø�‰ÔØ ŸJ™J xÑ0ÑˆØ!ˆˆg‰Ø"ˆˆh‰Ø�‰�r8   Nc                 ó$  • U R                   nU R                  R                  5        HV  u  p4US   S:X  a  M  Ub#  UR                  UL a  UR                  S:w  a  UnM6  SUS'   SUS'   U" UR                  5       5        MX     UR                  5         g )NrÂ  Údisabledr�  rV  r7  )r+  ry  rþ   ÚwidgetÚkeysymrc   rr  )r2   r  rr  r‹  rŠ  s        r5   rz  ÚDownloaderGUI._info_saveb  s~   € Ø—‘ˆØ#Ÿz™z×0Ñ0Ö2‰OˆEØ�W‰~ Ó+ÙØ‰} §¡¨UÒ!2°q·x±xÀ8Ó7KØ’à!+��g‘Ø"*��h‘Ù˜Ÿ™›Ö%ñ  3ð 	�‰�r8   c                 ó  • U R                   R                  U   R                  S5      (       a>  [        U[        5      (       a  SU-  $ US:  a  SUS-  -  $ US:  a  SUS-  -  $ S	US
-  -  $ US;   a  [	        U5      $ SU-  $ )Nrÿ  z  %si   z	  %.1f KBg      �@i   @z	  %.1f MBg      0Az	  %.1f GBg      ÐA)r   rO   )r+  r«  rD  r;   r<   )r2   rA  ÚcolÚvals       r5   rm  ÚDownloaderGUI._table_reprfunco  sŽ   € Ø�;‰;×#Ñ# CÑ(×1Ñ1°&×9Ñ9Ü˜#œs×#Ñ#Ø ‘|Ð#Ø�w“Ø" c¨I¡oÑ6Ð6Ø�w“Ø" c¨I¡oÑ6Ð6à" c¨I¡oÑ6Ð6à�'‹>Ü�s“8ˆOà˜C‘<Ðr8   c                 óò   • XR                   R                  :X  a  g  XR                   l        U R                  5         U R                  5         g ! [         a  n[	        S[        U5      5         S nAN5S nAff = f)NzError Setting Server Index)rÉ  r   r(  r  r   r<   r)  )r2   r   r  s      r5   r§  ÚDownloaderGUI._set_url  s]   € Ø—(‘(—,‘,ÓØð	<Ø�H‰HŒLØ×ÑÔð 	�‰Õøô ó 	<ÜÐ2´C¸³F×;Ñ;ûð	<ús   œ A Á
A6ÁA1Á1A6c                 ó2  • U R                   R                  U:X  a  g XR                   l         U R                  5         U R                  5         g ! [         a  n[	        SU5         S nAN,S nAf[
         a   n[	        SUR                  5         S nANTS nAff = f)Nr  r  )rÉ  r°   r(  r   r   r   rß  r)  )r2   r°   r  s      r5   r»  ÚDownloaderGUI._set_download_dir‰  s{   € Ø�8‰8× Ñ  LÓ0Øð !-�‰Ôð	>Ø×ÑÔð
 	�‰Õøô	 ó 	6ÜÐ1°1×5Ñ5ûÜó 	>ÜÐ2°A·H±H×=Ñ=ûð	>ús#   ­A Á
BÁA)Á)BÁ6BÂBc                 óà  • [        SU R                  R                  5        U R                  R	                  5        H  u  pSUS'   UR                  SS5        M     U R                  S   S   R                  SU R                  R                  5        U R                  S   S   R                  SU R                  R                  5        U R                  R	                  5        H
  u  pSUS'   M     g )	Nzshowing inforÁ  rÂ  r   Úendr   r°   rÆ  )rÜ   rÉ  r   ry  rþ   ÚdeleteÚinsertr°   )r2   r‹  Úcbs      r5   r)  ÚDownloaderGUI._show_info˜  s¶   € Üˆn˜dŸh™hŸl™lÔ+ØŸ™×*Ñ*Ö,‰IˆEØ%ˆE�'‰NØ�L‰L˜˜EÖ"ñ -ð 	�
‰
�5Ñ˜!Ñ×#Ñ# A t§x¡x§|¡|Ô4Ø�
‰
�>Ñ" 1Ñ%×,Ñ,¨Q°·±×0EÑ0EÔFØŸ™×*Ñ*Ö,‰IˆEØ'ˆE�'‹Nò -r8   c                 ó–  • [        U R                  5       Hc  u  p#UR                  5       U R                  :X  d  M%  US:”  d  M-  U R                  US-
     R                  5       U l         U R	                  5       s  $    g ! [
         a  n[        SU5         S nAM„  S nAf[         a!  n[        SUR                  5         S nAM­  S nAff = f)Nr   r   r  r  )	r)  rg  rì   Ú_tabr(  r   r   r   rß  ©r2   r  r*  rˆ  s       r5   rv  ÚDownloaderGUI._prev_tab¢  sž   € Ü §¡Ö0‰FˆAØ�y‰y‹{˜dŸi™iÕ'¨A°­EØ ŸO™O¨A°©EÑ2×8Ñ8Ó:�”	ðFØ×+Ñ+Ó-Ò-ò	 1øô
 !ó >ÜÐ9¸1×=Ò=ûÜó FÜÐ:¸A¿H¹H×EÒEûðFús$   Á)A>Á>
CÂBÂCÂ'CÃCc                 óÂ  • [        U R                  5       Hy  u  p#UR                  5       U R                  :X  d  M%  U[	        U R
                  5      S-
  :  d  MC  U R                  US-      R                  5       U l         U R                  5       s  $    g ! [         a  n[        SU5         S nAMš  S nAf[         a!  n[        SUR                  5         S nAMÃ  S nAff = f)Nr   r  r  )r)  rg  rì   rÙ  rÝ   rh  r(  r   r   r   rß  rÚ  s       r5   rw  ÚDownloaderGUI._next_tab­  s¬   € Ü §¡Ö0‰FˆAØ�y‰y‹{˜dŸi™iÕ'¨A´°T·Z±Z³À1Ñ1DÕ,EØ ŸO™O¨A°©EÑ2×8Ñ8Ó:�”	ðFØ×+Ñ+Ó-Ò-ò	 1øô
 !ó >ÜÐ9¸1×=Ò=ûÜó FÜÐ:¸A¿H¹H×EÒEûðFús$   Á?BÂ
CÂB0Â0CÂ=CÃCc                 ó   • UR                   S   R                  5       U l         U R                  5         g ! [         a  n[        SU5         S nAg S nAf[         a   n[        SUR                  5         S nAg S nAff = f)NrL  r  r  )rÇ  rì   rÙ  r(  r   r   r   rß  )r2   Úeventr  s      r5   rj  ÚDownloaderGUI._select_tab¸  se   € Ø—L‘L Ñ(×.Ñ.Ó0ˆŒ	ð	>Ø×ÑÕøÜó 	6ÜÐ1°1×5Ñ5ûÜó 	>ÜÐ2°A·H±H×=Ñ=ûð	>ús    ¤5 µ
A=¿AÁA=ÁA8Á8A=rÈ   c                 ó~  • U R                   R                  5       nU R                   R                  5         U R                  S:X  a  U R                  R                  5       nO•U R                  S:X  a  U R                  R                  5       nOjU R                  S:X  a  U R                  R                  5       nO?U R                  S:X  a  U R                  R                  5       nO SU R                  -  5       eU Vs/ s H  o0R                  U5      PM     nnU R                   R                  U5        U R                  R                  5        Hj  u  pVXPR                  :X  a,  UR                  U R                  S   U R                  S   S9  M@  UR                  U R                  S   U R                  S   S9  Ml     U R                   R!                  S	S
S9  U R#                  5         U R                   R%                  U5        U R&                  R(                  " SU R                   R*                  R,                  /U R                   R.                  R1                  5       Q76   U R&                  R(                  " SU R                   R*                  R,                  /U R                   R.                  R1                  5       Q76   g s  snf )Nzall packagesr  r  rÈ   r   zbad tab value %rr   ©rS  r  rý  rœ  )Úorderé–   i,  )r+  Úselected_rowrq  rÙ  rÉ  r]   r  r  rÈ   Ú_package_to_columnsr“  rh  r  r   Ú_FRONT_TAB_COLORÚ_BACK_TAB_COLORrž  Ú_color_tabler,  r  ÚafterÚ
_scrollbarr­  Ú_mlbÚyview)r2   rå  r  r`   Úrowsrˆ  r‰  s          r5   r(  ÚDownloaderGUI._fill_tableÅ  s  € Ø—{‘{×/Ñ/Ó1ˆØ�‰×ÑÔØ�9‰9˜Ó&Ø—H‘H×%Ñ%Ó'‰EØ�Y‰Y˜)Ó#Ø—H‘H×$Ñ$Ó&‰EØ�Y‰Y˜(Ó"Ø—H‘H—O‘OÓ%‰EØ�Y‰Y˜-Ó'Ø—H‘H×(Ñ(Ó*‰Eà4Ð(¨4¯9©9Ñ4Ó4�1Ù;@ÓAº5°4×(Ñ(¨Ö.¹5ˆÐAØ�‰×Ñ˜4Ô ð Ÿ*™*×*Ñ*Ö,‰JˆCØ—i‘iÓØ—‘Ø#×4Ñ4°QÑ7Ø#×4Ñ4°QÑ7ð  ó ð
 —‘Ø#×3Ñ3°AÑ6Ø#×3Ñ3°AÑ6ð  ó ñ -ð 	�‰×Ñ˜L°ÐÑ<Ø×ÑÔØ�‰×Ñ˜<Ô(ð 	�‰�Š�s˜DŸK™K×2Ñ2×6Ñ6ÐR¸¿¹×9IÑ9I×9OÑ9OÓ9QÓRØ�‰�Š�s˜DŸK™K×2Ñ2×6Ñ6ÐR¸¿¹×9IÑ9I×9OÑ9OÓ9QÔRùò5 Bs   Ã9J:c                 óâ   • [        [        U R                  5      5       H=  nU R                  R	                  U R                  US4   5      nX R                  US4'   M?     U R                  5         g )Nrý  r   )r'  rÝ   r+  rÉ  râ   ré  )r2   Úrow_numrâ   s      r5   Ú_update_table_statusÚ"DownloaderGUI._update_table_statusî  sY   € ÜœS §¡Ó-Ö.ˆGØ—X‘X—_‘_ T§[¡[°¸,Ð1FÑ%GÓHˆFØ-3�K‰K˜ Ð)Ó*ñ /ð 	×ÑÕr8   c                 óð  • U R                   (       a  U R                  " U6 $ [        [        U R                  5      5       Vs/ s H+  nU R                  US4   S:w  d  M  U R                  US4   PM-     nnU R                  R                  5       nU(       d  Ub  U R                  US4   /nU R                  R                  X0R                  R                  5      nSU l	        U R                  XS5        g s  snf )Nr   rO   rý  )r  Ú_download_threadedr'  rÝ   r+  rå  rÉ  r  r°   r  Ú_download_cb)r2   r  rA  ÚmarkedÚ	selectionÚdownload_iters         r5   rt  ÚDownloaderGUI._downloadô  sÞ   € ð ××Ø×*Ò*¨AÐ.Ð.ô œS §¡Ó-Ô.ó
â.�Ø�{‰{˜3 ˜6Ñ" bÑ(ó +ˆD�K‰K˜˜\Ð)Ô*Ù.ð 	ð 
ð
 —K‘K×,Ñ,Ó.ˆ	Þ˜)Ñ/Ø—k‘k )¨\Ð"9Ñ:Ð;ˆFàŸ™×.Ñ.¨v·x±x×7LÑ7LÓMˆØˆÔØ×Ñ˜-Õ0ùò
s   ÁC3ÁC3c                 ó$  ^ •  [        U5      nU 4S jn[        U[        5      (       a  T R                  UR                  5        GO5[        U[        5      (       aV  U" UR                  5        UR                  b%  T R                  UR                  R                  5        T R                  S 5        g [        U[        5      (       a6  U" SUR                   R                  -  5        T =R"                  S-  sl        GO[        U[$        5      (       a!  U" SUR                  R                  -  5        GOI[        U[&        5      (       a!  U" SUR                  R                  -  5        GO[        U[(        5      (       a   U" S	UR                  R                  -  5        OÞ[        U[*        5      (       a   U" S
UR                  R,                  -  5        O©[        U[.        5      (       aZ  T =R"                  S-  sl        U" SUR                   R                  -  5        T R1                  UR                   R                  5        O:[        U[2        5      (       a%  T R1                  UR                  R                  5        T R                  R	                  T R4                  T R6                  X5      nUT R                  S'   g ! [         aI    T R                  5         T R                  R	                  ST R
                  S5      nUT R                  S'    g f = f)Nr	  r   rö  c                 óF   >• U TR                   S'   TR                  U 5        g ©NrL  ©r~  r  ©rK  r2   s    €r5   rV  Ú(DownloaderGUI._download_cb.<locals>.show  ó   ø€ Ø*+ˆD×Ñ Ñ'Ø�I‰I�a�Lr8   zDownloading collection %sr   zDownloading package %súPackage %s is up-to-date!úFinished downloading %r.úUnzipping %sú#Finished downloading collection %r.)ÚnextÚStopIterationrò  r  rê  Ú_show_progressr  r;   r§   rª   r¡   r¤   r}   Ú_selectr   rm   rp   r  rz   r™   rŒ   r‘   r-   rv   Ú_clear_markrƒ   Ú	_DL_DELAYrö  )r2   rù  Úidsrù   ÚafteridrV  s   `     r5   rö  ÚDownloaderGUI._download_cb	  s5  ø€ ð	Ü�}Ó%ˆCõ	ô �cœ?×+Ñ+Ø×Ñ §¡Ö-Ü˜œ\×*Ñ*Ù�—‘ÔØ�{‰{Ñ&Ø—‘˜SŸ[™[Ÿ^™^Ô,Ø×Ñ Ô%ØÜ˜Ô3×4Ñ4ÙÐ,¨s¯~©~×/@Ñ/@Ñ@ÔAØ×Ò Ñ!×Ü˜Ô0×1Ñ1ÙÐ)¨C¯K©K¯N©NÑ:Ö;Ü˜œ_×-Ñ-ÙÐ,¨s¯{©{¯~©~Ñ=Ö>ô ˜Ô2×3Ñ3ÙÐ+¨c¯k©k¯n©nÑ<Õ=Ü˜Ô.×/Ñ/Ù� #§+¡+×"6Ñ"6Ñ6Õ7Ü˜Ô4×5Ñ5Ø×Ò Ñ!ÕÙÐ6¸¿¹×9JÑ9JÑJÔKØ×Ñ˜SŸ^™^×.Ñ.Õ/Ü˜Ô1×2Ñ2Ø×Ñ˜SŸ[™[Ÿ^™^Ô,Ø—(‘(—.‘. §¡°×1BÑ1BÀMÓWˆØ(/ˆ�‰�nÒ%øôO ó 	à×%Ñ%Ô'Ø—h‘h—n‘n R¨×)<Ñ)<¸aÓ@ˆGØ,3ˆD�M‰M˜.Ñ)Ùð	ús   ƒJ< Ê<ALÌLc                 ó²   • [        [        U R                  5      5       H5  nU R                  US4   U:X  d  M  U R                  R                  U5          g    g )Nrý  )r'  rÝ   r+  r,  ©r2   r   rA  s      r5   r	  ÚDownloaderGUI._select5  sE   € Üœ˜TŸ[™[Ó)Ö*ˆCØ�{‰{˜3 Ð,Ñ-°Õ3Ø—‘×"Ñ" 3Ô'Ùò +r8   c           	      ó<  • [        [        U R                  5      5       Hz  nU R                  U R                  US4      u  p#Su  pEU R                  R	                  UUUUUS9  U R                  R                  USU R                  S   U R                  S   S9  M|     g )Nr   )ÚblackÚwhite)rS  Úselectforegroundr  Úselectbackgroundr   r   râ  )r'  rÝ   r+  Ú
_ROW_COLORÚ	rowconfigÚitemconfigurero  )r2   rA  ÚbgÚsbgÚfgÚsfgs         r5   ré  ÚDownloaderGUI._color_table;  s�   € äœ˜TŸ[™[Ó)Ö*ˆCØ—o‘o d§k¡k°#°x°-Ñ&@ÑA‰GˆBØ(‰GˆBØ�K‰K×!Ñ!ØØØ!$ØØ!$ð "ñ ð �K‰K×%Ñ%Ø�Q 4×#3Ñ#3°AÑ#6À4×CSÑCSÐTUÑCVð &ó ò +r8   c                 óž   • [        [        U R                  5      5       H+  nU R                  US4   U:X  d  M  SU R                  US4'   M-     g )Nrý  rO   r   ©r'  rÝ   r+  r  s      r5   r
  ÚDownloaderGUI._clear_markL  sB   € Üœ˜TŸ[™[Ó)Ö*ˆCØ�{‰{˜3 Ð,Ñ-°Õ3Ø&(�—‘˜C ˜FÓ#ò +r8   c                 óp   • [        [        U R                  5      5       H  nSU R                  US4'   M     g )Nrô  r   r   )r2   r  rA  s      r5   rx  ÚDownloaderGUI._mark_allQ  s,   € Üœ˜TŸ[™[Ó)Ö*ˆCØ"%ˆD�K‰K˜˜Q˜Óò +r8   c                 óè   • U R                   R                  5       nUS:¼  a9  U R                   U   S   S:w  a  SU R                   US4'   OSU R                   US4'   U R                   R                  SS9  g )Nr   rO   rô  r   )r,  )r+  rå  r,  )r2   r  rø  s      r5   ru  ÚDownloaderGUI._table_markU  sj   € Ø—K‘K×,Ñ,Ó.ˆ	Ø˜‹>Ø�{‰{˜9Ñ% aÑ(¨BÓ.Ø,.�—‘˜I q˜LÒ)à,/�—‘˜I q˜LÑ)Ø�‰×Ñ ÐÒ#r8   c                 óh   • SR                  U R                  5      n[        U R                  SU5        g )NrÖ   zNLTK Downloader Log)r,   r  r   r  )r2   rL  s     r5   r©  ÚDownloaderGUI._show_log^  s'   € Ø�y‰y˜×+Ñ+Ó,ˆÜ�—‘Ð0°$Õ7r8   c                 ó˜  • / n[        U R                  5       H®  u  p4US:X  a  UR                  S5        M  US:X  a  UR                  UR                  5        MA  US:X  a,  UR                  U R                  R                  U5      5        Ms  UR                  5       R                  SS5      nUR                  [        XS5      5        M°     U$ )zl
Given a package, return a list of values describing that
package, one for each column in ``self.COLUMNS``.
r   rO   rý  r   rÍ   r~  zn/a)	r)  rk  rÞ   r   rÉ  râ   rì   Úreplacerá   )r2   r  rA  Úcolumn_indexÚcolumn_nameÚattrs         r5   ræ  Ú!DownloaderGUI._package_to_columnsb  s¡   € ð
 ˆÜ)2°4·<±<Ö)@Ñ%ˆLØ˜qÓ Ø—
‘
˜2–Ø Ó,Ø—
‘
˜3Ÿ6™6Ö"Ø Ó(Ø—
‘
˜4Ÿ8™8Ÿ?™?¨3Ó/Ö0à"×(Ñ(Ó*×2Ñ2°3¸Ó<�Ø—
‘
œ7 3¨eÓ4Ö5ñ *Að ˆ
r8   c                 ój   • U R                   (       a  g U R                  R                  5         SU l         g )NT)r$  r  r#  r¾  s     r5   r#  ÚDownloaderGUI.destroyx  s#   € Ø�?�?ØØ�‰×ÑÔØˆ�r8   c                 ó.  • U R                   b<  U R                  R                  5        H  nU R                   R                  U5        M      U R                  (       a!  U R
                  (       a  U R                  5         U R                  R                  5         g rD   )	r  r  rþ   Úafter_cancelr  r  Ú_abort_downloadr%  rq  )r2   r  r  s      r5   r-  ÚDownloaderGUI._destroy~  sh   € Ø�8‰8ÑØŸ=™=×/Ñ/Ö1�Ø—‘×%Ñ% gÖ.ñ 2ð ×× ×!2×!2Ø× Ñ Ô"ð
 	×Ñ×ÑÕ!r8   c                 ó<   • U R                   R                  " U0 UD6  g rD   )r  rÀ  )r2   rá  Úkwargss      r5   rÀ  ÚDownloaderGUI.mainloopŒ  s   € Ø�‰×Ò˜4Ð* 6Ó*r8   an      This tool can be used to download a variety of corpora and models
    that can be used with NLTK.  Each corpus or model is distributed
    in a single zip file, known as a "package file."  You can
    download packages individually, or you can download pre-defined
    collections of packages.

    When you download a package, it will be saved to the "download
    directory."  A default download directory is chosen when you run

    the downloader; but you may also select a different download
    directory.  On Windows, the default download directory is


    "package."

    The NLTK downloader can be used to download a variety of corpora,
    models, and other data packages.

    Keyboard shortcuts::
      [return]	 Download
      [up]	 Select previous package
      [down]	 Select next package
      [left]	 Select previous tab
      [right]	 Select next tab
    c                 óÎ   •  [        U R                  SU R                  R                  5       SSS9  g !   [        U R                  SU R                  R                  5       SS9   g = f)NzHelp: NLTK DownloaderrÏ   Úfixed)rÛ   rM  rT  )r   r  ÚHELPra  r¾  s     r5   r°  ÚDownloaderGUI.help°  sU   € ð		UÜØ—‘Ø'Ø—	‘	—‘Ó!ØØóøð	UÜ�T—X‘XÐ6¸¿	¹	¿¹Ó8IÐQSÔTús	   ‚/2 ²0A$c                 óŽ   • SnSn SSK Jn  U" X#S9R                  5         g ! [         a    [	        U R
                  X25         g f = f)Nz'NLTK Downloader
Written by Edward LoperzAbout: NLTK Downloaderr   )ÚMessage)r¤   r  )Útkinter.messageboxr<  rV  ÚImportErrorr   r  )r2   r  ÚABOUTÚTITLEr<  s        r5   r¯  ÚDownloaderGUI.about½  sB   € Ø?ˆØ(ˆð	-Ý2á˜EÑ/×4Ñ4Õ6øÜó 	-Ü�T—X‘X˜uÖ,ð	-ús   †! ¡ AÁAc                 ó  • U R                   n[        US   5      [        US   5      p2[        S[        US   5      S-  U R                  -  5       H]  nUR	                  X@R                  -  S-   SX@R                  -  U-
  S-
  US-   U R                  SS[        US	-  S
-
  5      S-  -   -  S9  M_     UR                  S5        UR                  SSS9  UR                  SUR                  SSSSU R                  S   S95        g )NrÛ   r?  r   r3  rÔ   iìÿÿÿz	#%02x0000r4  rE  rÇ   r
  )rÛ   rè   ÚgradientÚhidden©rÂ  Úredbox)rè   )r€  r   r'  Ú_gradient_widthÚcreate_lineÚabsÚ
addtag_allÚ
itemconfigÚaddtag_withtagÚcreate_rectangler  )r2   r•  rÛ   r?  r*  s        r5   r�  ÚDownloaderGUI._init_progressbarÍ  s  € Ø×ÑˆÜ˜A˜g™J›¬¨Q¨x©[Ó)9ˆvÜ�qœ3˜q ™z›?¨QÑ.°4×3GÑ3GÑGÖHˆAØ�M‰MØ×(Ñ(Ñ(¨2Ñ-ØØ×(Ñ(Ñ(¨6Ñ1°BÑ6Ø˜‘Ø×*Ñ*Ø  B¬¨Q°©U°Q©Y«¸"Ñ)<Ñ$<Ñ=ð ó ñ Ið 	
�‰�ZÔ Ø	�‰�Z xˆÑ0ð 	
×ÑØ�a×(Ñ(¨¨A¨q°!¸$×:NÑ:NÈqÑ:QÐ(ÐRõ	
r8   c                 óú   • U R                   nUc&  UR                  SSSSS5        UR                  SSS9  g [        US   5      [        US   5      pCU[        U5      -  S-  S	-   nUR                  SSSXTS	-   5        g )
NrF  r   rC  rD  rE  rÛ   r?  r&  r   )r€  ÚcoordsrK  r   )r2   Úpercentr•  rÛ   r?  r×   s         r5   r  ÚDownloaderGUI._show_progressá  s|   € Ø×ÑˆØ‰?Ø�H‰H�X˜q ! Q¨Ô*Ø�L‰L˜¨8ˆLÒ4ä  '¡
›O¬S°°8±Ó-=�6Øœ#˜e›*Ñ$¨Ñ+¨aÑ/ˆAØ�H‰H�X˜q ! Q°©
Õ3r8   c                 óŠ  • U R                   nU R                  (       d  UR                  SSS9  g UR                  SSS9  UR                  S5      u  p#pEUS::  a$  UR	                  SU R
                  S-  S-
  S5        OUR	                  SS	S5        U R                  R                  S
U R                  5      nX`R                  S'   g )NrC  rD  rE  rÁ  iœÿÿÿrE  rD  r   r\  ra  Ú_progress_alive)
r€  r  rK  ÚbboxÚmoverG  r  rê  rT  r  )r2   r•  Úx1Úy1Úx2Úy2r  s          r5   rT  ÚDownloaderGUI._progress_aliveë  s¦   € Ø×ÑˆØ× × Ø�L‰L˜¨8ˆLÒ4à�L‰L˜¨8ˆLÑ4ØŸV™V JÓ/‰NˆB�BØ�T‹zØ—‘�z D×$8Ñ$8¸1Ñ$<ÀÑ#AÀ1ÕEà—‘�z 2 qÔ)Ø—h‘h—n‘n S¨$×*>Ñ*>Ó?ˆGØ/6�M‰MÐ+Ò,r8   c                 ó  • U R                   (       a  U R                  5         g SU R                  S'   [        [	        U R
                  5      5       Vs/ s H+  nU R
                  US4   S:w  d  M  U R
                  US4   PM-     nnU R
                  R                  5       nU(       d  Ub  U R
                  US4   /n[        U R                  R                  U R                  R                  5      nU R                  / :X  d   eU R                  / :X  d   eU R                  UUU R                  U R                  U R                  5      R                  5         SU l        SU l         U R#                  5         U R%                  5         g s  snf )NÚCancelrL  r   rO   rý  T)r  r2  r{  r'  rÝ   r+  rå  r´   rÉ  r   r°   r  r  Ú_DownloadThreadr  Ústartr  Ú_monitor_message_queuerT  )r2   r  rA  r÷  rø  Údss         r5   rõ  Ú DownloaderGUI._download_threadedý  si  € ð ××Ø× Ñ Ô"Øð )1ˆ×Ñ˜fÑ%ô œS §¡Ó-Ô.ó
â.�Ø�{‰{˜3 ˜6Ñ" bÑ(ó +ˆD�K‰K˜˜\Ð)Ô*Ù.ð 	ð 
ð
 —K‘K×,Ñ,Ó.ˆ	Þ˜)Ñ/Ø—k‘k )¨\Ð"9Ñ:Ð;ˆFô
 ˜Ÿ™Ÿ™ d§h¡h×&;Ñ&;Ó<ˆð ×'Ñ'¨2Ó-Ð-Ð-Ø×)Ñ)¨RÓ/Ð/Ð/Ø×ÑØØØ×ÑØ×$Ñ$Ø×&Ñ&ó	
÷ ‰%Œ'ð ˆÔØ ˆÔØ×#Ñ#Ô%ð 	×ÑÕùòA
s   ÁFÁ/Fc                 óÆ   • U R                   (       aP  U R                  R                  5         U R                  R	                  S5        U R                  R                  5         g g )NÚabort)r  r  Úacquirer  rÞ   ÚreleaserL   s    r5   r2  ÚDownloaderGUI._abort_download)  sH   € Ø××Ø×Ñ×'Ñ'Ô)Ø×&Ñ&×-Ñ-¨gÔ6Ø×Ñ×'Ñ'Õ)ð r8   c                   ó    • \ rS rSrS rS rSrg)ÚDownloaderGUI._DownloadThreadi/  c                 ó~   • Xl         X l        X0l        X@l        XPl        [
        R                  R                  U 5        g rD   )Údata_serverr  ÚlockÚmessage_queuerd  r  ÚThreadr6   )r2   rk  r  rl  rm  rd  s         r5   r6   Ú&DownloaderGUI._DownloadThread.__init__0  s1   € Ø*ÔØŒJØŒIØ!.ÔØŒJÜ×Ñ×%Ñ% dÕ+r8   c                 ó(  • U R                   R                  U R                  5       Hš  nU R                  R	                  5         U R
                  R                  U5        U R                  (       a7  U R
                  R                  S5        U R                  R                  5           g U R                  R                  5         Mœ     U R                  R	                  5         U R
                  R                  S5        U R                  R                  5         g )NÚabortedÚfinished)	rk  r  r  rl  re  rm  rÞ   rd  rf  r2  s     r5   rÂ  Ú!DownloaderGUI._DownloadThread.run8  sº   € Ø×'Ñ'×5Ñ5°d·j±jÖA�Ø—	‘	×!Ñ!Ô#Ø×"Ñ"×)Ñ)¨#Ô.à—:—:Ø×&Ñ&×-Ñ-¨iÔ8Ø—I‘I×%Ñ%Ô'ÙØ—	‘	×!Ñ!Ö#ñ Bð �I‰I×ÑÔØ×Ñ×%Ñ% jÔ1Ø�I‰I×ÑÕr8   )rd  rk  r  rl  rm  N)rR   rS   rT   rU   r6   rÂ  rX   r:   r8   r5   r^  ri  /  s   † ò	,õ	 r8   r^  r&  c                 óô  ^ • U 4S jnT R                   R                  5       (       d  g T R                   GH¸  nUS:X  d  US:X  a·  T R                  5         ST l        ST R
                  S'   T R                  S S 2	 T R                  S S 2	 T R                   R                  5         US:X  a  U" S5        T R                  S 5          g T R                  R                  ST R                  S 5      nUT R                  S	'     g [        U[        5      (       a  T R                  UR                  5        Mù  [        U[        5      (       a^  U" UR                   5        UR"                  b%  T R%                  UR"                  R&                  5        T R                  S 5        ST l          g [        U[(        5      (       a7  U" S
UR*                  R&                  -  5        T =R,                  S-  sl        GM¸  [        U[.        5      (       aQ  T R0                  R3                  UR"                  R&                  5        U" SUR"                  R&                  -  5        GM  [        U[4        5      (       a"  U" SUR"                  R&                  -  5        GMU  [        U[6        5      (       a"  U" SUR"                  R&                  -  5        GMŒ  [        U[8        5      (       a"  U" SUR"                  R:                  -  5        GMÃ  [        U[<        5      (       a"  U" SUR"                  R&                  -  5        GMú  [        U[>        5      (       a\  T =R,                  S-  sl        U" SUR*                  R&                  -  5        T RA                  UR*                  R&                  5        GMk  [        U[B        5      (       d  GMƒ  T R                  5         T RA                  UR"                  R&                  5        GM»     T R                  (       a  ST RD                  S'   T R                  S S 2	 T R                   R                  5         T R                  R                  T RF                  T RH                  5      nUT R                  S	'   g )Nc                 óF   >• U TR                   S'   TR                  U 5        g rý  rþ  rÿ  s    €r5   rV  Ú2DownloaderGUI._monitor_message_queue.<locals>.showI  r  r8   rr  rq  Fr^  rL  zDownload aborted!r&  r`  r[  r   zDownloading package %rr  r  r  zFinished installing %sr  zAborting download...)%r  re  r  rò  r  r{  r  rf  r  r  rê  r  r;   r§   rª   r¡   r¤   r}   r	  r   rm   rp   r  rz   rÉ  rs  r™   rŒ   r‘   r-   r•   rv   r
  rƒ   r~  Ú_MONITOR_QUEUE_DELAYr`  )r2   rV  rù   r  s   `   r5   r`  Ú$DownloaderGUI._monitor_message_queueH  sQ  ø€ õ	ð
 ×"Ñ"×*Ñ*×,Ñ,ØØ×+Õ+ˆCà�jÓ  C¨9Ó$4à×)Ñ)Ô+Ø$)�Ô!Ø0:�×%Ñ% fÑ-Ø×,Ñ,ªQÐ/Ø×.Ñ.ªqÐ1Ø×#Ñ#×+Ñ+Ô-Ø˜)Ó#ÙÐ,Ô-Ø×'Ñ'¨Ô-ñ ð #Ÿh™hŸn™n¨S°$×2EÑ2EÀtÓL�GØ>E�D—M‘MÐ":Ñ;Ùô ˜C¤×1Ñ1Ø×#Ñ# C§L¡LÖ1Ü˜C¤×.Ñ.Ù�S—[‘[Ô!Ø—;‘;Ñ*Ø—L‘L §¡§¡Ô0Ø×#Ñ# DÔ)Ø$)�Ô!ÙÜ˜CÔ!7×8Ñ8ÙÐ0°3·>±>×3DÑ3DÑDÔEØ× Ò  AÑ%× Ð Ü˜CÔ!4×5Ñ5Ø—‘×+Ñ+¨C¯K©K¯N©NÔ;ÙÐ-°·±·±Ñ>×?Ü˜C¤×1Ñ1ÙÐ0°3·;±;·>±>ÑA×Bô ˜CÔ!6×7Ñ7ÙÐ/°#·+±+·.±.Ñ@×AÜ˜CÔ!2×3Ñ3Ù�^ c§k¡k×&:Ñ&:Ñ:×;Ü˜CÔ!3×4Ñ4ÙÐ-°·±·±Ñ>×?Ü˜CÔ!8×9Ñ9Ø× Ò  AÑ%Õ ÙÐ:¸S¿^¹^×=NÑ=NÑNÔOØ× Ñ  §¡×!2Ñ!2×3Ü˜CÔ!5×6Ô6Ø×)Ñ)Ô+Ø× Ñ  §¡§¡×0ñg ,ðp ×%×%Ø*@ˆD×Ñ Ñ'ð ×$Ñ$¢QÐ'Ø×Ñ×#Ñ#Ô%ð —(‘(—.‘. ×!:Ñ!:¸D×<WÑ<WÓXˆØ29ˆ�‰Ð.Ò/r8   )r  r%  r$  r  r{  r  r  r  rÉ  ry  r  r  r€  r~  r}  rÙ  rg  r+  rh  r  r  ©TrD   )HrR   rS   rT   rU   rV   rk  rl  rp  rq  r¬  r•  r!  r´   rã   rå   rä   ræ   r  ro  rç  rè  r  ri  r6   r  r&  r'  r*  r|  rZ  rz  rm  r§  r»  r)  rv  rw  rj  rÙ  Ú_rowsr(  rò  rt  r  rö  r	  ré  r
  rx  ru  r©  ræ  r#  r-  rÀ  rç   Údedentr9  r°  r¯  rG  r�  r  rT  rõ  r2  r  rn  r^  rw  r`  rX   r:   r8   r5   r¿  r¿    s  † ñò€GðDð  Q°¸QÑ?€NðCð ØØØØØñ€Mð<ð Ðð ò C€OØAó ˆØ�G�|Ðˆ|ñ ãˆØ�G�|Ðˆ|ñ ãˆØ�G�|Ðˆ|ñ ð '€Oð 	×ÑÐ.Ø×ÑÐ,Ø×ÑÐ*Ø× Ñ Ð"2ð	€Jð #€Kð (ÐØ&€Oà&€Oà$€Iô/5òb
òm.ò^C&òJ0òòôò ò òò(ò	Fò	Fò>ð €Dà€Eò'SòRò1ð& €Iò*0òXòò")ò
&ò$ò8òò,ò"ò+ð �?Š?ð	ó€Dò:Uò-ð €Oò
ò(4ò7ò$*òX*ô ˜)×*Ñ*ô  ð. ÐõI:r8   r¿  c                 ó¦   • [        U [        5      (       a!  [        U S5       n[        U5      sSSS5        $ [        U 5      $ ! , (       d  f       N= f)zn
Calculate and return the MD5 checksum for a given file.
``file`` may either be a filename or an open stream.
ÚrbN)r;   r<   r<  Ú_md5_hexdigest)rP  rG  s     r5   r‚  r‚  š  sA   € ô
 �$œ×ÑÜ�$˜Ô Ü! &Ó)÷ Ñä˜$ÓÐ÷ Õús   ¢AÁ
Ac                 ó�   • [        5       n U R                  S5      nU(       d   UR                  5       $ UR                  U5        M<  )Nr2  )r   r@  r1   Ú	hexdigest)ÚfpÚ
md5_digestrJ  s      r5   r~  r~  ¥  sD   € Ü“€JØ
Ø—‘˜	Ó"ˆÞØà×ÑÓ!Ð!ð 	×Ñ˜%Ô ñ	 r8   c                 ój   • [        XU5       H#  n[        U[        5      (       d  M  [        U5      e   g)zP
Extract the contents of the zip file ``filename`` into the
directory ``root``.
N)rE  r;   r¡   r£   )r-   Úrootr7  r¤   s       r5   r/   r/   ²  s-   € ô
 ˜x¨wÖ7ˆÜ�gœ|×,Ó,Ü˜GÓ$Ð$ò 8r8   c              #   óÜ  #   • U(       a`  [         R                  R                  S[        R                  R                  U 5      S   -  5        [         R                  R                  5          [        R                  " U 5      nUR                  U5        U(       a  [        5         g g ! [        R                   a    [        U S5      v •   g [         a  n[        X5      v •   S nAg S nAff = f7f)Nr  r   zError with downloaded zip file)r±  ÚstdoutrA  r(   r)   r+   ÚflushÚzipfileÚZipFileÚ
BadZipFiler¡   r£   Ú
extractallrÜ   )r-   r„  r7  Úzfr  s        r5   rE  rE  ¼  s­   é € ÞÜ�
‰
×Ñ˜¬"¯'©'¯-©-¸Ó*AÀ!Ñ*DÑDÔEÜ�
‰
×ÑÔðÜ�_Š_˜XÓ&ˆð ‡M�M�$ÔæÜ�ð øô ×Ñó Ü˜8Ð%EÓFÒFÙÜó Ü˜8Ó'Ò'Üûðüs<   ‚A(C,Á+B% Â$C,Â%"C)ÃC,Ã		C)ÃC$ÃC,Ã$C)Ã)C,c                 ó&  • / n[        [        R                  R                  U S5      5       GH"  u  p4n[        R                  " UR
                  5      nU SU S[        R                  R                  UR
                  5      S    3n[        S UR                  5        5       5      nUR                  SSU-  5        UR                  SSUR                  -  5        UR                  SS[        UR
                  5      -  5        UR                  S	U5        UR                  S
5      (       d  UR                  S
U5        UR                  U5        GM%     [        [        [        R                  R                  U S5      5      5      n	[        5       n
X)-    HU  nUR                  S5      U
;   a  [!        SUR                  S5      -  5      eU
R#                  UR                  S5      5        MW     [$        R&                  " S5      nUR                  [$        R&                  " S5      5        US   R)                  [+        US S95        UR                  [$        R&                  " S5      5        US   R)                  [+        U	S S95        [-        U5        U$ )a  
Create a new data.xml index file, by combining the xml description
files for various packages and collections.  ``root`` should be the
path to a directory containing the package xml and zip files; and
the collection xml files.  The ``root`` directory is expected to
have the following subdirectories::

  root/
    packages/ .................. subdirectory for packages
      corpora/ ................. zip & xml files for corpora
      grammars/ ................ zip & xml files for grammars
      taggers/ ................. zip & xml files for taggers
      tokenizers/ .............. zip & xml files for tokenizers
      etc.
    collections/ ............... xml files for collections

For each package, there should be two files: ``package.zip``
(where *package* is the package name)
which contains the package itself as a compressed zip file; and
``package.xml``, which is an xml description of the package.  The
zipfile ``package.zip`` should expand to a single subdirectory
named ``package/``.  The base filename ``package`` must match
the identifier given in the package's xml file.

For each collection, there should be a single file ``collection.zip``
describing the collection, where *collection* is the name of the collection.

All identifiers (for both packages and collections) must be unique.
r]   r   r   c              3   ó8   #   • U  H  oR                   v •  M     g 7frD   )Ú	file_size)r#  Úzf_infos     r5   r$  Úbuild_index.<locals>.<genexpr>ù  s   é € ÐKº]°'×-Ö-º]ùrÑ  r!   z%sr    r"   r   r   rÈ   r   zDuplicate UID: %sr­  r   c                 ó$   • U R                  S5      $ ©Nr   ©rc   r|   s    r5   r[  Úbuild_index.<locals>.<lambda>	  s   € ¸7¿;¹;ÀtÔ;Lr8   rÉ   c                 ó$   • U R                  S5      $ r“  r”  ro   s    r5   r[  r•  	  s   € ÀÇÁÐPTÔAUr8   )Ú_find_packagesr(   r)   r,   r{  r-   r+   r(  Úinfolistr­  r|  r‚  rc   rÞ   rú   Ú_find_collectionsr  Úaddr   ÚElementr“  rà   Ú_indent_xml)r„  Úbase_urlr]   Úpkg_xmlrŒ  r   Úzipstatr   r!   rÈ   Úuidsr`   Útop_elts                r5   Úbuild_indexr¢  Ö  sø  € ð> €HÜ-¬b¯g©g¯l©l¸4ÀÓ.L×MÑˆ�VÜ—'’'˜"Ÿ+™+Ó&ˆØ�
˜!˜F˜8 1¤R§W¡W§]¡]°2·;±;Ó%?ÀÑ%BÐ$CÐDˆÜÑK¸R¿[¹[¼]ÓKÓKˆð 	�‰�O T¨MÑ%9Ô:Ø�‰�F˜D 7§?¡?Ñ2Ô3Ø�‰�J ¤}°R·[±[Ó'AÑ AÔBØ�‰�H˜fÔ%à�{‰{˜5×!Ñ!Ø�K‰K˜˜sÔ#ð 	�‰˜× ñ  Nô$ Ô(¬¯©¯©°d¸MÓ)JÓKÓL€Kô ‹5€DØÔ&ˆØ�8‰8�D‹>˜TÓ!ÜÐ0°4·8±8¸D³>ÑAÓBÐBØ�‰�—‘˜$“Ö ñ 'ô ×!Ò! +Ó.€GØ‡N�N”;×&Ò& zÓ2Ô3ØˆA�J×Ñ”f˜XÑ+LÑMÔNØ‡N�N”;×&Ò& }Ó5Ô6ØˆA�J×Ñ”f˜[Ñ.UÑVÔWä�ÔØ€Nr8   c                 ó–  • [        U 5      S:”  aº  U R                  =(       d    SR                  5       S-   U-   S-   U l        U  H  n[        X!S-   5        M     U SS  H4  nUR                  =(       d    SR                  5       S-   U-   S-   Ul        M6     U S   R                  =(       d    SR                  5       S-   U-   U S   l        gg)zê
Helper for ``build_index()``: Given an XML ``ElementTree``, modify it
(and its descendents) ``text`` and ``tail`` attributes to generate
an indented tree, where each nested element is indented by 2
spaces with respect to its parent.
r   rO   rÖ   r]  Nr   )rÝ   rL  ra  rœ  Útail)r?   r÷   rd   s      r5   rœ  rœ  	  s´   € ô ˆ3ƒx�!ƒ|Ø—H‘H—N ×)Ñ)Ó+¨dÑ2°VÑ;¸dÑBˆŒÛˆEÜ˜¨™}Ö-ñ à˜˜"“XˆEØŸ*™*×*¨×1Ñ1Ó3°dÑ:¸VÑCÀdÑJˆEŽJñ à˜B™Ÿ™×*¨×1Ñ1Ó3°dÑ:¸VÑCˆˆB‰�ð r8   c                 ó€  ^• [         R                  R                  [         R                  R                  U5      S   5      S   mU R	                  S5      T:w  a*  [        SR                  U R	                  S5      T5      5      e[        U4S jUR                  5        5       5      (       a  [        ST< ST< S35      eg	)
zf
Helper for ``build_index()``: Perform some checks to make sure that
the given package is consistent.
r   r   r   z&package identifier mismatch ({} vs {})c              3   ól   >#   • U  H)  oT:g  =(       a    UR                  TS -   5      (       + v •  M+     g7f©r   N©rø  ©r#  r   Úuids     €r5   r$  Ú!_check_package.<locals>.<genexpr>9	  s+   øé € Ð
VÊÀ�C‰K×: §¡°°c±	Ó :Ô:Ô:Êùs   ƒ14úZipfile ú..zip does not expand to a single subdirectory r   N)	r(   r)   r*   r+   rc   r  ré   r(  Únamelist)rž  ÚzipfilenamerŒ  rª  s      @r5   Ú_check_packager°  ,	  s�   ø€ ô �'‰'×
Ñ
œ2Ÿ7™7Ÿ=™=¨Ó5°aÑ8Ó
9¸!Ñ
<€CØ‡{�{�4Ó˜CÓÜØ4×;Ñ;¸G¿K¹KÈÓ<MÈsÓSó
ð 	
ô
 Ô
VÈÏÉÌÓ
V×VÑVÝã"%£sð,ó
ð 	
ð Wr8   c                 ó‚  • [         R                  " SSSU /[         R                  [         R                  S9nUR                  5       u  p#UR                  S:w  d  U(       d  U(       dG  [        S[        R                  R                  U 5      S   < S[        R                  " U5      < 35      eUR                  5       S	   $ )
zƒ
Helper for ``build_index()``: Calculate the subversion revision
number for a given file (by using ``subprocess`` to run ``svn``).
Úsvnrâ   z-v)r†  rÄ  r   z#Error determining svn_revision for r   r  r3  )Ú
subprocessÚPopenÚPIPEÚcommunicateÚ
returncoder  r(   r)   r+   rç   rè   )r-   r”  r†  rÄ  s       r5   Ú_svn_revisionr¸  A	  s”   € ô
 	×ÒØ	�˜$ Ð)Ü�‰Ü�‰ñ	€Að
 —}‘}“Ñ€VØ‡|�|�qÓžF®&Ýä�w‰w�}‰}˜XÓ& qÔ)¬8¯=ª=¸Õ+@ðBó
ð 	
ð �<‰<‹>˜!ÑÐr8   c              #   ó  #   • [         R                  " U 5       Hl  u  pnU H`  nUR                  S5      (       d  M  [         R                  R	                  X5      n[
        R                  " U5      R                  5       v •  Mb     Mn     g7f)z‚
Helper for ``build_index()``: Yield a list of ElementTree.Element
objects, each holding the xml for a single package collection.
ú.xmlN)r(   r„  rD  r)   r,   r   r=   r’  )r„  ÚdirnameÚ_subdirsr  r-   Úxmlfiles         r5   r™  r™  T	  se   é € ô
 %'§G¢G¨D¦MÑ ˆ˜5ÛˆHØ× Ñ  ×(Ó(ÜŸ'™'Ÿ,™, wÓ9�Ü!×'Ò'¨Ó0×8Ñ8Ó:Ô:ó ò %2ùs   ‚6B
¼AB
c           
   #   ó  ^#   • SSK Jn  / n[        R                  " U 5       GHü  u  p4nSR	                  U" X5      5      nU GHÅ  nUR                  S5      (       Ga  [        R                  R	                  X75      nUSS S-   n	 [        R                  " U	5      n
 [        R                  " U5      R                  5       n[        R                  R                  USS 5      S
   mUR                  S5      T:w  a#  [        SUR                  S5      < ST< S35      e[!        U4S jU
R#                  5        5       5      (       a  [        ST< ST< S35      eXÊU4v •  GM   UR                  S5      (       d  GM9  [        R                  R%                  U5      S   n[        R                  R	                  X=S-   5      n[        R                  R'                  U5      (       a  GM¤  [(        R*                  " U SUS-    SU S3SS9  GMÈ      UR-                  S5        GMÿ     g! [         a  n[        SU	< S	U 35      UeSnAff = f! [         a  n[        SU< S	U 35      UeSnAff = f! [         a     GMZ  f = f7f)ab  
Helper for ``build_index()``: Yield a list of tuples
``(pkg_xml, zf, subdir)``, where:
  - ``pkg_xml`` is an ``ElementTree.Element`` holding the xml for a
    package
  - ``zf`` is a ``zipfile.ZipFile`` for the package's contents.
  - ``subdir`` is the subdirectory (relative to ``root``) where
    the package was found (e.g. 'corpora' or 'grammars').
r   )Ú
_path_fromr   rº  Nr\  r6  zError reading file z!
r   r   zpackage identifier mismatch (z vs rÙ   c              3   ón   >#   • U  H*  nUT:g  =(       a    UR                  TS -   5      (       + v •  M,     g7fr§  r¨  r©  s     €r5   r$  Ú!_find_packages.<locals>.<genexpr>‡	  s4   øé € ð â -˜ð ˜S‘[×C¨¯©¸¸s¹Ó)CÔ%CÔCÚ -ùs   ƒ25r¬  r­  z exists, but z' cannot be found! This could mean that z can not be downloaded.r3  )Ú
stacklevelz.svn)Únltk.corpus.reader.utilr¿  r(   r„  r,   rD  r)   rˆ  r‰  r£   r  r   r=   r’  r+   rc   r(  r®  r*   r9  ÚwarningsÚwarnr:  )r„  r¿  r]   r»  Úsubdirsr  Úrelpathr-   Úxmlfilenamer¯  rŒ  r  rž  Úresourcenamerª  s                 @r5   r—  r—  `	  sT  øé € õ 3ð €HÜ#%§7¢7¨4§=Ñˆ˜%Ø—(‘(™: dÓ4Ó5ˆÜˆHØ× Ñ  ×(Ò(Ü Ÿg™gŸl™l¨7Ó=�Ø)¨#¨2Ð.°Ñ7�ðYÜ Ÿš¨Ó5�BðYÜ)×/Ò/°Ó<×DÑDÓF�Gô
 —g‘g—m‘m K°°Ð$4Ó5°aÑ8�Ø—;‘;˜tÓ$¨Ó+Ý$à$+§K¡K°Ö$5³sð<óð ô ô à "§¡¤ó÷ ñ õ %ã58»#ð?óð ð
  7Ð*Õ*à×"Ñ" 6×*Ô*ä!Ÿw™w×/Ñ/°Ó9¸!Ñ<�Ü Ÿg™gŸl™l¨7À6Ñ4IÓJ�Ü—w‘w—~‘~ k×2Ô2Ü—M’MØ#˜* M°,ÀÑ2GÐ1Hð I0Ø0<¨~Ð=TðVà#$õñO ð\	Ø�N‰N˜6×"òc $1øô !ó YÜ$Ð':¸;¹/ÈÈQÈCÐ%PÓQÐWXÐXûðYûô !ó YÜ$Ð':¸;¹/ÈÈQÈCÐ%PÓQÐWXÐXûðYûôL ó 	Ûð	üsz   ƒBJ ÂH$Â$I	Ã B6J Å;A&J Ç&&J ÈI.ÈJ È$
IÈ.IÉIÉJ É	
I+ÉI&É&I+É+J É.
I=É8J É<I=É=J c                  ó>   • [        [        5      R                  5         g rD   )rÁ  Ú_downloaderrÂ  r:   r8   r5   Údownload_shellrÌ  ¯	  s   € Ü”KÓ ×$Ñ$Õ&r8   c                  ó>   • [        [        5      R                  5         g rD   )r¿  rË  rÀ  r:   r8   r5   Údownload_guirÎ  ³	  s   € Ü”+Ó×'Ñ'Õ)r8   c                  ó,   • [         R                  5         g rD   )rË  r1   r:   r8   r5   r1   r1   ·	  s   € Ü×ÑÕr8   Ú__main__)ÚOptionParserz-dz--dirÚdirz!download package to directory DIRÚDIR)Údestr°  Úmetavarz-qz--quietrc  Ú
store_truezwork quietly)rÔ  ÚactionÚdefaultr°  z-fz--forcer  z"download even if already installedz-ez--exit-on-errorrd  zexit if an error occursz-uz--urlrÂ   ÚNLTK_DOWNLOAD_URLzdownload server index url)rÔ  rØ  r°  )rÂ   )r  r°   rc  r  rd  )r°   rc  r  rd  ry  r^  )]rV   r_  r>  r(   Úshutilr³  r±  rç   r  r�  rÄ  rˆ  Úhashlibr   Ú	xml.etreer   r¾  Útkinterr   r   r   r   r	   r
   r   r   r   r=  r   Únltk.draw.tabler   Únltk.draw.utilr   r>  r  Úurllib.errorr   r   Úurllib.requestr   r�  r   rZ   rk   rm   rv   rz   rƒ   rˆ   rŒ   r‘   r•   r™   r�   r¡   r§   r­   r´   rÁ  r¿  r‚  r~  r/   rE  r¢  rœ  r°  r¸  r™  r—  rË  rb  rÌ  rÎ  r1   rR   ÚoptparserÑ  ÚparserÚ
add_optionr®  rc   Ú
parse_argsrÒ  rá  rÂ   Ú
downloaderÚpkg_idrÒ  rc  r  rd  Úrvr:   r8   r5   Ú<module>ré     s_  ðñ<ð~Yót Û Û 	Û Û Û 
Û Û Û Û Û Ý Ý !ð	Ø€GßW×WÕWÝ,å%Ý'÷
 -Ý "ã ÷Z(ñ Z(÷z&+ñ &+÷\!ñ !ô
%Ð.ô %ô%Ð/ô %ôÐ+ô ôÐ,ô ôÐ,ô ôÐ-ô ôÐ)ô ôÐ*ô ôÐ'ô ôÐ$ô ô#Ð$ô #ô!Ð'ô !ô)Ð0ô )÷_
(ñ _
(÷Dbñ b÷JO:ñ O:òp ò"ô%ôò4CôLDò 
ò*ò&	;òAñV ‹l€Ø×Ñ€ò'ò*òð ˆzÔÝ%á‹^€FØ
×ÑØØØØ0Øð ñ ð ×ÑØØØØØØð ñ ð ×ÑØØØØØØ1ð ñ ð ×ÑØØØØØØ&ð ñ ð ×ÑØØØØ—
‘
—‘Ð2Ó3Ø(ð ñ ð ×'Ñ'Ó)�O€Wˆdá¨W×-EÑ-EÑF€JæÛˆFØ×$Ñ$Ø!Ø$Ÿ[™[Ø—m‘mØ—m‘mØ%×3Ñ3ð %ð ˆBð �U�{˜w×4×4Ñ4Ùò ð 	×ÑØ Ÿ™Ø—-‘-Ø—-‘-Ø!×/Ñ/ð	 	ò 	
ðw øðKH ó Ø€GØƒHðús   ½*K Ë
K'Ë&K'