+
    UBi                       ^ RI Ht ^ RIHtHt ^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RIt^ RIt^ RIt^RIHt ^RIHt ^RIHtHtHtHtHt ^R	I H!t!H"t"H#t#H$t$H%t%H&t& ]PN                  '       dw   ^ R
I(H)t) ^RI H*t* ]PV                  ]PX                  ,          t- ! R R])4      t. ! R R].4      t/ ! R R].4      t0 ! R R].4      t1 ! R R].4      t2 ! R R].4      t3 ! R R].4      t4RPk                  ]#4      t6]Pn                  R-8  d"   ]8! ]Pr                  4      ]Pt                  n;        R R lt< ! R R4      t=]! RR 7       ! R! R"4      4       t>R# R$ lt?R.R% R& llt@R' R( ltAR) R* ltBR+ R, ltCR# )/    )annotations)	dataclassInitVarN)ThreadPoolExecutor)Path)mlog)IntrospectionInterpreter)	quiet_gitGitException
Popen_safeMesonExceptionwindows_proof_rmtree)ResolverWrapException	ALL_TYPESparse_patch_urlupdate_wrap_fileget_releases)Protocol)PackageDefinitionc                  T    ] tR t^t$ R]R&   R]R&   R]R&   R]R&   R]R	&   R
]R&   RtR# )	Argumentsstr	sourcedirintnum_processesT.List[str]subprojectstypeszT.Callable[[], bool]subprojects_funcboolallow_insecure N__name__
__module____qualname____firstlineno____annotations____static_attributes__r#       </usr/lib/python3.14/site-packages/mesonbuild/msubprojects.pyr   r      s$      
..r+   r   c                  ,    ] tR t^&t$ R]R&   R]R&   RtR# )UpdateArgumentsr!   rebaseresetr#   Nr$   r#   r+   r,   r.   r.   &   s    r+   r.   c                  ,    ] tR t^*t$ R]R&   R]R&   RtR# )UpdateWrapDBArgumentsr!   forcezT.Dict[str, T.Any]releasesr#   Nr$   r#   r+   r,   r2   r2   *   s    $$r+   r2   c                  ,    ] tR t^.t$ R]R&   R]R&   RtR# )CheckoutArgumentsr!   br   branch_namer#   Nr$   r#   r+   r,   r6   r6   .   s    r+   r6   c                  ,    ] tR t^2t$ R]R&   R]R&   RtR# )ForeachArgumentsr   commandr   argsr#   Nr$   r#   r+   r,   r:   r:   2   s    r+   r:   c                  ,    ] tR t^6t$ R]R&   R]R&   RtR# )PurgeArgumentsr!   confirminclude_cacher#   Nr$   r#   r+   r,   r>   r>   6   s    r+   r>   c                  ,    ] tR t^:t$ R]R&   R]R&   RtR# )PackagefilesArgumentsr!   applysaver#   Nr$   r#   r+   r,   rB   rB   :   s    
r+   rB   , c               $    V ^8  d   QhRRRRRR/# )   pathr   	base_pathreturnzT.Set[Path]r#   )formats   "r,   __annotate__rL   C   s!      T d { r+   c                   V P                   R 8X  dZ   \        P                  ! V R4      ;_uu_ 4       pVP                  4        Uu0 uF  q1VP                  ,          kK  	  ppRRR4       V# \
        P                  ! V 4      ;_uu_ 4       pV Uu0 uF  q1VP                  ,          kK  	  ppRRR4       V# u upi   + '       g   i     X# ; iu upi   + '       g   i     X# ; i)z.ziprN)suffixzipfileZipFileinfolistfilenametarfileopenname)rH   rI   zip_archiveiarchive_filestar_archives   &&    r,   read_archive_filesr[   C   s    {{f__T3'';=H=Q=Q=ST=S33=SMT (
  \\$;9DEA//ME  	 U ('
  F  s;   B:B5B:	CC)C5B::C	CC$	c                  R    ] tR t^LtR R ltR R ltR R ltR R ltR	 R
 ltRt	R# )Loggerc                    V ^8  d   QhRRRR/# )rG   total_tasksr   rJ   Noner#   )rK   s   "r,   rL   Logger.__annotate__M   s     $ $C $D $r+   c                	    \         P                  ! 4       V n        Wn        ^ V n        \        4       V n        RV n        R# )r    N)	threadingLocklockr_   completed_taskssetrunning_tasksshould_erase_line)selfr_   s   &&r,   __init__Logger.__init__M   s0    NN$	& ),!#r+   c                   V ^8  d   QhRR/# rG   rJ   r`   r#   )rK   s   "r,   rL   ra   T   s     ( (t (r+   c                	j    V P                   '       d!   \        V P                   R R7       RV n         R# R# )endrc   N)rj   printrk   s   &r,   flushLogger.flushT   s+    !!!$((d3%'D" "r+   c                   V ^8  d   QhRR/# ro   r#   )rK   s   "r,   rL   ra   Y   s     * * *r+   c                	   R V P                    RV P                   2p\        P                  ! 4       P                  \        V4      ,
          pRP                  V P                  4      p\        V4      ^,           V8  d   VRV^,
           R,           pVRV R2,           p\        V P                  VRRR	7       R
