U
    aÊ¹j�H  ã                   @  s^  U d Z 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Zddl	Z	ddl
Z
ddlZddlmZ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	e	jkZd
d„ ZdddgdœZde Zejdd„ ƒZdd„ Ze e!eddddddddgƒƒZ"ddgddgfddgd d!dgfd"d#d$gd%gfd&d'd(d)gd*gfd+d,gg fd-d.gd/gfd0d1d2dgd3gfd4d5d6gd7gfd8d9d:d;gg fd<d=d>d?gd@dAgfdBdCdDgdEdFdGgfdHdIdJdKgdLgfdMdNgdOdPdQgfgZ#dRe$dS< ej% &dTdU„ e#D ƒ¡Z'ej(e'dV�dWdX„ ƒZ)ej% &dYdU„ e#D ƒ¡Z*ej(e*dV�dZd[„ ƒZ+d\d]„ Z,d^d_„ Z-G d`da„ daƒZ.G dbdc„ dce.ƒZ/G ddde„ dee.ƒZ0dS )fzsdist testsé    )ÚannotationsN)ÚFileListÚegg_infoÚtranslate_pattern)ÚDistribution)ÚDALS)Úlog)ÚDistutilsTemplateErrorZ__pypy__c                 C  s   |   dtj¡S )z"Converts '/' in a string to os.sepú/)ÚreplaceÚosÚsep)Ús© r   ú]/var/www/html/bwave/python/venv/lib/python3.8/site-packages/setuptools/tests/test_manifest.pyÚmake_local_path   s    r   Úappz0.0)ÚnameÚversionÚpackagesz*from setuptools import setup

setup(**%r)
c               	   c  sD   t jt j } }t ¡ t ¡  t _t _z
d V  W 5 | | t _t _X d S ©N)ÚsysÚstdoutÚstderrÚioÚStringIO)Z
old_stdoutZ
old_stderrr   r   r   Úquiet/   s
    
