
    5h                    .   d dl mZ d dlZd dl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mZ d dlZd dlmZ d dlmZ d dlmZmZmZ d dlmZ d	d
lmZmZ d	dlmZ  G d de          Zej        d             Z  G d d          Z! G d d          Z"dS )    )annotationsN)Path)mock)path)errors)egg_infomanifest_makerwrite_entries)Distribution   )contextsenvironment)DALSc                      e Zd ZdS )EnvironmentN)__name__
__module____qualname__     >lib/python3.11/site-packages/setuptools/tests/test_egg_info.pyr   r      s        Dr   r   c               #    K   t          j        d          5 t                    } t          j        t
          j                   d}t          fd|D                       | _        t          t          t          j        | j                                                             t          j        | j        d         dt           dj        di | j                  ii           | V  d d d            d S # 1 swxY w Y   d S )	Nzsetuptools-test.)prefix)homelibscriptsdatazegg-basec              3  \   K   | ]&}|t           j                            |          fV  'd S )N)osr   join).0dirnameenv_dirs     r   	<genexpr>zenv.<locals>.<genexpr>"   s8      WWw'27<<#A#ABWWWWWWr   r   z.pydistutils.cfgzR
                [egg_info]
                egg-base = {egg-base}
                r   )r   tempdirr   r   chmodstatS_IRWXUdictpathslistmapmkdirvaluesr   buildr   format)envsubsr#   s     @r   r1   r1      s\     		!3	4	4	4 '""