V n	        R# )z
Progress: z / rE   N...z ()rc   rq   )seprs   z[K)
rg   r_   shutilget_terminal_sizecolumnslenjoinri   rt   rj   )rk   linemax_lenrunnings   &   r,   print_progressLogger.print_progressY   s    D001T5E5E4FG**,44s4y@))D../w<!g%lw{+e3G7)1o%d$$d=!)r+   c                    V ^8  d   QhRRRR/# )rG   	wrap_namer   rJ   r`   r#   )rK   s   "r,   rL   ra   c   s     " "s "t "r+   c                	    V P                   ;_uu_ 4        V P                  P                  V4       V P                  4        R R R 4       R #   + '       g   i     R # ; iN)rf   ri   addr   )rk   r   s   &&r,   startLogger.startc   s7    YYY""9-! YYYs   ,AA	c               $    V ^8  d   QhRRRRRR/# )rG   r   r   	log_queuez,T.List[T.Tuple[mlog.TV_LoggableList, T.Any]]rJ   r`   r#   )rK   s   "r,   rL   ra   h   s#     " "c ".Z "_c "r+   c                	R   V P                   ;_uu_ 4        V P                  4        V F  w  r4\        P                  ! V/ VB  K  	  V P                  P                  V4       V ;P                  ^,          un        V P                  4        RRR4       R#   + '       g   i     R# ; i)   N)rf   rv   r   logri   removerg   r   )rk   r   r   r<   kwargss   &&&  r,   doneLogger.doneh   sn    YYYJJL )$)&) !*%%i0  A% ! YYYs   A6BB&	)rg   rf   ri   rj   r_   N)
r%   r&   r'   r(   rl   rv   r   r   r   r*   r#   r+   r,   r]   r]   L   s     $(
*"
" "r+   r]   F)eqc                     ] tR t^rt$ R]R&   R]R&   R]R&   R]R&   R	]R
&   R R ltR R ltR R lt]R R l4       t	R R lt
R R ltR R ltR R ltR R ltR R ltR R  ltR! R" ltRCR# R$ lltR% R& ltR' R( ltR) R* ltR+ R, ltR- R. ltR/ R0 ltR1 R2 ltR3 R4 ltR5 R6 ltR7 R8 ltR9 R: ltR; R< lt]R= R> l4       tR? R@ lt RAt!RB# )DRunnerr]   loggerzInitVar[Resolver]rN   r   wrapr   repo_dir'Arguments'optionsc                    V ^8  d   QhRRRR/# )rG   rN   r   rJ   r`   r#   )rK   s   "r,   rL   Runner.__annotate__z   s     J Jx JD Jr+   c                	n   \         P                   ! V4      V n        \        P                  P	                  VP
                  V P                  P                  4      V P                  n        V P                  V P                  n        V P                  P                  P                  V 4      V n        . V n        R # r   )copywrap_resolverosrH   r   subdir_rootr   	directorydirnamer   r    __get__
run_methodr   )rk   rN   s   &&r,   __post_init__Runner.__post_init__z   su     "YYq\%'WW\\!--ATAT%U""&))040M0M0U0UVZ0[GIr+   c               $    V ^8  d   QhRRRRRR/# )rG   r<   zmlog.TV_Loggabler   zT.AnyrJ   r`   r#   )rK   s   "r,   rL   r      s"     4 4) 4U 4t 4r+   c                	R    V P                   P                  \        V4      V34       R # r   )r   appendlist)rk   r<   r   s   &*,r,   r   
Runner.log   s    tDz623r+   c                   V ^8  d   QhRR/# rG   rJ   r!   r#   )rK   s   "r,   rL   r      s      T r+   c                	   V P                   P                  V P                  P                  4        V P	                  4       pV P                   P                  V P                  P                  V P                  4       V#   \
         d<   pT P                  \        P                  ! R 4      \        T4      4       Rp Rp?L}Rp?ii ; i)zError:FN)r   r   r   rV   r   r   r   r   redr   r   r   )rk   resultes   &  r,   run
