o
    Zh"                     @   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filecontentpath r   Z/var/www/html/lang_env/lib/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b.iniz
dir1/c.inizdir1/file3.txtzdir1/dir2/a.iniza.inizdir1/dir2/file2.txtzdir1/dir2/dir3/file1.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   


"r1   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)selfr3   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'   *   r4   r(   )r      r@   )r   r-   r   r   r7   r   )r8   r    r!   r   r0   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   r:   r;   r<   r4   r>   )r   r   r7   r   )r8   r    r3   r   rA   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   rD   r<   r>   )r   r   r   r7   r   )r8   r    r!   r3   r   rA   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   r7   )r8   r    r   Z	attr_descpackage_dirr   r   r   test_import_order   s   	
zTestReadAttr.test_import_orderN)__name__
__module____qualname__r/   markparametrizer9   rC   rE   rF   rJ   r   r   r   r   r2   E   s(    



r2   )rI   r   modulereturn_valuer   rH   rG   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    rI   r   rP   rQ   r   clsr   r   r   test_resolve_class   s
   

rY   )argspkgs.F)where
namespacesotherdir1>   rR   Zdir2r_   r^   T>   rR   r`   z	dir1.dir2r_   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dir1/dir2/__init__.pyzother/__init__.pyr:   c                 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   re   r   existspop)	r    rZ   r[   r   rI   kwargsr]   rR   pkg_pathr   rh   r   test_find_packages   s   

$rp   )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pkg2rr   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   ra   r^   r]   r   )	r   r   rk   r   r
   r   re   r   rl   )	r    r   r]   rq   Zpkg_dirrn   r[   rR   ro   r   r   r   test_fill_package_dir   s   rs   )re   rW   pathlibr   r/   Zsetuptools._staticr   Zsetuptools.configr   Zsetuptools.discoveryr   Zdistutils.errorsr   r   r#   r1   r2   rN   rO   rY   rp   rs   r   r   r   r   <module>   s^    d


	

	