a
    "h                     @   s2  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZejdd Z	ejdd Z
ejdd Zejdd	 ZG d
d dZG dd deZG dd deZG dd deeZG dd deZG dd deeZG dd deeZG dd dZe fddZG dd dZdd ZG d d! d!ZdS )"    Nc               	   c   s4   t  } zt| V  W t|  nt|  0 d S N)tempfilemkdtemppathlibPathshutilrmtree)Ztmpdir r	   D/opt/python-3.9.21/usr/lib/python3.9/test/test_importlib/fixtures.pytempdir   s    r   c               	   c   s.   t  } zd V  W t |  nt |  0 d S r   )osgetcwdchdir)Zorigr	   r	   r
   save_cwd   s    r   c               	   c   sd   t  J} t $ tt|  | V  W d    n1 s80    Y  W d    n1 sV0    Y  d S r   )r   r   r   r   str)tmpr	   r	   r
   tempdir_as_cwd   s    r   c              	   c   s6   t j|  zd V  W t j|  nt j|  0 d S r   )sys	meta_pathappendremove)finderr	   r	   r
   install_finder%   s    r   c                   @   s   e Zd Zdd ZdS )Fixturesc                 C   s   t  | _| | jj d S r   )
contextlib	ExitStackfixtures
addCleanupcloseselfr	   r	   r
   setUp/   s    
zFixtures.setUpN)__name__
__module____qualname__r!   r	   r	   r	   r
   r   .   s   r   c                       s   e Zd Z fddZ  ZS )SiteDirc                    s"   t t|   | jt | _d S r   )superr%   r!   r   enter_contextr   site_dirr   	__class__r	   r
   r!   5   s    zSiteDir.setUpr"   r#   r$   r!   __classcell__r	   r	   r)   r
   r%   4   s   r%   c                       s.   e Zd Zeejdd Z fddZ  ZS )	OnSysPathc              
   c   sF   t | gtjd d< zd V  W tjt |  ntjt |  0 d S )Nr   )r   r   pathr   )dirr	   r	   r
   add_sys_path;   s    zOnSysPath.add_sys_pathc                    s&   t t|   | j| | j d S r   )r&   r-   r!   r   r'   r0   r(   r   r)   r	   r
   r!   D   s    zOnSysPath.setUp)	r"   r#   r$   staticmethodr   contextmanagerr0   r!   r,   r	   r	   r)   r
   r-   :   s   r-   c                       s.   e Zd ZddddddZ fddZ  ZS )	DistInfoPkgz
                Name: distinfo-pkg
                Author: Steven Ma
                Version: 1.0.0
                Requires-Dist: wheel >= 1.0
                Requires-Dist: pytest; extra == 'test'
                zmod.py,sha256=abc,20
zi
                [entries]
                main = mod:main
                ns:sub = mod:main
            )ZMETADATAZRECORDentry_points.txtJ
            def main():
                print("hello world")
            )zdistinfo_pkg-1.0.0.dist-infomod.pyc                    s    t t|   ttj| j d S r   )r&   r3   r!   build_filesfilesr(   r   r)   r	   r
   r!   `   s    zDistInfoPkg.setUpr"   r#   r$   r8   r!   r,   r	   r	   r)   r
   r3   I   s   r3   c                       s   e Zd Z fddZ  ZS )DistInfoPkgOffPathc                    s    t t|   ttj| j d S r   )r&   r:   r!   r7   r3   r8   r(   r   r)   r	   r
   r!   f   s    zDistInfoPkgOffPath.setUpr+   r	   r	   r)   r
   r:   e   s   r:   c                       s2   e Zd ZddddddddZ fd	d
Z  ZS )
EggInfoPkga  
                Name: egginfo-pkg
                Author: Steven Ma
                License: Unknown
                Version: 1.0.0
                Classifier: Intended Audience :: Developers
                Classifier: Topic :: Software Development :: Libraries
                zW
                mod.py
                egginfo_pkg.egg-info/top_level.txt
            zG
                [entries]
                main = mod:main
            zq
                wheel >= 1.0; python_version >= "2.7"
                [test]
                pytest
            zmod
)zPKG-INFOzSOURCES.txtr4   zrequires.txtztop_level.txtr5   )zegginfo_pkg.egg-infor6   c                    s"   t t|   ttj| jd d S Nprefix)r&   r;   r!   r7   r8   r(   r   r)   r	   r
   r!      s    zEggInfoPkg.setUpr9   r	   r	   r)   r
   r;   k   s   r;   c                       s$   e Zd ZddiZ fddZ  ZS )EggInfoFilezegginfo_file.egg-infoaa  
            Metadata-Version: 1.0
            Name: egginfo_file
            Version: 0.1
            Summary: An example package
            Home-page: www.example.com
            Author: Eric Haffa-Vee
            Author-email: eric@example.coms
            License: UNKNOWN
            Description: UNKNOWN
            Platform: UNKNOWN
            c                    s"   t t|   ttj| jd d S r<   )r&   r?   r!   r7   r8   r(   r   r)   r	   r
   r!      s    zEggInfoFile.setUpr9   r	   r	   r)   r
   r?      s   r?   c                   @   s   e Zd ZddiZdd ZdS )LocalPackagezsetup.pyzk
            import setuptools
            setuptools.setup(name="local-pkg", version="2.0.1")
            c                 C   s4   t  | _| | jj | jt  t| j d S r   )	r   r   r   r   r   r'   r   r7   r8   r   r	   r	   r
   r!      s    
zLocalPackage.setUpN)r"   r#   r$   r8   r!   r	   r	   r	   r
   r@      s   r@   c              	   C   s   |   D ]\}}|| }t|tr8|  t||d qt|trx|d}|| W d    q1 sl0    Y  q|d}|t| W d    q1 s0    Y  qd S )Nr=   wbw)	items
isinstancedictmkdirr7   bytesopenwriteDALS)Z	file_defsr>   namecontentsZ	full_namefr	   r	   r
   r7      s    

*r7   c                   @   s   e Zd Zdd Zdd ZdS )FileBuilderc                 C   s4   zdd l }W n ty    Y dS 0 |jjp2| dS )Nr   u   ☃z'File system does not support non-ascii.)Ztest.supportImportErrorsupportZFS_NONASCIIskip)r    testr	   r	   r
   unicode_filename   s    zFileBuilder.unicode_filenamec                 C   s   t |d S r   )unittestZSkipTest)r    reasonr	   r	   r
   rQ      s    zFileBuilder.skipN)r"   r#   r$   rS   rQ   r	   r	   r	   r
   rN      s   	rN   c                 C   s   t |  S r   )textwrapdedentlstrip)r   r	   r	   r
   rJ      s    rJ   c                   @   s   e Zd Zdd ZdS )
NullFinderc                 C   s   d S r   r	   )r    rK   r	   r	   r
   find_module   s    zNullFinder.find_moduleN)r"   r#   r$   rZ   r	   r	   r	   r
   rY      s   rY   )r   r   r   r   r   rV   r   rT   r2   r   r   r   r   r   r%   r-   r3   r:   r;   r?   r@   r   r7   rN   rJ   rY   r	   r	   r	   r
   <module>   s6   



%"