
    |-jA                        d dl Z d dlZd dlm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mZ ddlmZ ddlmZmZmZ dd	lmZmZmZ dd
l
mZmZmZmZmZ ddgZd Zd Zd Z  G d de!          Z" G d de!          Z# G d de!          Z$dS )    N)Requirement   )logging)download_and_extract)custom_open)install_packages'install_packages_from_requirements_fileuninstall_packages   )REPO_DIST_NAMESREPO_DOWNLOAD_BASEget_repo_meta)fetch_repo_using_gitinstall_external_depsremove_repo_using_rmreset_repo_using_gitswitch_working_dirbuild_repo_instancebuild_repo_group_installerc                 ,    t           } || g|R i |}|S )r   )PPRepository)	repo_nameargskwargsrepo_clsrepo_instances        Y/var/www/html/banglarbhumi/venv/lib/python3.11/site-packages/paddlex/repo_manager/repo.pyr   r   ,   s.     HHY888888M    c                  :    t          t          |                     S )r   )RepositoryGroupInstallerlistreposs    r   r   r   4   s    #DKK000r   c                  :    t          t          |                     S )build_repo_group_getter)RepositoryGroupGetterr!   r"   s    r   r%   r%   9   s     e---r   c                        e Zd ZdZ fdZd Zd Zd Zd ZddZ	d	 Z
d
 Zd Zd Zd ZddZd ZddZd Zd Z xZS )r   zh
    Installation, initialization, and PDX module import handler for a
    PaddlePaddle repository.
    c                    t                                                       || _        || _        t	          j        || j                  | _        t          | j                  | _        | j        d         | _	        | j        
                    dd           | _        | j        
                    dd           | _        |j        dz   | j        d         z   | _        | j        
                    dd          | _        d S )Ngit_path	dist_nameimport_name.pdx_pkg_namemain_req_filerequirements.txt)super__init__namerepo_parent_dirospjoinroot_dirr   metar)   getr*   r+   __name__pdx_mod_namer.   )selfr2   r3   pdx_collection_mod	__class__s       r   r1   zPPRepository.__init__D   s    	.$)<<!$),,		*-{D999===='#-	.0II 	 "Y]]?<NOOr   c                     |                                  sdS d| j        v r1t          j        | j                  t
          j        | j        d         <   |                                  dS )
initializeFpath_envT)check_installationr7   r4   abspathr6   osenvironget_pdxr;   s    r   r?   zPPRepository.initializeS   s[    &&(( 	5""03DM0J0JBJty,- 	tr   c                 Z    t          j        t          j        | j        d                    S )rA   
.installedr4   existsr5   r6   rF   s    r   rA   zPPRepository.check_installation_   s     z#(4=,??@@@r   c                 8   t          |d          5 }|                                }ddd           n# 1 swxY w Y   g }|D ]                                r                    d          r.t	          fd|D             d          }|r.||         dk    rY|                    | d||                     z|                               t          |d          5 }|                    d |D                        ddd           dS # 1 swxY w Y   dS )	replace_repo_depsrN#c              3   $   K   | ]
}|v |V  d S N ).0deplines     r   	<genexpr>z1PPRepository.replace_repo_deps.<locals>.<genexpr>l   s'      "Q"Q3SD[[3[[[["Q"Qr   Nonez==wc                     g | ]}|d z   S )
rQ   )rR   ls     r   
<listcomp>z2PPRepository.replace_repo_deps.<locals>.<listcomp>w   s    ===!QX===r   )r   	readlinesstrip
startswithnextappendopen
writelines)r;   deps_to_replacesrc_requirementsfilelinesexisting_depsdep_to_replacerT   s          @r   rL   zPPRepository.replace_repo_depsc   s   )3// 	%4NN$$E	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	+ 	+D::<<D 4??3// !"Q"Q"Q"Q/"Q"Q"QSWXXN +">2f<<!(()NN_^-LNN    $$T****"C(( 	?DOO==}===>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   377" DDDc                 Z    t          j        t          j        | j        d                    S )check_repo_exitingz.gitrI   rF   s    r   rj   zPPRepository.check_repo_exitingy   s     z#(4=&99:::r   Tc                    | j         d         r| j                             dd          }|rt          j        | j         d           t          | j                  5  	 dg}|rdg}ndg}t          ||           t          | j	        | j                   |r*d	}t          j        |          rt          j        |           n3# |r+d	}t          j        |          rt          j        |           w w w xY wd
d
d
           n# 1 swxY w Y   | j                             dg           D ]}t          |t                    rt          t          j        | j        |d                             5  dg}|d         rdg}ndg}	 t          ||           |r*d	}t          j        |          rt          j        |           n3# |r+d	}t          j        |          rt          j        |           w w w xY wd
