o
    5h"                     @   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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$h d'fd(d)ih d*fi h d*fgd+d, Zejd-d.d/gd"gi fd.d0gd"gi fd1d2gdgddifd1d3gdgddifd4d5gd6d7gd8d9d:fd1d0gdd"gd;d<ifgd=d> ZdS )?    N)Path)	is_static)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fileZcontentpath r   Clib/python3.10/site-packages/setuptools/tests/config/test_expand.pywrite_files   s
   r   c                 C   s`   h d}t dd |D |  g d}||  tt||ks"J tt|| |ks.J d S )N>   zdir1/dir2/a.inizdir1/file3.txtzdir1/dir2/dir3/file1.txtza.inizb.iniz
dir1/c.inizdir1/dir2/file2.txtc                 S      i | ]}|d qS  r   .0kr   r   r   
<dictcomp>        z&test_glob_relative.<locals>.<dictcomp>)z**/*.txtz[ab].*z**/[ac].ini)r   chdirsetr   Zglob_relative)tmp_pathmonkeypatchr   patternsr   r   r   test_glob_relative   s   

r"   c              	   C   s  | d }| d j dd | d   dddd	}t|| tt|d
 }|j dd tddi| | V}|| tt	|dksGJ d}t
jt|d tdg W d    n1 saw   Y  d}t
jt|d tdg W d    n1 sw   Y  W d    n1 sw   Y  tt	||dksJ t
jt|d tdg| W d    d S 1 sw   Y  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listpytestZraisesr   )r   r    r#   r   r(   mZcannot_access_msgZcannot_access_secrets_msgr   r   r   test_read_files(   s2   


"r0   c                   @   sj   e Zd Zejdg ddd Zdd Zejdddgd	d
 Zejdg ddd Z	dd Z
dS )TestReadAttrexample)s'   __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J d S )Nzmod.pyzmod.__version__r      é)write_bytesr   	read_attr)selfr2   r   r   r   r   test_read_attr_encoding_cookieF   s   z+TestReadAttr.test_read_attr_encoding_cookiec                 C   s   dddd}t || | }|| td}tdddi}W d    n1 s,w   Y  |d	ks7J t|s=J |d
 dksEJ |d dhksNJ t|sTJ tjd|dd	ks_J tdddi|}|d dkspJ 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.VERSIONzlib.mod.VALUESlibzpkg/sub0.1.1r%   r   r&   *   r3   r'   )r      r?   )r   r,   r   r   r6   r   )r7   r   r    r   r/   versionvaluesr   r   r   test_read_attrT   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J t|sJ d S )Nr   r9   r:   r;   r3   r=   )r   r   r6   r   )r7   r   r2   r   r@   r   r   r   test_read_annotated_attrp   s   	
z%TestReadAttr.test_read_annotated_attr)zVERSION = (lambda: '0.1.1')()
z(def fn(): return '0.1.1'
VERSION = fn()
z#VERSION: str = (lambda: '0.1.1')()
c                 C   sD   d|d}t || || td}|dksJ t|r J d S )Nr   rC   r;   r=   )r   r   r   r6   r   )r7   r   r    r2   r   r@   r   r   r   test_read_dynamic_attr   s   



z#TestReadAttr.test_read_dynamic_attrc                 C   s<   dddd}t || d}ddi}t|||dksJ 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42N)r   r   r6   )r7   r   r   Z	attr_descpackage_dirr   r   r   test_import_order   s   	
zTestReadAttr.test_import_orderN)__name__
__module____qualname__r.   markparametrizer8   rB   rD   rE   rI   r   r   r   r   r1   E   s(    



r1   )rH   r   modulereturn_valuer   rG   rF   zpkg.mainr>   pkgr<   zlib/main.py   zsingle_module.pyZsingle_moduleF   zflat_layout/pkg.pyzflat_layout.pkgiD  c                 C   sP   |  tdi  |d| i}t|| t| d||}|  |ks&J d S )Nmodulesz,class Custom:
    def testing(self): return z.Custom)setattrsysr   r   Zresolve_classZtesting)r    r   rH   r   rO   rP   r   clsr   r   r   test_resolve_class   s
   

rX   )argspkgs.F)where
namespacesotherdir1>   Zdir2rQ   r^   r]   T>   z	dir1.dir2rQ   r^   r_   c           	         s   h d}t dd |D   i } |d|}|ddg}ttjd	i ||ks,J |D ]}t|| }tj|s>J q. fdd|	ddgD }ttjd	d|i||ks]J d S )
N>   zother/__init__.pyr9   zdir1/dir2/__init__.pyc                 S   r   r   r   r   r   r   r   r      r   z&test_find_packages.<locals>.<dictcomp>)r   fill_package_dirr\   r[   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   )
r   getr   r   find_packagesr   rd   r   existspop)	r   rY   rZ   r   rH   kwargsr\   rQ   pkg_pathr   rg   r   test_find_packages   s   

$ro   )r   r\   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pkg2rq   zsrc/pkg1c           	      C   s~   t dd |D |  i }| |dd}tjdd|i|}t| t| ks*J |D ]}t||| }tj|s<J q,d S )Nc                 S   r   r   r   r   r   r   r   r      r   z)test_fill_package_dir.<locals>.<dictcomp>F)r   r`   r]   r\   r   )	r   r   rj   r   r
   r   rd   r   rk   )	r   r   r\   rp   Zpkg_dirrm   rZ   rQ   rn   r   r   r   test_fill_package_dir   s   rr   )rd   rV   pathlibr   r.   Zsetuptools._staticr   Zsetuptools.configr   Zsetuptools.discoveryr   Zdistutils.errorsr   r   r"   r0   r1   rM   rN   rX   ro   rr   r   r   r   r   <module>   s^    d


	

	