r   c                 C  s   t | dƒ ¡  d S )NÚwb)ÚopenÚclose)Úfilenamer   r   r   Útouch9   s    r!   ú
README.rstúMANIFEST.inúsetup.pyzapp.egg-info/PKG-INFOzapp.egg-info/SOURCES.txtz!app.egg-info/dependency_links.txtzapp.egg-info/top_level.txtzapp/__init__.pyZfooÚbarZfoobarzfoo/barzfoo/bar/bazz	./foo/barz*.txtzfoo.txtzbar.txtzfoo/foo.txtz	dir/*.txtzdir/foo.txtzdir/bar.txtzdir/.txtznotdir/foo.txtz*/*.pyzbin/start.pyzdocs/page-?.txtzdocs/page-9.txtzdocs/page-10.txtz
foo/**/barzfoo/bing/barzfoo/bing/bang/barzfoo/abarzfoo/**zfoo/bar/bing.pyzfoo/xz/foo/xz**Úxzabc/xyzz@nythingzpre[one]postZpreopostZprenpostZpreepostZprepostZ
preonepostzhello[!one]worldZhelloxworldZhelloyworldZhellooworldZ
helloworldZhellooneworldz
[]one].txtzo.txtz].txtze.txtzone].txtzfoo[!]one]barZfooybarzfoo]barZfooobarZfooebarz&list[tuple[str, list[str], list[str]]]Útranslate_specsc                 c  s$   | ]\}}}t t |¡|ƒV  qd S r   ©ÚzipÚ	itertoolsÚrepeat©Ú.0ÚpatternÚmatchesZ
mismatchesr   r   r   Ú	<genexpr>ƒ   s   ÿr0   )Úparamsc                 C  s   t t| jƒS r   ©Úmapr   Úparam©Úrequestr   r   r   Úpattern_match‰   s    r7   c                 c  s$   | ]\}}}t t |¡|ƒV  qd S r   r(   r,   r   r   r   r0   Ž   s   ÿc                 C  s   t t| jƒS r   r2   r5   r   r   r   Úpattern_mismatch”   s    r8   c                 C  s   | \}}t |ƒ |¡st‚d S r   ©r   ÚmatchÚAssertionError)r7   r.   Útargetr   r   r   Útest_translated_pattern_match™   s    r=   c                 C  s   | \}}t |ƒ |¡rt‚d S r   r9   )r8   r.   r<   r   r   r   Ú test_translated_pattern_mismatchž   s    r>   c                   @  s   e Zd Zdd„ Zdd„ ZdS )ÚTempDirTestCasec                 C  s$   t  ¡ | _t ¡ | _t | j¡ d S r   )ÚtempfileÚmkdtempÚtemp_dirr   ÚgetcwdÚold_cwdÚchdir©ÚselfÚmethodr   r   r   Úsetup_method¤   s    

zTempDirTestCase.setup_methodc                 C  s   t  | j¡ t | j¡ d S r   )r   rE   rD   ÚshutilÚrmtreerB   rF   r   r   r   Úteardown_method©   s    zTempDirTestCase.teardown_methodN)Ú__name__Ú
__module__Ú__qualname__rI   rL   r   r   r   r   r?   £   s   r?   c                      s|   e Zd Z‡ fdd„Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Z‡  ZS )ÚTestManifestTestc                   sÄ   t ƒ  |¡ ttj | jd¡ddd�}| t¡ | 	¡  dD ]}t
tj | j|¡ƒ q<tj | jd¡}t |¡ dD ]}t
tj ||¡ƒ qttj |d¡}t |¡ d	D ]}t
tj ||¡ƒ q¨d S )
Nr$   Úwúutf-8©Úencoding)r"   ú.hidden.rstútesting.rstÚLICENSEr   )z__init__.pyúa.txtúb.txtzc.rstÚstatic)zapp.jsz
app.js.mapzapp.csszapp.css.map)ÚsuperrI   r   r   ÚpathÚjoinrB   ÚwriteÚSETUP_PYr   r!   Úmkdir)rG   rH   ÚfÚfnameZtest_pkgrZ   ©Ú	__class__r   r   rI   ¯   s    


zTestManifestTest.setup_methodc              	   C  s<   t j | jd¡}t|ddd��}| t|ƒ¡ W 5 Q R X dS )zWrite a MANIFEST.in.r#   rQ   rR   rS   N)r   r\   r]   rB   r   r^   r   )rG   ÚcontentsÚmanifestra   r   r   r   Úmake_manifestÖ   s    zTestManifestTest.make_manifestc                 C  s2   t tƒ}d|_t|ƒ}| ¡  | ¡  t|jjƒS )z7Run egg_info and get all the files to include, as a setr$   )	r   ÚSETUP_ATTRSÚscript_namer   Úensure_finalizedÚrunÚsetÚfilelistÚfiles)rG   ÚdistÚcmdr   r   r   Ú	get_filesÜ   s    zTestManifestTest.get_filesc                 C  s   t tdgƒ |  ¡ kst‚dS )z=Check a missing MANIFEST.in includes only the standard files.r#   N)Údefault_filesrl   rq   r;   ©rG   r   r   r   Útest_no_manifestç   s    z!TestManifestTest.test_no_manifestc                 C  s   |   d¡ t|  ¡ kst‚dS )z<Check an empty MANIFEST.in includes only the standard files.Ú N)rg   rr   rq   r;   rs   r   r   r   Útest_empty_filesë   s    
z!TestManifestTest.test_empty_filesc                 C  s.   |   d¡ ttddgƒB }||  ¡ ks*t‚dS )z,Include extra rst files in the project root.zinclude *.rstrV   rU   N)rg   rr   rl   rq   r;   )rG   rn   r   r   r   Útest_includeð   s    
zTestManifestTest.test_includec                 C  s4   t }|  d¡ tt|dƒgƒB }||  ¡ ks0t‚dS )z0Include everything in app/ except the text fileszE
            include app/*
            exclude app/*.txt
            ú	app/c.rstN©r   rg   rr   rl   rq   r;   ©rG   Úmlrn   r   r   r   Útest_excludeö   s    ÿzTestManifestTest.test_excludec              	   C  sR   t }|  d¡ tt|dƒ|dƒ|dƒ|dƒ|dƒ|dƒgƒB }||  ¡ ksNt‚dS )	zInclude with multiple patterns.zinclude app/*.txt app/static/*ú	app/a.txtú	app/b.txtúapp/static/app.jsúapp/static/app.js.mapúapp/static/app.cssúapp/static/app.css.mapNry   rz   r   r   r   Útest_include_multiple  s    
úz&TestManifestTest.test_include_multiplec                 C  sF   t }|  d¡ tt|dƒ|dƒ|dƒ|dƒgƒB }||  ¡ ksBt‚dS )ú(Include the whole app/static/ directory.zgraft app/staticr   r€   r�   r‚   Nry   rz   r   r   r   Ú
test_graft  s    
üzTestManifestTest.test_graftc                 C  sF   t }|  d¡ tt|dƒ|dƒ|dƒ|dƒgƒB }||  ¡ ksBt‚dS )r„   zgraft */staticr   r€   r�   r‚   Nry   rz   r   r   r   Útest_graft_glob_syntax  s    
üz'TestManifestTest.test_graft_glob_syntaxc                 C  s:   t }|  d¡ tt|dƒ|dƒgƒB }||  ¡ ks6t‚dS )z'Exclude all *.map files in the project.zK
            graft app/static
            global-exclude *.map
            r   r�   Nry   rz   r   r   r   Útest_graft_global_exclude(  s    ÿz*TestManifestTest.test_graft_global_excludec                 C  sD   t }|  d¡ ttdd|dƒ|dƒ|dƒgƒB }||  ¡ ks@t‚dS )z;Include all *.rst, *.js, and *.css files in the whole tree.z9
            global-include *.rst *.js *.css
            rU   rV   rx   r   r�   Nry   rz   r   r   r   Útest_global_include4  s    ÿûz$TestManifestTest.test_global_includec                 C  s@   t }|  d¡ tt|dƒ|dƒ|dƒgƒB }||  ¡ ks<t‚dS )z@Include all files in app/, except for the whole app/static/ dir.z@
            graft app
            prune app/static
            r}   r~   rx   Nry   rz   r   r   r   Útest_graft_pruneE  s    ÿz!TestManifestTest.test_graft_prune)rM   rN   rO   rI   rg   rq   rt   rv   rw   r|   rƒ   r…   r†   r‡   rˆ   r‰   Ú__classcell__r   r   rc   r   rP   ®   s   'rP   c                   @  s®   e Zd ZdZeje d¡dkd�dd„ ƒZdd„ Z	d	d
