U
    aÊ¹j¯  ã                   @   s–  d dl Z d dlZd dlmZ d dlZd dlmZ d dlmZ d dl	m
Z
 dd„ Zdd	„ Zd
d„ ZG dd„ dƒZej dddidddfddidddfi dddfi dddfg¡dd„ ƒZej d d!gd"d#œdd$hfd!d%gd"d#œdd$d&hfd'd(idd$d%d)hfi dd$d%d)hfg¡d*d+„ ƒZej d,d-d.gd!gi fd-d/gd!gi fd0d1gdgddifd0d2gdgddifd3d4gd5d6gd7d8d9œfd0d/gdd!gd:d;ifg¡d<d=„ ƒZdS )>é    N)ÚPath)Úexpand)Úfind_package_path)ÚDistutilsOptionErrorc                 C   s<   |   ¡ D ].\}}|| }|jjddd� |j|dd� qd S )NT)Úexist_okÚparentszutf-8)Úencoding)ÚitemsÚparentÚmkdirÚ
write_text)ÚfilesÚroot_dirÚfileÚcontentÚpath© r   úb/var/www/html/bwave/python/venv/lib/python3.8/site-packages/setuptools/tests/config/test_expand.pyÚwrite_files   s    r   c                 C   sl   dddddddh}t dd	„ |D ƒ| ƒ d
ddg}| | ¡ tt |¡ƒ|ksPt‚tt || ¡ƒ|ksht‚d S )Nzdir1/dir2/dir3/file1.txtzdir1/dir2/file2.txtzdir1/file3.txtza.inizb.iniz
dir1/c.inizdir1/dir2/a.inic                 S   s   i | ]
}|d “qS ©Ú r   ©Ú.0Úkr   r   r   Ú
<dictcomp>   s      z&test_glob_relative.<locals>.<dictcomp>z**/*.txtz[ab].*z**/[ac].ini)r   ÚchdirÚsetr   Zglob_relativeÚAssertionError)Útmp_pathÚmonkeypatchr   Úpatternsr   r   r   Útest_glob_relative   s    ù


r!   c              
   C   s2  | d }| d j dd� | d  ¡  dddd	œ}t||ƒ tt|ƒd
 ƒ}|j dd� tddi|ƒ | ¡ �z}| |¡ t t	|ƒ¡dksŽt
‚d}tjt|d�� t dg¡ W 5 Q R X d}tjt|d�� t dg¡ W 5 Q R X W 5 Q R X t t	|ƒ|¡dk�st
‚tjt|d�� t dg|¡ W 5 Q R X d S )NÚdir_Z_dirT)r   úa.txtÚaÚbÚc)r#   z
dir1/b.txtzdir1/dir2/c.txtÚsecretszsecrets.txtzsecret keysza
b
czCannot access '.*\.\..a\.txt')Úmatchz../a.txtzCannot access '.*secrets\.txt'z../dir_secrets/secrets.txt)r   Útouchr   r   ÚstrÚcontextr   r   Z
read_filesÚlistr   ÚpytestZraisesr   )r   r   r"   r   r'   ÚmZcannot_access_msgZcannot_access_secrets_msgr   r   r   Útest_read_files'   s(    


 r/   c                   @   sR   e Zd Zej ddddg¡dd„ ƒZdd„ Zej dd	d
g¡dd„ ƒZdd„ Z	dS )ÚTestReadAttrÚexamples'   __version__ = 'Ã©'
raise SystemExit(1)
s?   # -*- coding: utf-8 -*-
__version__ = 'Ã©'
raise SystemExit(1)
s?   # -*- coding: latin1 -*-
__version__ = 'é'
raise SystemExit(1)
c                 C   s(   |d   |¡ tjd|d�dks$t‚d S )Nzmod.pyzmod.__version__©r   õ   Ã©)Úwrite_bytesr   Ú	read_attrr   )Úselfr1   r   r   r   r   Útest_read_attr_encoding_cookieE   s    z+TestReadAttr.test_read_attr_encoding_cookiec              	   C   s´   ddddœ}t ||ƒ | ¡ �2}| |¡ t d¡dks<t‚t ddd	i¡}W 5 Q R X |d
 dksft‚|d dhksxt‚tjd|d�dksŽt‚t ddd	i|¡}|d dks°t‚d S )Nr   zVERSION = '0.1.1'z@VALUES = {'a': 0, 'b': {42}, 'c': (0, 1, 1)}
raise SystemExit(1))úpkg/__init__.pyúpkg/sub/__init__.pyzpkg/sub/mod.pyúpkg.sub.VERSIONú0.1.1zlib.mod.VALUESÚlibzpkg/subr$   r   r%   é*   r2   r&   )r   é   r>   )r   r+   r   r   r5   r   )r6   r   r   r   r.   Úvaluesr   r   r   Útest_read_attrS   s    ü


