
    ϶vg                         d 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 ddlZddl	Z	ddl
mZ ddlmZ  eej        j        d          Z G d	 d
          Z G d d          Zd Zd ZdS )z$Test .dist-info style distributions.    N)partial)unpack_archive   )DALSutf-8encodingc                       e Zd Z ed          Zed             Zej        d             Z	d Z
d Zd Zd Zej                            dd	          d
             ZdS )TestDistInfoz
        Metadata-Version: 1.2
        Requires-Dist: splort (==4)
        Provides-Extra: baz
        Requires-Dist: quux (>=1.1); extra == 'baz'
        c                 x    d |                                 D             }| j        d                    |          z   S )Nc              3   N   K   | ] \  }} d j         di t                      V  !dS )z{key}: {value}
N )formatlocals).0keyvalues      \/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/setuptools/tests/test_dist_info.py	<genexpr>z.TestDistInfo.build_metadata.<locals>.<genexpr>    s?      XX:3*#*66VXX66XXXXXX     )itemsmetadata_basejoin)clskwargsliness      r   build_metadatazTestDistInfo.build_metadata   s5    XXXXX 2775>>11r   c                 V   d}||z  }|                                  |dz  }|                     d          }|                    |d           d}||z  }|                                  |dz  }|                     dd	
          }|                    |d           t          |          S )Nz%VersionedDistribution-2.718.dist-infoMETADATAVersionedDistribution)Namer   r   z!UnversionedDistribution.dist-infoUnversionedDistribution0.3)r"   Version)mkdirr   
write_textstr)selftmpdirdist_info_name	versionedfilenamecontentunversioneds          r   metadatazTestDistInfo.metadata#   s    @^+	z)%%( & 
 
 	Gg666<~-+%%* & 
 
 	Gg6666{{r   c                     t          d t          j        |          D                       }t          |          dk    s
J |            |d         }|d         }|j        dk    sJ |j        dk    sJ d S )Nc              3   (   K   | ]}|j         |fV  d S N)project_name)r   ds     r   r   z-TestDistInfo.test_distinfo.<locals>.<genexpr>;   s:       
 
$%Q^Q
 
 
 
 
 
r      r#   r!   z2.718r$   )dictpkg_resourcesfind_distributionslenversion)r)   r0   distsr/   r,   s        r   test_distinfozTestDistInfo.test_distinfo:   s     
 
)6)I()S)S
 
 
 
 
 5zzQ5612	 G++++"e++++++r   c                 r   d}t          t          t          j        j        |                    }t          j        |          D ]s}|                                |d d         k    sJ |                    d          |d         t          j                            d          gk    sJ |j        dgk    sJ td S )N)z	splort==4z	quux>=1.1r   )baz)extrasr   zquux>=1.1;extra=="baz"r?   )listmapr8   Requirementparser9   requiresr@   )r)   r0   specsrE   r5   s        r   test_conditional_dependenciesz*TestDistInfo.test_conditional_dependenciesG   s    (M5;UCCDD1(;; 	' 	'A::<<8BQB<////::X:..)//0HII3     8w&&&&&	' 	'r   c                 L   d}|dz                       |d           t          j        dt          j        t          j        z            }t          d|d          }|j        sJ |                    |j                  sJ t          |
                    d	                    rJ d
S )zA
        Supplying an invalid version crashes dist_info.
        z@[metadata]
name=proj
version=42
[egg_info]
tag_build=invalid!!!
	setup.cfgr   r   zinvalid version	dist_infoF)cwdcheck*.dist-infoN)r'   recompileMIrun_command_inner
returncodesearchstdoutrA   glob)r)   tmp_pathconfigmsgprocs        r   test_invalid_versionz!TestDistInfo.test_invalid_versionS   s     Y	K	++FW+EEEj*BD24K88 (%HHHzz$+&&&&&m445555555r   c                    d}|dz                       |d           t          t          dd|                     t          |                    d                    }|j                            d	          sJ t          j        |           t          t          dd
d|                     t          |                    d                    }|j                            d          sJ d S )Nz
        [metadata]
        name=proj
        version=42
        [egg_info]
        tag_date=1
        tag_build=.post
        rI   r   r   rJ   z	--no-daterK   rM   zproj-42z--tag-buildz.azproj-42a)	r'   printrun_commandnextrV   name
startswithshutilrmtree)r)   rW   rX   rJ   s       r   test_tag_argumentszTestDistInfo.test_tag_arguments_   s     
K	++FW+EEEk+{AAABBB}5566	~((33333i   k+}dIIIJJJ}5566	~((4444444r   keep_egg_info)FTc                 <   d}|dz                       |d           |dz  }|                                 |rdgng }t          dd|g|R d	|i t          t	          |                    d
                              dk    sJ t          t	          |                    d
                              dk    sJ t          |          }t          t	          |                    d                              |k    sJ t          t	          |                    d                              dk    sJ t          t	          |                    d                              dk    sJ t          t	          |                    d                              dk    sJ d S )Nz [metadata]