„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'S )(ÚTestFileListTestz•
    A copy of the relevant bits of distutils/tests/test_filelist.py,
    to ensure setuptools' version of FileList keeps parity with distutils.
    ZSETUPTOOLS_USE_DISTUTILSÚstdlib)Zautousec                   s    ‡ fdd„}|  tjd|¡ dS )z Account for stdlib compatibilityc              	     s.   t  ¡ }t d|dd|||¡}ˆ j |¡ d S )NÚ	distutilsru   r   )r   Úexc_infoÚloggingÚ	LogRecordÚrecordsÚappend)Z_loggerÚlevelÚmsgÚargsÚexcZrec©Úcaplogr   r   Ú_log\  s    z2TestFileListTest._compat_record_logs.<locals>._logr™   N)Úsetattrr   ÚLog)rG   Zmonkeypatchr˜   r™   r   r—   r   Ú_compat_record_logsX  s    z$TestFileListTest._compat_record_logsc                   s   ‡ fdd„|j D ƒS )Nc                   s   g | ]}|j ˆ kr|‘qS r   )Úlevelno)r-   Úr©Úlevelsr   r   Ú
<listcomp>d  s     
 z0TestFileListTest.get_records.<locals>.<listcomp>)r‘   )rG   r˜   r    r   rŸ   r   Úget_recordsc  s    zTestFileListTest.get_recordsc                 C  s"   |   |tj¡g kst‚| ¡  d S r   )r¢   r   ÚWARNr;   Úclear©rG   r˜   r   r   r   ÚassertNoWarningsf  s    z!TestFileListTest.assertNoWarningsc                 C  s<   t r|jst d¡ n"t|  |tj¡ƒdks0t‚| 	¡  d S )Nz'caplog checks may not work well in PyPyr   )
