Ë
    i›¾jÓ;  ã                  ó  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
mZ d dlZd dlmZmZ d dlmZmZ d dlmZmZmZ 	  e«       Z G d„ d	«      Z G d
„ de«      Zdd„Z G d„ de«      Zdd„Zddd„Zd„ Zdd„Z dd„Z!dd„Z"dd„Z#y)é    )ÚannotationsN)ÚPath)ÚLock)Ú
networkingÚsettings)ÚBPETokenizerÚSentencePieceTokenizer)ÚerrorÚinfoÚwarningc                  óâ   — e Zd ZU dZded<   ded<   ded<   ded<   ded<   ded	<   d
ed<   ded<   d
ed<   ded<   d
ed<   ded<   d
ed<   d
ed<   d
ed<   d
ed<   ded<   d„ Zdd„Zd„ Zd„ Zd„ Z	d„ Z
y)ÚIPackagea­  A package, can be either installed locally or available from a remote package index.

    Attributes:
        package_path: The path to the installed package. None if not installed.

        package_version: The version of the package.

        argos_version: The version of Argos Translate the package is intended for.

        from_code: The code of the language the package translates from.

        from_name: Human readable name of the language the package translates from.

        to_code: The code of the language the package translates to.

        to_name: Human readable name of the language the package translates to.

        links: A list of links to download the package


    Packages are a zip archive of a directory with metadata.json
    in its root the .argosmodel file extension. By default, an
    OpenNMT CTranslate2 directory named model/ is expected in the root directory
    along with a sentencepiece model named sentencepiece.model or a bpe.model
    for tokenizing and Stanza data for sentence boundary detection.
    Packages may also optionally have a README.md in the root.

    from_code and to_code should be ISO 639 codes if applicable.

    Example metadata.json
    {
        "package_version": "1.0",
        "argos_version": "1.0",
        "from_code": "en",
        "from_name": "English",
        "to_code": "es",
        "to_name": "Spanish",
        "links": ["https://example.com/en_es.argosmodel"]
    }
    ÚstrÚcoder   Úpackage_pathÚpackage_versionÚargos_versionÚ	from_codeÚ	from_nameÚlistÚ