$,''';WWWWRVWWWWW	S39++--..///
If"D  ( ( !Y( (% % 	
 		 		 		 			!                 s   CC99C= C=c                  :   e Zd Z ed          Zd Zedd            Zd Zed	             Z	d
 Z
d Zd Zd Zd Zd ZddZdej        d          dZdej        d          dZdZ G d d          Ze                    ddddddd d!d"d#d$eee%          d&             Zd' Zd( Zd) Zd* Zd+ Zej                            d, ed-          d.d/d0f ed1          d.d/df ed2          d.d/d0f ed-          d3d.d4d0f ej          ed5          d.d/d0d67          g          d8             Z!ej                            d9 ed:          d;d<d=d>d?gg f ed@          d;d<d=d>d?gg f edA          d;d<d=d>gd?gf edB          d;d<d=g d>d?gf edC          d;d<d=d?gd>gf edD          d.dEd>gdFgf ed2          d.d/dGgg f edH          d3d.d4dGgg f ed:          dId;d<dJd>d?gg f ej         dKd;dLdMdNd<dOdPdQg dRdSgdT7           ej          edU          d;dVdWd>gdXgdY7           ej          edZ          d;dEd>gg d[7           ej          ed\          d;d]dGd^id_dGd`gdagdb7          g          dc             Z"ej                            d9 edd          d;d<d=g d>d?gf ede          d;d<d=g d>d?gf edf          d;dgd<dhg dig f edj          d;dgd<dhg dig f edk          d;dgd<dhd>d?gdlgf edf          d.dmdlgd>d?gf edn          dod;dgd<dpg dig f ej          edq          d;dVdWd>gdXgdY7           ej          edr          d;dMdNdsd>dtgdugdv7          g	          dw             Z#dx Z$dy Z%dz Z&d{ Z'd| Z(d} Z)d~ Z*d Z+d Z,d Z-ddZ.d Z/dS )TestEggInfoz
        from setuptools import setup

        setup(
            name='foo',
            py_modules=['hello'],
            entry_points={'console_scripts': ['hi = hello.run']},
            zip_safe=False,
        )
        c                X    t          j        | j        t          d          d           d S )NzO
                def run():
                    print('hello')
                )setup.pyzhello.py)r   r/   setup_scriptr   )selfs    r   _create_projectzTestEggInfo._create_project?   sB    
) 
 
 	 	 	 	 	r   pkg_info_lines	list[str]returntuple[int, int]c                    | d                              d          d         }t          t          |                     d          d d                   \  }}||fS )Nr    r   .   )splitr,   int)r:   version_strmajorminors       r   _extract_mv_versionzTestEggInfo._extract_mv_versionJ   sS    $Q'--c22153 1 1# 6 6rr :;;ue|r   c                   t           j                            |j        d         d          }t	                      }t          |          }|                                 |                    |           t          |dd          5 }|	                                }ddd           n# 1 swxY w Y   d|v sJ d|v sJ d	|v sJ d
}| 
                    ||           dS )z
        When the egg_info section is empty or not present, running
        save_version_info should add the settings to the setup.cfg
        in a deterministic order.
        r   	setup.cfgrutf-8encodingN
[egg_info]tag_build =tag_date = 0	tag_buildtag_date)r   r   r    r*   r   r   initialize_optionssave_version_infoopenread_validate_content_order	r8   
tmpdir_cwdr1   	setup_cfgdisteifcontentexpected_orders	            r   +test_egg_info_save_version_info_setup_emptyz7TestEggInfo.test_egg_info_save_version_info_setup_emptyP   s(    GLL6!2K@@	~~d^^

Y''')S7333 	qffhhG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 w&&&&''''((((

 	$$Wn=====s   B%%B),B)c                    d                     |          }t          j        t          j        z  }t          j        || |          sJ dS )zY
        Assert that the strings in expected appear in content
        in order.
        z.*N)r    re	MULTILINEDOTALLsearch)r_   expectedpatternflagss       r   rX   z#TestEggInfo._validate_content_orderj   sC     ))H%%ry(y'51111111r   c                   t           j                            |j        d         d          }t          j        |t          d          i           t                      }t          |          }|                                 |	                    |           t          |dd          5 }|                                }ddd           n# 1 swxY w Y   d|v sJ d	|v sJ d
|v sJ d}|                     ||           dS )z
        When running save_version_info on an existing setup.cfg
        with the 'default' values present from a previous run,
        the file should remain unchanged.
        r   rI   zU
            [egg_info]
            tag_build =
            tag_date = 0
            rJ   rK   rL   NrN   rO   rP   rQ   )r   r   r    r*   r/   r   r   r   rT   rU   rV   rW   rX   rY   s	            r   .test_egg_info_save_version_info_setup_defaultsz:TestEggInfo.test_egg_info_save_version_info_setup_defaultst   sW    GLL6!2K@@	
t 
 	 	 	 ~~d^^

Y''')S7333 	qffhhG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 w&&&&''''((((

 	$$Wn=====s   'CCCc                    |                                   |                     ||           t          j        d          }g d}t	          |          |k    sJ d S )Nfoo.egg-info)PKG-INFOSOURCES.txtzdependency_links.txtentry_points.txtznot-zip-safeztop_level.txt)r9   _run_egg_info_commandr   listdirsorted)r8   rZ   r1   actualrg   s        r   test_expected_files_producedz(TestEggInfo.test_expected_files_produced   si    "":s333N++
 
 
 f~~))))))r   c                   t                      }t          |          }t          j        dt	          d                    }t          j        dd           }|5  |5  dd l}d}t          j        |j        j	        |          5  |
                                 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	Nzos.utimeTEST)side_effectz+setuptools.command.egg_info.egg_info.mkpath)
return_valr   z,Cannot update time stamp of directory 'None'match)r   r   r   patchOSErrordistutils.errorspytestraisesr   DistutilsFileErrorrun)	r8   rZ   r1   r\   r]   utime_patchmkpath_patch	distutilsmsgs	            r   test_handling_utime_errorz%TestEggInfo.test_handling_utime_error   s   ~~d^^jIIIz9d
 
 
  	 	, 	 	####ACy/B#NNN                		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sZ   C'B;B$B;$B((B;+B(,B;/C;B?	?CB?	CCCc                *   t          d          }t          d          }t          j        ||d           t          j        t
                    5 }|                     ||           d d d            n# 1 swxY w Y   d|j        j        d         v sJ d S )Nzp
            [metadata]
            name=foo
            version=0.0.1
            license=file:MIT
            zK
            from setuptools import setup

            setup()
            r6   rI   
ValueErrorr   )	r   r   r/   r   r   AssertionErrorrq   valueargs)r8   rZ   r1   setup_configr7   excs         r   test_license_is_a_stringz$TestEggInfo.test_license_is_a_string   s    
 
 
 
 	
$%
 
 	 	 	 ]>** 	8c&&z3777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8
 sy~a0000000s   A22A69A6c                :   |                                   |                     ||           t          j                            d          }t          j        d           |                     ||           t          j                            d          }||k    sJ dS )z9Ensure timestamps are updated when the command is re-run.rm   gMbP?N)r9   rq   r   r   getmtimetimesleep)r8   rZ   r1   timestamp_atimestamp_bs        r   test_rebuiltzTestEggInfo.test_rebuilt   s    "":s333g&&~66 	
5"":s333g&&~66k))))))r   c                   |                                   t          j        t          d          ddid           |                     ||           t
          j                            dd          }t
          j                            |d          }t          |d	          5 }d
|                                	                    d          v sJ 	 d d d            d S # 1 swxY w Y   d S )Nz:
                recursive-include docs *.rst
            z	usage.rstzRun 'hi')MANIFEST.indocsr@   rm   ro   rK   rL   zdocs/usage.rst

r9   r   r/   r   rq   r   r    rV   rW   rB   )r8   rZ   r1   egg_info_dirsources_txtr^   s         r   test_manifest_template_is_readz*TestEggInfo.test_manifest_template_is_read   s.   
  Z	
 	
 		 		 		 	"":s333w||C88gll<??+000 	<A#qvvxx~~d';';;;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s   ",CC #C Fc                l    t          d          |rdn|z  }|r|nd}t          j        ||d           d S )Nzi
            from setuptools import setup

            setup(name='foo', zip_safe=False, %s)
             r   )r   r   r/   )r8   requiresuse_setup_cfgr7   r   s        r   _setup_script_with_requiresz'TestEggInfo._setup_script_with_requires   sg    
 
 !.RRh0 $18xxb
$%
 
 	 	 	 	 	r   zpython_version<'r   'zpython_version < ""z<=>++c                  $    e Zd Zed             ZdS )TestEggInfo.RequiresTestHelperc                    g }g }| D ]J}|                                                     dd          }|                    d                              d          }t          |          dk    r/|d                                         }t          j        |          }ni }|d                                         }	fd|D             \  }
}}|	|
df|	dz   |d	ffD ]y\  }}}|                    |           d
}|                    d          r|dd          }t          j
        j        }|                    t          j        |||||                     zLt          j
                            d||          S )Nz

   r   r   r   c                D    g | ]} t          |          j        d i S )r   )r   r0   )r!   aformat_dicts     r   
<listcomp>z>TestEggInfo.RequiresTestHelper.parametrize.<locals>.<listcomp>  sD     L L L67NDGGN11[11L L Lr   F_in_setup_cfgTr   z@xfail
   )marks)r   r   expected_requiresinstall_cmd_kwargs)ids)lstriprB   poplenstripastliteral_evalappend
startswithr   markxfailparamparametrize)	test_listr   idlist	argvaluestesttest_paramsname_kwargsvalr   namesetup_py_requiressetup_cfg_requiresr   id_r   use_cfgr   s    `               r   r   z*TestEggInfo.RequiresTestHelper.parametrize  s   FI!  "kkmm11&!<<)ooa0066t<<{##a''%a...00C),)9#)>)>&&)+&"1~++--L L L L;FL L LH!#57H ,e4O+-?F/  *C7 MM#&&&E**:66 2#+ABB< & 1$$$#-."'     $ ;**  + 	 	 	r   N)r   r   r   staticmethodr   r   r   r   RequiresTestHelperr     s-        	*	 *	 
*	 *	 *	r   r   z
        install_requires_deterministic

        install_requires=["wheel>=0.5", "pytest"]

        [options]
        install_requires =
            wheel>=0.5
            pytest

        wheel>=0.5
        pytest
        z
        install_requires_ordered

        install_requires=["pytest>=3.0.2,!=10.9999"]

        [options]
        install_requires =
            pytest>=3.0.2,!=10.9999

        pytest!=10.9999,>=3.0.2
        z
        install_requires_with_marker

        install_requires=["barbazquux;{mismatch_marker}"],

        [options]
        install_requires =
            barbazquux; {mismatch_marker}

        [:{mismatch_marker_alternate}]
        barbazquux
        z
        install_requires_with_extra
        {'cmd': ['egg_info']}

        install_requires=["barbazquux [test]"],

        [options]
        install_requires =
            barbazquux [test]

        barbazquux[test]
        a  
        install_requires_with_extra_and_marker

        install_requires=["barbazquux [test]; {mismatch_marker}"],

        [options]
        install_requires =
            barbazquux [test]; {mismatch_marker}

        [:{mismatch_marker_alternate}]
        barbazquux[test]
        z
        setup_requires_with_markers

        setup_requires=["barbazquux;{mismatch_marker}"],

        [options]
        setup_requires =
            barbazquux; {mismatch_marker}

        z
        extras_require_with_extra
        {'cmd': ['egg_info']}

        extras_require={{"extra": ["barbazquux [test]"]}},

        [options.extras_require]
        extra = barbazquux [test]

        [extra]
        barbazquux[test]
        aF  
        extras_require_with_extra_and_marker_in_req

        extras_require={{"extra": ["barbazquux [test]; {mismatch_marker}"]}},

        [options.extras_require]
        extra =
            barbazquux [test]; {mismatch_marker}

        [extra]

        [extra:{mismatch_marker_alternate}]
        barbazquux[test]
        z
        extras_require_with_marker

        extras_require={{":{mismatch_marker}": ["barbazquux"]}},

        @xfail
        [options.extras_require]
        :{mismatch_marker} = barbazquux

        [:{mismatch_marker}]
        barbazquux
        a(  
        extras_require_with_marker_in_req

        extras_require={{"extra": ["barbazquux; {mismatch_marker}"]}},

        [options.extras_require]
        extra =
            barbazquux; {mismatch_marker}

        [extra]

        [extra:{mismatch_marker_alternate}]
        barbazquux
        z
        extras_require_with_empty_section

        extras_require={{"empty": []}},

        [options.extras_require]
        empty =

        [empty]
        )invalid_markermismatch_markermismatch_marker_alternatec                H   |                      ||            | j        ||fi | t          j                            dd          }t          j                            |d          }t          j                            |          r>t          |d          5 }	|	                                }
d d d            n# 1 swxY w Y   nd}
|
                                |k    sJ t          j	        t          j                            |j
        d         d                    g k    sJ d S )	Nr@   rm   zrequires.txtrK   rL   r   r   barbazquux*)r   rq   r   r   r    existsrV   rW   r   globr*   )r8   rZ   r1   r   r   r   r   r   requires_txtfpinstall_requiress              r   test_requireszTestEggInfo.test_requires9  sK   | 	((=AAA"":sII6HIIIw||C88w||L.AA7>>,'' 	"lW555 -#%7799 - - - - - - - - - - - - - - -  "&&((,=====yci&6FFGG2MMMMMMs   B77B;>B;c                    d}|                      |           t          j        t                    5  |                     ||           ddd           dS # 1 swxY w Y   dS )z
        Packages that pass unordered install_requires sequences
        should be rejected as they produce non-deterministic
        builds. See #458.
        z0install_requires={"fake-factory==0.5.2", "pytz"}N)r   r   r   r   rq   )r8   rZ   r1   reqs       r   *test_install_requires_unordered_disallowedz6TestEggInfo.test_install_requires_unordered_disallowed  s     A((---]>** 	8 	8&&z3777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   AAAc                ~   d}|                     | j                  }|                     |           t          j        t
                    5  |                     ||           d d d            n# 1 swxY w Y   t          j        t          j	        
                    |j        d         d                    g k    sJ d S )Nz/extras_require={{":{marker}": ["barbazquux"]}},markerr   r   r0   r   r   r   r   r   rq   r   r   r   r    r*   r8   rZ   r1   tmplr   s        r   'test_extras_require_with_invalid_markerz3TestEggInfo.test_extras_require_with_invalid_marker  s    @kk!4k55((---]>** 	8 	8&&z3777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8yci&6FFGG2MMMMMM   A//A36A3c                ~   d}|                     | j                  }|                     |           t          j        t
                    5  |                     ||           d d d            n# 1 swxY w Y   t          j        t          j	        
                    |j        d         d                    g k    sJ d S )Nz5extras_require={{"extra": ["barbazquux; {marker}"]}},r   r   r   r   r   s        r   .test_extras_require_with_invalid_marker_in_reqz:TestEggInfo.test_extras_require_with_invalid_marker_in_req  s    Fkk!4k55((---]>** 	8 	8&&z3777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8yci&6FFGG2MMMMMMr   c           	     ~   |                      d           t          j                                                            |j        d                   }t          j        dgt          j        	                    |j        d         t          |          g          d|           t          j        	                    dd	          }t          t          j        	                    |d
          d          5 }|                                                    d          }d d d            n# 1 swxY w Y   d|v sJ d|v sJ d S )Nz*extras_require={"foobar": ["barbazquux"]},r   HOMEr   r   r   cmdpypathdata_streamr1   r@   rm   rn   rK   rL   r   zProvides-Extra: foobarMetadata-Version: 2.4r   r   environcopyupdater*   r   run_setup_pypathsepr    strr   rV   rW   rB   r8   rZ   r1   r   r   r   r:   s          r   test_provides_extrazTestEggInfo.test_provides_extra  s^   (()UVVV*//##**6" + 
 
 	 :??CIe$4c*oo#FGG		
 	
 	
 	
 w||C88"',,|Z887KKK 	3rWWYY__T22N	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3'>9999&.888888   2(D&&D*-D*c           	     L   |                      d           t          j                                                            |j        d                   }t          j        dgt          j        	                    |j        d         t          |          g          d|           t          j        	                    dd	          }t          t          j        	                    |d
          d          5 }|                                }d d d            n# 1 swxY w Y   d|vsJ d S )Nz0install_requires=["spam ; python_version<'3.6'"]r   r   r   r   r   r   r@   rm   rn   rK   rL   zProvides-Extra:)r   r   r   r   r   r*   r   r   r   r    r   r   rV   rW   )r8   rZ   r1   r   r   r   pkg_info_texts          r   test_doesnt_provides_extraz&TestEggInfo.test_doesnt_provides_extra  sI   ((B	
 	
 	
 *//##**6" + 
 
 	 :??CIe$4c*oo#FGG		
 	
 	
 	
 w||C88"',,|Z887KKK 	&rGGIIM	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 555555s   2DDD)fileslicense_in_sourcesz}
                              [metadata]
                              license_file = LICENSE
                              zTest license)rI   LICENSETz
                              [metadata]
                              license_file = INVALID_LICENSE
                              z
                              zexclude LICENSE)rI   r   r   z
                              [metadata]
                              license_file = LICEN[CS]E*
                              glob_pattern)idc           	        |                                   t          j        |           t          j        dgt
          j                            |j        d         t          |          g                     t
          j                            dd          }t          |d                              d          }|rd	|v sJ d S d	|vsJ d
|vsJ d S )Nr   r   r   r   r@   rm   ro   rK   rL   r   INVALID_LICENSE)r9   r   r/   r   r   r   r   r    r*   r   r   	read_text)r8   rZ   r1   r   r   r   sources_texts          r   test_setup_cfg_license_filez'TestEggInfo.test_setup_cfg_license_file!  s    D 	
5 :??CIe$4c*oo#FGG	
 	
 	
 	
 w||C88L-88BBGBTT 	9,,,,,,L0000$L888888r   )r   incl_licensesexcl_licensesz
                              [metadata]
                              license_files =
                                  LICENSE-ABC
                                  LICENSE-XYZ
                              ABC licenseXYZ license)rI   LICENSE-ABCLICENSE-XYZr  r  z
                              [metadata]
                              license_files = LICENSE-ABC, LICENSE-XYZ
                              z
                              [metadata]
                              license_files =
                                  LICENSE-ABC
                              zv
                              [metadata]
                              license_files =
                              z
                              [metadata]
                              license_files = LICENSE-XYZ
                              z
                              [metadata]
                              license_files =
                                  LICENSE-ABC
                                  INVALID_LICENSE
                              )rI   r  r  r   z~
                              [metadata]
                              license_files = LICENSE
                              zexclude LICENSE-XYZ)rI   r   r  r  r   zABC copyingz
ABC noticezABC authorsLicensezInvalid license)rI   r  COPYING-ABC
NOTICE-ABCAUTHORS-ABCLICENCE-XYZr   INVALID-LICENSE)r  r  r  r  r  r   r  default_glob_patternsz
                              [metadata]
                              license_files =
                                  LICENSE*
                              z
XYZ notice)rI   r  
NOTICE-XYZr  no_default_glob_patternsz
                              [metadata]
                              license_files =
                                  LICENSE-ABC
                                  LICENSE*
                              files_only_added_oncez
                              [metadata]
                              license_files = **/LICENSE
                              zDon't includeVendor license)rI   r   LICENSE-OTHERvendorzvendor/LICENSEr  recursive_globc           	     6   |                                   t          j        |           t          j        dgt
          j                            |j        d         t          |          g                     t
          j                            dd          }t          |d                              d          }d	 |                                D             }|D ]}	|                    |	          d
k    sJ |D ]}	|                    |	          dk    sJ d S )Nr   r   r  r@   rm   ro   rK   rL   c                6    g | ]}|                                 S r   r   r!   lines     r   r   z<TestEggInfo.test_setup_cfg_license_files.<locals>.<listcomp>Q       LLL$LLLr   r   r   r9   r   r/   r   r   r   r   r    r*   r   r   r  
splitlinescount
r8   rZ   r1   r   r  r  r   r  sources_lineslfs
             r   test_setup_cfg_license_filesz(TestEggInfo.test_setup_cfg_license_filesu  s+   d 	
5 :??CIe$4c*oo#FGG	
 	
 	
 	
 w||C88L-88BBGBTTLL,2I2I2K2KLLL 	0 	0B &&r**a///// 	0 	0B &&r**a/////	0 	0r   z
                              [metadata]
                              license_file =
                              license_files =
                              z
                              [metadata]
                              license_file =
                                  LICENSE-ABC
                                  LICENSE-XYZ
                              a  
                              [metadata]
                              license_file = LICENSE-ABC
                              license_files =
                                  LICENSE-XYZ
                                  LICENSE-PQR
                              zPQR license)rI   r  LICENSE-PQRr  )r  r(  r  a9  
                              [metadata]
                              license_file = LICENSE-ABC
                              license_files =
                                  LICENSE-ABC
                                  LICENSE-XYZ
                                  LICENSE-PQR
                              z
                              [metadata]
                              license_file = LICENSE-ABC
                              license_files =
                                  LICENSE-XYZ
                              r(  )rI   r(  a  
                              [metadata]
                              license_file = LICENSE-ABC
                              license_files =
                                LICENSE-PQR
                                LICENSE-XYZ
                              z'exclude LICENSE-ABC
exclude LICENSE-PQR)rI   r   r  r(  r  z~
                              [metadata]
                              license_file = LICENSE*
                              z
                              [metadata]
                              license_file = LICENSE*
                              license_files =
                                NOTICE*
                              )rI   r  r  r  r  r  combined_glob_patterrnsc           	     6   |                                   t          j        |           t          j        dgt
          j                            |j        d         t          |          g                     t
          j                            dd          }t          |d                              d          }d	 |                                D             }|D ]}	|                    |	          d
k    sJ |D ]}	|                    |	          dk    sJ d S )Nr   r   r  r@   rm   ro   rK   rL   c                6    g | ]}|                                 S r   r  r  s     r   r   zITestEggInfo.test_setup_cfg_license_file_license_files.<locals>.<listcomp>	  r   r   r   r   r!  r$  s
             r   )test_setup_cfg_license_file_license_filesz5TestEggInfo.test_setup_cfg_license_file_license_filesY  s+   L 	
5 :??CIe$4c*oo#FGG	
 	
 	
 	
 w||C88L-88BBGBTTLL,2I2I2K2KLLL 	0 	0B &&r**a///// 	0 	0B &&r**a/////	0 	0r   c           	        |                                   t          j        t          d          ddddddid           t	          j        d	gt          j                            |j	        d
         t          |          g                     t          j                            dd          }t          t          j                            |d          d          5 }|                                                    d          }ddd           n# 1 swxY w Y   d |D             }t          |          dk    sJ d|d         k    sJ d|dd         v sJ d|dd         v sJ d|d         v sJ dS )zCAll matched license files should have a corresponding License-File.z
                              [metadata]
                              license_files =
                                  NOTICE*
                                  LICENSE*
                                  **/LICENSE
                              r	  r
  includedznot includer   r  )rI   r  r  NOTICEIGNOREr  r   r   r  r@   rm   rn   rK   rL   r   Nc                <    g | ]}|                     d           |S )zLicense-File:)r   r  s     r   r   z?TestEggInfo.test_license_file_attr_pkg_info.<locals>.<listcomp>,  s9     
 
 
t/O/O

 
 
r      zLicense-File: NOTICEr   zLicense-File: LICENSE-ABCr   zLicense-File: LICENSE-XYZzLicense-File: vendor/LICENSEr   )r9   r   r/   r   r   r   r   r   r    r*   r   rV   rW   rB   r   )r8   rZ   r1   r   r   r:   license_file_liness          r   test_license_file_attr_pkg_infoz+TestEggInfo.test_license_file_attr_pkg_info  s   
"  )( # "23
 
 	 	 	" 	 :??CIe$4c*oo#FGG	
 	
 	
 	
 w||C88"',,|Z887KKK 	3rWWYY__T22N	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3
 
+
 
 
 %&&!++++%);A)>>>>>*.@.DDDDD*.@.DDDDD-1CA1FFFFFFFs   (DDDc           	         |                      d           t          j        dgt          j                            |j        d         t          |          g          d           t          j                            dd          }t          t          j                            |d          d	
          5 }|
                                                    d          }ddd           n# 1 swxY w Y   |                     |          dk    sJ dS )z5Make sure latest metadata version is used by default.r   r   r   r   r   r   r   r@   rm   rn   rK   rL   r   N)rA   r2  )r   r   r   r   r   r    r*   r   r   rV   rW   rB   rG   r8   rZ   r1   r   r   r:   s         r   test_metadata_versionz!TestEggInfo.test_metadata_version8  s'   ((,,, :??CIe$4c*oo#FGG	
 	
 	
 	

 w||C88"',,|Z887KKK 	3rWWYY__T22N	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 ''776AAAAAA   4(C((C,/C,c           	        |                      d           t          j                                                            |j        d                   }t          j        dgt          j        	                    |j        d         t          |          g          d|           t          j        	                    dd	          }t          t          j        	                    |d
          d          5 }|                                                    d          }d d d            n# 1 swxY w Y   d}||v sJ d|v sJ d S )Nz.long_description_content_type='text/markdown',r   r   r   r   r   r   r@   rm   rn   rK   rL   r   z'Description-Content-Type: text/markdownr   r   r8   rZ   r1   r   r   r   r:   expected_lines           r   "test_long_description_content_typez.TestEggInfo.test_long_description_content_typeF  sm    	((@	
 	
 	
 *//##**6" + 
 
 	 :??CIe$4c*oo#FGG		
 	
 	
 	
 w||C88"',,|Z887KKK 	3rWWYY__T22N	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3A....&.888888r   c           	     d   |                      d           t          j        dgt          j                            |j        d         t          |          g          d           t          j                            dd          }t          t          j                            |d          d	
          5 }|
                                                    d          }d d d            n# 1 swxY w Y   d|v sJ d|d         k    sJ ||                    d          d          }d|v sJ d|v sJ d S )Nzqlong_description='This is a long description\nover multiple lines',long_description_content_type='text/markdown',r   r   r   r6  r@   rm   rn   rK   rL   r   r   r   zThis is a long descriptionzover multiple lines)r   r   r   r   r   r    r*   r   r   rV   rW   rB   index)r8   rZ   r1   r   r   r:   long_desc_liness          r   test_long_descriptionz!TestEggInfo.test_long_descriptiona  sz   
 	((=	
 	
 	
 	 :??CIe$4c*oo#FGG	
 	
 	
 	

 w||C88"',,|Z887KKK 	3rWWYY__T22N	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3&.8888^B'''''()=)=b)A)A)C)CD+>>>>$777777r9  c           	        |                      d           t          j                                                            |j        d                   }t          j        dgt          j        	                    |j        d         t          |          g          d|           t          j        	                    dd	          }t          t          j        	                    |d
          d          5 }|                                                    d          }d d d            n# 1 swxY w Y   d}||v sJ d}||v sJ |                     |          dk    sJ d S )Nzproject_urls={
                'Link One': 'https://example.com/one/',
                'Link Two': 'https://example.com/two/',
                },r   r   r   r   r   r   r@   rm   rn   rK   rL   r   z/Project-URL: Link One, https://example.com/one/z/Project-URL: Link Two, https://example.com/two/r   rA   r   r   r   r   r   r*   r   r   r   r    r   r   rV   rW   rB   rG   r;  s           r   test_project_urlszTestEggInfo.test_project_urlsx  s    	((	
 	
 	
 *//##**6" + 
 
 	 :??CIe$4c*oo#FGG		
 	
 	
 	
 w||C88"',,|Z887KKK 	3rWWYY__T22N	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3I....I....''776AAAAAAr   c           	        |                      d           t          j        dgt          j                            |j        d         t          |          g          d           t          j                            dd          }t          t          j                            |d          d	
          5 }|
                                                    d          }ddd           n# 1 swxY w Y   d|v sJ dS )zTest single line license.zlicense='MIT',r   r   r   r6  r@   rm   rn   rK   rL   r   NzLicense: MITr   r   r   r   r   r    r*   r   r   rV   rW   rB   r7  s         r   test_licensezTestEggInfo.test_license  s   (()9::: :??CIe$4c*oo#FGG	
 	
 	
 	

 w||C88"',,|Z887KKK 	3rWWYY__T22N	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3//////r9  c           	     4   |                      d           t          j        dgt          j                            |j        d         t          |          g          d           t          j                            dd          }t          t          j                            |d          d	
          5 }|
                                                    d          }ddd           n# 1 swxY w Y   d|v sJ d|v sJ dd                    |          v sJ dS )z:Test license is escaped correctly if longer than one line.z<license='This is a long license text \nover multiple lines',r   r   r   r6  r@   rm   rn   rK   rL   r   Nz%License: This is a long license text z        over multiple linesztext 
        over multiplerH  r7  s         r   test_license_escapezTestEggInfo.test_license_escape  sP   ((K	
 	
 	
 	 :??CIe$4c*oo#FGG	
 	
 	
 	

 w||C88"',,|Z887KKK 	3rWWYY__T22N	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 7.HHHH,>>>>->1J1JJJJJJJr9  c           	        |                      d           t          j                                                            |j        d                   }t          j        dgt          j        	                    |j        d         t          |          g          d|           t          j        	                    dd	          }t          t          j        	                    |d
          d          5 }|                                                    d          }d d d            n# 1 swxY w Y   d|v sJ |                     |          dk    sJ d S )Nzpython_requires='>=2.7.12',r   r   r   r   r   r   r@   rm   rn   rK   rL   r   zRequires-Python: >=2.7.12rD  rE  r   s          r   test_python_requires_egg_infoz)TestEggInfo.test_python_requires_egg_info  sl   (()JKKK*//##**6" + 
 
 	 :??CIe$4c*oo#FGG		
 	
 	
 	
 w||C88"',,|Z887KKK 	3rWWYY__T22N	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3*n<<<<''776AAAAAAr   c                D    ddg}|D ]}t          j        |          sJ d S )Nz:standard file not found: should have one of foo.py, bar.pyz"standard file 'setup.py' not found)r	   _should_suppress_warning)r8   fixturesr   s      r   'test_manifest_maker_warning_suppressionz3TestEggInfo.test_manifest_maker_warning_suppression  sH    H0

  	@ 	@C!:3??????	@ 	@r   c                   |                                   t          ddd          }d|_        t          |          }|                                 |                                 d|j        j        v sJ t          |j        dz   d          5 }|	                                
                    d	          }d|v sJ 	 d d d            d S # 1 swxY w Y   d S )