ÚIS_PYPYr‘   ÚpytestZxfailÚlenr¢   r   r£   r;   r¤   r¥   r   r   r   ÚassertWarningsj  s    
zTestFileListTest.assertWarningsc                 C  sD   |D ]:}t j | j|¡}t j |¡\}}t j|dd� t|ƒ qd S )NT)Úexist_ok)r   r\   r]   rB   ÚsplitÚmakedirsr!   )rG   rn   ÚfileÚdirnameÚbasenamer   r   r   Ú
make_filesq  s
    zTestFileListTest.make_filesc                 C  sÊ   t ƒ }t}|  ddddd|dƒ|dƒ|dƒ|d	ƒ|d
ƒ|dƒ|dƒ|dƒ|dƒ|dƒg¡ tdƒ}| d¡D ]}|svql| |¡ qlddd|dƒ|dƒ|dƒ|dƒ|dƒ|dƒg	}| ¡  |j|ksÆt‚d S )Nzfoo.tmpÚokZxozfour.txtzbuildout.cfgz.hg/last-message.txtzglobal/one.txtzglobal/two.txtzglobal/files.xzglobal/here.tmpzf/o/f.oozdir/graft-onezdir/dir2/graft2zdir3/okzdir3/sub/ok.txta6          include ok
        include xo
        exclude xo
        include foo.tmp
        include buildout.cfg
        global-include *.x
        global-include *.txt
        global-exclude *.tmp
        recursive-include f *.oo
        recursive-exclude global *.x
        graft dir
        prune dir3
        Ú
)	r   r   r±   r   r¬   Úprocess_template_lineÚsortrn   r;   )rG   Ú	file_listr{   ZMANIFEST_INÚlineÚwantedr   r   r   Útest_process_template_linex  sL    ïÿ÷z+TestFileListTest.test_process_template_linec                 C  sh   t ƒ }| d¡rt‚t ƒ }ddg|_| d¡s2t‚t ƒ }ddg|_| d¡ | ¡  |jdgksdt‚d S )Nú*.pyúa.pyzb.pyrX   )r   Zexclude_patternr;   rn   rµ   ©rG   r¶   r   r   r   Útest_exclude_pattern·  s    


z%TestFileListTest.test_exclude_patternc                 C  s|   t ƒ }|  g ¡ | d¡rt‚t ƒ }|  ddg¡ | d¡s@t‚t ƒ }|  ddg¡ | d¡ | ¡  |jddgksxt‚d S )Nrº   r»   rY   Ú*)r   r±   Zinclude_patternr;   rµ   rn   r¼   r   r   r   Útest_include_patternÈ  s    

z%TestFileListTest.test_include_patternc              
   C  s4   t ƒ }dD ]$}t t¡� | |¡ W 5 Q R X q
d S )N)	ÚincludeÚexcludezglobal-includezglobal-excludezrecursive-includezrecursive-excludeZgraftZpruneZblarg)r   r¨   Zraisesr	   r´   )rG   r¶   Úactionr   r   r   Ú"test_process_template_line_invalidÚ  s    z3TestFileListTest.test_process_template_line_invalidc                 C  s†   |  tj¡ t}tƒ }|  dd|dƒg¡ | d¡ | ¡  |jdgksLt	‚|  
|¡ | d¡ | ¡  |jdgksxt	‚|  |¡ d S )Nr»   rY   úd/c.pyzinclude *.pyzinclude *.rb©Ú	set_levelr�   ÚDEBUGr   r   r±   r´   rµ   rn   r;   r¦   rª   ©rG   r˜   r{   r¶   r   r   r   rw   ë  s    


zTestFileListTest.test_includec                 C  sŽ   |  tj¡ t}tƒ }dd|dƒg|_| d¡ | ¡  |jd|dƒgksNt‚|  	|¡ | d¡ | ¡  |jd|dƒgks€t‚|  
|¡ d S )Nr»   rY   rÄ   zexclude *.pyzexclude *.rb©rÆ   r�   rÇ   r   r   rn   r´   rµ   r;   r¦   rª   rÈ   r   r   r   r|   ü  s    