Runner.run   s    $))..)	__&F 	8	  	HHTXXh'Q0F	s   A= =C1B>>Cc                    V ^8  d   QhRRRR/# )rG   r   z'UpdateWrapDBArguments'rJ   r`   r#   )rK   s   "r,   rL   r      s     @ @#: @t @r+   c                	:    \        V P                  4      V n        R # r   )r   r"   r4   r   s   &r,   pre_update_wrapdbRunner.pre_update_wrapdb   s    '(>(>?r+   c                   V ^8  d   QhRR/# r   r#   )rK   s   "r,   rL   r      s     - -t -r+   c                	b   V P                  R V P                  P                   R24       \        P                  ! RV P
                  4      pVP                  P                  V P                  P                  4      pV'       g   V P                  R4       R#  V P                  P                  R4      pVP                  R^4      w  rETR,          ^ ,          pTP                  R^4      w  rY8w  g   Y8w  d   T P                  P                   p
T
'       gL   \"        P$                  P'                  T P                  P(                  T P                  P                   R24      p
\+        YP                  P                  YTP,                  4       T P                  R\        P.                  ! T4      4       R# T P                  R\        P.                  ! T4      4       R#   \         dC    TP                  '       g*   T P                  R\        P                  ! R4      4        R	# R
;rE EL`\         d     T P                  P                  R4      p\        T4      w  rE EL  \         dE    TP                  '       g+   T P                  R\        P                  ! R4      4         R	# R
;rE  ELi ; ii ; i)z#Checking latest WrapDB version for rz   r2   z  -> Wrap not found in wrapdbTwrapdb_version-  ->z<Malformed wrapdb_version field, use --force to update anywayFN	patch_urlzACould not determine current version, use --force to update anywayversionsz.wrapz  -> New version downloaded:z  -> Already at latest version:)r   r   rV   Tcastr   r4   getsplit
ValueErrorr3   r   r   r   r   rsplitoriginal_filenamer   rH   r   subprojects_dirr   r"   blue)rk   r   infor   branchrevisionr   latest_version
new_branchnew_revisionrS   s   &          r,   update_wrapdbRunner.update_wrapdb   s   6tyy~~6FcJK&&0$,,? ##DIINN3HH45	)!YY]]+;<N-33C;F& j)!,#1#8#8a#@ 
<#;yy22H77<<		(A(AdiinnEUUZC[\Xyy~~'$335 HH3TYY~5NO  HH6		.8QR?  	%===*h!ij $$FX 
	)) IIMM+6	#29#=   )}}}HHVTXX.q%rs $((	)
	)sT   /G J.6&J.J.%J..J.0(IJ*8&J*J."J*%J.)J**J.c                   V ^8  d   QhRR/# r   r#   )rK   s   "r,   rL   r      s      T r+   c           	     	   \         P                  ! R V P                  4      pVP                  '       dY   \	        V P
                  4        V P                  P                  V P                  P                  4       V P                  R4       R# V P                  R4       V P                  R4       R#   \         d;   pT P                  R\        P                  ! \        T4      4      4        Rp?R# Rp?ii ; i)r.   z  -> New version extractedTr   NFzd  -> Subproject has not changed, or the new source/patch needs to be extracted on the same location.z<     Pass --reset option to delete directory and redownload.)r   r   r   r0   r   r   r   resolver   rV   r   r   r   r   r   )rk   r   r   s   &  r,   update_fileRunner.update_file   s    &&*DLL9=== !/""**499>>:56 HH{|HHST ! #a&!12s   
A B0 0C5;/C00C5c                    V ^8  d   QhRRRR/# )rG   cmdr   rJ   r   r#   )rK   s   "r,   rL   r      s     < <k <c <r+   c                	>    \        WP                  R R7      ^,          # )T)check)r
   r   rk   r   s   &&r,   
git_outputRunner.git_output   s    mm48;;r+   c                    V ^8  d   QhRRRR/# )rG   r   r   rJ   r`   r#   )rK   s   "r,   rL   r      s     ' '{ 't 'r+   c                	F    V P                  V P                  V4      4       R # r   )r   r   r   s   &&r,   git_verboseRunner.git_verbose   s    %&r+   c                   V ^8  d   QhRR/# ro   r#   )rK   s   "r,   rL   r      s     d d4 dr+   c                	    \        . ROV P                  4      ^,          P                  4       '       d   V P                  . RO4       R# R# )statusN)r   z--porcelain":!/.meson-subproject-wrap-hash.txt)stashpushz--allr   .)r
   r   stripr   ru   s   &r,   	git_stashRunner.git_stash   s?     TVZVcVcdefgmmoo bc pr+   c                   V ^8  d   QhRR/# ro   r#   )rK   s   "r,   rL   r      s     c c$ cr+   c           
     	j   V P                  . RO4      pVP                  R4       Uu. uF  q"P                  4       NK  	  ppV P                  R\        P
                  ! V^ ,          4      \        P                  ! V^,          4      V^,          \        P                  ! V^,          4      4       R# u upi )show
r   N)r   z--quietz!--pretty=format:%h%n%d%n%s%n[%an])r   r   r   r   r   yellowr   r   )rk   commit_messagespartss   &   r,   git_showRunner.git_show   s~    )ab$2$8$8$>?$>q$>?U1X.q0BE!HdiiX]^_X`Nab @s   B0c                    V ^8  d   QhRRRR/# rG   r   r   rJ   r!   r#   )rK   s   "r,   rL   r      s     
 
3 
4 
r+   c           	     	    V P                  . RO4       R#   \         d   pT P                  . RO4       T P                  R\        P                  ! T P
                  4      R\        P                  ! T4      R4       T P                  \        P                  ! TP                  4      4       T P                  \        P                  ! \        T4      4      4        Rp?R# Rp?ii ; i)	-cz  -> Could not rebaseontoz
-- abortedNFT)r   rebase.autoStash=truer/   
FETCH_HEAD)r   r   r/   z--abort)	r   r   r   r   boldr   r   outputr   rk   r   r   s   && r,   
git_rebaseRunner.git_rebase   s    	OOST   	OOPQHH,dii.FPTPYPYZbPc!#HHTXXahh'(HHTXXc!f%&	s    C$B7CC$c                    V ^8  d   QhRRRR/# r   r#   )rK   s   "r,   rL   r      s      # $ r+   c           	     	X    V P                  4        V P                  . RO4       V P                  P                  V P                  P
                  4       V P                  P                  4        R#   \         d   pT P                  R\        P                  ! T P                  4      R\        P                  ! T4      4       T P                  \        P                  ! TP                  4      4       T P                  \        P                  ! \        T4      4      4        Rp?R# Rp?ii ; i)r0   z  -> Could not resettoNFT)r0   z--hardr   )r   r   r   apply_patchr   rV   apply_diff_filesr   r   r   r  r   r   r  r   r  s   && r,   	git_resetRunner.git_reset   s    	 NNOO=>**499>>://1   	HH+TYYt}}-EtTYYW_M`aHHTXXahh'(HHTXXc!f%&		s   A,A0 0D);B#D$$D)c               $    V ^8  d   QhRRRRRR/# )rG   r   r   creater!   rJ   r#   )rK   s   "r,   rL   r     s!      S $ 4 r+   c           	     	   R R.pV'       d   VP                  R4       W1R.,          p V P                  4        V P                  V4       R#   \         d   pT P	                  R\
        P                  ! T4      R\
        P                  ! T P                  4      4       T P	                  \
        P                  ! TP                  4      4       T P	                  \
        P                  ! \        T4      4      4        Rp?R# Rp?ii ; i)	checkoutz--ignore-other-worktrees-bz--z  -> Could not checkoutinNFT)r   r   r   r   r   r   r  r   r   r  r   )rk   r   r  r   r   s   &&&  r,   git_checkoutRunner.git_checkout  s    56JJt$		 NNOOC    	HH.		(0CT499UYUbUbKcdHHTXXahh'(HHTXXc!f%&		s   !A DB#D  Dc                    V ^8  d   QhRRRR/# r   r#   )rK   s   "r,   rL   r     s      s t r+   c                	Z    V P                  V4      pV'       d   V P                  V4      pV# r   )r  r  rk   r   successs   && r,   git_checkout_and_resetRunner.git_checkout_and_reset  s*     ##H-nnX.Gr+   c                    V ^8  d   QhRRRR/# r   r#   )rK   s   "r,   rL   r   %  s        r+   c                	Z    V P                  V4      pV'       d   V P                  V4      pV# r   )r  r  r  s   && r,   git_checkout_and_rebaseRunner.git_checkout_and_rebase%  s*     ##H-ooh/Gr+   c                    V ^8  d   QhRRRR/# )rG   urlsrh   rJ   r!   r#   )rK   s   "r,   rL   r   -  s     * *C *D *r+   c                	   . ROp\        W P                  4      w  r4V'       g   R#  VP                  R^R7      ^ ,          pRRT.p\        Y P                  4      w  r6TP	                  4       T9   #   \         d     R# i ; i)	rev-parseF/)maxsplitremoteget-url)r"  --abbrev-refz--symbolic-full-namez@{upstream})r
   r   r   
