
    5h|                         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	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                   b    e Zd Zd Zd Zej                            dd          d             ZdS )TestDistInfoc                 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)
write_textrecompileMIrun_command_inner
returncodesearchstdoutlistglob)selftmp_pathconfigmsgprocs        ?lib/python3.11/site-packages/setuptools/tests/test_dist_info.pytest_invalid_versionz!TestDistInfo.test_invalid_version   s     Y	K	++FW+EEEj*BD24K88 (%HHHzz$+&&&&&m445555555    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
        r   r   r   r   z	--no-dater   r   zproj-42z--tag-buildz.azproj-42a)	r   printrun_commandnextr   name
startswithshutilrmtree)r   r   r   r   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
r   r   r   __outz--keep-egg-infor   z--output-dirr   r   r   r   z
*.egg-infoz	*.__bkp__)r   mkdirr(   lenr   r   int)r   r   r/   r   outoptsexpected_egg_infos          r"   test_output_dirzTestDistInfo.test_output_dir4   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.   pytestmarkparametrizer8    r$   r"   r   r      s`        
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
    )) rB   ).postz[egg_info]
tag_build = post
)rC   z[egg_info]
tag_build = .post
)rC   z)[egg_info]
tag_build = post
tag_date = 1
).devz[egg_info]
tag_build = .dev
)rD   z)[egg_info]
tag_build = .dev
tag_date = 1
)a1z[egg_info]
tag_build = .a1
)z+localz[egg_info]
tag_build = +local
r*   zmy-proj my_proj my.proj My.Projversionz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| |           sJ dD ]*}t          |
|z            t          |	|z            k    sJ +d S )N)r*   rF   )	dir_wheeldir_distr   r   r   bdist_wheelrJ   r&   zdir_wheel/dist/*.whlunpackzunpack/*.dist-infor   rK   zdir_dist/*.dist-infozmy_proj-)METADATAzentry_points.txt)SETUPCFGformatr2   r   r(   r)   r   r   r*   r+   read)r   r*   rF   r   rG   rH   r   iwheelwheel_dist_infor   files               r"   &test_dist_info_is_the_same_as_in_wheelz=TestWheelCompatibility.test_dist_info_is_the_same_as_in_wheelk   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~(()EG)EV)E)EFFFFF2 	J 	JD	D())T/D2H-I-IIIIII	J 	Jr$   N)r9   r:   r;   __doc__r   rO   EGG_INFO_OPTSr<   r=   r>   splitrV   r?   r$   r"   rA   rA   E   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$   rA   c                      t           j        t           j        dddd|}t          j        ddgt          t          |           } t          j        | fi |S )NTr   )stderrr   textr	   r   z-cz __import__('setuptools').setup())
subprocessSTDOUTPIPEsys
executablemapstrrun)cmdkwargsr6   s      r"   r   r      sb    #/  D >4!C
Tc#smm
TC>#&&&&&r$   c                  $    t          | i |j        S )N)r   r   )argsrf   s     r"   r(   r(      s    d-f--44r$   )rW   pathlibr   r,   r]   r`   	functoolsr   r<   setuptools.archive_utilr   textwrapr   Path	read_textrQ   r   rA   r   r(   r?   r$   r"   <module>ro      s   * *  				      



        2 2 2 2 2 2      ww|%888/: /: /: /: /: /: /: /:d=J =J =J =J =J =J =J =J@
' 
' 
'5 5 5 5 5r$   