o
    uvXjÁ  ã                   @   s,  d dl m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m	Z	 e
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dd „ ZG d!d"„ d"ƒZdS )#é    )Úunicode_literalsNé   )ÚpathlibÚ
contextlibc               	   c   s4   � t  ¡ } zt | ¡V  W t | ¡ d S t | ¡ w ©N)ÚtempfileÚmkdtempr   ÚPathÚshutilÚrmtree)Útmpdir© r   ú^/var/www/html/myproject/venv/lib/python3.10/site-packages/importlib_metadata/tests/fixtures.pyÚtempdir   s
   €r   c               	   c   s.   � t  ¡ } zd V  W t  | ¡ d S t  | ¡ w r   )ÚosÚgetcwdÚchdir)Ú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   )r   Ú	ExitStackÚfixturesÚ
addCleanupÚclose©Úselfr   r   r   ÚsetUp3   s   
zFixtures.setUpN)Ú__name__Ú
__module__Ú__qualname__r&   r   r   r   r   r   2   ó    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&   9   ó   zSiteDir.setUp©r'   r(   r)   r&   Ú__classcell__r   r   r0   r   r,   8   ó    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-   r6   r&   r!   r.   r9   r/   r$   r0   r   r   r&   H   s   zOnSysPath.setUp)	r'   r(   r)   Ústaticmethodr   Úcontextmanagerr9   r&   r4   r   r   r0   r   r6   >   s
    r6   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
            )ÚMETADATAÚRECORDúentry_points.txtúJ
            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-   r<   r&   Úbuild_filesÚfilesr/   r$   r0   r   r   r&   d   ó   zDistInfoPkg.setUp©r'   r(   r)   rC   r&   r4   r   r   r0   r   r<   M   s    ÷ðr<   c                       r+   )ÚDistInfoPkgOffPathc                    s    t t| ƒ ¡  ttj| jƒ d S r   )r-   rF   r&   rB   r<   rC   r/   r$   r0   r   r   r&   j   rD   zDistInfoPkgOffPath.setUpr3   r   r   r0   r   rF   i   r5   rF   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.txtr?   zrequires.txtztop_level.txtr@   )zegginfo_pkg.egg-inforA   c                    ó"   t t| ƒ ¡  ttj| jd� d S ©N©Úprefix)r-   rG   r&   rB   rC   r/   r$   r0   r   r   r&   �   r2   zEggInfoPkg.setUprE   r   r   r0   r   rG   o   s    êçrG   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                    rH   rI   )r-   rL   r&   rB   rC   r/   r$   r0   r   r   r&   ¤   r2   zEggInfoFile.setUprE   r   r   r0   r   rL   ”   s    ÿrL   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   rB   rC   r$   r   r   r   r&   ±   s   
zLocalPackage.setUpN)r'   r(   r)   rC   r&   r   r   r   r   rM   ©   s    ÿrM   c              	   C   s¶   |   ¡ D ]T\}}|| }t|tƒr| ¡  t||d� qt|tƒr<| d¡�}| |¡ W d  ƒ n1 s6w   Y  q| d¡�}| t|ƒ¡ W d  ƒ n1 sSw   Y  qdS )a  Build a set of files/directories, as described by the

    file_defs dictionary.  Each key/value pair in the dictionary is
    interpreted as a filename/contents pair.  If the contents value is a
    dictionary, a directory is created, and the dictionary interpreted
    as the files within it, recursively.

    For example:

    {"README.txt": "A README file",
     "foo": {
        "__init__.py": "",
        "bar": {
            "__init__.py": "",
        },
        "baz.py": "# Some code",
     }
    }
    rJ   ÚwbNÚw)	ÚitemsÚ
isinstanceÚdictÚmkdirrB   ÚbytesÚopenÚwriteÚDALS)Ú	file_defsrK   ÚnameÚcontentsÚ	full_nameÚfr   r   r   rB   ¸   s   

ÿ€ÿ€örB   c                 C   s   t  | ¡ ¡ S )zDedent and left-strip)ÚtextwrapÚdedentÚlstrip)r   r   r   r   rW   Ú   s   rW   c                   @   r   )Ú
NullFinderc                 C   s   d S r   r   )r%   rY   r   r   r   Úfind_moduleà   s   zNullFinder.find_moduleN)r'   r(   r)   ra   r   r   r   r   r`   ß   r*   r`   )Ú
__future__r   r   r   r
   r   r]   Ú_compatr   r   ÚtypeÚ__metaclass__r;   r   r   r   r   r   r,   r6   r<   rF   rG   rL   rM   r	   rB   rW   r`   r   r   r   r   Ú<module>   s6    



%"