from_codesÚto_codeÚto_codesÚto_nameÚlinksÚtypeÚ	languagesÚdependenciesÚsource_languagesÚtarget_languagesz	list[str]c                óâ  — |j                  d«      | _        |j                  dd«      | _        |j                  dd«      | _        |j                  d«      | _        |j                  dd«      | _        |j                  dt        «       «      | _        |j                  d«      | _        |j                  d	t        «       «      | _	        |j                  d
d«      | _
        |j                  dt        «       «      | _        |j                  dd«      | _        |j                  dt        «       «      | _        |j                  dt        «       «      | _        |j                  dt        «       «      | _        |j                  dt        «       «      | _        |j                  dd«      | _        | j                  €| j
                  �[t%        «       }| j                  �| j                  |d<   | j
                  �| j
                  |d<   | j                  j'                  |«       | j                  €| j                  �[t%        «       }| j                  �| j                  |d<   | j                  �| j                  |d<   | j                  j'                  |«       | xj                  t)        j*                  | j                  «      z  c_        | xj                   t)        j*                  | j                  «      z  c_        y)zvLoads package metadata from a JSON object.

        Args:
            metadata: A json object from json.load

        r   r   Ú r   r   r   r   r   r   r   r   r   Ú	translater   r   r   r    Útarget_prefixNÚname)Úgetr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r$   ÚdictÚappendÚcopyÚdeepcopy)ÚselfÚmetadataÚ	from_langÚto_langs       ú`/home/spazio/kingdom_calls/work5/transenv/lib/python3.12/site-packages/argostranslate/package.pyÚload_metadata_from_jsonz IPackage.load_metadata_from_jsond   s-  € ð —L‘L Ó(ˆŒ	Ø'Ÿ|™|Ð,=¸rÓBˆÔØ%Ÿ\™\¨/¸2Ó>ˆÔØ!Ÿ™ kÓ2ˆŒØ!Ÿ™ k°2Ó6ˆŒØ"Ÿ,™, |´T³VÓ<ˆŒØ—|‘| IÓ.ˆŒØ Ÿ™ Z´³Ó8ˆŒØ—|‘| I¨rÓ2ˆŒØ—\‘\ '¬4«6Ó2ˆŒ
Ø—L‘L ¨Ó5ˆŒ	Ø!Ÿ™ k´4³6Ó:ˆŒØ$ŸL™L¨¼»Ó@ˆÔØ (§¡Ð-?ÄÃÓ HˆÔØ (§¡Ð-?ÄÃÓ HˆÔØ%Ÿ\™\¨/¸2Ó>ˆÔð �>‰>Ð%¨¯©Ð)CÜ›ˆIØ�~‰~Ð)Ø$(§N¡N�	˜&Ñ!Ø�~‰~Ð)Ø$(§N¡N�	˜&Ñ!Ø×!Ñ!×(Ñ(¨Ô3Ø�<‰<Ð# t§|¡|Ð'?Ü“fˆGØ�|‰|Ð'Ø"&§,¡,�˜‘Ø�|‰|Ð'Ø"&§,¡,�˜‘Ø×!Ñ!×(Ñ(¨Ô1Ø×Ò¤§¡¨t¯~©~Ó!>Ñ>ÕØ×Ò¤§¡¨t¯~©~Ó!>Ñ>Öó    c                ó   — t        «       ‚)ú­Returns the text of the README.md in this package.

        Returns:
            The text of the package README.md, None
                if README.md can't be read

        ©ÚNotImplementedError©r+   s    r/   Ú
get_readmezIPackage.get_readme�   s   € ô "Ó#Ð#r1   c                ó   — t        «       ‚©Nr4   r6   s    r/   Úget_descriptionzIPackage.get_description™   s   € Ü!Ó#Ð#r1   c                óB  — | j                   |j                   k(  xr… | j                  |j                  k(  xrj | j                  |j                  k(  xrO | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j
                  |j
                  k(  S r9   )r   r   r   r   r   r   )r+   Úothers     r/   Ú__eq__zIPackage.__eq__œ   sŽ   € à× Ñ  E×$9Ñ$9Ñ9ò .Ø×"Ñ" e×&9Ñ&9Ñ9ò.à—‘ %§/¡/Ñ1ò.ð —‘ %§/¡/Ñ1ò.ð —‘ §¡Ñ-ò	.ð
 —‘ §¡Ñ-ð	
r1   c                óà   — t        | j                  «      dkD  r>t        | j                  «      dkD  r&dj                  | j                  | j                  «      S | j                  r| j                  S y)Nr   z{} -> {}r"   )Úlenr   r   Úformatr   r6   s    r/   Ú__repr__zIPackage.__repr__¦   sR   € Üˆt�~‰~Ó Ò"¤s¨4¯<©<Ó'8¸1Ò'<Ø×$Ñ$ T§^¡^°T·\±\ÓBÐBØ�YŠYØ—9‘9ÐØr1   c                ó8   — t        | «      j                  dd«      S )Nz->u   â†’)ÚreprÚreplacer6   s    r/   Ú__str__zIPackage.__str__­   s   € Ü�D‹z×!Ñ! $¨Ó.Ð.r1   N)Úreturnr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r0   r7   r:   r=   rA   rE   © r1   r/   r   r   (   s†   … ñ'ðR ƒIØÓØÓØÓØƒNØƒNØÓØƒLØƒNØƒLØƒKØ
ƒIØƒOØÓØÓØÓØÓò)?óV$ò$ò
òó/r1   r   c                  ó,   — e Zd ZdZdd„Zd„ Zdd„Zd„ Zy)	ÚPackagezAn installed packagec                ó¸  — t        |«      t        k(  rt        |«      }|| _        |dz  }|j	                  «       st        dt        |«      z   dz   «      ‚t        |«      5 }t        j                  |«      }| j                  |«       ddd«       	 |dz  }|dz  }|dz  }|j	                  «       r|| _
        n7|j	                  «       r|| _
        n|j	                  «       r|| _
        nd| _
        |dz  }|d	z  }	|j	                  «       rt        |«      | _        y|	j	                  «       r't        |	| j                  | j                  «      | _        yy# 1 sw Y   ŒËxY w)
zwCreate a new Package from path.

        Args:
            package_path: Path to installed package directory.

        zmetadata.jsonzError opening package at z no metadata.jsonNÚminisbdÚstanzaÚspacyzsentencepiece.modelz	bpe.model)r   r   r   r   ÚexistsÚFileNotFoundErrorÚopenÚjsonÚloadr0   Úpackaged_sbd_pathr	   Ú	tokenizerr   r   r   )
r+   r   Úmetadata_pathÚmetadata_filer,   Úminisbd_packageÚstanza_packageÚspacy_packageÚsp_model_pathÚbpe_model_paths
             r/   Ú__init__zPackage.__init__´   sT  € ô �Ó¤Ò$ä Ó-ˆLØ(ˆÔØ$ Ñ6ˆØ×#Ñ#Ô%Ü#Ø+¬c°-Ó.@Ñ@ÐCVÑVóð ô �-Ó ð 	3 MÜ—y‘y Ó/ˆHØ×(Ñ(¨Ô2÷	3ð 	mØ&¨Ñ2ˆØ%¨Ñ0ˆØ$ wÑ.ˆà×!Ñ!Ô#Ø%4ˆDÕ"Ø×"Ñ"Ô$Ø%3ˆDÕ"à× Ñ Ô"à%2ˆDÕ"à%)ˆDÔ"à$Ð'<Ñ<ˆØ%¨Ñ3ˆà×ÑÔ!Ü3°MÓBˆD�NØ×"Ñ"Ô$Ü)¨.¸$¿.¹.È$Ï,É,ÓWˆD�Nð %÷3	3ð 	3ús   Á'EÅEc                ó~  — t        «       D ]°  }|j                  | j                  k(  sŒ|j                  | j                  k(  sŒ7t        j                  j                  |j                  «      t        j                  j                  | j                  «      kD  sŒ‹|j                  «       }t        | «       t        |«       Œ² y)z3Update the package if a newer version is available.N)
Úget_available_packagesr   r   Ú	packagingÚversionÚparser   ÚdownloadÚ	uninstallÚinstall_from_path)r+   Úavailable_packageÚnew_package_paths      r/   ÚupdatezPackage.updateà   s—   € ä!7Ó!9ò 
	8Ðà!×+Ñ+¨t¯~©~Ó=Ø%×-Ñ-°·±Ó=ä×$Ñ$×*Ñ*Ø%×5Ñ5óä×%Ñ%×+Ñ+¨D×,@Ñ,@ÓAóBð (9×'AÑ'AÓ'CÐ$Ü˜d”OÜ%Ð&6Õ7ñ
	8r1   c                ó¦   — | j                   dz  }|j                  «       syt        |d«      5 }|j                  «       cddd«       S # 1 sw Y   yxY w)r3   z	README.mdNÚr)r   rS   rU   Úread)r+   Úreadme_pathÚreadme_files      r/   r7   zPackage.get_readmeî   sP   € ð ×'Ñ'¨+Ñ5ˆØ×!Ñ!Ô#ØÜ�+˜sÓ#ð 	& {Ø×#Ñ#Ó%÷	&÷ 	&ò 	&ús   ­AÁAc                ó"   — | j                  «       S r9   )r7   r6   s    r/   r:   zPackage.get_descriptionü   s   € Ø�‰Ó Ð r1   N)r   r   )rF   z
str | None)rG   rH   rI   rJ   ra   rl   r7   r:   rL   r1   r/   rN   rN   ±   s   „ Ùó*XòX8ó&ó!r1   rN   c                ó<  — t         5  t        j                  | «      st        d«      ‚t        j                  | d«      5 }|j                  t        j                  ¬«       ddd«       ddlm	} |j                  «        ddd«       y# 1 sw Y   Œ(xY w# 1 sw Y   yxY w)z‡Install a package file (zip archive ending in .argosmodel).

    Args:
        path: The path to the .argosmodel file to install.

    z/Not a valid Argos Model (must be a zip archive)rn   )ÚpathNr   ©Úget_installed_languages)Úpackage_lockÚzipfileÚ
is_zipfileÚ	ExceptionÚZipFileÚ
extractallr   Úpackage_data_dirÚargostranslate.translaterv   Úcache_clear)rt   Úzipfrv   s      r/   ri   ri      s†   € ô 
ñ 	.Ü×!Ñ! $Ô'ÜÐMÓNÐNÜ�_‰_˜T 3Ó'ð 	<¨4Ø�O‰O¤×!:Ñ!:ˆOÔ;÷	<õ 	Eà×+Ñ+Ô-÷	.ð 	.÷	<ð 	<ú÷	.ð 	.ús"   ‡7B¾!BÁBÂB	ÂBÂBc                  ó*   — e Zd ZdZd„ Zdd„Zd„ Zd„ Zy)ÚAvailablePackagez1A package available for download and installationc                ó&   — | j                  |«       y)z5Creates a new AvailablePackage from a metadata objectN)r0   )r+   r,   s     r/   ra   zAvailablePackage.__init__  s   € à×$Ñ$ XÕ.r1   c                óD  — t        | «      dz   }	 t        j                  |z  }|j                  «       s`t	        j
                  | j                  «      }|€t        dt        | «      › �«      ‚t        |d«      5 }|j                  |«       ddd«       |S |S # 1 sw Y   |S xY w)z3Downloads the AvailablePackage and returns its pathz.argosmodelNzDownload failed for Úwb)Úargospm_package_namer   Údownloads_dirrS   r   Úget_fromr   rz   r   rU   Úwrite)r+   ÚfilenameÚfilepathÚdataÚfs        r/   rg   zAvailablePackage.download  s—   € ä'¨Ó-°Ñ=ˆð	ô ×)Ñ)¨HÑ4ˆØ�‰Ô Ü×&Ñ& t§z¡zÓ2ˆDØˆ|ÜÐ"6´s¸4³y°kÐ BÓCÐCÜ�h Ó%ð ¨Ø—‘˜”÷àˆˆxˆ÷àˆús   Á7BÂBc                óZ   — | j                  «       }t        |«       |j                  «        y r9   )rg   ri   Úunlink)r+   Údownload_paths     r/   ÚinstallzAvailablePackage.install5  s!   € ØŸ™›ˆÜ˜-Ô(Ø×ÑÕr1   c                óN   — dj                  | j                  | j                  «      S )Nu	   {} â†’ {})r@   r   r   r6   s    r/   r:   z AvailablePackage.get_description:  s   € Ø×!Ñ! $§.¡.°$·,±,Ó?Ð?r1   N)rF   r   )rG   rH   rI   rJ   ra   rg   r‘   r:   rL   r1   r/   r‚   r‚     s   „ Ù;ò/óò6ó