d
d
           n# 1 swxY w Y   d
S )r   install_pkgeditableTz$ will be installed in editable mode.z	--no-depsz-e .r,   pip_install_optsbuildN
extra_pkgsr      )r7   r8   r   warningr+   r   r6   r   r   r2   r4   rJ   shutilrmtree
isinstancetupler5   )r;   cleanrm   ro   reqstmp_build_dires          r   r   zPPRepository.install_packages}   s   9]# 	9y}}Z66H 'MMM   $DM22 9 99(3}$ % &x #u$T<LMMMM)$)T]CCC 9(/:m44 9"M-888	  9(/:m44 9"M-8888	999 9 9 9 9 9 9 9 9 9 9 9 9 9 9 |R00 	= 	=A!U## ='!(E(EFF = =(3}$t % &x #u=(@PQQQQ  =,3M"z-88 = &m < < < ! =,3M"z-88 = &m < < < <=== = = = = = = = = = = = = = =	= 	=sT   D 7C-D 0C11D  DD*G;>F<-G;<0G,,G;;G?	G?	c                    g }| j         d         r|                    | j                   | j                             dg           D ]2}t	          |t
                    r|                    |d                    3t          |           dS )r
   rl   rq   r   N)r7   r`   r*   r8   rv   rw   r
   )r;   pkgsr{   s      r   r
   zPPRepository.uninstall_packages   s    9]# 	(KK'''|R00 	" 	"A!U## "AaD!!!4     r   c                     t          t          j        | j        d          d          5  	 d d d            d S # 1 swxY w Y   d S )NrH   wb)ra   r4   r5   r6   rF   s    r   mark_installedzPPRepository.mark_installed   s    #(4=,77>> 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   8<<c                 ^    t          j        t          j        | j        d                     d S )NrH   )rC   unlinkr4   r5   r6   rF   s    r   mark_uninstalledzPPRepository.mark_uninstalled   s&    
	#(4=,7788888r   c                     t            | j         d}t          j        | j        d           t          || j        | j                   dS )zdownload from remotez.tarT)exist_okN)r   r2   rC   makedirsr3   r   )r;   download_urls     r   downloadzPPRepository.download   sL    ,=di===
D(48888\4+?KKKKKr   c                     t          | j                  5  t          | j                   ddd           dS # 1 swxY w Y   dS removeN)r   r3   r   r2   rF   s    r   r   zPPRepository.remove   s     455 	, 	, +++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   7;;Nc           
      d   | j                             dd          }d| | j         }t          | j                  5  	 t          ||           t          d           n9# t          $ r,}t          j	        d| j
         d| d|            Y d}~nd}~ww xY wddd           dS # 1 swxY w Y   dS )	updatebranchNzhttps://)r   url
FETCH_HEADzUpdate z from z/ failed, check your network connection. Error:
)r7   r8   r)   r   r6   r   r   	Exceptionr   rs   r2   )r;   platformr   git_urlr{   s        r   r   zPPRepository.update   s2   x..6X6t}66.. 	 	$F@@@@$\2222   kdikkwkkhikk       		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s:   B% AB%
B)"BB%BB%%B),B)c                 4    t          j        | j                  S )rE   )	importlibimport_moduler:   rF   s    r   rE   zPPRepository.get_pdx   s    &t'8999r   c                 d   | j         g}| j                            dg           D ]O}t          |t                    r#|d         pt          j        |d         d          }|                    |           P|i }|D ]9}|                    d          \  }}|                    d          \  }}	|	|i||<   :t          j        | j	        d          }
| j
        |v r!|                     || j
                 |
           g }|D ]k}t          t          j        | j	        |          dd	
          5 }|                    |                                           ddd           n# 1 swxY w Y   l| j                            dg           D ]}|                    |           d                    |          }|S )get_depsrq   r   r   r/   N=r,   rM   utf-8encodingpdx_pkg_depsrY   )r.   r7   r8   rv   rw   r4   r5   r`   splitr6   r2   rL   ra   read)r;   rc   req_listr{   	deps_dictrS   partversionr   dep_namerd   depsreqfs                 r   r   zPPRepository.get_deps   s    &'|R00 	 	A!U## ?aD>CHQqT+=>>OOA&I& ; ; #		#g&*jjoo#	8(0'':	)$$"x7IJJyI%%&&y';=MNNN 	& 	&Ccht}c22C'JJJ &aAFFHH%%%& & & & & & & & & & & & & & &9==44 	 	CKKyys   ((EE 	#E 	c                 P   t          j        | j        d          }t          |dd          5 }|                                }ddd           n# 1 swxY w Y   |d                                         }|d                                         }||g}|                    d           |S )get_versionz.pdx_gen.versionrM   r   r   Nr   r   )r4   r5   r6   ra   r\   rstripr`   )r;   version_filer   rf   sta_vercommitrets          r   r   zPPRepository.get_version   s    x/ABB,g666 	"!KKMME	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"(//##q""