IndexErrorr   )rk   r   r   retupstreamr%  
remote_urls   &&     r,   git_branch_has_upstreamRunner.git_branch_has_upstream-  s    R!#}}5	^^C!^4Q7F F+#C7!T))	  		s   A0 0A?>A?c                   V ^8  d   QhRR/# r   r#   )rK   s   "r,   rL   r   :  s     h hD hr+   c           	     	   \         P                  ! R V P                  4      p\        P                  P                  \        P                  P                  V P                  R4      4      '       g   VP                  '       dX   \        V P                  4        V P                  P                  V P                  P                  4       V P                  4        R# V P!                  R4       V P!                  R4       R# V P                  P(                  P+                  R4      pVP-                  4       R	8w  d   TMR	pV P                  P(                  P+                  R
4      pV P                  P(                  P+                  R4      pV'       d	   V'       g   V P!                  R4       R#  V P/                  . R!O4      P1                  4       pTP                  '       d6    T P/                  RRRT.4       T'       d   T P/                  RRRRT.4       M!YW8w  d   T P!                  RT: RT: 24       R#  T P/                  . R"O4      P1                  4       pTR	8w  d   TMRpT P                  P9                  T4      '       dC   \;        RRTR,           .T P                  4      ^ ,          '       d   T P/                  RRT.4       M Rp	Rp
T P/                  RRT	RT
RT.4       TR8X  d7   TP                  '       d   T P=                  T4      pMT P?                  T4      pMY8X  d7   TP                  '       d   T PA                  T4      pMqT PC                  T4      pM_TP                  '       d   T P=                  T4      pM;T PE                  YV04      '       d   T P?                  T4      pMT PC                  T4      pT'       d   T P                  4        T#   \         d;   pT P!                  R\"        P$                  ! \'        T4      4      4        Rp?R# Rp?ii ; i  \2         d   pT P!                  R\"        P4                  ! T P                  4      4       T P!                  \"        P$                  ! TP6                  4      4       T P!                  \"        P$                  ! \'        T4      4      4        Rp?R# Rp?ii ; i  \2         d   pT P!                  R\"        P4                  ! T P                  4      4       T P!                  \"        P$                  ! TP6                  4      4       T P!                  \"        P$                  ! \'        T4      4      4        Rp?R# Rp?ii ; i  \2         d   pT P!                  R\"        P4                  ! T P                  4      4       T P!                  \"        P$                  ! TP6                  4      4       T P!                  \"        P$                  ! \'        T4      4      4        Rp?R# Rp?ii ; i  \2         d   pT P!                  R\"        P4                  ! T4      R \"        P4                  ! T P                  4      4       T P!                  \"        P$                  ! TP6                  4      4       T P!                  \"        P$                  ! \'        T4      4      4        Rp?R# Rp?ii ; i)#r.   z.gitTr   NFz  -> Not a git repository.z7Pass --reset option to delete directory and redownload.r   HEADurlzpush-urlz"  -> No revision or URL specified.r%  originz.  -> Failed to determine current origin URL inzset-urlz--pushz"  -> Failed to reset origin URL inz  -> URL changed from  to r"  rc   z*  -> Failed to determine current branch inz--verifyz	^{commit}fetchr   z#+refs/heads/*:refs/remotes/origin/*z+refs/tags/*:refs/tags/*z--refmapz  -> Could not fetch revisionr  )r%  r&  r2  )r"  r'  r0  )#r   r   r   r   rH   existsr   r   r0   r   r   r   r   rV   update_git_doner   r   r   r   r   valuesr   upperr   r   r   r  r  is_git_full_commit_idr
   r  r  r  r  r,  )rk   r   r   revision_valr   r1  push_url
