U
    aÊ¹j9"  ã                   @   sL  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ejjd'd(�d)d*„ ƒZd+d,„ Zej d-d.d/d0d1g¡d2d3„ ƒZej d4d5dd6d7gd8gfd9dd6d7gd8gfd8dd6d7gd8gfd5dd:gd;d5gfd8dd<d=gd8d>gfd8d?d@dAœdBdCdDgdEdFdGgfg¡dHdI„ ƒZej dJdKddLgfd5dd:dMgfd8ddNgfd8dd6dOgfd8dd<dPgfd8d?d@dQœdBdCdDgfdRddSdTgfdRddUdVgfg¡dWdX„ ƒZ dS )Yé    N)ÚDistribution)Úcheck_package_dataÚcheck_specifieré   )Úmake_trivial_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 5 Q R X d ¡ }|  ¡ �& tƒ ‰ ˆ  ¡  ‡ fdd„|D ƒ}W 5 Q R X dd„ |D ƒ|ksÈt‚dS )zR
    Check multiple calls to `Distribution.fetch_build_egg` work as expected.
    Úindexzfile://c              	      sb   ˆ   | ¡}d| |f }tt| |¡ƒ| |ƒ | d¡ d¡�}| tdƒj|d�¡ W 5 Q R X d S )Nz%s-%s.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
   © úY/var/www/html/bwave/python/venv/lib/python3.8/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_urlz*
    barbazquux-runner
    barbazquux
    c                    s   g | ]}ˆ   |¡‘qS r   )Zfetch_build_egg)Ú.0Úr)Údistr   r   Ú
<listcomp>:   s     z-test_dist_fetch_build_egg.<locals>.<listcomp>c                 S   s   g | ]}|r|j ‘qS r   )Úkey)r   r   r   r   r   r   ;   s      N)r   ÚurllibÚparseÚurljoinÚrequestÚpathname2urlr   r   r   r   r   r   ÚsplitZas_cwdr   Úparse_config_filesÚAssertionError)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   ÚauthorÚauthor_emailÚlong_descriptionÚdescriptionÚkeywordsc                  C   sr   t t dgdgd�d�} t| ƒ}t|jjƒddgks6t‚t t| d  ¡ ƒƒ| d< t| ƒ}t|jjƒddgksnt‚d S )NÚfooÚbar)ÚaÚb)Úextras_requirer5   r6   r7   )Údictr   ÚlistÚmetadataZprovides_extrasr'   ÚreversedÚitems©Úattrsr   r   r   r   Ú(test_provides_extras_deterministic_orderI   s    r?   z*.txtz*.rstz*.msg)Ú Úhellor@   rA   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     rC   Ú	generatorzd"values of 'package_data' dict" must be of type <tuple[str, ...] | list[str]> (got <generator objectzpackage_data, expected_messagec              	   C   sN   |d krt d d| ƒd ksJt‚n,tjtt |¡d�� t d d| ƒ W 5 Q R X d S )NÚpackage_data©Úmatch)r   r'   ÚpytestÚraisesr	   ÚreÚescape)rE   Zexpected_messager   r   r   Útest_check_package_data„   s    rL   z#4745)Úreasonc               	   C   sR   dddœ} t | ƒ}t|| | d ƒ dddgdœ} t t¡� t | ƒ}W 5 Q R X d S )Nr3   z>=3.0, !=3.1)r-   Úpython_requiresrN   z>=3.0z!=3.1)r   r   rH   rI   r	   r=   r   r   r   Útest_check_specifier�   s    
rO   c                	   C   s(   t jtdd�� tƒ  ¡  W 5 Q R X d S )Nzmissing.*namerF   )rH   rI   r	   r   Z_validate_metadatar   r   r   r   Útest_metadata_nameš   s    rP   zdist_name, py_module)úmy.pkgÚmy_pkg)úmy-pkgrR   )rR   rR   )ÚpkgrT   c                 C   s®   | |› d�   ¡  | d   ¡  | d   ¡  t|t| ƒdœ–}t|ƒ}| ¡  |j|gks\t‚t|ddgi–ƒ}| ¡  |jdgks†t‚t|ddgi–ƒ}| ¡  |jrªt‚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_defaultsrX   r'   )Útmp_pathÚ	dist_nameZ	py_moduler>   r   r   r   r   Útest_dist_default_py_modulesŸ   s    
r_   z/dist_name, package_dir, package_files, packagesrQ   zmy_pkg/__init__.pyzmy_pkg/mod.pyrR   rS   zmy/pkg/__init__.pyZmyzsrc/my_pkg/__init__.pyzsrc/my_pkg2/__init__.pyZmy_pkg2ÚlibZlib2)rT   Úpkg2zlib/__init__.pyzlib/nested/__init__.pytzlib2/__init__.pyrT   z
pkg.nestedra   c                 C   sä   t | |ƒ | d  ¡  | d  ¡  t|t| ƒ|dœ–}t|ƒ}| ¡  |jrPt‚|jrZt‚t|j	ƒt|ƒkspt‚t|ddgi–ƒ}| ¡  |j	r”t‚t|jƒdhks¨t‚t|ddgi–ƒ}| ¡  |jrÌt‚t|j	ƒdhksàt‚d S )NrU   rV   )r-   rW   Úpackage_dirrX   Zexplicit_py_modulerY   Zexplicit_package)
r   rZ   r[   r   r   r\   rX   r'   ÚsetrY   )r]   r^   rb   Úpackage_filesrY   r>   r   r   r   r   Útest_dist_default_packages¾   s*    
ü



re   z%dist_name, package_dir, package_filesz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)rR   zmy_pkg.lib2ÚUNKNOWNzsrc/mod1.pyzsrc/mod2.pyzsrc/pkg1/__ini__.pyzsrc/pkg2/__init__.pyc                 C   s`   t | |ƒ td tj | ¡¡|dœ–}|d= t|ƒ}| ¡  |jsL|j	sLt
‚| ¡ |ks\t
‚dS )z:Make sure dist.name is discovered from packages/py_modulesú/)rW   rb   r-   N)r   r[   r   ÚosÚpathr%   r   r\   rX   rY   r'   Úget_name)r]   r^   rb   rd   r>   r   r   r   r   Útest_dist_default_nameô   s    
ýrk   )!rh   rJ   Úurllib.parser    Úurllib.requestrH   Ú
setuptoolsr   Zsetuptools.distr   r   Ztest_easy_installr   Ztest_find_packagesr   Útextwrapr   Údistutils.errorsr	   r)   r8   r[   r?   ZCHECK_PACKAGE_DATA_TESTSÚmarkZparametrizerL   ZxfailrO   rP   r_   re   rk   r   r   r   r   Ú<module>   sÀ   ,ùþû

þú ÿü	 ÿû ÿûÚ2

üþ	
üüõþ
!

ýóþ