
    9i>                         S SK r S SKrS SKJr  S SKrS SKrS SKJr  SSK	J
r
  SSKJr  SSKJr  SSKJrJrJr  SS	KJrJrJr  SS
K	JrJrJrJrJr  SS/rS rS rS r " S S\ 5      r! " S S\ 5      r" " S S\ 5      r#g)    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                 *    [         nU" U /UQ70 UD6nU$ )r   )PPRepository)	repo_nameargskwargsrepo_clsrepo_instances        Y/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/paddlex/repo_manager/repo.pyr   r   +   s#     HY888M    c                  *    [        [        U 5      5      $ )r   )RepositoryGroupInstallerlistreposs    r   r   r   3   s    #DK00r   c                  *    [        [        U 5      5      $ )build_repo_group_getter)RepositoryGroupGetterr!   r"   s    r   r%   r%   8   s     e--r   c                      ^  \ rS rSrSrU 4S jrS rS rS rS r	SS jr
S	 rS
 rS rS rS rSS jrS rSS jrS rS rSrU =r$ )r   =   z\
Installation, initialization, and PDX module import handler for a
PaddlePaddle repository.
c                   > [         TU ]  5         Xl        X l        [        R
                  " X R                  5      U l        [        U R                  5      U l        U R                  S   U l	        U R                  R                  SS 5      U l        U R                  R                  SS 5      U l        UR                  S-   U R                  S   -   U l        U R                  R                  SS5      U l        g )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/   )selfr3   r4   pdx_collection_mod	__class__s       r   r2   PPRepository.__init__C   s    	.))<!$)),			*-{D999===''#-		.0II 	 "YY]]?<NOr   c                     U R                  5       (       d  gSU R                  ;   a>  [        R                  " U R                  5      [
        R                  U R                  S   '   U R                  5         g)
initializeFpath_envT)check_installationr8   r5   abspathr7   osenvironget_pdxr<   s    r   rA   PPRepository.initializeR   sR    &&(("03DMM0JBJJtyy,- 	r   c                 l    [         R                  " [         R                  " U R                  S5      5      $ )rC   
.installedr5   existsr6   r7   rH   s    r   rC   PPRepository.check_installation^   s     zz#((4==,?@@r   c                 (  ^ [        US5       nUR                  5       nSSS5        / nW H  mTR                  5       mT(       a  TR                  S5      (       a  M2  [	        U4S jU 5       S5      nU(       a$  X   S:X  a  MY  UR                  U SX    35        Ms  UR                  T5        M     [        US5       nUR                  U Vs/ s H  owS-   PM	     sn5        SSS5        g! , (       d  f       N= fs  snf ! , (       d  f       g= f)	replace_repo_depsrN#c              3   6   >#    U  H  oT;   d  M
  Uv   M     g 7fN ).0deplines     r   	<genexpr>1PPRepository.replace_repo_deps.<locals>.<genexpr>k   s     "Q/3D[33/s   		Nonez==w
)r   	readlinesstrip
startswithnextappendopen
writelines)	r<   deps_to_replacesrc_requirementsfilelinesexisting_depsdep_to_replacelrX   s	           @r   rP   PPRepository.replace_repo_depsb   s    )3/4NN$E 0D::<D4??3//!"Q/"QSWXN"2f<!(()*"_-L,MN $$T*  "C(DOO}=}!X}=> )(# 0/$ > )(s)   C-?DC>
D-
C;>D
Dc                 l    [         R                  " [         R                  " U R                  S5      5      $ )check_repo_exitingz.gitrL   rH   s    r   rn   PPRepository.check_repo_exitingx   s     zz#((4==&9::r   c                    U R                   S   (       a  U R                   R                  SS5      nU(       a#  [        R                  " U R                   S35        [        U R                  5          S/nU(       a  S/nOS/n[        XCS9  [        U R                  U R                  5        U(       a3  S	n[        R                  " U5      (       a  [        R                  " U5        S
S
S
5        U R                   R                  S/ 5       H  n[        U[        5      (       d  M  [        [        R                   " U R                  US   5      5         S/nUS   (       a  S/nOS/n [        XCS9  U(       a3  S	n[        R                  " U5      (       a  [        R                  " U5        S
S
S
5        M     g
! U(       a5  S	n[        R                  " U5      (       a  [        R                  " U5        f f f = f! , (       d  f       GN= f! U(       a5  S	n[        R                  " U5      (       a  [        R                  " U5        f f f = f! , (       d  f       GMQ  = f)r   install_pkgeditableTz$ will be installed in editable mode.z	--no-depsz-e .r-   pip_install_optsbuildN
extra_pkgsr      )r8   r9   r   warningr,   r   r7   r   r   r3   r5   rM   shutilrmtree
isinstancetupler6   )r<   cleanrr   rt   reqstmp_build_dires          r   r   PPRepository.install_packages|   s   99]#yy}}Z6H''((LM $DMM29(3}$ &x #u$TM)$))T]]C(/::m44"MM-8 3 |R0A!U##'!(EF(3}$t &x #u=(Q ,3M"zz-88 &m < GF 1 (/::m44"MM-8 5  324 !,3M"zz-88 &m <  9 ! GFsH   0G82:F7,:G8I'	H
0:I7>G55G88
H
>II
I	c                    / nU R                   S   (       a  UR                  U R                  5        U R                   R                  S/ 5       H.  n[	        U[
        5      (       d  M  UR                  US   5        M0     [        U5        g)r
   rq   rv   r   N)r8   rb   r+   r9   r{   r|   r
   )r<   pkgsr   s      r   r
   PPRepository.uninstall_packages   sc    99]#KK'|R0A!U##AaD! 1 	4 r   c                     [        [        R                  " U R                  S5      S5          S S S 5        g ! , (       d  f       g = f)NrK   wb)rc   r5   r6   r7   rH   s    r   mark_installedPPRepository.mark_installed   s*    #((4==,7> ?>>s	   7
Ac                 n    [         R                  " [        R                  " U R                  S5      5        g )NrK   )rE   unlinkr5   r6   r7   rH   s    r   mark_uninstalledPPRepository.mark_uninstalled   s    
		#((4==,78r   c                     [          U R                   S3n[        R                  " U R                  SS9  [        XR                  U R                  5        g)zdownload from remotez.tarT)exist_okN)r   r3   rE   makedirsr4   r   )r<   download_urls     r   downloadPPRepository.download   s?    ,-dii[=
D((48\+?+?Kr   c                     [        U R                  5         [        U R                  5        SSS5        g! , (       d  f       g= fremoveN)r   r4   r   r3   rH   s    r   r   PPRepository.remove   s(     4 45 + 655s	   5
Ac           
      f   U R                   R                  SS5      nSU U R                   3n[        U R                  5          [        X#S9  [        S5        SSS5        g! [         a3  n[        R                  " SU R                   SU SU 35         SnANASnAff = f! , (       d  f       g= f)	updatebranchNzhttps://)r   url
FETCH_HEADzUpdate z from z/ failed, check your network connection. Error:
)r8   r9   r*   r   r7   r   r   	Exceptionr   rx   r3   )r<   platformr   git_urlr   s        r   r   PPRepository.update   s    x.XJt}}o6.$F@$\2 /.  dii[wi7ghigjk 	 /.s0   B"A""
B,)BB"BB""
B0c                 B    [         R                  " U R                  5      $ )rG   )	importlibimport_moduler;   rH   s    r   rG   PPRepository.get_pdx   s    &&t'8'899r   c                 v   U R                   /nU R                  R                  S/ 5       HO  n[        U[        5      (       a&  US   =(       d    [
        R                  " US   S5      nUR                  U5        MQ     Ub  0 nU H.  nUR                  S5      u  pgUR                  S5      u  pX0XH'   M0     [
        R                  " U R                  S5      n
U R                  U;   a  U R                  X@R                     U
5        / nU HU  n[        [
        R                  " U R                  U5      SS	S
9 nUR                  UR                  5       5        SSS5        MW     U R                  R                  S/ 5       H  nUR                  U5        M     SR                  U5      nU$ ! , (       d  f       M  = f)get_depsrv   r   r   r0   N=r-   rQ   utf-8encodingpdx_pkg_depsr]   )r/   r8   r9   r{   r|   r5   r6   rb   splitr7   r3   rP   rc   read)r<   re   req_listr   	deps_dictrW   partversionr   dep_namerf   depsreqfs                 r   r   PPRepository.get_deps   si    &&'|R0A!U##aD>CHHQqT+=>OOA 1 &I& #		#&*jjo#	(0':	$ '  #xx7IJyyI%&&y';=MNCchht}}c2C'JaAFFH% KJ  99==4CKK 5yy KJs   6 F))
F8	c                 &   [         R                  " U R                  S5      n[        USSS9 nUR	                  5       nSSS5        WS   R                  5       nUS   R                  5       nXE/nUR                  S5        U$ ! , (       d  f       NJ= f)get_versionz.pdx_gen.versionrQ   r   r   Nr   r   )r5   r6   r7   rc   r^   rstriprb   )r<   version_filer   rh   sta_vercommitrets          r   r   PPRepository.get_version   sw    xx/AB,g6!KKME 7(//#q"

4
 76s   B
Bc                 :    SU R                    S[        U 5       S3$ )N(z, ))r3   idrH   s    r   __str__PPRepository.__str__   s    499+R4z++r   )	r+   r*   r,   r/   r8   r3   r;   r4   r7   )TrT   )r:   
__module____qualname____firstlineno____doc__r2   rA   rC   rP   rn   r   r
   r   r   r   r   r   rG   r   r   r   __static_attributes____classcell__r>   s   @r   r   r   =   sa    
P
A?,;%=N!9L,
:4
, ,r   r   c                   l   ^  \ rS rSrS rU 4S jr    S
S jrS rSS jrSS jr	SS jr
SS jrS	rU =r$ )r       c                 .   > [         TU ]  5         Xl        g rT   r1   r2   r#   r<   r#   r>   s     r   r2   !RepositoryGroupInstaller.__init__       
r   c                    U(       a  U R                  5         / nU R                  U R                  SS9nU HC  nU(       d  UR                  5       (       d  UR	                  S5        M2  UR	                  S5        ME     U(       d  U R                  X4S9  [        XV5       H.  u  pU(       d  M  UR                  5         UR                  5         M0     g)installTcheck_missingF)constraintsre   N)		uninstall_sort_reposr#   rC   rb   install_depszipr   r   )	r<   force_reinstallno_depsr   re   	ins_flagsr#   repoins_flags	            r   r    RepositoryGroupInstaller.install  s     NN	  4 @Dd&=&=&?&?  &  '	 
  +W ")3NHx%%'##% 4r   c                     U R                  U R                  SS9nUSSS2   nU H:  nUR                  5       (       d  M  UR                  5         UR	                  5         M<     g)r   Fr   N)r   r#   rC   r
   r   )r<   r#   r   s      r   r   "RepositoryGroupInstaller.uninstall!  sY      5 AddD&&(('')%%'	 r   c                     / nU R                  U R                  SS9nU HA  nUR                  US9nU R                  USUR                   S3S9nUR                  U5        MC     SR                  U5      $ )r   Tr   re   z# z dependencies)headlinez

)r   r#   r   _normalize_depsr3   rb   r6   )r<   re   	deps_listr#   r   r   s         r   r   !RepositoryGroupInstaller.get_deps+  s{    	  4 @D===AD''DII;m7T'UDT" 
 {{9%%r   c                 z   U R                  US9n[        R                  " 5        n[        R                  " US5      n[        USSS9 nUR                  U5        SSS5        [        R                  " US5      n[        USSS9 nUb  UR                  U5        UR                  S5        UR                  S	5        UR                  S
5        SSS5        / n	U	R                  S5        U	R                  U5        [        XYS9  SSS5        g! , (       d  f       N= f! , (       d  f       NU= f! , (       d  f       g= f)r   r   r0   r\   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-crs   )	r   tempfileTemporaryDirectoryr5   r6   rc   writerb   r	   )
r<   r   re   deps_strtdreq_filefr	cons_filefcrt   s
             r   r   %RepositoryGroupInstaller.install_deps6  s    ===A((*bxx$67Hhg6"" 7%67Iiw72*HH[)34<=DE 8  "##D)##I.3 +*66 87 +*s<   #D,D
*D,AD5D,

D	D,
D)	%D,,
D:c                 b   / nU H*  nUR                  UR                  UR                  45        M,     / n[        5       nU H/  u  pxXv;   a  M  UR                  Xx45        UR	                  U5        M1     / n	/ n
U Vs0 s H  oDR                  U_M     nnU H2  u  pxX{;   a  X   nU	R                  U5        M!  U
R                  U5        M4     U(       a3  [        U
5      S:  a$  [        U
5      S:X  a  SOSn[        U
 SU S35      e[        U	5      [        U R                  5      :X  d   eU	$ s  snf )Nr   r   isare z required in the installation.)rb   r3   r8   setaddlenRuntimeErrorr#   )r<   r#   r   name_meta_pairsr   unique_pairshashsetr3   r8   sorted_reposmissing_names	name2repobes                r   r   $RepositoryGroupInstaller._sort_reposL  s*    D""DIItyy#9:  %)JD##TL1D! * 167YY_	7&JD  ##D)$$T* ' S/!3]+q0eB-"5STUU|$DJJ777 8s   <D,c                 <   / nUb  UR                  U5        UR                  5        H  nUR                  5       nU(       d  M  UR                  S5      nUS:X  a  M5  US:  a  US U n[	        U5      nUR
                  [        ;   a  Ma  UR
                  R                  SS5      S;   a  SnOMUR
                  S:X  a  SnUS	-  nO5UR
                  R                  SS5      S
:X  a  SnOUR
                  S:X  a  SnUR                  U5        M     SR                  U5      $ )NrR   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-devkitznuscenes-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.whlr]   )	rb   
splitlinesr_   findr   r3   r   replacer6   )r<   r   r   rh   rX   line_sposr   s           r   r   (RepositoryGroupInstaller._normalize_depsl  s    LL"OO%DZZ\F++c"Caxq f%Cxx?*!!#s+ 0  1-- h  _  _!!#s+/@@ jX% [LL E &H yyr   r"   )FFNNrT   )F)r:   r   r   r   r   r2   r   r   r   r   r   r   r   r   r   s   @r   r    r       s=    " &>(	&,@(  ( r   r    c                   <   ^  \ rS rSrS rU 4S jrSS jrS rSrU =r	$ )r&   i  c                 .   > [         TU ]  5         Xl        g rT   r   r   s     r   r2   RepositoryGroupGetter.__init__  r   r   c                     U(       a  U R                  5         U R                   H"  nUR                  5         UR                  US9  M$     g)clone)r   N)r   r#   r   r   )r<   forcer   r   s       r   r9   RepositoryGroupGetter.get  s3    KKMJJDMMOKKK* r   c                 J    U R                    H  nUR                  5         M     gr   )r#   r   )r<   r   s     r   r   RepositoryGroupGetter.remove  s    JJDKKM r   r"   )FN)
r:   r   r   r   r   r2   r9   r   r   r   r   s   @r   r&   r&     s    + r   r&   )$r   rE   os.pathpathr5   ry   r   packaging.requirementsr   utilsr   utils.downloadr   utils.file_interfacer   utils.installr   r	   r
   r8   r   r   r   r   r   r   r   r   __all__r   r   r%   objectr   r    r&   rU   r   r   <module>r#     s     	    .  1 . 
 E D  !">
?1
.
{,6 {,|Y v Y xF r   