Nfoo0.0.1r   versionznon_setup.pyr6   z/SOURCES.txtrK   rL   r   )r9   r   script_namer   finalize_optionsr   filelistr   rV   rW   rB   )r8   rZ   r\   egg_info_instancer^   sourcess         r   test_egg_info_includes_setup_pyz+TestEggInfo.test_egg_info_includes_setup_py  s$   Uw??@@)$TNN**,,,.7=====#,~=PPP 	)TUffhhnnT**G(((((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   .C

CCNc           	     Z   t           j                                                            |j        d                   }|dg}t          j        |t           j                            |j        d         t          |          g          d|          \  }}|r
J |            |r||v sJ d S d S )Nr   r   r   r   r   r   )
r   r   r   r   r*   r   r   r   r    r   )r8   rZ   r1   r   outputr   coder   s           r   rq   z!TestEggInfo._run_egg_info_command  s    *//##**6" + 
 
 ;C !-:??CIe$4c*oo#FGG	
 
 

d x 	"T>>>>	" 	"!>r   c                   |                                   t          j        dt          d          i           |                     ||           t
          j                            dd          }t          t
          j                            |d          d          5 }|                                	                    d          }d d d            n# 1 swxY w Y   d	|v sJ d S )
NrI   z
                              [egg_info]
                              tag_build = dev
                              tag_date = 0
                              tag_svn_revision = 0
                              r@   rm   rn   rK   rL   r   zVersion: 0.0.0.dev0r   r7  s         r   test_egg_info_tag_only_oncez'TestEggInfo.test_egg_info_tag_only_once  s   
