
    nf                     T   d dl Z d dlZd dlZd dlmZ d dlmZ d dlZd dlZddl	m
Z
 ddlmZ ddlmZ  ej                  d	      d
        Zd Zd Zej&                  j)                  dd      ej&                  j)                   e        d      ej&                  j+                  dd ej,                  dej&                  j/                  dd             ej,                  dej&                  j/                  dd             ej,                  dej&                  j/                  dd             ej,                  dej&                  j/                  dd             ej,                  dej&                  j/                  d            g      d                      Zd Zd Zd Zy)    N)urlopen)URLError   )contexts)DALS)make_nspkg_sdistT)autousec                     | j                  g d      j                         }|t        j                  k(  rt	        j
                  d       yy)zY
    pytest_virtualenv may not work. if it doesn't, skip these
    tests. See #1284.
    )python-czimport sys; print(sys.prefix)z/virtualenv is broken (see pypa/setuptools#1284)N)runstripsysprefixpytestskip)venvvenv_prefixs     x/var/dept/share/cheung/public_html/OutSchool/python/env/lib/python3.12/site-packages/setuptools/tests/test_virtualenv.pypytest_virtualenv_worksr      s:     ((LMSSUKcjj EF !    c                 F    ddddt        |      g}| j                  |       y)zC
    Check setuptools can be installed in a clean environment.
    r   -mpipinstallN)strr   )venv_without_setuptoolssetuptools_wheelcmds      r   test_clean_env_installr       s(     T5)S1A-B
CC$r   c                      t         j                  j                  dd      s	 t        dd       yy# t        $ r Y yw xY w)NNETWORK_REQUIREDFzhttps://pypi.orgr   )timeoutT)osenvirongetr   r    r   r   access_pypir(   #   s>    ::>>,e4	&2
 	  		s   1 	==z*platform.python_implementation() == "PyPy"zChttps://github.com/pypa/setuptools/pull/2865#issuecomment-965834995)reasonz
no networkpip_versionzpip<20.1zsys.version_info >= (3, 12)z-pip 23.1.2 required for Python 3.12 and later)markszpip<21zpip<22zpip<23z,https://github.com/pypa/pip/archive/main.zipz#2975c           	      p   |}|j                  g d       | |j                  ddddd| dg       t        j                  t        j                        5  |j                  g d	       ddd       |j                  ddt        |      g       |j                  ddd
dt        |      g       y# 1 sw Y   FxY w)z7
    Check pip can upgrade setuptools from source.
    )r   r   -UwheelNr   r   r   r   r-   z--retries=1)r   r   zimport setuptoolsz--no-cache-dirz	--upgrade)r   r   raises
subprocessCalledProcessErrorr   )r*   r   r   setuptools_sdistr   s        r   test_pip_upgrade_from_sourcer3   /   s    j #DHH./(D%D+}UV	z44	5 8678
 	HHeY$4 567HHeY 0+sCS?TUV8 8s   B,,B5c                    fd} |dd       |dd       |dd       |dd	      fD cg c].  }t        j                  t        |            j                         0 }}j	                  d
      j                  d      5 }|j                  t        dj                  |                   ddd       j	                  d      j                  d      5 }|j                  t        d             ddd       g d}| j                  |t                     j	                  d      j                         sJ yc c}w # 1 sw Y   xY w# 1 sw Y   \xY w)zH
    Check the test command will install all required dependencies.
    c                 b    j                  | d|d      }t        t        |      | |       |S )N-z.tar.gz)joinr   r   )distnameversion	dist_pathtmpdirs      r   sdistz7_check_test_command_install_requirements.<locals>.sdistw   s,    KK(G DE	Y7;r   foobarz2.4bitsz4.2bobsz6.0piecesz0.6setup.pywa  
            from setuptools import setup

            setup(
                dependency_links={dependency_links!r},
                install_requires=[
                    'barbazquux1; sys_platform in ""',
                    'foobar==2.4',
                ],
                setup_requires='bits==4.2',
                tests_require="""
                    bobs==6.0
                """,
                extras_require={{
                    'test': ['barbazquux2'],
                    ':"" in sys_platform': 'pieces==0.6',
                    ':python_version > "1"': """
                        pieces
                        foobar
                    """,
                }}
            )
            )dependency_linksNztest.pyz
            import foobar
            import bits
            import bobs
            import pieces

            open('success', 'w').close()
            )r   rA   testz-srD   cwdsuccess)pathlibPathr   as_urir7   openwriter   formatr   check)r   r;   r<   r:   rC   fpr   s    `     r   (_check_test_command_install_requirementsrP   r   sE   
 (E"&% &% (E"	
 	S^$++-  
Z	 	%	%c	* 
b
, (89/	

8 
Y		$	$S	) 
R
		

 7CHHSc&kH";;y!'')))k
 
8
 
s   3D8 +D=E	=E	Ec                     | j                  g d       t        j                  d d      5  t        | |       d d d        y # 1 sw Y   y xY w)N)r   r   z
import pip1)
PYTHONPATHPIP_NO_INDEX)r   r   environmentrP   )r   r;   
tmpdir_cwds      r   &test_test_command_install_requirementsrW      s>    HH+,			C	@ ?0v>? ? ?s   AA
c                 l    |j                   j                  }dD ]  }| j                  dd|dg|        y)zP
    Quick and dirty test to ensure all external dependencies are vendored.
    )uploadr   rA   z-hrE   N)configrootdirr   )	bare_venvrequestsetuptools_dircommands       r   test_no_missing_dependenciesr`      s=     ^^++N QxWd;PQr   )r$   r   r0   urllib.requestr   urllib.errorr   rH   r    r   textwrapr   test_easy_installr   fixturer   r    r(   markskipifparametrizeparamxfailr3   rP   rW   r`   r'   r   r   <module>rl      s   	 
  " !     / G G%	 0P   %l; ++##-F $ 	
 	++##-F $ 	
 	++##-F $ 	
 	++##-F $ 	
 	:++##7#3	
="%LWM% <	ZW,?*D?Qr   