o
    JXh"                  	   @   s  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d dlm	Z	 d dl
mZm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eeeeeeeeef ef f ef f ZG dd deeZG dd de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 )(    N)FS_NONASCII)DictUnionc               	   c   s4    t  } zt| V  W t|  d S t|  w N)tempfilemkdtemppathlibPathshutilrmtree)Ztmpdir r   F/opt/python-3.10.19/usr/lib/python3.10/test/test_importlib/fixtures.pytempdir   s
   r   c               	   c   s.    t  } zd V  W t |  d S t |  w r   )osgetcwdchdir)Zorigr   r   r   save_cwd   s
   r   c               	   c   sx    t  .} t  tt|  | V  W d    n1 sw   Y  W d    d S W d    d S 1 s5w   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|  d S t j|  w r   )sys	meta_pathappendremove)finderr   r   r   install_finder(   s
   r   c                   @      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   setUp2   s   
zFixtures.setUpN)__name__
__module____qualname__r%   r   r   r   r   r   1       r   c                          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%   8      zSiteDir.setUpr&   r'   r(   r%   __classcell__r   r   r/   r   r+   7       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 |  d S tjt |  w )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,   r5   r%   r    r-   r8   r.   r#   r/   r   r   r%   G   s   zOnSysPath.setUp)	r&   r'   r(   staticmethodr   contextmanagerr8   r%   r3   r   r   r/   r   r5   =   s
    r5   c                       s@   e Zd ZU ddddddZeed<  fdd	Zd
d Z  ZS )DistInfoPkgaL  
                Name: distinfo-pkg
                Author: Steven Ma
                Version: 1.0.0
                Requires-Dist: wheel >= 1.0
                Requires-Dist: pytest; extra == 'test'
                Keywords: sample package

                Once upon a time
                There was a distinfo pkg
                zmod.py,sha256=abc,20
zi
                [entries]
                main = mod:main
                ns:sub = mod:main
            )METADATAZRECORDentry_points.txtJ
            def main():
                print("hello world")
            )distinfo_pkg-1.0.0.dist-infomod.pyfilesc                        t t|   ttj| j d S r   )r,   r;   r%   build_filesrA   r.   r#   r/   r   r   r%   l      zDistInfoPkg.setUpc                 C   sF   	 t | jd  ttj}|d }|d  |d< t|| j d S )Nr?   r<   )	r
   r   r.   copydeepcopyr;   rA   upperrC   )r$   rA   infor   r   r   make_uppercasep   s   zDistInfoPkg.make_uppercase)	r&   r'   r(   rA   FilesDef__annotations__r%   rI   r3   r   r   r/   r   r;   Q   s   
 r;   c                       s2   e Zd ZU dddiiZeed<  fddZ  ZS )DistInfoPkgWithDotzpkg_dot-1.0.0.dist-infor<   N
                Name: pkg.dot
                Version: 1.0.0
                rA   c                    rB   r   )r,   rL   r%   rC   rA   r.   r#   r/   r   r   r%      rD   zDistInfoPkgWithDot.setUpr&   r'   r(   rA   rJ   rK   r%   r3   r   r   r/   r   rL   {   s   
 	rL   c                       s8   e Zd ZU ddiddidZeed<  fddZ  ZS )DistInfoPkgWithDotLegacyr<   rM   zN
                Name: pkg.lot
                Version: 1.0.0
                )zpkg.dot-1.0.0.dist-infozpkg.lot.egg-inforA   c                    rB   r   )r,   rO   r%   rC   rA   r.   r#   r/   r   r   r%      rD   zDistInfoPkgWithDotLegacy.setUprN   r   r   r/   r   rO      s   
 rO   c                       r*   )DistInfoPkgOffPathc                    s    t t|   ttj| j d S r   )r,   rP   r%   rC   r;   rA   r.   r#   r/   r   r   r%      rD   zDistInfoPkgOffPath.setUpr2   r   r   r/   r   rP      r4   rP   c                       s<   e Zd ZU ddddddddZeed	<  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
                Keywords: sample package
                Description: Once upon a time
                        There was an egginfo package
                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.txtr=   zrequires.txtztop_level.txtr>   )zegginfo_pkg.egg-infor@   rA   c                    "   t t|   ttj| jd d S Nprefix)r,   rQ   r%   rC   rA   r.   r#   r/   r   r   r%      r1   zEggInfoPkg.setUprN   r   r   r/   r   rQ      s   
 "rQ   c                       s.   e Zd ZU ddiZeed<  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
            rA   c                    rR   rS   )r,   rV   r%   rC   rA   r.   r#   r/   r   r   r%      r1   zEggInfoFile.setUprN   r   r   r/   r   rV      s   
 rV   c                   @   s&   e Zd ZU ddiZeed< dd ZdS )LocalPackagezsetup.pyzk
            import setuptools
            setuptools.setup(name="local-pkg", version="2.0.1")
            rA   c                 C   s4   t  | _| | jj | jt  t| j d S r   )	r   r   r    r!   r"   r-   r   rC   rA   r#   r   r   r   r%      s   
zLocalPackage.setUpN)r&   r'   r(   rA   rJ   rK   r%   r   r   r   r   rW      s   
 rW   c              	   C   s   	 |   D ]V\}}|| }t|tr|  t||d qt|tr=|d}|| W d    n1 s7w   Y  q|jddd}|t| W d    n1 sVw   Y  qd S )NrT   wbwzutf-8)encoding)	items
isinstancedictmkdirrC   bytesopenwriteDALS)Z	file_defsrU   namecontentsZ	full_namefr   r   r   rC      s    

rC   c                   @   r   )FileBuilderc                 C   s   t p| dS )Nz'File system does not support non-ascii.)r   skipr#   r   r   r   unicode_filename  s   zFileBuilder.unicode_filenameN)r&   r'   r(   rh   r   r   r   r   rf     r)   rf   c                 C   s   	 t |  S r   )textwrapdedentlstrip)r   r   r   r   rb     s   rb   c                   @   r   )
NullFinderc                 C   s   d S r   r   )r$   rc   r   r   r   find_module  s   zNullFinder.find_moduleN)r&   r'   r(   rm   r   r   r   r   rl     r)   rl   )#r   r   rE   r
   r   r   ri   r   Ztest.support.os_helperr   typingr   r   r:   r   r   r   r   r   r+   r5   r   rJ   r;   rL   rO   rP   rQ   rV   rW   r	   rC   rf   rb   rl   r   r   r   r   <module>   sB    



,*("