" 	
 		 		 		 	"":s333w||C88"',,|Z887KKK 	3rWWYY__T22N	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3$666666s   (CCC)r:   r;   r<   r=   )F)NN)0r   r   r   r   r7   r9   r   rG   ra   rX   rk   ru   r   r   r   r   r   sysversion_infor   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r'  r,  r4  r8  r=  rB  rF  rI  rK  rM  rQ  r\  rq   ra  r   r   r   r4   r4   1   sD
       4		 L	 	 	    \
> > >4 2 2 \2!> !> !>F* * *   1 1 1B* * *< < <$    @)9!)<???O KS5Ea5H K K KN, , , , , , , ,\ ##	
												 &'";g $ T TjN NkT TjN*	8 	8 	8N N NN N N9 9 9"6 6 6$ [' "&"" "  .   "&"" "  .   "&"" "  .  	 "&"" " $5-	 	  FL!%"" "  .  !  a=	
@ @B9 9C@ @B9& [3 "&"" " $1#0  .$ "&"" " $1#0	 	 .  "&"" " $1#0
 
 " "&"" " $1#0	 	 .  "&"" " $1#0	 	   "&"" " $2
 
 "#" "&"" "  .  
 "&"" " $5-	 	   "&"" " $9#0#0  .!$ FL!##0#0".#0#0('8	 	   ##*+  . FL!%"" " $1".
 
 -    FL!%"" " $1
 
 *    FL!%"" "  -%4(*:;
 
 ,- !#  wK	
N N^0 0_N N^0* [3 "&"" " $1#0
 
 ." "&"" " $1#0  .& "&"" " $1#0#0  >==!( "&"	" 	" $1#0#0   >==%, "&"" " $1#0#0  .!( "&"" " $2  .& "&"" " $N#0#0#0   >==%( FL!%"" " $1".	 	 -   FL!%"" " $1".#0  -,!  [_	
b bF0 0Gb bF0*%G %G %GNB B B9 9 968 8 8.B B B@0 0 0K K K$B B B"@ @ @) ) )" " " "&7 7 7 7 7r   r4   c                      e Zd Zd Zd ZdS )TestWriteEntriesc                j   t          ddd          }ddi|_        |                    d          }d}t          j        t
          j        t          f|          5 }t          |dd	           d
|j	        j
        d         v sJ dt          |j	                  v sJ 	 d d d            d S # 1 swxY w Y   d S )NrS  rT  rU  zfoo = invalid-identifier:foor   z,(Invalid object reference|Problems to parse)rz   entry_pointsrp   z#ensure entry-point follows the specr   zinvalid-identifier)r   rg  get_command_objr   r   r   OptionErrorr   r
   r   r   r   )r8   rZ   r1   r\   r   expected_msgexs          r   test_invalid_entry_pointz)TestWriteEntries.test_invalid_entry_point  s   Uw??@@"$BC"":..F]F.