zTestFileListTest.test_excludec                 C  s’   |  tj¡ t}tƒ }|  dd|dƒg¡ | d¡ | ¡  |jd|dƒgksRt	‚|  
|¡ | d¡ | ¡  |jd|dƒgks„t	‚|  |¡ d S )Nr»   rY   rÄ   zglobal-include *.pyzglobal-include *.rbrÅ   rÈ   r   r   r   rˆ     s    


z$TestFileListTest.test_global_includec                 C  s‚   |  tj¡ t}tƒ }dd|dƒg|_| d¡ | ¡  |jdgksHt‚|  	|¡ | d¡ | ¡  |jdgkstt‚|  
|¡ d S )Nr»   rY   rÄ   zglobal-exclude *.pyzglobal-exclude *.rbrÉ   rÈ   r   r   r   Útest_global_exclude  s    


z$TestFileListTest.test_global_excludec                 C  s¤   |  tj¡ t}tƒ }|  d|dƒ|dƒ|dƒg¡ | d¡ | ¡  |j|dƒ|dƒgks`t	‚|  
|¡ | d¡ | ¡  |j|dƒ|dƒgks–t	‚|  |¡ d S )Nr»   úd/b.pyúd/c.txtúd/d/e.pyzrecursive-include d *.pyzrecursive-include e *.pyrÅ   rÈ   r   r   r   Útest_recursive_include/  s    


z'TestFileListTest.test_recursive_includec                 C  s˜   |  tj¡ t}tƒ }d|dƒ|dƒ|dƒg|_| d¡ | ¡  |jd|dƒgksXt‚|  	|¡ | d¡ | ¡  |jd|dƒgksŠt‚|  
|¡ d S )Nr»   rË   rÌ   rÍ   zrecursive-exclude d *.pyzrecursive-exclude e *.pyrÉ   rÈ   r   r   r   Útest_recursive_exclude@  s    


z'TestFileListTest.test_recursive_excludec                 C  s¤   |  tj¡ t}tƒ }|  d|dƒ|dƒ|dƒg¡ | d¡ | ¡  |j|dƒ|dƒgks`t	‚|  
|¡ | d¡ | ¡  |j|dƒ|dƒgks–t	‚|  |¡ d S )Nr»   rË   rÍ   úf/f.pyzgraft dzgraft erÅ   rÈ   r   r   r   r…   Q  s    


zTestFileListTest.test_graftc                 C  s˜   |  tj¡ t}tƒ }d|dƒ|dƒ|dƒg|_| d¡ | ¡  |jd|dƒgksXt‚|  	|¡ | d¡ | ¡  |jd|dƒgksŠt‚|  
|¡ d S )Nr»   rË   rÍ   rÐ   zprune dzprune erÉ   rÈ   r   r   r   Ú
test_pruneb  s    


zTestFileListTest.test_pruneN)rM   rN   rO   Ú__doc__r¨   Úfixturer   Úgetenvrœ   r¢   r¦   rª   r±   r¹   r½   r¿   rÃ   rw   r|   rˆ   rÊ   rÎ   rÏ   r…   rÑ   r   r   r   r   r‹   R  s&   

?r‹   )1rÒ   Ú
__future__r   Ú
contextlibr   r*   r�   r   rJ   r   r@   r¨   Zsetuptools.command.egg_infor   r   r   Zsetuptools.distr   Zsetuptools.tests.textwrapr   r�   r   Údistutils.errorsr	   Úbuiltin_module_namesr§   r   rh   r_   Úcontextmanagerr   r!   Ú	frozensetr3   rr   r'   Ú__annotations__ÚchainÚfrom_iterableZmatch_paramsrÓ   r7   Zmismatch_paramsr8   r=   r>   r?   rP   r‹   r   r   r   r   Ú<module>   sº   
ýûÿ

	øþÿ
ýýýýýýýØ3þ

þ

 %