name=proj
version=42
rI   r   r   __outz--keep-egg-inforJ   z--output-dirrK   rM   r   r   z
*.egg-infoz	*.__bkp__)r'   r&   r_   r:   rA   rV   int)r)   rW   rf   rX   outoptsexpected_egg_infos          r   test_output_dirzTestDistInfo.test_output_dirs   s   6	K	++FW+EEE 		&3;!""KJtJJJJJJ4//0011Q66664m445566!;;;;..4..//004EEEEE4l334455::::4--..//144444k223344999999r   N)__name__
__module____qualname__r   r   classmethodr   pytestfixturer0   r=   rG   r[   re   markparametrizerm   r   r   r   r   r      s        D	 M 2 2 [2 ^  ^,, , ,
' 
' 
'
6 
6 
65 5 5( [_m<<: : =<: : :r   r   c                   "   e Zd ZdZ ed          Zg dZej        	                    dd
                                          ej        	                    ddg          ej        	                    de          d	                                     Zd
S )TestWheelCompatibilityzMake sure the .dist-info directory produced with the ``dist_info`` command
    is the same as the one produced by ``bdist_wheel``.
    ae  
    [metadata]
    name = {name}
    version = {version}

    [options]
    install_requires =
        foo>=12; sys_platform != "linux"

    [options.extras_require]
    test = pytest

    [options.entry_points]
    console_scripts =
        executable-name = my_package.module:function
    discover =
        myproj = my_package.other_module:function
    ))r   r   ).postz[egg_info]
tag_build = post
)rx   z[egg_info]
tag_build = .post
)rx   z)[egg_info]
tag_build = post
tag_date = 1
).devz[egg_info]
tag_build = .dev
)ry   z)[egg_info]
tag_build = .dev
tag_date = 1
)a1z[egg_info]
tag_build = .a1
)z+localz[egg_info]
tag_build = +local
ra   zmy-proj my_proj my.proj My.Projr;   z0.42.13)suffixcfgc                    | j                             ||          |z   }dD ]6}||z                                   ||z  dz                      |d           7t	          d|dz             t          |                    d	                    }t          ||d
z             t          |                    d                    }	t	          d|dz             t          |                    d                    }
|
j        |	j        k    sJ |
j        	                    |
                    dd           d| |           sJ dD ]*}t          |
|z            t          |	|z            k    sJ +d S )N)ra   r;   )	dir_wheeldir_distrI   r   r   bdist_wheelr~   r]   zdir_wheel/dist/*.whlunpackzunpack/*.dist-inforJ   r   zdir_dist/*.dist-info-_)r    zentry_points.txt)SETUPCFGr   r&   r'   r_   r`   rV   r   ra   rb   replaceread)r)   ra   r;   rW   r{   r|   rX   iwheelwheel_dist_inforJ   files               r   &test_dist_info_is_the_same_as_in_wheelz=TestWheelCompatibility.test_dist_info_is_the_same_as_in_wheel   s    %%4%AACG( 	N 	NA\  """\K'33FW3MMMMMx+'=>>>>X]]#9::;;uh1222x}}-ABBCCKX
%:;;;;'=>>??	~!55555~((DLLc,B,B)V)VW)Vf)V)VWWWWW2 	J 	JD	D())T/D2H-I-IIIIII	J 	Jr   N)rn   ro   rp   __doc__r   r   EGG_INFO_OPTSrr   rt   ru   splitr   r   r   r   rw   rw      s          t	 H*
 
 
M [V%F%L%L%N%NOO[Y44[.>>J J ?> 54 POJ J Jr   rw   c                      t           j        t           j        dddd|}t          j        ddgt          t          |           } t          j        | fi |S )NTr   )stderrrU   textr	   rL   z-cz __import__('setuptools').setup())
subprocessSTDOUTPIPEsys
executablerB   r(   run)cmdr   rk   s      r   rR   rR      sb    #/  D >4!C
Tc#smm
TC>#&&&&&r   c                  $    t          | i |j        S r3   )rR   rU   )argsr   s     r   r_   r_      s    d-f--44r   )r   pathlibrN   rc   r   r   	functoolsr   rr   r8   setuptools.archive_utilr   textwrapr   Path	read_textr   r   rw   rR   r_   r   r   r   <module>r      s)   * *  				      



            2 2 2 2 2 2      ww|%888m: m: m: m: m: m: m: m:`=J =J =J =J =J =J =J =J@
' 
' 
'5 5 5 5 5r   