ó
    9—Íf±0  ã                   óL  • S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	J
r
  S SKJr  S SKJrJrJrJr  S SKJrJr  S SKJr  S SKJr  S SKJrJr  S S	KJr  S S
KJrJ r J!r!J"r"J#r#J$r$  S SK%J&r&  \RN                  S:  a  S SK(r)OS SK)r)\RT                  " \+5      r,Sr-Sr.S\/S\0S\\\/\
4      4S jr1S\\/\
4   S\\/   S\/S\\/   S\\/   S\0S\0S\4S jr2S\/S\/S\\/   S\/S\\/   S\\/   S\0S\0S\0S\4S jr3S\/S\/S\0S\\/   S\/S\\/   S\\/   S\0S\0S\0S\4S jr4S \
S\/S\/S!\/S\\/   S\/S\\/   S\\/   S\0S\0S\4S" jr5S#\\/   S\/S\\/   S\\/   S\
4
S$ jr6S \
S\04S% jr7S&\&S'\\
   S\0SS4S( jr8S.S) jr9S*\/S\/4S+ jr:\Rv                  " S,5      r<S\\/\
4   S\\\/      4S- jr=g)/é    N)ÚPath)Úwhich)ÚListÚNoReturnÚOptionalÚUnion)ÚInvalidRequirementÚRequirement)Úpaths)Úpackage_name_from_spec)Ú#TEMP_VENV_EXPIRATION_THRESHOLD_DAYSÚWINDOWS)Úhazard)Ú	PipxErrorÚexec_appÚget_pypackage_bin_pathÚ	pipx_wrapÚrmdirÚrun_pypackage_bin)ÚVenv)é   é   Úpipx_expired_venvzn'{app}' executable script not found in package '{package_name}'.
Available executable scripts:
    {app_lines}ÚappÚis_pathÚreturnc                 óR  • [        U 5      nUR                  5       (       a  U$ U(       a  [        SU  S35      e[        R                  R                  U 5      R                  (       aA  U R                  S5      (       d  [        S5      e[        R                  S5        [        U 5      $ g )NzThe specified path z does not existz.pyz¯
                pipx will only execute apps from the internet directly if they
                end with '.py'. To run from an SVN, try pipx --spec URL BINARY
                z9Detected url. Downloading and executing as a Python file.)r   Úis_filer   ÚurllibÚparseÚurlparseÚschemeÚendswithÚloggerÚinfoÚ_http_get_request)r   r   Úapp_paths      Ú3/usr/lib/python3/dist-packages/pipx/commands/run.pyÚmaybe_script_contentr)   -   s“   € ô
 �C‹y€HØ×Ñ×ÑØˆÞ	ÜÐ-¨c¨U°/ÐBÓCÐCô ‡|�|×Ñ˜SÓ!×(×(Ø�|‰|˜E×"Ñ"Üðóð ô 	�‰ÐOÔPä  Ó%Ð%ð ó    ÚcontentÚapp_argsÚpythonÚpip_argsÚ	venv_argsÚverboseÚ	use_cachec                 óÒ  • [        U 5      nUc  [        U5      nO™[        XrX45      n	[        U	5      n
[	        U
S U5        U	R                  5       (       a  [        R                  SU	 35        O;[        X’US9n
U
R                  X5S9  U
R                  XC5        U
R                  Xs5        U
R                  n[        U [        5      (       a  [        X€/UQ5        g [        USU /UQ5        g )NúReusing cached venv ©r-   r0   ©r.   r0   z-c)Ú_get_requirements_from_scriptr   Ú_get_temporary_venv_pathr   Ú_prepare_venv_cacheÚexistsr$   r%   Úcheck_upgrade_shared_libsÚcreate_venvÚinstall_unmanaged_packagesÚpython_pathÚ
isinstancer   )r+   r,   r-   r.   r/   r0   r1   Úrequirementsr=   Úvenv_dirÚvenvs              r(   Ú
run_scriptrB   I   sÖ   € ô 1°Ó9€LØÑÜ˜6“l‰ô ,¨LÀ(ÓVˆÜ�H‹~ˆÜ˜D $¨	Ô2Ø�?‰?×ÑÜ�K‰KÐ.¨x¨jÐ9Õ:ä˜¸ÑAˆDØ×*Ñ*°HÐ*ÑNØ×Ñ˜YÔ1Ø×+Ñ+¨LÔCØ×&Ñ&ˆä�'œ4× Ñ Ü�+Ð2¨Ð2Õ3ä�+˜t WÐ8¨xÐ8Õ9r*   Úpackage_or_urlÚ
pypackagesc	                 óî  • [        U 5      (       a4  [        R                  [        S[         SU  S[        U 5       S3SS95        [
        (       a   U  S3n	[        R                  SU	< S	35        OU n	[        U 5      n
U
R                  5       (       a$  [        R                  S
U
 S35        [        X¢5        U(       a  [        SU
 S35      e[        U/X4U5      n[        U5      nUR                  U	-  n[        XÍU5        UR                  X	5      (       a+  [        R                  SU 35        UR!                  X	U5        g [        R                  SU 35        [#        [%        U5      UU U	UUUUUU5
        g )Nz
                z  z: is already on your PATH and installed at
                z2. Downloading and running anyway.
                ú    ©Úsubsequent_indentú.exeúAssuming app is ú (Windows only)z0Using app in local __pypackages__ directory at 'Ú'z2
            '--pypackages' flag was passed, but 'z‹' was
            not found. See https://github.com/cs01/pythonloc to learn how to
            install here, or omit the flag.
            r3   zvenv location is )r   r$   Úwarningr   r   r   r%   r   r9   r   r   r7   r   Úbin_pathr8   Úhas_appÚrun_appÚ_download_and_runr   )r   rC   r,   r-   r.   r/   rD   r0   r1   Úapp_filenameÚpypackage_bin_pathr@   rA   rN   s                 r(   Úrun_packagerT   o   s�  € ô ˆS‡z�zÜ�‰ÜðÜ�˜˜3˜%ð  Ü�s“�ð ðð #*ñô	
÷ ‚wØ˜˜d�|ˆÜ�‰Ð& |Ñ&6°oÐFÕGàˆä/°Ó4ÐØ× Ñ ×"Ñ"Ü�‰ÐFÐGYÐFZÐZ[Ð\Ô]ÜÐ,Ô7ÞÜð2Ø2DÐ1Eð Fðó
ð 	
ô (¨Ð(8¸&ÈIÓV€Hä�‹>€DØ�}‰}˜|Ñ+€HÜ˜¨	Ô2à‡|�|�C×&Ñ&Ü�‰Ð*¨8¨*Ð5Ô6Ø�‰�S¨Õ1ä�‰Ð'¨ zÐ2Ô3ÜÜ�‹NØØØØØØØØØõ	
r*   Úspecc
                 óÌ   •  [        U 5      R                  n
Ub  SO
[        X5      nUb  [	        X³XEXhU	5        gUb  UOU n[        U
UUUUUUUU	5	        g! [         a    U n
 NKf = f)zMInstalls venv to temporary dir (or reuses cache), then runs app from
package
N)r
   Únamer	   r)   rB   rT   )r   rU   r   r,   r-   r.   r/   rD   r0   r1   Úpackage_namer+   rC   s                r(   ÚrunrY   ±   s†   € ð"Ü" 3Ó'×,Ñ,ˆð Ñ&‰dÔ,@ÀÓ,N€GØÑÜ�7 f¸	ÈIÕVà!%Ñ!1™°sˆÜØØØØØØØØØõ
	
øô ó ð Šðús   ‚A ÁA#Á"A#r@   rR   c
           	      ó  ^• [        XU	S9n
U
R                  XiS9  U
R                  R                  R                  b!  U
R                  R                  R                  nO[        TXVU	S9nUS:H  nU
R                  XvU5        U
R                  UTUSSSS9  U
R                  X#5      (       d²  U
R                  R                  R                  nX+:X  aU  [        U5      S:X  aF  US   n[        S	U< S
U< 35        [        (       a   U S3n[        R                  SU< S35        O;UnO8U4S jU 5       n[        [         R#                  UUSR%                  U5      S9SS9eU(       d  U [&        -  R)                  5         U
R+                  X#U5        g )Nr4   r5   ÚpipFT)rX   rC   r.   Úinclude_dependenciesÚinclude_appsÚis_main_packageé   r   zNOTE: running app z from rI   rJ   rK   c              3   ó8   >#   • U  H  o S T SU S3v •  M     g7f)z - usage: 'pipx run --spec Ú z [arguments?]'N© )Ú.0ÚarC   s     €r(   Ú	<genexpr>Ú$_download_and_run.<locals>.<genexpr>  s'   øé € ÐjÒeiÐ`a˜#Ð8¸Ð8HÈÈ!ÈÈNÕ[Òeiùs   ƒz
    )r   rX   Ú	app_lines)Úwrap_message)r   r:   Úpipx_metadataÚmain_packageÚpackager   r;   Úinstall_packagerO   ÚappsÚlenÚprintr   r$   r%   r   ÚAPP_NOT_FOUND_ERROR_MESSAGEÚformatÚjoinÚVENV_EXPIRED_FILENAMEÚtouchrP   )r@   rC   r   rR   r,   r-   r.   r/   r1   r0   rA   rX   Úoverride_sharedrm   Úall_appss    `             r(   rQ   rQ   Û   sŒ  ø€ ô �°Ñ9€DØ×"Ñ"¨HÐ"ÑFà×Ñ×&Ñ&×.Ñ.Ñ:Ø×)Ñ)×6Ñ6×>Ñ>‰ä-¨n¸fÐahÑiˆà" eÑ+€Oà×Ñ�Y¨/Ô:Ø×ÑØ!Ø%ØØ"ØØð ñ ð �<‰<˜×*Ñ*Ø×!Ñ!×.Ñ.×3Ñ3ˆð Ó¤3 t£9°£>Ø�q‘'ˆCÜÐ& s¡g¨V°LÑ3CÐDÔEßŠwØ"%  d˜|�Ü—‘Ð.¨|Ñ.>¸oÐNÕOà"‘äjÑeiÓjˆHÜÜ+×2Ñ2ØØ!-Ø&Ÿm™m¨HÓ5ð 3ð ð
 #ñð ö à	Ô)Ñ	)×0Ñ0Ô2à‡L�L� HÕ-r*   r?   c                 óð  • [         R                  " 5       nUR                  SR                  U 5      R	                  5       5        UR                  UR	                  5       5        UR                  SR                  U5      R	                  5       5        UR                  SR                  U5      R	                  5       5        UR                  5       SS n[        [        R                  R                  5      U-  $ )zþComputes deterministic path using hashing function on arguments relevant
to virtual environment's end state. Arguments used should result in idempotent
virtual environment. (i.e. args passed to app aren't relevant, but args
passed to venv creation are.)
Ú Né   )
ÚhashlibÚsha256Úupdaterr   ÚencodeÚ	hexdigestr   r   ÚctxÚ
venv_cache)r?   r-   r.   r/   ÚmÚvenv_folder_names         r(   r7   r7     sª   € ô 	�ŠÓ€AØ‡H�HˆR�W‰W�\Ó"×)Ñ)Ó+Ô,Ø‡H�HˆV�]‰]‹_ÔØ‡H�HˆR�W‰W�XÓ×%Ñ%Ó'Ô(Ø‡H�HˆR�W‰W�YÓ×&Ñ&Ó(Ô)Ø—{‘{“} S bÐ)ÐÜ”—	‘	×$Ñ$Ó%Ð(8Ñ8Ð8r*   c                 ó  • U R                  5       R                  n[        R                  " [        R                  R                  5       R                  5       5      nX!-
  nS[        -  nX4:„  =(       d    U [        -  R                  5       $ )Ni€Q )
ÚstatÚst_ctimeÚtimeÚmktimeÚdatetimeÚnowÚ	timetupler   rs   r9   )r@   Úcreated_time_secÚcurrent_time_secÚageÚexpiration_threshold_secs        r(   Ú_is_temporary_venv_expiredr�   (  sl   € Ø—}‘}“×/Ñ/ÐÜ—{’{¤8×#4Ñ#4×#8Ñ#8Ó#:×#DÑ#DÓ#FÓGÐØ
Ñ
-€CØ+Ô.QÑQÐØÑ)×X¨hÔ9NÑ.N×-VÑ-VÓ-XÐXr*   rA   rN   c                 ó¶   • U R                   nU(       d<  Ub  UR                  5       (       a$  [        R                  SU< 35        [	        U5        [        5         g )NzRemoving cached venv )Úrootr9   r$   r%   r   Ú_remove_all_expired_venvs)rA   rN   r1   r@   s       r(   r8   r8   0  s@   € Ø�y‰y€HÞ˜(Ñ*¨h¯o©o×.?Ñ.?Ü�‰Ð+¨H©<Ð8Ô9ÜˆhŒÜÕr*   c                  óà   • [        [        R                  R                  5      R	                  5        H9  n [        U 5      (       d  M  [        R                  SU < 35        [        U 5        M;     g )NzRemoving expired venv )	r   r   r   r€   Úiterdirr�   r$   r%   r   )r@   s    r(   r’   r’   8  sJ   € ÜœŸ™×-Ñ-Ó.×6Ñ6Ö8ˆÜ% h×/Ó/Ü�K‰KÐ0°±Ð=Ô>Ü�(ŽOò 9r*   Úurlc                 ó<  •  [         R                  R                  U 5      nUR                  R	                  5       =(       d    SnUR                  5       R                  U5      $ ! [         a.  n[        R                  SSS9  [        [        U5      5      UeS nAff = f)Núutf-8zUncaught Exception:T)Úexc_info)r   ÚrequestÚurlopenÚheadersÚget_content_charsetÚreadÚdecodeÚ	Exceptionr$   Údebugr   Ústr)r•   ÚresÚcharsetÚes       r(   r&   r&   ?  s{   € ð'Ü�n‰n×$Ñ$ SÓ)ˆØ—+‘+×1Ñ1Ó3×>°wˆØ�x‰x‹z× Ñ  Ó)Ð)øÜó 'Ü�‰Ð*°TˆÑ:Üœ˜A›Ó QÐ&ûð'ús   ‚A A# Á#
BÁ-)BÂBzG(?m)^# /// (?P<type>[a-zA-Z0-9-]+)$\s(?P<content>(^#(| .*)$\s)+)^# ///$c                 ó”  • [        U [        5      (       a  U R                  SS9n SnU R                  SS5      n [        R                  U 5       Vs/ s H  o"R                  S5      U:X  d  M  UPM     nnU(       ds  [        R                  U 5       Vs/ s H  o"R                  S5      S:X  d  M  UPM     nnU(       a0  [        R                  [        S[         S	3S
S95        [        S5      eg[        U5      S:”  a  [        SU S35      eSR                  S US   R                  S5      R                  SS9 5       5      n [        R                   " U 5      n/ nUR#                  S/ 5       H)  n [%        U5      nUR+                  [-        U5      5        M+     U$ s  snf s  snf ! [&         a  n	[)        SU SU	 35      U	eSn	A	ff = f)z"
Supports inline script metadata.
r—   )ÚencodingÚscriptz
Ú
ÚtypeÚ	pyprojectz
                    a
    Using old form of requirements table. Use updated PEP
                    723 syntax by replacing `# /// pyproject` with `# /// script`
                    and `run.dependencies` (or `run.requirements`) with
                    `dependencies`.
                    rF   rG   zOld 'pyproject' table foundNr_   z	Multiple z blocks foundrx   c              3   ó`   #   • U  H$  oR                  S 5      (       a  USS OUSS v •  M&     g7f)z# é   Nr_   )Ú
startswith)rc   Úlines     r(   re   Ú0_get_requirements_from_script.<locals>.<genexpr>p  s1   é € ð ÚDy¸D—O‘O D×)Ñ)ˆˆQˆR‰¨t°A°B¨xÔ7ÒDyùs   ‚,.r   r+   T)ÚkeependsÚdependencieszInvalid requirement z: )r>   r   Ú	read_textÚreplaceÚINLINE_SCRIPT_METADATAÚfinditerÚgroupr$   Úerrorr   r   Ú
ValueErrorrn   rr   Ú
splitlinesÚtomllibÚloadsÚgetr
   r	   r   Úappendr¡   )
r+   rW   r�   ÚmatchesÚpyproject_matchesrª   r?   ÚrequirementÚreqr¤   s
             r(   r6   r6   M  sÎ  € ô
 �'œ4× Ñ Ø×#Ñ#¨WÐ#Ð5ˆà€Dð �o‰o˜f dÓ+€Gä0×9Ñ9¸'ÔBÓ^ÒB�QÇgÁgÈfÃoÐY]ÑF]�qÑB€GÐ^æÜ(>×(GÑ(GÈÔ(PÓsÒ(P 1×T[ÑT[Ð\bÓTcÐgrÑTrŸQÑ(PÐÐsÞÜ�L‰LÜðÜ�Hð ðð '.ñô
ô Ð:Ó;Ð;Øä
ˆ7ƒ|�aÓÜ˜9 T F¨-Ð8Ó9Ð9à�g‰gñ ØDKÈAÁJ×DTÑDTÐU^ÓD_×DjÑDjÐtxÐDjÑDyóó €Gô —’˜gÓ&€Ià€LØ —}‘} ^°RÖ8ˆð	NÜ˜kÓ*ˆCð
 	×ÑœC ›HÖ%ñ 9ð ÐùòO _ùò tøô< "ó 	NÜÐ2°;°-¸rÀ!ÀÐEÓFÈAÐMûð	Nús0   ÁFÁ,FÂF!Â.F!Å1F&Æ&
GÆ0GÇG)r   N)>rˆ   rz   ÚloggingÚreÚsysr†   Úurllib.parser   Úurllib.requestÚpathlibr   Úshutilr   Útypingr   r   r   r   Úpackaging.requirementsr	   r
   Úpipxr   Úpipx.commands.commonr   Úpipx.constantsr   r   Úpipx.emojisr   Ú	pipx.utilr   r   r   r   r   r   Ú	pipx.venvr   Úversion_infoÚtomlirº   Ú	getLoggerÚ__name__r$   rs   rp   r¡   Úboolr)   rB   rT   rY   rQ   r7   r�   r8   r’   r&   Úcompiler´   r6   rb   r*   r(   Ú<module>r×      s8  ðÛ Û Û Û 	Û 
Û Û Û Ý Ý ß 2Ó 2ç Bå Ý 7ß GÝ ÷÷ õ à×Ñ�gÓÜãà	×	Ò	˜8Ó	$€ð ,Ð ðÐ ð˜cð ¨Dð °X¸eÀCÈÀIÑ>NÑ5Oô ð8#:Ø�3˜�9Ñð#:à�3‰ið#:ð ð#:ð �3‰ið	#:ð
 �C‰yð#:ð ð#:ð ð#:ð ô#:ðL?
Ø	ð?
àð?
ð �3‰ið?
ð ð	?
ð
 �3‰ið?
ð �C‰yð?
ð ð?
ð ð?
ð ð?
ð ô?
ðD'
Ø	ð'
à
ð'
ð ð'
ð �3‰ið	'
ð
 ð'
ð �3‰ið'
ð �C‰yð'
ð ð'
ð ð'
ð ð'
ð ô'
ðT;.Øð;.àð;.ð 
ð;.ð ð	;.ð
 �3‰ið;.ð ð;.ð �3‰ið;.ð �C‰yð;.ð ð;.ð ð;.ð ô;.ð|9¨4°©9ð 9¸cð 9ÈTÐRUÉYð 9ÐcgÐhkÑclð 9Ðquô 9ðY¨ð Y°$ô Yð ˜dð  ¨h°t©nð  Èð  ÐRVô  ôð'˜3ð ' 3ô 'ð ŸšÐ$nÓoÐ ð4¨5°°d°Ñ+;ð 4ÀÈÈcÉÑ@Sõ 4r*   