@r1   r‚   c                ó¤   — t         5  t        j                  | j                  «       ddlm} |j                  «        ddd«       y# 1 sw Y   yxY w)zLUninstalls a package.

    Args:
        pkg: The package to uninstall

    r   ru   N)rw   ÚshutilÚrmtreer   r~   rv   r   )Úpkgrv   s     r/   rh   rh   >  s@   € ô 
ñ .Ü�‰�c×&Ñ&Ô'õ 	Eà×+Ñ+Ô-÷.÷ .ñ .ús   ‡6AÁAc                óø   — t         5  g }| €t        j                  n| }|D ]B  }|j                  «       D ]-  } | j	                  «       sŒ|j                  t        | «      «       Œ/ ŒD |cddd«       S # 1 sw Y   yxY w)ap  Return a list of installed Packages

    Looks for packages in <home>/.argos-translate/local/share/packages by
    default. Will also look in the directory specified
    in the ARGOS_PACKAGE_DIR environment variable
    if it is set.

    Args:
        path: Path to look for installed package directories in.
            Defaults to the path in settings module.

    N)rw   r   Úpackage_dirsÚiterdirÚis_dirr(   rN   )rt   Ú	to_returnÚpackages_pathÚ	directorys       r/   Úget_installed_packagesrž   N  sy   € ô 
