o
    LK&hc                     @   sn  d dl Z d dlZd dlZd dlZd dlZdejv 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    N__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
    Windows
SYSTEMROOT)platformsystemosenvironenv r   [/var/www/html/venv/lib/python3.10/site-packages/setuptools/tests/test_distutils_adoption.pywin_sr   s   r   	distutilsc                 K   s:   dj di t }dd|g}| j|fdt|it|S )Nz+import {imports}; print(distutils.__file__)python-cr   r   )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vsJ t| |ddksJ dS )z;
    Ensure stdlib distutils is used when appropriate.
    stdlibSETUPTOOLS_USE_DISTUTILSr   r   Ndictnamer   splitr	   sepr    r   r   r   r   r   test_distutils_stdlib1   s   
r-   c                 C   sF   t dd}t| d|d}| j|tjv sJ t| |ddks!J 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   locr   r   r   $test_distutils_local_with_setuptools;   s   
r1   IS_PYPYz!pypy imports distutils on startupc                 C   s@   t dd}| jt| |dtjv sJ t| |ddksJ 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   
r3   c                 C   s   g d}| j |fi 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   r4   c                   C   s   t djjsJ dS )z=
    Distutils module spec should have an origin. #2990.
    r   N)
__import____spec__originr   r   r   r   test_distutils_has_originY   s   r8   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")

tmpdir_cwd)distutils_versionimported_moduler$   dir_util)marks	file_utilarchive_util)r.   r<   )r.   r>   )r.   r?   c                 C   sN   t | d}tj|d}dd|g}|j|fdt|it }|dks%J d S )Nr%   r;   r   r   r   success)r(   !ENSURE_IMPORTS_ARE_NOT_DUPLICATEDr   r   r   r   strip)r:   r;   r   r   scriptr   outputr   r   r   )test_modules_are_not_duplicated_on_importu   s
   

rF   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J d S )Nr%   r   r   r   rA   )r(   #ENSURE_LOG_IMPORT_IS_NOT_DUPLICATEDr   r   r   rC   )r:   r   r   r   rE   r   r   r   +test_log_module_is_not_duplicated_on_import   s   
	
rH   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s#J d S )Nr%   r   r   r@   r   rA   )r(   (ENSURE_CONSISTENT_ERROR_FROM_MODIFIED_PYr   r   r   r   rC   )r:   r;   r   r   r   rE   r   r   r   &test_consistent_error_from_modified_py   s   
rJ   )r   N)N)r	   r   sysr   pytestbuiltin_module_namesr2   r   r   r   r    markskipifversion_infoskip_without_stdlib_distutilsr-   r1   xfailr3   r4   r8   rB   usefixturesparametrizeparamrF   rG   rH   rI   rJ   r   r   r   r   <module>   sl    




	

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