origin_urlr   heads_refmaptags_refmapr  s   &           r,   
update_gitRunner.update_git:  s   &&*DLL9ww~~bggll4==&ABB}}}$T]]3!&&..tyy~~>((*
 56RSyy''++J7#/#5#5#76#A<vii""5)99##''
3sHH9:	)HIOOQJ ===9h DEOOXy(Hh$WX HH-j^4wGH	__%JKQQSF%/VRF 33H==;
H{4JKT]][\]^^ OOWc845  E8*lJP[]ego pq R<}}}55h?66x@ }}}..2//(3 }}}55h?//@@"::8DG"ooh7G  "} % !HHVTXXc!f%56 !"  	HHEtyyQUQ^Q^G_`HHTXXahh'(HHTXXc!f%&		   =tyy?WX!((+,#a&)*	  	HHA499T]]C[\HHTXXahh'(HHTXXc!f%&		,   8$))H:MtUYU^U^_c_l_lUmn!((+,#a&)*	s   ?O (!P R> 9R> 2,U$ X
 P/PPR;#BR66R;>U!	BUU!$X/BXX
[B#Z>>[c                   V ^8  d   QhRR/# ro   r#   )rK   s   "r,   rL   r     s       r+   c                	L    V P                  . RO4       V P                  4        R# )	submoduleN)rC  updatez
--checkoutz--recursive)r   r   ru   s   &r,   r6  Runner.update_git_done  s    LMr+   c                   V ^8  d   QhRR/# r   r#   )rK   s   "r,   rL   r     s      4 r+   c                	   V P                   P                  R 4      pVP                  4       R8X  d'   \        P                  ! RR.V P
                  R7       R# \        P                  ! RRV.V P
                  R7      ^ 8w  dJ   \        P                  ! RR.V P
                  R7       \        P                  ! RRV.V P
                  R7       R# )r   tiphgpullcwdr  T)r   r   lower
subprocesscallr   
check_call)rk   revnos   & r,   	update_hgRunner.update_hg  s    		j);;=E! OOT6N>
  j%8dmmLPQQ%%tVn$--H%%tZ&?T]]Sr+   c                   V ^8  d   QhRR/# r   r#   )rK   s   "r,   rL   r     s      D r+   c                	L   V P                   P                  R 4      p\        RRRR V P                  .4      w  r#pTpWA8X  d   R# VP	                  4       R8X  d'   \
        P                  ! RR.V P                  R7       R# \
        P                  ! RRRV.V P                  R7       R# )	r   svnr   z--show-itemTheadrD  rK  z-r)r   r   r   r   rM  rN  rO  rP  )rk   rQ  _outcurrent_revnos   &    r,   
