o
    LK&h"                     @   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   V/var/www/html/venv/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>   a.inib.ini
dir1/c.inidir1/file3.txtdir1/dir2/a.inidir1/dir2/file2.txt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   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__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   
read_fileslistpytestraisesr   )r(   r)   r,   r   r2   mcannot_access_msgcannot_access_secrets_msgr   r   r   test_read_files(   s2   


"r>   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)selfr@   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   r0   *   rA   r1   )r      rM   )r   r6   r%   r   rD   r   )rE   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   rG   rH   rI   rA   rK   )r   r   rD   r   )rE   r(   r@   r   rN   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   rQ   rI   rK   )r   r%   r   rD   r   )rE   r(   r)   r@   r   rN   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   src42N)r   r   rD   )rE   r(   r   	attr_descpackage_dirr   r   r   test_import_order   s   	
zTestReadAttr.test_import_orderN)__name__
__module____qualname__r9   markparametrizerF   rP   rR   rS   rY   r   r   r   r   r?   E   s(    



r?   )rX   r   modulereturn_valuer   rU   rT   zpkg.mainrL   pkgrJ   zlib/main.py   zsingle_module.py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   resolve_classtesting)r)   r(   rX   r   r_   r`   r   clsr   r   r   test_resolve_class   s
   

rk   )argspkgs.F)where
namespacesotherdir1>   ra   dir2rq   rp   T>   	dir1.dir2ra   rr   rq   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>   other/__init__.pydir1/dir2/__init__.pyrG   c                 S   r   r   r   r    r   r   r   r#      r$   z&test_find_packages.<locals>.<dictcomp>)r   fill_package_dirro   rn   c                    s&   g | ]}t  |  tjd qS )/)r5   resolvereplaceossep)r!   pr(   r   r   
<listcomp>   s    z&test_find_packages.<locals>.<listcomp>r   )
r   getr&   r   find_packagesr   r{   r   existspop)	r(   rl   rm   r   rX   kwargsro   ra   pkg_pathr   r~   r   test_find_packages   s   

$r   )r   ro   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__.pysrc1src2z	src1/pkg1z	src2/pkg2)pkg1pkg2r   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   rw   rp   ro   r   )	r   r   r   r&   r
   r   r{   r   r   )	r(   r   ro   r   pkg_dirr   rm   ra   r   r   r   r   test_fill_package_dir   s   r   )r{   rg   pathlibr   r9   setuptools._staticr   setuptools.configr   setuptools.discoveryr   distutils.errorsr   r   r+   r>   r?   r]   r^   rk   r   r   r   r   r   r   <module>   s^    d


	

	