U
    aÊ¹j[  ã                   @   sn  d dl Z d dlZd dlZd dlZd dlZdejkZdddœZdd„ Zd3d	d
„Z	d4dd„Z
ejjejdkdd�Zedd„ ƒZdd„ Zejjddd�dd„ ƒZdd„ Zdd„ ZdZej d¡ej dejdd ed!�ejdd"ed!�ejdd#ed!�d$d%d&g¡d'd(„ ƒƒZd)Zej d¡ej d*d+ejded!�g¡d,d-„ ƒƒZd.Zej d¡ej dd/ejdd0ed!�g¡d1d2„ ƒƒZdS )5é    NZ__pypy__Tzutf-8)ÚtextÚencodingc                 C   s"   | rt  ¡ dkrtjd | d< | S )z¨
    On Windows, SYSTEMROOT must be present to avoid

    > Fatal Python error: _Py_HashRandomization_Init: failed to
    > get random numbers to initialize Python
    ÚWindowsZ
SYSTEMROOT)ÚplatformÚsystemÚosÚenviron©Úenv© r   úg/var/www/html/bwave/python/venv/lib/python3.8/site-packages/setuptools/tests/test_distutils_adoption.pyÚwin_sr   s    r   Ú	distutilsc                 K   s4   dj f tƒ Ž}dd|g}| j|fdt|ƒit|—ŽS )Nz+import {imports}; print(distutils.__file__)Úpythonú-cr
   )ÚformatÚlocalsÚrunr   Ú_TEXT_KWARGS)ÚvenvÚimportsr
   ÚkwargsÚpy_cmdÚcmdr   r   r   Úfind_distutils   s    
r   c                 C   s2   t  d¡}dd|g}t| j|fdt|ƒit—ŽƒS )Nz³
        import sys
        is_distutils = lambda finder: finder.__class__.__name__ == "DistutilsMetaFinder"
        print(len(list(filter(is_distutils, sys.meta_path))))
        r   r   r
   )ÚtextwrapÚdedentÚintr   r   r   )r   r
   r   r   r   r   r   Úcount_meta_path   s
    ÿ
r   )é   é   z-stdlib distutils is removed from Python 3.12+)Úreasonc                 C   s@   t dd�}| jt| |d� tj¡ks(t‚t| |d�dks<t‚dS )z;
    Ensure stdlib distutils is used when appropriate.
    Ústdlib©ZSETUPTOOLS_USE_DISTUTILSr	   r   N©ÚdictÚnamer   Úsplitr   ÚsepÚAssertionErrorr   ©r   r
   r   r   r   Útest_distutils_stdlib1   s    
r+   c                 C   sF   t dd�}t| d|d�}| j| tj¡ks.t‚t| |d�dksBt‚dS )z:
    Ensure local distutils is used when appropriate.
    Úlocalr#   zsetuptools, distutils)r   r
   r	   é   N)r%   r   r&   r'   r   r(   r)   r   )r   r
   Úlocr   r   r   Ú$test_distutils_local_with_setuptools;   s    
r/   ÚIS_PYPYz!pypy imports distutils on startupc                 C   s@   t dd�}| jt| |d� tj¡ks(t‚t| |d�dks<t‚dS )zZ
    Even without importing, the setuptools-local copy of distutils is
    preferred.
    r,   r#   r	   r-   Nr$   r*   r   r   r   Útest_distutils_localE   s    
r1   c                 C   s   dddg}| j |ftŽ dS )zD
    Ensure pip can be imported.
    Regression test for #3002.
    r   r   z
import pipN)r   r   )r   r   r   r   r   Útest_pip_importP   s    
r2   c                   C   s   t dƒjjst‚dS )z=
    Distutils module spec should have an origin. #2990.
    r   N)Ú
__import__Ú__spec__Úoriginr)   r   r   r   r   Útest_distutils_has_originY   s    r6   a8  
# Depending on the importlib machinery and _distutils_hack, some imports are
# duplicated resulting in different module objects being loaded, which prevents
# patches as shown in #3042.
# This script provides a way of verifying if this duplication is happening.

from distutils import cmd
import distutils.command.sdist as sdist

# import last to prevent caching
from distutils import {imported_module}

for mod in (cmd, sdist):
    assert mod.{imported_module} == {imported_module}, (
        f"\n{{mod.dir_util}}\n!=\n{{{imported_module}}}"
    )

print("success")
Z
tmpdir_cwdz"distutils_version, imported_moduler"   Údir_util)ZmarksÚ	file_utilÚarchive_util)r,   r7   )r,   r8   )r,   r9   c                 C   sN   t | d�}tj|d�}dd|g}|j|fdt|ƒit—Ž ¡ }|dksJt‚d S )Nr#   ©Úimported_moduler   r   r
   Úsuccess)r%   Ú!ENSURE_IMPORTS_ARE_NOT_DUPLICATEDr   r   r   r   Ústripr)   )Údistutils_versionr;   r   r
   Úscriptr   Úoutputr   r   r   Ú)test_modules_are_not_duplicated_on_importu   s
    

rB   z¹
import types
import distutils.dist as dist
from distutils import log
if isinstance(dist.log, types.ModuleType):
    assert dist.log == log, f"\n{dist.log}\n!=\n{log}"
print("success")
r?   r,   c                 C   sB   t | d�}ddtg}|j|fdt|ƒit—Ž ¡ }|dks>t‚d S )Nr#   r   r   r
   r<   )r%   Ú#ENSURE_LOG_IMPORT_IS_NOT_DUPLICATEDr   r   r   r>   r)   )r?   r   r
   r   rA   r   r   r   Ú+test_log_module_is_not_duplicated_on_import“   s    	

rD   zý
from setuptools.modified import newer
from {imported_module}.errors import DistutilsError

# Can't use pytest.raises in this context
try:
    newer("", "")
except DistutilsError:
    print("success")
else:
    raise AssertionError("Expected to raise")
)r,   r   zsetuptools._distutilsc                 C   sJ   t | d�}ddtj|d�g}|j|fdt|ƒit—Ž ¡ }|dksFt‚d S )Nr#   r   r   r:   r
   r<   )r%   Ú(ENSURE_CONSISTENT_ERROR_FROM_MODIFIED_PYr   r   r   r   r>   r)   )r?   r;   r   r
   r   rA   r   r   r   Ú&test_consistent_error_from_modified_py°   s    
ÿýrF   )r   N)N)r   r   Úsysr   ZpytestÚbuiltin_module_namesr0   r   r   r   r   ÚmarkZskipifÚversion_infoZskip_without_stdlib_distutilsr+   r/   Zxfailr1   r2   r6   r=   ZusefixturesZparametrizeÚparamrB   rC   rD   rE   rF   r   r   r   r   Ú<module>   sn   



þ
	


	
úþ

þþ
  ÿüþ