update_svnRunner.update_svn  s    		j)v}j$--XY	!;;=F" OOUH-4==A  !!5(D%"@dmmTr+   c                   V ^8  d   QhRR/# r   r#   )rK   s   "r,   rL   r     s       r+   c                	   V P                  R V P                  P                   R24       Rp\        P                  P                  V P                  4      '       g/   V P                  R4       V P                  P                  '       * pEMV P                  P                  R8X  d   V P                  4       pMV P                  P                  R8X  d   V P                  4       pMV P                  P                  R8X  d   V P                  4       pMV P                  P                  R8X  d   V P                  4       pMlV P                  P                  f.   V P                  R4       V P                  P                  '       * pM'V P                  R	V P                  P                  R
4       V'       dU   \        P                  P                  V P                  4      '       d&   V P                  P                  V P                  4       V# )z	Updating rz   Fz  -> Not used.filegitrI  rV  z/  -> Cannot update subproject with no wrap filez  -> Cannot update
subproject)r   r   rV   r   rH   isdirr   r   r   typer   r?  rR  r[  update_hash_cache)rk   r  s   & r,   rD  Runner.update  sG   9TYY^^,C01ww}}T]]++HH%&,,222GYY^^v%&&(GYY^^u$oo'GYY^^t#nn&GYY^^u$oo'GYY^^#HHFG,,222GHH)499>><Hrww}}T]]33II''6r+   c                   V ^8  d   QhRR/# r   r#   )rK   s   "r,   rL   r     s      $ r+   c                	&   \         P                  ! R V P                  4      pV P                  P                  R8w  g0   \
        P                  P                  V P                  4      '       g   R# VP                  '       d   VP                  MV P                  P                  R4      pV'       g   R# V P                  RV RV P                  P                   R24       V P                  W!P                  R7      '       d   V P                  4        R# R# )	r6   r`  Tr   z	Checkout z in rz   )r  F)r   r   r   r   rc  r   rH   rb  r   r8   r   r   rV   r  r7   r   )rk   r   r8   s   &  r,   r  Runner.checkout  s    &&,dll;99>>U""''--*F*F-4-@-@-@g))diimmT^F_9[Mdiinn-=SAB[;;MMOr+   c                   V ^8  d   QhRR/# r   r#   )rK   s   "r,   rL   r     s      $ r+   c           	     	   V P                  R V P                  P                   R24       \        P                  P                  V P                  4      '       d   V P                  R4       R#  V P                  P                  V P                  P                  4       V P                  R4       R#   \         d;   pT P                  R\        P                  ! \        T4      4      4        Rp?R# Rp?ii ; i)z	Download rz   z  -> Already downloadedTz	  -> doner   NF)r   r   rV   r   rH   rb  r   r   r   r   r   r   r   )rk   r   s   & r,   downloadRunner.download  s    9TYY^^,C0177==''HH./	&&tyy~~6HH[!   	HHVTXXc!f-.	s   -A B/ /C4:/C//C4c                   V ^8  d   QhRR/# r   r#   )rK   s   "r,   rL   r     s       r+   c                	   \         P                  ! R V P                  4      pV P                  RV P                   24       \
        P                  P                  V P                  4      '       g   V P                  R4       R# VP                  .VP                  ,           p\        V\        P                  V P                  R7      w  r4pVP                  ^ 8w  dg   RP                  RP                  V4      VP                  4      pV P                  R\         P"                  ! V4      4       V P                  VRR	7       R
# V P                  VRR	7       R# )r:   zExecuting command in   -> Not downloaded yetT)stderrrL  z.Command '{}' returned non-zero exit status {}. z  -> rc   rr   F)r   r   r   r   r   r   rH   rb  r;   r<   r   rN  STDOUT
returncoderK   r   r   r   )rk   r   r   prY  rX  err_messages   &      r,   foreachRunner.foreach  s    &&+T\\:(89ww}}T]]++HH./',,.s:+<+<$--P	<<1JQQRURZRZ[^R_abamamnKHHWdhh{34HHSbH!"r+   c                   V ^8  d   QhRR/# r   r#   )rK   s   "r,   rL   r     s     @ @t @r+   c                	   \         P                  ! R V P                  4      pV P                  P                  '       g   R# V P                  P
                  '       di   \        V P                  P                  4      P                  4       pVP                  '       d   VP                  4        \        P                  ! RV 24       VP                  '       Ed>   \        V P                  P                  4      P                  4       p W0P                  P!                  R4      ,          pVP#                  4       '       d7   VP                  '       d   VP                  4        V P                  RV 24        Y0P                  P!                  R4      ,          pTP#                  4       '       d7   TP                  '       d   TP                  4        T P                  RT 24        \'        TP)                  4       4      '       g   \+        \-        T4      4       \        V P0                  4      pVP2                  P                  4       VP4                  ,          pVP7                  4       '       d9   VP                  '       d   VP                  4        V P                  RV 24       R# VP9                  4       '       g   R#  VP                  '       d   \+        \-        V4      4       V P                  RV 24       R#   \$         d     ELi ; i  \$         d     EL7i ; i  \.         d     ELi ; i  \:         d(   p\        P<                  ! RT RT 24        Rp?R# Rp?ii ; i)	r>   Tz	Deleting source_filenamepatch_filenamezUnable to remove: z: NF)r   r   r   r   rc  
redirectedr   r   r   r?   unlinkr   r   r@   r   cachedirr   is_filer   anyiterdirr   r   FileNotFoundErrorr   parentrV   
is_symlinkis_dirOSErrorerror)rk   r   wrapfilepackagecachesubproject_cache_filesubproject_patch_filesubproject_source_dirr   s   &       r,   purgeRunner.purge  s   &&)4<<8 yy~~~99DII778@@BH!HHy
+,    2 2 ; ;<DDFL(4yy}}EV7W(W%(0022-446HHy)>(?@A(4yy}}EU7V(V%(0022-446HHy)>(?@A<//122(\):;
 !%T]] 3 5 < < D D FI^IcIc c !++--%,,.HHy!6 789$++--	$S)>%?@HHy!6 789
 W !  !  % ,  	JJ+,A+B"QCHI	sb   AK7 $K7 3AL	 <$L	 !3L ;L- (L- 7LL	LLL*)L*-M8MMc                    V ^8  d   QhRRRR/# )rG   r   z'PurgeArguments'rJ   r`   r#   )rK   s   "r,   rL   r   N  s     U U, U Ur+   c                	    V P                   '       g/   \        P                  ! R 4       \        P                  ! R4       R# R# )rc   z<Nothing has been deleted, run again with --confirm to apply.N)r?   r   r   r   s   &r,   
post_purgeRunner.post_purgeM  s(    HHRLHHST r+   c                   V ^8  d   QhRR/# r   r#   )rK   s   "r,   rL   r   S  s     ' 'd 'r+   c                	L   \         P                  ! R V P                  4      pVP                  '       d    VP                  '       d   \        R4       R# VP                  '       d   V P                  RV P                  P                   R24       \        P                  P                  V P                  4      '       g   V P                  R4       R# V P                  P                  V P                  P                  4       R# VP                  '       Ed   RV P                  P                  9  d   \         P"                  ! R4       R# R	V P                  P                  9  d   \         P"                  ! R
4       R# \%        V P                  P&                  V P                  P                  R	,          4      p\)        V P                  P                  P+                  RR4      4      p\%        V P                  4      p\%        V P                  P,                  V P                  P                  R,          4      pV'       d   TMVP.                  p\1        W&4      p\3        VP5                  R4      4      pV P                  RV P                  P                   RV R24       \6        P8                  ! V4       W,
           Fg  p	V	P;                  4       '       g   K  V	P=                  V4      p
WZ,          pVP.                  P?                  RRR7       \6        P@                  ! W4       Ki  	  R# )rB   z0error: --apply and --save are mutually exclusiveFz#Re-applying patchfiles overlay for rz   ro  Tpatch_directoryz-can only save packagefiles to patch_directoryrz  z-can only save packagefiles from a [wrap-file]lead_directory_missingz**/*zSaving r3  )parentsexist_ok)!r   r   r   rC   rD   rt   r   r   rV   r   rH   rb  r   r   r	  r7  r   r  r   r~  r!   r   filesdirr  r[   rh   globr}   rmtreer  relative_tomkdircopyfile)rk   r   archive_pathr  r   packagefilesrI   rY   directory_filessrc_pathrel_pathdst_paths   &           r,   r  Runner.packagefilesS  s-   &&0$,,?===W\\\DE===HH:499>>:J#NO77==//23**499>>:<<< 		(8(88

JK 		(8(88

JK 2 2 ; ;TYY=M=MN_=`aL%)$))*:*:*>*>?WY^*_%`"T]]+I		 2 2DII4D4DEV4WXL%;	AQAQI.|GM!).."89OHHwtyy~~.d<.DEMM,'+;;''))#//	:'2%%dT%B3 < r+   )r   r   r   N)F)"r%   r&   r'   r(   r)   r   r   r   staticmethodr   r   r   r   r   r   r   r  r  r  r  r  r,  r?  r6  rR  r[  rD  r  rk  rv  r  r  r  r*   r#   r+   r,   r   r   r   s    N
MJ4 @ @-^,<'dc

