o
    Zh"                     @   s4  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
 ddlmZ ddlmZ ddlmZ d dlmZ d	d
 ZeddddddddgdZdd Zddgdgddfdddgfddgffdfdddgidfddidfdd d! d"D id#ffZejd$ed%d& Zd'd( Zd)d* Zejd+g d,d-d. Zejd/d0dd1d2gd3gfd4dd1d2gd3gfd3dd1d2gd3gfd0dd5gd6d0gfd3dd7d8gd3d9gfd3d:d;d<g d=g d>fgd?d@ ZejdAdBddCgfd0dd5dDgfd3ddEgfd3dd1dFgfd3dd7dGgfd3d:d;dHg d=fdIddJdKgfdIddLdMgfgdNdO ZdS )P    N)Distribution)check_package_datacheck_specifier   )make_nspkg_sdist)ensure_files)DALS)DistutilsSetupErrorc                    s   |  dtjdtjt}fdd}|dd |dd | d	d
}|	t
dj|d W d   n1 s@w   Y  d }|   t      fdd|D }W d   n1 shw   Y  dd |D |ksxJ dS )zR
    Check multiple calls to `Distribution.fetch_build_egg` work as expected.
    indexzfile://c                    s|     | }|  d| d}tt||| | |dd}|tdj|d W d    d S 1 s7w   Y  d S )N-z.tar.gzz
index.htmlwz
                <!DOCTYPE html><html><body>
                <a href="{dist_sdist}" rel="internal">{dist_sdist}</a><br/>
                </body></html>
                )
dist_sdist)mkdirr   strjoinopenwriter   format)distnameversiondist_dirr   fp)r
    Q/var/www/html/lang_env/lib/python3.10/site-packages/setuptools/tests/test_dist.pysdist_with_index   s   
"z3test_dist_fetch_build_egg.<locals>.sdist_with_indexZ
barbazquuxz3.2.0zbarbazquux-runnerz2.11.1z	setup.cfgr   zL
            [easy_install]
            index_url = {index_url}
            )	index_urlNz*
    barbazquux-runner
    barbazquux
    c                    s   g | ]}  |qS r   )Zfetch_build_egg).0r)distr   r   
<listcomp>:       z-test_dist_fetch_build_egg.<locals>.<listcomp>c                 S   s   g | ]}|r|j qS r   )key)r   r   r   r   r   r   ;   r    )r   urllibparseurljoinrequestpathname2urlr   r   r   r   r   r   splitZas_cwdr   Zparse_config_files)Ztmpdirr   r   r   reqsZresolved_distsr   )r   r
   r   test_dist_fetch_build_egg   s.   


	
r)   packagez0.0.1zFoo Barzfoo@bar.netzLong
descriptionzShort descriptiononetwo)namer   ZauthorZauthor_emailZlong_descriptiondescriptionkeywordsc                  C   sr   t t dgdgdd} t| }t|jjddgksJ t t| d  | d< t| }t|jjddgks7J d S )Nfoobar)ab)extras_requirer2   r3   r4   )dictr   listmetadataZprovides_extrasreverseditemsattrsr   r   r   r   (test_provides_extras_deterministic_orderI   s   r<   z*.txtz*.rstz*.msg) hellor=   r>   z^'package_data' must be a dictionary mapping package names to lists of string wildcard patternsi  z5keys of 'package_data' dict must be strings (got 400)z["values of 'package_data' dict" must be of type <tuple[str, ...] | list[str]> (got '*.msg')c                 c   s    | ]}|V  qd S )Nr   )r   xr   r   r   	<genexpr>z   s    r@   	generatorzd"values of 'package_data' dict" must be of type <tuple[str, ...] | list[str]> (got <generator objectpackage_dataZexpected_messagec                 C   sf   |d u rt d d| d u sJ d S tjtt|d t d d|  W d    d S 1 s,w   Y  d S )NrC   match)r   pytestraisesr	   reescaperB   r   r   r   test_check_package_data   s
   "rJ   c                  C   s   ddd} t | }t|| | d  dddgd} t | }t|| | d  ddd} tt t | }W d    d S 1 s>w   Y  d S )Nr0   z>=3.0, !=3.1)r-   python_requiresrK   z>=3.0z!=3.1z>=invalid-version)r   r   rF   rG   r	   r:   r   r   r   test_check_specifier   s   


"rL   c                   C   s>   t jtdd t   W d    d S 1 sw   Y  d S )Nzmissing.*namerD   )rF   rG   r	   r   Z_validate_metadatar   r   r   r   test_metadata_name   s   "rM   )	dist_name	py_module))my.pkgmy_pkg)my-pkgrQ   )rQ   rQ   )pkgrS   c                 C   s   | | d    | d    | d    i t|t| d}t|}|  |j|gks0J ti |ddgi}|  |jdgksGJ ti |ddgi}|  |jr[J d S )	Nz.pysetup.py
noxfile.py)r-   src_root
py_modulesZexplicity_py_modulepackagesZexplicity_package)touchEXAMPLE_BASE_INFOr   r   set_defaultsrW   )tmp_pathrN   rO   r;   r   r   r   r   test_dist_default_py_modules   s   
r]   )rN   package_dirpackage_filesrX   rP   zmy_pkg/__init__.pyzmy_pkg/mod.pyrQ   rR   zmy/pkg/__init__.pyZmyzsrc/my_pkg/__init__.pyzsrc/my_pkg2/__init__.pyZmy_pkg2libZlib2)rS   pkg2)zlib/__init__.pyzlib/nested/__init__.pytzlib2/__init__.py)rS   z
pkg.nestedra   c                 C   s   t | | | d   | d   i t|t| |d}t|}|  |jr*J |jr/J t|jt|ks:J ti |ddgi}|  |jrNJ t|jdhksXJ ti |ddgi}|  |jrlJ t|jdhksvJ d S )NrT   rU   )r-   rV   r^   rW   Zexplicit_py_modulerX   Zexplicit_package)	r   rY   rZ   r   r   r[   rW   setrX   )r\   rN   r^   r_   rX   r;   r   r   r   r   test_dist_default_packages   s.   




rc   )rN   r^   r_   zmy.pkg.nestedzmy/pkg/nested/__init__.pyzmy/pkg/file.pyz	my_pkg.pyzmy_pkg/nested/__init__.pyzsrc/my_pkg/nested/__init__.py)rQ   zmy_pkg.lib2UNKNOWNzsrc/mod1.pyzsrc/mod2.pyzsrc/pkg1/__ini__.pyzsrc/pkg2/__init__.pyc                 C   sd   t | | i tdtj| |d}|d= t|}|  |js(|j	s(J |
 |ks0J dS )z:Make sure dist.name is discovered from packages/py_modules/)rV   r^   r-   N)r   rZ   r   ospathr'   r   r[   rW   rX   get_name)r\   rN   r^   r_   r;   r   r   r   r   test_dist_default_name   s   
ri   ) rf   rH   urllib.parser"   urllib.requestrF   
setuptoolsr   Zsetuptools.distr   r   Ztest_easy_installr   Ztest_find_packagesr   textwrapr   Zdistutils.errorsr	   r)   r5   rZ   r<   ZCHECK_PACKAGE_DATA_TESTSmarkZparametrizerJ   rL   rM   r]   rc   ri   r   r   r   r   <module>   s    ,

	2

	
!