ñ Øˆ	Ø15°œ×-Ò-À4ˆØ&ò 	4ˆIØ!×)Ñ)Ó+ò 4�Ø—;‘;•=Ø×$Ñ$¤W¨T£]Õ3ñ4ð	4ð ÷÷ ò ús   ‡?A0ÁA0Á0A9c                 óˆ  — t         5  	 t        j                  j                  t        j
                  «      } | j                  «       }t        t        j                  d«      5 }|j                  |«       ddd«       ddd«       y# t        $ r}t        |«       Y d}~ddd«       yd}~ww xY w# 1 sw Y   Œ;xY w# 1 sw Y   yxY w)zDownloads remote package indexNr…   )rw   ÚurllibÚrequestÚurlopenr   Úremote_package_indexrz   r
   ro   rU   Úlocal_package_indexr‰   )ÚresponseÚerrrŒ   r�   s       r/   Úupdate_package_indexr§   e  s£   € ä	ñ ð	Ü—~‘~×-Ñ-¬h×.KÑ.KÓLˆHð �}‰}‹ˆÜ”(×.Ñ.°Ó5ð 	¸Ø�G‰G�DŒM÷	÷ð øô ò 	Ü�#ŒJÛ÷ð ûð	ú÷	ð 	ú÷ð úsK   ‡B8‰-B¶*B8Á B,Á2B8Â	B)ÂB$ÂB8Â$B)Â)B8Â,B5	Â1B8Â8Cc                 ó"  — 	 t        t        j                  «      5 } t        j                  | «      }g }|D ]  }t        |«      }|j                  |«       Œ  	 |cddd«       S # 1 sw Y   yxY w# t        $ r t        «        t        «       cY S w xY w)z;Returns a list of AvailablePackages from the package index.N)
rU   r   r¤   rV   rW   r‚   r(   rT   r§   rc   )Ú
index_fileÚindexÚpackagesr,   Úpackages        r/   rc   rc   r  s�   € ð(Ü”(×.Ñ.Ó/ð 	°:Ü—I‘I˜jÓ)ˆEØˆHØ!ò )�Ü*¨8Ó4�Ø—‘ Õ(ð)ðð" ÷/	÷ 	ò 	ûô0 ò (ÜÔÜ%Ó'Ò'ð(ús.   ‚A. ›=A"Á	A. Á"A+Á'A. Á+A. Á.BÂBc                ó’   — | j                   }| j                  r.| j                  r"|d| j                  z   dz   | j                  z   z  }|S )zˆGets argospm name of an IPackage.

    Args:
        The package to get the name of.

    Returns:
        Package name for argospm
    ú-Ú_)r   r   r   )r–   r›   s     r/   r†   r†   “  sA   € ð —‘€IØ