4
s   AAAc                 8    d| j          dt          |            dS )N(z, ))r2   idrF   s    r   __str__zPPRepository.__str__   s#    +49++4++++r   )TrP   )r9   
__module____qualname____doc__r1   r?   rA   rL   rj   r   r
   r   r   r   r   r   rE   r   r   r   __classcell__r=   s   @r   r   r   >   s>        
P P P P P
 
 
A A A? ? ?,; ; ;%= %= %= %=N! ! !  9 9 9L L L, , ,
   : : :   4
 
 
, , , , , , ,r   r   c                   X     e Zd Zd Z fdZ	 	 	 	 d
dZd ZddZddZddZ	dd	Z
 xZS )r    c                 V    t                                                       || _        d S rP   r0   r1   r#   r;   r#   r=   s     r   r1   z!RepositoryGroupInstaller.__init__   $    


r   FNc                    |r|                                   g }|                     | j        d          }|D ]C}|s|                                s|                    d           .|                    d           D|s|                     ||           t          ||          D ]/\  }}|r(|                                 |                                 0dS )installTcheck_missingF)constraintsrc   N)		uninstall_sort_reposr#   rA   r`   install_depszipr   r   )	r;   force_reinstallno_depsr   rc   	ins_flagsr#   repoins_flags	            r   r   z RepositoryGroupInstaller.install  s     	NN	  4 @@ 	( 	(D (d&=&=&?&? (  &&&&  '''' 	X +WWW ")U33 	& 	&NHd &%%'''##%%%	& 	&r   c                     |                      | j        d          }|ddd         }|D ]>}|                                r(|                                 |                                 ?dS )r   Fr   N)r   r#   rA   r
   r   )r;   r#   r   s      r   r   z"RepositoryGroupInstaller.uninstall"  s}      5 AAddd 	( 	(D&&(( ('')))%%'''		( 	(r   c                    g }|                      | j        d          }|D ]M}|                    |          }|                     |d|j         d          }|                    |           Nd                    |          S )r   Tr   rc   z# z dependencies)headlinez

)r   r#   r   _normalize_depsr2   r`   r5   )r;   rc   	deps_listr#   r   r   s         r   r   z!RepositoryGroupInstaller.get_deps,  s    	  4 @@ 	# 	#D===AAD''7TDI7T7T7T'UUDT""""{{9%%%r   c                    |                      |          }t          j                    5 }t          j        |d          }t          |dd          5 }|                    |           ddd           n# 1 swxY w Y   t          j        |d          }t          |dd          5 }||                    |           |                    d           |                    d	           |                    d
           ddd           n# 1 swxY w Y   g }	|	                    d           |	                    |           t          ||	           ddd           dS # 1 swxY w Y   dS )r   r   r/   rW   r   r   Nzconstraints.txtzopencv-python == 0.0.0