;<PPP 	9TV#~/ABBB8BHM!<LLLLL'3rx==88888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s   A B((B,/B,c                    t          ddd          }ddgd|_        |                    d          }t          |dd	           t	          d	                              d
          }d|v sJ d|v sJ d S )NrS  rT  rU  zfoo = bar:bazzfaa = bor:boz)abcdefr   rg  rp   rK   rL   z[abc]
foo = bar:baz
z[def]
faa = bor:boz
)r   rg  rh  r
   r   r  )r8   rZ   r1   r\   r   r_   s         r   test_valid_entry_pointz'TestWriteEntries.test_valid_entry_point  s    Uw??@@"#$
 
 "":..c>+=>>>)**44g4FF'72222'7222222r   N)r   r   r   rl  rp  r   r   r   re  re    s2        9 9 9
3 
3 
3 
3 
3r   re  )#
__future__r   r   r   r   rc   r'   rb  r   pathlibr   unittestr   r   jaracor   
setuptoolsr   setuptools.command.egg_infor   r	   r
   setuptools.distr   r   r   r   textwrapr   r   r   fixturer1   r4   re  r   r   r   <module>rz     s   " " " " " " 



  				 				  



                           O O O O O O O O O O ( ( ( ( ( ( # # # # # # # #      	 	 	 	 	# 	 	 	   (Q7 Q7 Q7 Q7 Q7 Q7 Q7 Q7h&3 3 3 3 3 3 3 3 3 3r   