
    /hh-                        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rS SKr " S S\R                  5      r " S S5      r " S S	\\R                  5      r\ R&                  \R(                  " 5       4S
 j5       r " S S\\R                  5      rS\R(                  " 5       -   r " S S\\R                  5      r " S S\\R                  5      r\S:X  a  \R6                  " 5         gg)    N)Traversable)Pathc                   2    \ rS rSrS rS rS rS rS rSr	g)	TestPackages   c                 v    [         R                  R                  X5      n[        US5      R	                  5         g )Nwb)ospathjoinopenclose)self	directoryfilenamefullnames       </opt/python-3.13.8/usr/lib/python3.13/test/test_ensurepip.pytouchTestPackages.touch   s'    77<<	4Xt""$    c                 t   [         R                  " 5        nU R                  US5        [        R                  R
                  R                  [        S[        U5      5         U R                  [        R                  " 5       S5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nz pip-1.2.3b1-py2.py3-none-any.whl_WHEEL_PKG_DIRz1.2.3b1)tempfileTemporaryDirectoryr   unittestmockpatchobject	ensurepipr   assertEqualversion)r   tmpdirs     r   test_versionTestPackages.test_version   sw    ((*fJJvAB$$++I7GfV  !2!2!4i@ W +*VV +*s$   AB)!&BB)
B&	"B))
B7c                     [         R                  R                  R                  [        SS 5         U R                  [        R                  [        R                  " 5       5        S S S 5        g ! , (       d  f       g = f)Nr   )r   r   r   r   r   r    _PIP_VERSIONr!   r   s    r   test_version_no_dir TestPackages.test_version_no_dir   sK    ]]  ''	3CTJY33Y5F5F5HI KJJs   4A--
A;c                 R   S[         R                   S3n[        R                  R                  R                  [         SS 5         [         R                  " 5        nU R                  XR                  5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nzpip-z-py3-none-any.whlr   )	r   r&   r   r   r   r   _get_pip_whl_path_ctxr    name)r   pip_filenamebundled_wheel_paths      r   test_selected_wheel_path_no_dir,TestPackages.test_selected_wheel_path_no_dir"   sw    i4455FG]]  ''	3CTJ0026H  /F/FG 3 KJ22 KJs$   BB6B
B	B
B&c                 ,   Sn[         R                  " 5        nU R                  X!5        U R                  US5        U R                  US5        U R                  US5        [        R                  R
                  R                  [        S[        U5      5         [        R                  " 5        nU R                  XR                  5        S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)Nzpip-20.2.2-py2.py3-none-any.whlzpip-1.2.3-py2.py3-none-any.whlz!wheel-0.34.2-py2.py3-none-any.whlzpip-script.pyr   )r   r   r   r   r   r   r   r   r   r+   r    r,   )r   r-   r"   r.   s       r   !test_selected_wheel_path_with_dir.TestPackages.test_selected_wheel_path_with_dir(   s    8((*fJJv,JJv?@JJvBCJJv/$$++I7GfV446:L$$\3J3JK 7 W +* 76 WV +*s<   B DC4.C#
C4D#
C1-C44
D	>D
D N)
__name__
__module____qualname____firstlineno__r   r#   r(   r/   r2   __static_attributes__r4   r   r   r   r      s    %AJHLr   r   c                       \ rS rSrS rSrg)EnsurepipMixin8   c                 ,   [         R                  R                  S5      nUR                  5       U l        SU R                  l        U R                  UR                  5        [        R                  n[         R                  R                  S5      nUR                  5       n[        R                  Ul
        U R                  UR                  5        X$l	        [        R                  Ul        [        R                  R                  5       =U l        Ul        g )Nzensurepip._run_pipr   zensurepip.os)r   r   r   startrun_pipreturn_value
addCleanupstopr
   devnulllistdirr   environcopy
os_environ)r   run_pip_patchreal_devnullos_patch
patched_oss        r   setUpEnsurepipMixin.setUp:   s     ++,@A$**,$%!**+ zz==&&~6^^%
ZZ
&)''
/1zz/@@*,r   )rG   r?   N)r5   r6   r7   r8   rL   r9   r4   r   r   r;   r;   8   s    Ar   r;   c                   b    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rSrg)TestBootstrapL   c                 @   [         R                  " 5         U R                  R                  SSSS[        R
                  R                  S/[        R
                  R                  5        U R                  R                  S   S   nU R                  [        U5      S5        g Ninstall--no-cache-dir
--no-index--find-linkspipr      )
r   	bootstrapr?   assert_called_once_withr   r   ANY	call_argsr    len)r   additional_pathss     r   test_basic_bootstrapping&TestBootstrap.test_basic_bootstrappingN   s    ,,+\>!!5 MM	
  <<11!4Q7-.2r   c           
          [         R                  " SS9  U R                  R                  SSSS[        R
                  R                  SSS/[        R
                  R                  5        g )	Nz	/foo/bar/)rootrS   rT   rU   rV   z--rootrW   r   rY   r?   rZ   r   r   r[   r'   s    r   test_bootstrapping_with_root*TestBootstrap.test_bootstrapping_with_root\   sT    -,,+\>!!8[
 MM	
r   c           	          [         R                  " SS9  U R                  R                  SSSS[        R
                  R                  SS/[        R
                  R                  5        g )	NT)userrS   rT   rU   rV   z--userrW   rc   r'   s    r   test_bootstrapping_with_user*TestBootstrap.test_bootstrapping_with_userh   sQ    &,,+\>!!8U MM	
r   c           	          [         R                  " SS9  U R                  R                  SSSS[        R
                  R                  SS/[        R
                  R                  5        g )	NT)upgraderS   rT   rU   rV   z	--upgraderW   rc   r'   s    r   test_bootstrapping_with_upgrade-TestBootstrap.test_bootstrapping_with_upgrades   sQ    D),,+\>!!; MM	
r   c           	          [         R                  " SS9  U R                  R                  SSSS[        R
                  R                  SS/[        R
                  R                  5        g )	NrX   	verbosityrS   rT   rU   rV   -vrW   rc   r'   s    r   #test_bootstrapping_with_verbosity_11TestBootstrap.test_bootstrapping_with_verbosity_1~   sQ    a(,,+\>!!4 MM	
r   c           	          [         R                  " SS9  U R                  R                  SSSS[        R
                  R                  SS/[        R
                  R                  5        g )	N   ro   rS   rT   rU   rV   -vvrW   rc   r'   s    r   #test_bootstrapping_with_verbosity_21TestBootstrap.test_bootstrapping_with_verbosity_2   sQ    a(,,+\>!!5% MM	
r   c           	          [         R                  " SS9  U R                  R                  SSSS[        R
                  R                  SS/[        R
                  R                  5        g )	N   ro   rS   rT   rU   rV   -vvvrW   rc   r'   s    r   #test_bootstrapping_with_verbosity_31TestBootstrap.test_bootstrapping_with_verbosity_3   sQ    a(,,+\>!!65 MM	
r   c                 l    [         R                  " 5         U R                  U R                  S   S5        g )NENSUREPIP_OPTIONSrS   r   rY   r    rG   r'   s    r   'test_bootstrapping_with_regular_install5TestBootstrap.test_bootstrapping_with_regular_install   s(    )<=yIr   c                 j    [         R                  " SS9  U R                  U R                  S   S5        g )NT)
altinstallr   r   r   r'   s    r   #test_bootstrapping_with_alt_install1TestBootstrap.test_bootstrapping_with_alt_install   s*    t,)<=|Lr   c                 d    [         R                  " SS9  U R                  SU R                  5        g )NT)default_pipr   )r   rY   assertNotInrG   r'   s    r   #test_bootstrapping_with_default_pip1TestBootstrap.test_bootstrapping_with_default_pip   s%    -,doo>r   c                     U R                  [        5         [        R                  " SSS9  S S S 5        U R	                  U R
                  R                  5        g ! , (       d  f       N4= f)NT)r   r   )assertRaises
ValueErrorr   rY   assertFalser?   calledr'   s    r   $test_altinstall_default_pip_conflict2TestBootstrap.test_altinstall_default_pip_conflict   sF    z*4TB +,,- +*s   A
A(c                     SU R                   S'   [        R                  " 5         U R                  SU R                   5        g Nztest fodderPIP_THIS_SHOULD_GO_AWAY)rG   r   rY   r   r'   s    r   &test_pip_environment_variables_removed4TestBootstrap.test_pip_environment_variables_removed   s5     6C122DOODr   c                     [         R                  " 5         U R                  U R                  S   [        R
                  5        g NPIP_CONFIG_FILE)r   rY   r    rG   r
   rC   r'   s    r   test_pip_config_file_disabled+TestBootstrap.test_pip_config_file_disabled   s.     	):;RZZHr   r4   N)r5   r6   r7   r8   r_   rd   rh   rl   rr   rw   r|   r   r   r   r   r   r   r9   r4   r   r   rO   rO   L   sG    3

	
	
	
	
	
JM?.
EIr   rO   c              #   t  ^ #    T c  S nO " U 4S jS5      nU" 5       n[        5       n[        R                  R                  SU5      nU[        R                  S'    Uv   XCL a  [        R                  S	 g U[        R                  S'   g ! XCL a  [        R                  S	 f U[        R                  S'   f = f7f)Nc                      > \ rS rSr Y rSrg)fake_pip.<locals>.FakePip   r4   N)r5   r6   r7   r8   __version__r9   )r!   s   r   FakePipr      s    !Kr   r   rW   )r   sysmodulesget)r!   rW   r   sentinelorig_pips   `    r   fake_pipr      s     	" 	"ixH{{uh/HCKK*	E"!)CKK E"!)CKKs   AB8B
  *B8
+B55B8c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)TestUninstall   c                     [        S 5         [        R                  " 5         S S S 5        U R                  U R                  R
                  5        g ! , (       d  f       N4= f)N)r   r   _uninstall_helperr   r?   r   r'   s    r   )test_uninstall_skipped_when_not_installed7TestUninstall.test_uninstall_skipped_when_not_installed   s:    d^'') ,,- ^s   A
Ac                    [        S5         [        R                  R                  5        n[        R
                  " 5         S S S 5        S S S 5        WR                  5       R                  5       nU R                  SU5        U R                  U R                  R                  5        g ! , (       d  f       Nl= f! , (       d  f       Nu= f)Nznot a valid versionz!only uninstall a matching version)r   testsupportcaptured_stderrr   r   getvaluestripassertInr   r?   r   )r   stderrwarnings      r   5test_uninstall_skipped_with_warning_for_wrong_versionCTestUninstall.test_uninstall_skipped_with_warning_for_wrong_version   s    +,--/6++- 0 - //#))+97C,,-	 0/ -,s"   B8B'B8'
B5	1B88
Cc                     [        5          [        R                  " 5         S S S 5        U R                  R	                  / SQ5        g ! , (       d  f       N,= f)N	uninstall-y--disable-pip-version-checkrW   r   r   r   r?   rZ   r'   s    r   test_uninstallTestUninstall.test_uninstall   s9    Z'')  	,,	
 Zs   A
Ac                     [        5          [        R                  " SS9  S S S 5        U R                  R	                  / SQ5        g ! , (       d  f       N,= f)NrX   ro   )r   r   r   rq   rW   r   r'   s    r   test_uninstall_with_verbosity_1-TestUninstall.test_uninstall_with_verbosity_1   ;    Z''!4  	,,	
 Z   A
Ac                     [        5          [        R                  " SS9  S S S 5        U R                  R	                  / SQ5        g ! , (       d  f       N,= f)Nru   ro   )r   r   r   rv   rW   r   r'   s    r   test_uninstall_with_verbosity_2-TestUninstall.test_uninstall_with_verbosity_2   r   r   c                     [        5          [        R                  " SS9  S S S 5        U R                  R	                  / SQ5        g ! , (       d  f       N,= f)Nrz   ro   )r   r   r   r{   rW   r   r'   s    r   test_uninstall_with_verbosity_3-TestUninstall.test_uninstall_with_verbosity_3   s;    Z''!4  	,,	
 Zr   c                     SU R                   S'   [        5          [        R                  " 5         S S S 5        U R	                  SU R                   5        g ! , (       d  f       N+= fr   )rG   r   r   r   r   r'   s    r   r   4TestUninstall.test_pip_environment_variables_removed	  sG     6C12Z'') 2DOOD Zs   A
A#c                     [        5          [        R                  " 5         S S S 5        U R                  U R                  S   [
        R                  5        g ! , (       d  f       N<= fr   )r   r   r   r    rG   r
   rC   r'   s    r   r   +TestUninstall.test_pip_config_file_disabled  s@     Z'') ):;RZZH Zs   A
A%r4   N)r5   r6   r7   r8   r   r   r   r   r   r   r   r   r9   r4   r   r   r   r      s,    .
.


	
EIr   r   zpip c                   &    \ rS rSrS rS rS rSrg)TestBootstrappingMainFunctioni  c                    [         R                  R                  5        nU R                  [        5         [
        R                  " S/5        S S S 5        S S S 5        WR                  5       R                  5       nU R                  U[        5        U R                  U R                  R                  5        g ! , (       d  f       Np= f! , (       d  f       Ny= fNz	--version)r   r   captured_stdoutr   
SystemExitr   _mainr   r   r    EXPECTED_VERSION_OUTPUTr   r?   r   r   stdoutresults      r   test_bootstrap_version4TestBootstrappingMainFunction.test_bootstrap_version  s    \\))+v"":.. / , "((*!89,,-	 /. ,+s"   CB7C7
C	C
Cc                 f   [         R                  " / 5      nU R                  R                  SSSS[        R
                  R                  S/[        R
                  R                  5        U R                  R                  S   S   nU R                  [        U5      S5        U R                  US5        g rR   )
r   r   r?   rZ   r   r   r[   r\   r    r]   )r   	exit_coder^   s      r   r_   6TestBootstrappingMainFunction.test_basic_bootstrapping'  s    OOB'	,,+\>!!5 MM	
  <<11!4Q7-.2A&r   c                 v    SU R                   l        [        R                  " / 5      nU R	                  US5        g Nru   )r?   r@   r   r   r    r   r   s     r   test_bootstrapping_error_code;TestBootstrappingMainFunction.test_bootstrapping_error_code6  s,    $%!OOB'	A&r   r4   N)r5   r6   r7   r8   r   r_   r   r9   r4   r   r   r   r     s    .''r   r   c                   &    \ rS rSrS rS rS rSrg)TestUninstallationMainFunctioni<  c                    [         R                  R                  5        nU R                  [        5         [
        R                  R                  S/5        S S S 5        S S S 5        WR                  5       R                  5       nU R                  U[        5        U R                  U R                  R                  5        g ! , (       d  f       Np= f! , (       d  f       Ny= fr   )r   r   r   r   r   r   
_uninstallr   r   r   r    r   r   r?   r   r   s      r   test_uninstall_version5TestUninstallationMainFunction.test_uninstall_version>  s    \\))+v"":.$$**K=9 / , "((*!89,,-	 /. ,+s"   C!C C 
C	
C
Cc                     [        5          [        R                  R                  / 5      nS S S 5        U R                  R                  / SQ5        U R                  WS5        g ! , (       d  f       N>= f)Nr   r   )r   r   r   r   r?   rZ   r    r   s     r   test_basic_uninstall3TestUninstallationMainFunction.test_basic_uninstallF  sU    Z!,,2226I  	,,	
 	A& Zs    A##
A1c                     [        5          SU R                  l        [        R                  R                  / 5      nS S S 5        U R                  WS5        g ! , (       d  f       N!= fr   )r   r?   r@   r   r   r   r    r   s     r   test_uninstall_error_code8TestUninstallationMainFunction.test_uninstall_error_codeR  sH    Z()DLL%!,,2226I  	A& Zs   1A
A%r4   N)r5   r6   r7   r8   r   r   r   r9   r4   r   r   r   r   <  s    .
''r   r   __main__)
contextlibr
   os.pathr   r   test.supportr   r   unittest.mockimportlib.resources.abcr   pathlibr   r   ensurepip._uninstallTestCaser   r;   rO   contextmanagerr!   r   r   r   r   r   r5   mainr4   r   r   <module>r      s     	  
     /   %L8$$ %LPA A(oINH$5$5 oIb &&( * *$FINH$5$5 FIV !9#4#4#66 'NH4E4E '>'^X5F5F ': zMMO r   