zTestReadAttr.test_read_attrz3VERSION: str
VERSION = '0.1.1'
raise SystemExit(1)
z+VERSION: str = '0.1.1'
raise SystemExit(1)
c                 C   s.   d|dœ}t ||ƒ tjd|d�dks*t‚d S )Nr   )r8   r9   r:   r2   r;   ©r   r   r5   r   )r6   r   r1   r   r   r   r   Útest_read_annotated_attrk   s
    	þ
z%TestReadAttr.test_read_annotated_attrc                 C   s<   ddddœ}t ||ƒ d}ddi}t |||¡dks8t‚d	S )
a*  
        Sometimes the import machinery will import the parent package of a nested
        module, which triggers side-effects and might create problems (see issue #3176)

        ``read_attr`` should bypass these limitations by resolving modules statically
        (via ast.literal_eval).
        z1from .main import func
from .about import versionz2import super_complicated_dep
def func(): return 42zversion = '42')zsrc/pkg/__init__.pyúsrc/pkg/main.pyzsrc/pkg/about.pyzpkg.about.versionr   ÚsrcZ42NrA   )r6   r   r   Z	attr_descÚpackage_dirr   r   r   Útest_import_order{   s    	ý
zTestReadAttr.test_import_orderN)
Ú__name__Ú
__module__Ú__qualname__r-   ÚmarkÚparametrizer7   r@   rB   rF   r   r   r   r   r0   D   s"   ûþ

þþ
	r0   z'package_dir, file, module, return_valuer   rD   rC   zpkg.mainr=   Úpkgr<   zlib/main.pyé   zsingle_module.pyZsingle_moduleéF   zflat_layout/pkg.pyzflat_layout.pkgiD  c                 C   sP   |   tdi ¡ |d|› �i}t||ƒ t |› d�||¡}|ƒ  ¡ |ksLt‚d S )NÚmodulesz,class Custom:
    def testing(self): return z.Custom)ÚsetattrÚsysr   r   Zresolve_classZtestingr   )r   r   rE   r   ÚmoduleZreturn_valuer   Úclsr   r   r   Útest_resolve_class�   s
    

rT   z
args, pkgsÚ.F)ÚwhereÚ
namespacesÚotherZdir1Zdir2rW   Tz	dir1.dir2c           	         s¼   dddh}t dd„ |D ƒˆ ƒ i }ˆ |dœ|–}| ddg¡}ttjf |Žƒ|ksVt‚|D ] }t||ˆ ƒ}tj 	|¡sZt‚qZ‡ fd	d
„| 
ddg¡D ƒ}ttjf d|i|—Žƒ|ks¸t‚d S )Nr8   zother/__init__.pyzdir1/dir2/__init__.pyc                 S   s   i | ]
}|d “qS r   r   r   r   r   r   r   ¯   s      z&test_find_packages.<locals>.<dictcomp>)r   Úfill_package_dirrV   rU   c                    s&   g | ]}t ˆ |  ¡ ƒ tjd ¡‘qS )ú/)r*   ÚresolveÚreplaceÚosÚsep)r   Úp©r   r   r   Ú
<listcomp>º   s   ÿz&test_find_packages.<locals>.<listcomp>)r   Úgetr   r   Úfind_packagesr   r   r]   r   ÚexistsÚpop)	r   ÚargsÚpkgsr   rE   ÚkwargsrV   rL   Úpkg_pathr   r`   r   Útest_find_packages    s     ý
þrj   z"files, where, expected_package_dirzpkg1/__init__.pyzpkg1/other.pyzpkg2/__init__.pyzsrc/pkg1/__init__.pyzsrc/pkg1/other.pyzsrc/pkg2/__init__.pyzsrc1/pkg1/__init__.pyzsrc2/pkg2/__init__.pyZsrc1Zsrc2z	src1/pkg1z	src2/pkg2)Úpkg1Zpkg2rk   zsrc/pkg1c           	      C   s~   t dd„ |D ƒ| ƒ i }| |ddœ}tjf d|i|—Ž}t| ¡ ƒt| ¡ ƒksTt‚|D ] }t||| ƒ}tj 	|¡sXt‚qXd S )Nc                 S   s   i | ]
}|d “qS r   r   r   r   r   r   r   Ö   s      z)test_fill_package_dir.<locals>.<dictcomp>F)r   rY   rW   rV   )
r   r   rc   r   r	   r   r   r]   r   rd   )	r   r   rV   Zexpected_package_dirZpkg_dirrh   rg   rL   ri   r   r   r   Útest_fill_package_dirÂ   s    rl   )r]   rQ   Úpathlibr   r-   Zsetuptools.configr   Zsetuptools.discoveryr   Údistutils.errorsr   r   r!   r/   r0   rJ   rK   rT   rj   rl   r   r   r   r   Ú<module>   sZ   K

üþ	
üþ	
ýýöþ