o
    1Îjà  ã                   @   sž   d dl Z d dlmZ ddlmZ ddlmZmZ ddlm	Z	m
Z
mZ g d¢Zd	d
„ ZG dd„ deƒZejZejZ						ddd„Zddd„Zddd„ZdS )é    N)ÚOrderedDicté   )Úloggingé   )Úget_all_repo_namesÚget_repo_meta)Úbuild_repo_group_getterÚbuild_repo_group_installerÚbuild_repo_instance)Úset_parent_dirsÚsetupÚis_initializedÚ
initializeÚget_versionsc                 C   s:   g }| D ]}t |ƒ}| t| dg ¡ƒ¡ | |¡ q|S )NÚrequires)r   ÚextendÚ_parse_repo_depsÚgetÚappend)ÚreposÚretÚ	repo_nameZ	repo_meta© r   úZ/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddlex/repo_manager/core.pyr   #   s   r   c                   @   s`   e Zd ZdZdZdZedd„ ƒZedd„ ƒZedd„ ƒZ	edd	„ ƒZ
ed
d„ ƒZedd„ ƒZdS )Ú_GlobalContextNc                 C   s   || _ || _dS )r   N)ÚREPO_PARENT_DIRÚPDX_COLLECTION_MOD)ÚclsZrepo_parent_dirZpdx_collection_modr   r   r   r   1   s   
z_GlobalContext.set_parent_dirsc                 C   s   t || j| jƒS )r
   )r
   r   r   )r   r   r   r   r   r
   7   s   
ÿz"_GlobalContext.build_repo_instancec                 C   s
   | j duS )r   N©ÚREPOS©r   r   r   r   r   >   ó   
z_GlobalContext.is_initializedc                 C   s
   g | _ dS )r   Nr   r    r   r   r   r   C   r!   z_GlobalContext.initializec                 C   s    |   ¡ s|  ¡  | j |¡ dS )Úadd_repoN)r   r   r   r   )r   Úrepor   r   r   r"   H   s   z_GlobalContext.add_repoc                 C   s4   t |ƒdkr|  ¡ s|  ¡  |D ]}|  |¡ qdS )Ú	add_reposr   N)Úlenr   r   r"   )r   r   r#   r   r   r   r$   O   s
   ÿz_GlobalContext.add_repos)Ú__name__Ú
__module__Ú__qualname__r   r   r   Úclassmethodr   r
   r   r   r"   r$   r   r   r   r   r   ,   s     




r   Fc              	   C   sÂ  |r|rt  d¡ tƒ ‚ttt| ƒƒƒ} g }| D ]}t |¡}	| |	¡ qg }
g }|D ]}}	|	j	}|	 
¡ rž|rF|
 |¡ t  d|	j	› d¡ q+t  d|	j	› d¡ |rUd}n#tj ¡ r_t  d¡ ztƒ }W n tyq   t  d¡ ‚ w | ¡ d	v }|r“|
 |¡ |	 ¡  t  d
|	j	› d¡ | |	¡ q+t  d|	j	› d¡ q+|
 |	¡ | |	¡ q+g }|D ]^}	|	j	}|	 ¡ rt  d|	j	› d¡ ||
v }|rÊd}n#tj ¡ rÔt  d¡ ztƒ }W n tyæ   t  d¡ ‚ w | ¡ d	v }|rût|	ƒ ¡  | |	¡ q­t  d|	j	› d¡ q­| |	¡ q­t|Ž }t|Ž }t|ƒdkr8t  dtdd„ |D ƒƒ› d¡ |jd|d t  d¡ nt  d¡ |sLt  d¡ t  | ¡ ¡ t  d¡ |jd|||d t  d¡ dS )r   a  The `--update_repos` and `--use_local_repos` should not be True at the same time. They are global setting for all repos. `--update_repos` means that update all repos to sync with remote, and `--use_local_repos` means that don't update when local repo is existing.z!We will use the existing repo of z  and the repo will be reinstall.zExisting of z repo.TzShould we remove it (y/n)?z¤Unable to read from stdin. Please set `--use_local_repos` to                         True or False to apply a global setting for using existing or re-getting repos.)ÚyÚyesz	Existing z repo has been removed.Ú.zExisting installation of z
 detected.zShould we uninstall it (y/n)?zŒUnable to read from stdin. Please set `reinstall` to                         True or False to apply a global setting for reinstalling repos.z)We will use the existing installation of r   z#Now download and update the repos: c                 s   s    | ]}|j V  qd S ©N)Úname)Ú.0r#   r   r   r   Ú	<genexpr>¾   s   € zsetup.<locals>.<genexpr>)ÚforceÚplatformzAll repos are existing.z#No repo need to download or update.zDependencies are listed below:zNow installing the packages...F)Úforce_reinstallÚno_depsÚconstraintsÚdeps_to_replacezAll packages are installed.N)r   ÚerrorÚ	ExceptionÚlistÚsetr   r   r
   r   r.   Zcheck_repo_exitingÚwarningÚsysÚstdinÚisattyÚinputÚEOFErrorÚlowerÚremoveZcheck_installationr	   Ú	uninstallr   r%   Úinfor   Zget_depsÚinstall)Ú
repo_namesr4   r5   r2   Zupdate_reposZuse_local_reposr6   r   r   r#   Zchanged_reposZrepos_to_getZremove_existingZrepos_to_installZ	reinstallZuninstall_existingÚgetterÚ	installerr   r   r   r   \   s²   
ÿ

ÿ


ÿû





ÿûÿÿ


ür   c                 C   s¨   t  ¡ rtdƒ‚| du rd}tƒ } nd}g }| D ]4}t d|› d¡ t  |¡}| ¡ }|r<t |› d¡ | |¡ q|rKt d|› d	|› d
¡ q	 qt  	|¡ dS )r   zDPDX has already been initialized. Reinitialization is not supported.NTFzNow initializing z...z is initialized.zFailed to initialize z. Please make sure z is properly installed.)
r   r   ÚRuntimeErrorr   r   Údebugr
   r   r   r$   )rF   Ztry_allr   r   r#   Úflagr   r   r   r   Ó   s,   ÿ
ÿr   c                 C   s<   | du rt ƒ } tƒ }| D ]}t |¡}| ¡ }|||< q|S )r   N)r   r   r   r
   Úget_version)rF   Zname2versionsr   r#   Úversionsr   r   r   r   ó   s   

r   )FNNFFNr-   )r<   Úcollectionsr   Úutilsr   Úmetar   r   r#   r   r	   r
   Ú__all__r   Úobjectr   r   r   r   r   r   r   r   r   r   Ú<module>   s&   		,
ù
w 