"*hT2$@D U U
' 'r+   r   c                    V ^8  d   QhRRRR/# )rG   rt  argparse.ArgumentParserrJ   r`   r#   )rK   s   "r,   rL   rL   }  s     > >3 > >r+   c                    V P                  R RRR7       V P                  RRR\         R2R7       V P                  RR	R
\        RR7       V P                  RRRRR7       R
# )z--sourcedirr   zPath to source directory)defaulthelpz--typesrc   z?Comma-separated list of subproject types. Supported types are: z (default: all)z-jz--num-processesNz2How many parallel processes to use (Since 0.59.0).)r  rc  r  z--allow-insecureF
store_truez"Allow insecure server connections.r  actionr  )add_argumentALL_TYPES_STRINGr   )rt  s   &r,   add_common_argumentsr  }  sx    NN=#2  4NN9bYZjYkkz{  }NN4*DsL  NNN%u\<  >r+   c               $    V ^8  d   QhRRRRRR/# )rG   rt  r  rV   r   rJ   r`   r#   )rK   s   "r,   rL   rL     s"     % % 7 %s %d %r+   c           
     z    R pV'       d   V P                  VRR^R. VR7       R# V P                  RRR. VR7       R# )z4Patterns of subprojects to operate on (default: all)r   patternr   )destmetavarnargsr  r  r  *)r  r  r  r  N)r  )rt  rV   helpstrs   && r,   add_subprojects_argumentr    sI    DG	t-!T\! 	 	1 	
}isB# 	 	%r+   c                    V ^8  d   QhRRRR/# )rG   
subparsersz'SubParsers'rJ   r  r#   )rK   s   "r,   rL   rL     s      | 8O r+   c                   V P                  R RR7      pVP                  RRRRR7       \        V4       \        V4       VP	                  \
        P                  R7       VP	                  \
        P                  R	7       V# )
rD  z,Update wrap files from WrapDB (Since 0.63.0)r  z--forceFr  z4Update wraps that does not seems to come from WrapDBr  r    )pre_func)
add_parserr  r  r  set_defaultsr   r   r   )r  rt  s   & r,   add_wrap_update_parserr    sp    h-[\ANN9eLN  PQNNF$8$8N9NNF44N5Hr+   c                    V ^8  d   QhRRRR/# )rG   parserr  rJ   r`   r#   )rK   s   "r,   rL   rL     s     49 491 49d 49r+   c                   V P                  R RR7      pRVn        VP                  RRR7      pVP                  RRRR-R	7       VP                  R
RRRR	7       \	        V4       \        V4       VP                  \        P                  R7       VP                  RRR7      pVP                  RRRRR	7       VP                  RRRR7       \	        V4       \        V4       VP                  \        P                  R7       VP                  RR.R7      p\	        V4       \        V4       VP                  \        P                  R7       VP                  RRR7      pVP                  RRRR7       VP                  R\        P                  \        P                  R7       \	        V4       \        VR4       VP                  \        P                  R7       VP                  RRR7      p\	        V4       \        V4       VP                  R RRR!R"7       VP                  R#RRR$R"7       VP                  \        P                  R7       VP                  \        P                   R%7       VP                  R&R'R7      p\	        V4       \        V4       VP                  R(RRR)R"7       VP                  R*RRR+R"7       VP                  \        P"                  R7       R,# )/Commandsr;   )titler  TrD  z&Update all subprojects from wrap filesr  z--rebaser  r  z--resetFzBCheckout wrap's revision and hard reset to that commit. (git only)r  r  zCheckout a branch (git only)r  zCreate a new branchr8   ?zMName of the branch to checkout or create (default: revision set in wrap file))r  r  rk  rv  z/Execute a command in each subproject directory.zcommand ...z/Command to execute in each subproject directory)r  r  r<   z--filterr  z*Remove all wrap-based subproject artifactsz--include-cachez Remove the package cache as well)r  r  r  z	--confirmz+Confirm the removal of subproject artifacts)	post_funcr  zManage the packagefiles overlayz--applyz$Apply packagefiles to the subprojectz--savez%Save packagefiles from the subprojectNzeRebase your branch on top of wrap's revision. Deprecated, it is now the default behaviour. (git only)zEnsure subprojects are fetched, even if not in use. Already downloaded subprojects are not modified. This can be used to pre-fetch all subprojects and avoid downloads during configure.)add_subparsersrequiredr  r  r  r  r  r   rD  r  rk  argparse	REMAINDERSUPPRESSrv  r  r  r  )r  r  rt  s   &  r,   add_argumentsr    s   &&Zi&HJJh-UVANN:tLR  S NN9eL]  _QNNFMMN2j/MNANN4|-  /NN=g  iQNNFOON4j 0E 	FA QNNFOON4i._`ANN9mI  KNN6!3!3 ))  +Q
+NNFNNN3g,XYAQNN$\5OqNrNN;|UIvNwNNFLLN1NNV..N/n3TUAQNN9\5GmNnNN8L%FmNnNNF$7$7N8r+   c                    V ^8  d   QhRRRR/# )rG   r   r   rJ   r   r#   )rK   s   "r,   rL   rL     s     1 1 1 1r+   c                	  a \         P                  P                  \         P                  P                  V P                  4      4      p\         P                  P                  \         P                  P                  VR 4      4      '       g/   \        P                  ! R\        P                  ! V4      R4       ^# \        P                  ! 4       ;_uu_ 4        \        VRR4      pVP                  4        VP                  4       ;'       g    RpRRR4       \         P                  P                  \         P                  P                  VX4      4      '       g/   \        P                  ! R\        P                  ! V4      R4       ^ # \!        WRV P"                  RR	7      pV P$                  '       d   VP&                  P)                  4        UaUu. uF^  w  op\*        ;QJ d)    V3R
 lV P$                   4       F  '       g   K   RM	  RM! V3R
 lV P$                   4       4      '       g   K\  VNK`  	  pppM#\-        VP&                  P/                  4       4      pV P0                  '       d9   V P0                  P3                  R4       Uu. uF  qP5                  4       NK  	  upM. p	V	 F$  pV\6        9  g   K  \9        RV: R\:         24      h	  . p