z opencv-python-headless == 0.0.0
z(opencv-contrib-python-headless == 0.0.0
z-crn   )	r   tempfileTemporaryDirectoryr4   r5   ra   writer`   r	   )
r;   r   rc   deps_strtdreq_filefr	cons_filefcro   s
             r   r   z%RepositoryGroupInstaller.install_deps7  s7   ===AA(** 	bx$677Hhg666 #""""# # # # # # # # # # # # # # #%677Iiw777 F2*HH[)))3444<===DEEEF F F F F F F F F F F F F F F  "##D)))##I...3+;   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s[   (EA4(E4A8	8E;A8	<*E&AD	=E	D	ED	A EE"%E"c                 V   g }|D ]#}|                     |j        |j        f           $g }t                      }|D ]6\  }}||v r
|                     ||f           |                    |           7g }	g }
d |D             }|D ]<\  }}||v r||         }|	                     |           '|
                     |           =|r?t          |
          dk    r,t          |
          dk    rdnd}t          |
 d| d          t          |	          t          | j                  k    sJ |	S )Nc                     i | ]
}|j         |S rQ   )r2   )rR   r   s     r   
<dictcomp>z8RepositoryGroupInstaller._sort_repos.<locals>.<dictcomp>_  s    777TY777r   r   r   isare z required in the installation.)r`   r2   r7   setaddlenRuntimeErrorr#   )r;   r#   r   name_meta_pairsr   unique_pairshashsetr2   r7   sorted_reposmissing_names	name2repobes                r   r   z$RepositoryGroupInstaller._sort_reposM  s     	; 	;D""DIty#9::::%%) 	" 	"JD$w##T4L111D!!!!77777	& 	+ 	+JD$y   ##D))))$$T**** 	8S//!33]++q00eB-TT"TTTUUU|$$DJ7777r   c                    g }||                     |           |                                D ]}|                                }|s|                    d          }|dk    r6|dk    r
|d |         }t	          |          }|j        t          v rd|j                            dd          dv rd}nj|j        dk    rd}|d	z  }nW|j                            dd          d
k    rt          j	        dk    rd}n%d}n"|j        dk    rd}nd|j        v r|j        dv r|                     |           d
                    |          S )NrN   r   _-)zopencv-pythonopencv-contrib-pythonzopencv-python-headlesszopencv-contrib-python-headlessr   albumentationszalbumentations @ https://paddle-model-ecology.bj.bcebos.com/paddlex/PaddleX3.0/patched_packages/albumentations-1.4.10%2Bpdx-py3-none-any.whlz
albucore @ https://paddle-model-ecology.bj.bcebos.com/paddlex/PaddleX3.0/patched_packages/albucore-0.0.13%2Bpdx-py3-none-any.whlznuscenes-devkit)rr   	   znuscenes-devkit @ https://paddle-model-ecology.bj.bcebos.com/paddlex/PaddleX3.0/patched_packages/nuscenes_devkit-1.2.0%2Bpdx-py3-none-any.whlznuscenes-devkit @ https://paddle-model-ecology.bj.bcebos.com/paddlex/PaddleX3.0/patched_packages/nuscenes_devkit-1.1.11%2Bpdx-py3-none-any.whlimgaugzimgaug @ https://paddle-model-ecology.bj.bcebos.com/paddlex/PaddleX3.0/patched_packages/imgaug-0.4.0%2Bpdx-py2.py3-none-any.whltool_helpers)multiprocessdillrY   )r`   
splitlinesr]   findr   r2   r   replacesysversion_infor5   )r;   r   r   rf   rT   line_sposr   s           r   r   z(RepositoryGroupInstaller._normalize_depsm  s   LL"""OO%% .	! .	!DZZ\\F ++c""Caxxq f%%Cx?**!!#s++ 0   1--- h  _  _!!#s++/@@@ #v-- mFF nFFX%% [38++555 LL    yyr   )FFNNrP   )F)r9   r   r   r   r1   r   r   r   r   r   r   r   r   s   @r   r    r       s        ""     & & & &>( ( (	& 	& 	& 	&   ,   @4  4  4  4  4  4  4  4 r   r    c                   0     e Zd Zd Z fdZddZd Z xZS )r&   c                 V    t                                                       || _        d S rP   r   r   s     r   r1   zRepositoryGroupGetter.__init__  r   r   FNc                     |r|                                   | j        D ],}|                                 |                    |           -dS )clone)r   N)r   r#   r   r   )r;   forcer   r   s       r   r8   zRepositoryGroupGetter.get  sV     	KKMMMJ 	+ 	+DMMOOOKKK****	+ 	+r   c                 B    | j         D ]}|                                 dS r   )r#   r   )r;   r   s     r   r   zRepositoryGroupGetter.remove  s,    J 	 	DKKMMMM	 	r   )FN)r9   r   r   r   r1   r8   r   r   r   s   @r   r&   r&     sa            + + + +      r   r&   )%r   rC   os.pathpathr4   rt   r   r   packaging.requirementsr   utilsr   utils.downloadr   utils.file_interfacer   utils.installr   r	   r
   r7   r   r   r   r   r   r   r   r   __all__r   r   r%   objectr   r    r&   rQ   r   r   <module>r     s       				        



  . . . . . .       1 1 1 1 1 1 . . . . . .         
 E D D D D D D D D D              !">
?  1 1 1
. . .
{, {, {, {, {,6 {, {, {,|e  e  e  e  e v e  e  e P    F     r   