‡}‚}˜ŸšØ�S˜3Ÿ=™=Ñ(¨3Ñ.°·±Ñ<Ñ<ˆ	ØÐr1   c                ó    ‡ ‡— t        «       }	 t        t        ˆ ˆfd„|«      «      }t	        |j                  «       «       y# t        $ r Y yw xY w)ax  Installs the necessary package to translate between a pair of languages

    Args:
        from_code (str): The ISO 639 code for the language being translated from
        to_code (str): The ISO 639 code for the language being translated to

    Returns:
        True if the package was installed successfully,
        False if the installation failed or was not possible
    c                óD   •— | j                   ‰k(  xr | j                  ‰k(  S r9   )r   r   )Úxr   r   s    €€r/   ú<lambda>z3install_package_for_language_pair.<locals>.<lambda>±  s   ø€ ˜!Ÿ+™+¨Ñ2ÒK°q·y±yÀGÑ7K€ r1   FT)rc   ÚnextÚfilterÚStopIterationri   rg   )r   r   Úavailable_packagesÚpackage_to_installs   ``  r/   Ú!install_package_for_language_pairr¹   ¢  sW   ù€ ô 0Ó1ÐðÜ!ÜÜKØ"óó
Ðô Ð(×1Ñ1Ó3Ô4Øøô	 ò Ùðús   ŽA Á	AÁAc                 ó,   — t        d«       t        «       S )z*Deprecated 1.2, use get_available_packageszUUsing deprecated function load_available_packages, use get_available_packages instead)r   rc   rL   r1   r/   Úload_available_packagesr»   ¼  s   € äØ_ôô "Ó#Ð#r1   )rt   r   )r–   rN   r9   )rt   r   rF   úlist[Package])rF   zlist[AvailablePackage])r–   r   rF   r   )r   r   r   r   rF   Úbool)rF   r¼   )$Ú
__future__r   r)   rV   r”   Úurllib.requestr    rx   Úpathlibr   Ú	threadingr   Úpackaging.versionrd   Úargostranslater   r   Úargostranslate.tokenizerr   r	   Úargostranslate.utilsr
   r   r   rw   r   rN   ri   r‚   rh   rž   r§   rc   r†   r¹   r»   rL   r1   r/   ú<module>rÆ      sŽ   ðÝ "ã Û Û Û Û Ý Ý ã ç /ß Iß 5Ñ 5ðñ( ‹v€÷F/ñ F/ôRL!ˆhô L!ó^.ô&(@�xô (@óV.ô ò.
ó(óBóô4$r1   