. p\<        P>                  ! 4       p\<        P@                  ! V4       \C        V PD                  4      pV	'       d$   V Uu. uF  qfPF                  V	9   g   K  VNK  	  pp\I        V RR4      pV'       d	   V! V 4       \K        \M        V4      4      pV F}  p\O        WVPP                  4      PS                  4       p\U        WVVV 4      pVPW                  VVPX                  4      pV
P[                  V4       VP[                  VP\                  4       K  	  VP_                  \<        P`                  ! V
!  4      pVPc                  4        \I        V RR4      pV'       d	   V! V 4       \e        VV4       UUu. uF  w  ppV'       d   K  VNK  	  pppV'       d1   RpVRP                  V4      ,          p\        Pf                  ! V4       \M        V4      #   + '       g   i     EL; iu uppi u upi u upi u uppi )zmeson.build	Directoryz-does not seem to be a Meson source directory.rc   noner   Nz"does not seem to have subprojects.T)wrap_frontendr"   silentc              3  R   <"   T F  p\         P                   ! SV4      x  K  	  R # 5ir   )fnmatch).0patrV   s   & r,   	<genexpr>run.<locals>.<genexpr>  s!     R>Qsc22>Qs   $'F,zUnknown subproject type z, supported types are: r  r  zlPlease check logs above as command failed in some subprojects which could have been left in conflict state: rE   )4r   rH   relpathrealpathr   isfiler   r   r  r  
no_loggingr	   load_root_meson_fileextract_subproject_dirrb  r   r   r"   r   wrapsitemsr  r   r7  r   r   r   r   r   r  asyncionew_event_loopset_event_loopr   r   rc  getattrr]   r   r   r   as_posixr   run_in_executorr   r   rV   run_until_completegatherrv   zipwarning)r   
source_dirintrsubproject_dirrN   rV   r   r  tr   tasks
task_namesloopexecutorr  r   r   runnertaskresultsr  r  failuresms   &    `                  r,   r   r     s~   !1!1'2C2C!DEJ77>>"'',,z=ABB

;		* 57fg			'
B?!!#446GG- 
 77==j.ABBdii
35YZ4PWPfPfostA() T*$CRg>Q>QRCCCRg>Q>QRR  T QWW^^%&=D]]] 3 3C 89 81WWY 89PREI #;A5@WXhWi!jkk  (*E J!!#D4 !'"7"78H"'>%$99+=%>w
D1HCJFz4>>BKKM4':##Hfjj9T$))$  %%gnne&<=G
LLNd3I'*-j'*BR*Bw'*BHRz	TYYx  Qx=Y 
		T : ?  SsB   8R1S#S%S.S
S!S8SS%S1S	)      r   )D
__future__r   dataclassesr   r   sysr   rN  r  r  r  rd   r   r}   concurrent.futures.threadr   pathlibr   typingr   rT   rP   rc   r   astr	   mesonlibr
   r   r   r   r   	wrap.wrapr   r   r   r   r   r   TYPE_CHECKINGtyping_extensionsr   r   _SubParsersActionArgumentParser
SubParsersr   r.   r2   r6   r:   r>   rB   r   r  version_infor  fully_trusted_filterTarFileextraction_filterr[   r]   r   r  r  r  r  r   r#   r+   r,   <module>r     sG   " *         8      ) _ _I I ???*,++H,C,CDJH ) %	 %I 9  	  99Y' w(4W5Q5Q(RGOO%#" #"L eG G GT>%49l1r+   