
    vKg                       S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	J
r
  S SKJr  S SKrS SKJr  S SKJr  S SKJrJrJr  S SKJr  S	S
KJrJr  S	SKJr   " S S\5      r\R>                  S 5       r  " S S5      r! " S S5      r"g)    )annotationsN)Path)mock)path)errors)egg_infomanifest_makerwrite_entries)Distribution   )contextsenvironment)DALSc                      \ rS rSrSrg)Environment    N)__name__
__module____qualname____firstlineno____static_attributes__r       ^/var/www/highfloat_scraper/venv/lib/python3.13/site-packages/setuptools/tests/test_egg_info.pyr   r      s    r   r   c            	   #    ^#    [         R                  " SS9 m[        T5      n [        R                  " T[
        R                  5        Sn[        U4S jU 5       5      U l        [        [        [        R                  U R                  R                  5       5      5        [        R                  " U R                  S   S[        SU R                  -  5      005        U v   S S S 5        g ! , (       d  f       g = f7f)Nzsetuptools-test.)prefix)homelibscriptsdatazegg-basec              3  d   >#    U H&  o[         R                  R                  TU5      4v   M(     g 7f)N)osr   join).0dirnameenv_dirs     r   	<genexpr>env.<locals>.<genexpr>"   s%     WRVw277<<#ABRVs   -0r   z.pydistutils.cfgzT
                [egg_info]
                egg-base = %(egg-base)s
                )r   tempdirr   r"   chmodstatS_IRWXUdictpathslistmapmkdirvaluesr   buildr   )envsubsr&   s     @r   r4   r4      s     			!3	4'"
$,,';WRVWW	S399++-./

IIf"D ii	 % 

 
	 	# 
5	4	4s   C;C	C*!	C;*
C84C;c                  h   \ rS rSr\" S5      rS r\SzS j5       rS r	\S 5       r
S rS rS	 rS
 rS rS rS{S jrSR%                  \R(                  R*                  S9rSR%                  \R(                  R*                  S9rSr " S S5      r\R5                  SSSSSSSSSSS\\\S 9S! 5       rS" rS# rS$ rS% rS& r \!RD                  R5                  S'\" S(5      S)S*.S+4\" S,5      S)S*.S4\" S-5      S)S*.S+4\" S(5      S.S)S/.S+4\!RF                  " \" S05      S)S*.S+S1S29/5      S3 5       r$\!RD                  R5                  S4\" S55      S6S7S8.S9S:// 4\" S;5      S6S7S8.S9S:// 4\" S<5      S6S7S8.S9/S:/4\" S=5      S6S7S8./ S9S:/4\" S>5      S6S7S8.S:/S9/4\" S?5      S)S@.S9/SA/4\" S-5      S)S*.SB// 4\" SC5      S.S)S/.SB// 4\" S55      SDS6S7SE.S9S:// 4\!RF                  " SFS6SGSHSIS7SJSKSL./ SMQSN/SOS29\!RF                  " \" SP5      S6SQSR.S9/SS/STS29\!RF                  " \" SU5      S6S@.S9// SVS29/5      SW 5       r%\!RD                  R5                  S4\" SX5      S6S7S8./ S9S:/4\" SY5      S6S7S8./ S9S:/4\" SZ5      S6S[S7S\./ S]Q/ 4\" S^5      S6S[S7S\./ S]Q/ 4\" S_5      S6S[S7S\.S9S:/S`/4\" SZ5      S)Sa.S`/S9S:/4\" Sb5      ScS6S[S7Sd./ S]Q/ 4\!RF                  " \" Se5      S6SQSR.S9/SS/STS29\!RF                  " \" Sf5      S6SHSISg.S9Sh/Si/SjS29/	5      Sk 5       r&Sl r'Sm r(Sn r)So r*Sp r+Sq r,Sr r-Ss r.St r/Su r0S|Sw jr1Sx r2Syr3gv)}TestEggInfo2   z
        from setuptools import setup

        setup(
            name='foo',
            py_modules=['hello'],
            entry_points={'console_scripts': ['hi = hello.run']},
            zip_safe=False,
        )
        c                \    [         R                  " U R                  [        S5      S.5        g )NzO
                def run():
                    print('hello')
                )setup.pyzhello.py)r   r3   setup_scriptr   )selfs    r   _create_projectTestEggInfo._create_project@   s)    

))
 	r   c                ~    U S   R                  S5      S   n[        [        UR                  S5      S S 5      u  p#X#4$ )Nr    r   .   )splitr0   int)pkg_info_linesversion_strmajorminors       r   _extract_mv_versionTestEggInfo._extract_mv_versionK   sD    $Q'--c2153 1 1# 6r :;|r   c                   [         R                  R                  UR                  S   S5      n[	        5       n[        U5      nUR                  5         UR                  U5        [        USSS9 nUR                  5       nSSS5        SW;   d   eSU;   d   eS	U;   d   eS
nU R                  Xx5        g! , (       d  f       N:= f)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	r<   
tmpdir_cwdr4   	setup_cfgdisteifcontentexpected_orders	            r   +test_egg_info_save_version_info_setup_empty7TestEggInfo.test_egg_info_save_version_info_setup_emptyQ   s     GGLL6!2K@	~d^

Y')S73qffhG 4 w&&&'''(((

 	$$W= 43s   /B44
Cc                    SR                  U5      n[        R                  [        R                  -  n[        R                  " X U5      (       d   eg)zA
Assert that the strings in expected appear in content
in order.
z.*N)r#   re	MULTILINEDOTALLsearch)rb   expectedpatternflagss       r   r[   #TestEggInfo._validate_content_orderk   s;     ))H%ryy(yy51111r   c                   [         R                  R                  UR                  S   S5      n[        R                  " U[        S5      05        [        5       n[        U5      nUR                  5         UR                  U5        [        USSS9 nUR                  5       nSSS5        SW;   d   eS	U;   d   eS
U;   d   eSnU R                  Xx5        g! , (       d  f       N:= f)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   rL   zU
            [egg_info]
            tag_build =
            tag_date = 0
            rM   rN   rO   NrQ   rR   rS   rT   )r"   r   r#   r.   r3   r   r   r   rW   rX   rY   rZ   r[   r\   s	            r   .test_egg_info_save_version_info_setup_defaults:TestEggInfo.test_egg_info_save_version_info_setup_defaultsu   s     GGLL6!2K@	

t
 	 ~d^

Y')S73qffhG 4 w&&&'''(((

 	$$W= 43s   C
C#c                    U R                  5         U R                  X5        [        R                  " S5      n/ SQn[	        U5      U:X  d   eg )Nfoo.egg-info)PKG-INFOSOURCES.txtzdependency_links.txtentry_points.txtznot-zip-safeztop_level.txt)r=   _run_egg_info_commandr"   listdirsorted)r<   r]   r4   actualrk   s        r   test_expected_files_produced(TestEggInfo.test_expected_files_produced   sE    "":3N+
 f~)))r   c                   [        5       n[        U5      n[        R                  " S[	        S5      S9n[        R                  " SS S9nU   U   SS KnSn[        R                  " UR                  R                  US9   UR                  5         S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)	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)	r<   r]   r4   r_   r`   utime_patchmkpath_patch	distutilsmsgs	            r   test_handling_utime_error%TestEggInfo.test_handling_utime_error   s    ~d^jjIzz9d
 ,#ACy//BB#N O	 '[[ ON	 ',[[s<   C
0B9>B(B9C
(
B62B99
C	C


Cc                *   [        S5      n[        S5      n[        R                  " UUS.5        [        R                  " [
        5       nU R                  X5        S S S 5        SWR                  R                  S   ;   d   eg ! , (       d  f       N.= f)Nzp
            [metadata]
            name=foo
            version=0.0.1
            license=file:MIT
            zK
            from setuptools import setup

            setup()
            r:   rL   
ValueErrorr   )	r   r   r3   r   r   AssertionErrorrw   valueargs)r<   r]   r4   setup_configr;   excs         r   test_license_is_a_string$TestEggInfo.test_license_is_a_string   s    
 
 	

$%
 	 ]]>*c&&z7 +
 syy~~a0000 +*s   
B
Bc                   U R                  5         U R                  X5        [        R                  R	                  S5      n[
        R                  " S5        U R                  X5        [        R                  R	                  S5      nX4:w  d   eg)z9Ensure timestamps are updated when the command is re-run.rs   gMbP?N)r=   rw   r"   r   getmtimetimesleep)r<   r]   r4   timestamp_atimestamp_bs        r   test_rebuiltTestEggInfo.test_rebuilt   sl    "":3gg&&~6 	

5"":3gg&&~6)))r   c                   U R                  5         [        R                  " [        S5      SS0S.5        U R	                  X5        [
        R                  R                  SS5      n[
        R                  R                  US5      n[        USS	9 nS
UR                  5       R                  S5      ;   d   e S S S 5        g ! , (       d  f       g = f)Nz:
                recursive-include docs *.rst
            z	usage.rstzRun 'hi')MANIFEST.indocsrA   rs   ru   rN   rO   zdocs/usage.rst

r=   r   r3   r   rw   r"   r#   rY   rZ   rC   )r<   r]   r4   egg_info_dirsources_txtra   s         r   test_manifest_template_is_read*TestEggInfo.test_manifest_template_is_read   s    

 Z	
 		 	"":3ww||C8ggll<?+0A#qvvx~~d';;;; 100s   &C  
CFc                z    [        S5      U(       a  SOU-  nU(       a  UOSn[        R                  " UUS.5        g )Nzi
            from setuptools import setup

            setup(name='foo', zip_safe=False, %s)
             r   )r   r   r3   )r<   requiresuse_setup_cfgr;   r   s        r   _setup_script_with_requires'TestEggInfo._setup_script_with_requires   sA    
 !Rh0 $1xb

$%
 	r   zpython_version<'{this_ver}')this_verzpython_version < "{this_ver}"z<=>++c                  $    \ rS rSr\S 5       rSrg)TestEggInfo.RequiresTestHelperi  c                    / n/ nU  GHE  nUR                  5       R                  SS5      nUR                  S5      R                  S5      n[        U5      S:  a*  US   R	                  5       n[
        R                  " U5      nO0 nUS   R	                  5       n	U V
s/ sH  n
[        U
5      R                  " S	0 UD6PM      sn
u  pnXS4U	S-   US44 Hu  u  pnUR                  U5        S	nUR                  S
5      (       a  USS  n[        R                  R                  nUR                  [        R                  " UUUUUS95        Mw     GMH     [        R                  R                  SUUS9$ s  sn
f )Nz

   r   r   r   F_in_setup_cfgTr   z@xfail
   )marksz;requires,use_setup_cfg,expected_requires,install_cmd_kwargs)ids)lstriprC   poplenstripastliteral_evalr   formatappend
startswithr   markxfailparamparametrize)	test_listformat_dictidlist	argvaluestesttest_paramsname_kwargsvalinstall_cmd_kwargsnameasetup_py_requiressetup_cfg_requiresexpected_requiresid_r   use_cfgr   s                     r   r   *TestEggInfo.RequiresTestHelper.parametrize  s   FI!"kkm11&!<)ooa066t<{#a'%a...0C),)9)9#)>&)+&"1~++-;FL;FaDGNN1[1;LH!7H e4O+-?F/*C7 MM#&E**:66#+AB< & 1 1$$$#-."'/ "< ;;**M +  +Ls   $E0r   N)r   r   r   r   staticmethodr   r   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                <   U R                  X45        U R                  " X40 UD6  [        R                  R	                  SS5      n[        R                  R	                  US5      n[        R                  R                  U5      (       a$  [        USS9 n	U	R                  5       n
S S S 5        OSn
W
R                  5       U:X  d   e[        R                  " [        R                  R	                  UR                  S   S5      5      / :X  d   eg ! , (       d  f       Nl= f)	NrA   rs   zrequires.txtrN   rO   r   r   barbazquux*)r   rw   r"   r   r#   existsrY   rZ   r   globr.   )r<   r]   r4   r   r   r   r   r   requires_txtfpinstall_requiress              r   test_requiresTestEggInfo.test_requires9  s    | 	((A"":I6HIww||C8ww||L.A77>>,''lW5#%779  65  "&&(,====yycii&6FG2MMM 65s   D
Dc                    SnU R                  U5        [        R                  " [        5         U R	                  X5        SSS5        g! , (       d  f       g= f)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   rw   )r<   r]   r4   reqs       r   *test_install_requires_unordered_disallowed6TestEggInfo.test_install_requires_unordered_disallowed  s>     A((-]]>*&&z7 +**s   A		
Ac                t   SnUR                  U R                  S9nU R                  U5        [        R                  " [
        5         U R                  X5        S S S 5        [        R                  " [        R                  R                  UR                  S   S5      5      / :X  d   eg ! , (       d  f       NV= f)Nz/extras_require={{":{marker}": ["barbazquux"]}},markerr   r   r   r   r   r   r   r   rw   r   r"   r   r#   r.   r<   r]   r4   tmplr   s        r   'test_extras_require_with_invalid_marker3TestEggInfo.test_extras_require_with_invalid_marker  s    @kk!4!4k5((-]]>*&&z7 +yycii&6FG2MMM +*   B))
B7c                t   SnUR                  U R                  S9nU R                  U5        [        R                  " [
        5         U R                  X5        S S S 5        [        R                  " [        R                  R                  UR                  S   S5      5      / :X  d   eg ! , (       d  f       NV= f)Nz5extras_require={{"extra": ["barbazquux; {marker}"]}},r   r   r   r   r   s        r   .test_extras_require_with_invalid_marker_in_req:TestEggInfo.test_extras_require_with_invalid_marker_in_req  s    Fkk!4!4k5((-]]>*&&z7 +yycii&6FG2MMM +*r   c           	     R   U R                  S5        [        R                  R                  5       R	                  UR
                  S   S9n[        R                  " S/[        R                  R                  UR
                  S   [        U5      /5      SUS9  [        R                  R                  SS	5      n[        [        R                  R                  US
5      SS9 nUR                  5       R                  S5      nS S S 5        SW;   d   eSU;   d   eg ! , (       d  f       N= f)Nz*extras_require={"foobar": ["barbazquux"]},r   HOMEr   r   r   cmdpypathdata_streamr4   rA   rs   rt   rN   rO   r   zProvides-Extra: foobarMetadata-Version: 2.1r   r"   environcopyupdater.   r   run_setup_pypathsepr#   strr   rY   rZ   rC   r<   r]   r4   r   r   r   rE   s          r   test_provides_extraTestEggInfo.test_provides_extra  s    (()UV**//#**6" + 
 	  ::??CIIe$4c*o#FG		
 ww||C8"'',,|Z87KrWWY__T2N L'>999&.888 LKs    D
D&c           	     $   U R                  S5        [        R                  R                  5       R	                  UR
                  S   S9n[        R                  " S/[        R                  R                  UR
                  S   [        U5      /5      SUS9  [        R                  R                  SS	5      n[        [        R                  R                  US
5      SS9 nUR                  5       nS S S 5        SW;  d   eg ! , (       d  f       N= f)Nz0install_requires=["spam ; python_version<'3.6'"]r   r   r   r   r   r   rA   rs   rt   rN   rO   zProvides-Extra:)r   r"   r   r   r  r.   r   r  r  r#   r  r   rY   rZ   )r<   r]   r4   r   r   r   pkg_info_texts          r   test_doesnt_provides_extra&TestEggInfo.test_doesnt_provides_extra  s    ((B	
 **//#**6" + 
 	  ::??CIIe$4c*o#FG		
 ww||C8"'',,|Z87KrGGIM L 555 LKs   D
D)fileslicense_in_sourcesz}
                              [metadata]
                              license_file = LICENSE
                              zTest license)rL   LICENSETz
                              [metadata]
                              license_file = INVALID_LICENSE
                              z
                              zexclude LICENSE)rL   r   r  z
                              [metadata]
                              license_file = LICEN[CS]E*
                              glob_pattern)idc           	        U R                  5         [        R                  " U5        [        R                  " S/[
        R                  R                  UR                  S   [        U5      /5      S9  [
        R                  R                  SS5      n[        US5      R                  SS9nU(       a	  S	U;   d   eg S	U;  d   eS
U;  d   eg )Nr   r   r   r   rA   rs   ru   rN   rO   r  INVALID_LICENSE)r=   r   r3   r   r  r"   r  r#   r.   r  r   	read_text)r<   r]   r4   r  r  r   sources_texts          r   test_setup_cfg_license_file'TestEggInfo.test_setup_cfg_license_file!  s    D 	

5  ::??CIIe$4c*o#FG	
 ww||C8L-8BBGBT,,,L000$L888r   )r  incl_licensesexcl_licensesz
                              [metadata]
                              license_files =
                                  LICENSE-ABC
                                  LICENSE-XYZ
                              ABC licenseXYZ license)rL   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
                              )rL   r  r  r  z~
                              [metadata]
                              license_files = LICENSE
                              zexclude LICENSE-XYZ)rL   r   r  r  r   zABC copyingz
ABC noticezABC authorsLicensezInvalid license)rL   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)rL   r  
NOTICE-XYZr%  no_default_glob_patternsz
                              [metadata]
                              license_files =
                                  LICENSE-ABC
                                  LICENSE*
                              files_only_added_oncec           	     :   U R                  5         [        R                  " U5        [        R                  " S/[
        R                  R                  UR                  S   [        U5      /5      S9  [
        R                  R                  SS5      n[        US5      R                  SS9nUR                  5        Vs/ sH  oR                  5       PM     n	nU H  n
U	R                  U
5      S	:X  a  M   e   U H  n
U	R                  U
5      S
:X  a  M   e   g s  snf Nr   r   r  rA   rs   ru   rN   rO   r   r   r=   r   r3   r   r  r"   r  r#   r.   r  r   r  
splitlinesr   countr<   r]   r4   r  r  r  r   r  linesources_lineslfs              r   test_setup_cfg_license_files(TestEggInfo.test_setup_cfg_license_filesu  s    D 	

5  ::??CIIe$4c*o#FG	
 ww||C8L-8BBGBT2>2I2I2KL2K$2KLB &&r*a///    B &&r*a///   M   =D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)rL   r  LICENSE-PQRr  )r  r4  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
                              r4  )rL   r4  a  
                              [metadata]
                              license_file = LICENSE-ABC
                              license_files =
                                LICENSE-PQR
                                LICENSE-XYZ
                              z'exclude LICENSE-ABC
exclude LICENSE-PQR)rL   r   r  r4  r  z~
                              [metadata]
                              license_file = LICENSE*
                              z
                              [metadata]
                              license_file = LICENSE*
                              license_files =
                                NOTICE*
                              )rL   r  r   r!  r   r!  combined_glob_patterrnsc           	     :   U R                  5         [        R                  " U5        [        R                  " S/[
        R                  R                  UR                  S   [        U5      /5      S9  [
        R                  R                  SS5      n[        US5      R                  SS9nUR                  5        Vs/ sH  oR                  5       PM     n	nU H  n
U	R                  U
5      S	:X  a  M   e   U H  n
U	R                  U
5      S
:X  a  M   e   g s  snf r)  r*  r-  s              r   )test_setup_cfg_license_file_license_files5TestEggInfo.test_setup_cfg_license_file_license_filesI  s    L 	

5  ::??CIIe$4c*o#FG	
 ww||C8L-8BBGBT2>2I2I2KL2K$2KLB &&r*a///    B &&r*a///   Mr3  c           	        U R                  5         [        R                  " [        S5      SSSSS.5        [        R
                  " S/[        R                  R                  UR                  S   [        U5      /5      S	9  [        R                  R                  S
S5      n[        [        R                  R                  US5      SS9 nUR                  5       R                  S5      nSSS5        W Vs/ sH  ofR                  S5      (       d  M  UPM     nnSUS   :X  d   eSUSS ;   d   eSUSS ;   d   eg! , (       d  f       NX= fs  snf )zCAll matched license files should have a corresponding License-File.z
                              [metadata]
                              license_files =
                                  NOTICE*
                                  LICENSE*
                              r  r  includedznot include)rL   r  r  NOTICEIGNOREr   r   r  rA   rs   rt   rN   rO   r   NzLicense-File:zLicense-File: NOTICEr   zLicense-File: LICENSE-ABCr   zLicense-File: LICENSE-XYZ)r=   r   r3   r   r   r  r"   r  r#   r.   r  rY   rZ   rC   r   )r<   r]   r4   r   r   rE   r.  license_file_liness           r   test_license_file_attr_pkg_info+TestEggInfo.test_license_file_attr_pkg_info  s3   

" )( #
 	 	  ::??CIIe$4c*o#FG	
 ww||C8"'',,|Z87KrWWY__T2N L ,
+T/OD^ 	 
 &);A)>>>>*.@.DDDD*.@.DDDD LK
s   	 D;5EE;
E	c           	        U R                  S5        [        R                  " S/[        R                  R                  UR                  S   [        U5      /5      SS9  [        R                  R                  SS5      n[        [        R                  R                  US5      S	S
9 nUR                  5       R                  S5      nSSS5        U R                  W5      S:X  d   eg! , (       d  f       N&= f)z5Make sure latest metadata version is used by default.r   r   r   r   r   r   r   rA   rs   rt   rN   rO   r   N)rB   r   )r   r   r  r"   r  r#   r.   r  r   rY   rZ   rC   rI   r<   r]   r4   r   r   rE   s         r   test_metadata_version!TestEggInfo.test_metadata_version$  s    ((,  ::??CIIe$4c*o#FG	

 ww||C8"'',,|Z87KrWWY__T2N L ''76AAA LKs   & C&&
C4c           	     V   U R                  S5        [        R                  R                  5       R	                  UR
                  S   S9n[        R                  " S/[        R                  R                  UR
                  S   [        U5      /5      SUS9  [        R                  R                  SS	5      n[        [        R                  R                  US
5      SS9 nUR                  5       R                  S5      nS S S 5        SnUW;   d   eSU;   d   eg ! , (       d  f       N!= f)Nz.long_description_content_type='text/markdown',r   r   r   r   r   r   rA   rs   rt   rN   rO   r   z'Description-Content-Type: text/markdownr   r   r<   r]   r4   r   r   r   rE   expected_lines           r   "test_long_description_content_type.TestEggInfo.test_long_description_content_type2  s     	((@	
 **//#**6" + 
 	  ::??CIIe$4c*o#FG		
 ww||C8"'',,|Z87KrWWY__T2N LA...&.888	 LKs    D
D(c           	     ,   U R                  S5        [        R                  " S/[        R                  R                  UR                  S   [        U5      /5      SS9  [        R                  R                  SS5      n[        [        R                  R                  US5      S	S
9 nUR                  5       R                  S5      nS S S 5        SW;   d   eSUS   :X  d   eXUR                  S5      S  nSU;   d   eSU;   d   eg ! , (       d  f       NE= f)Nzqlong_description='This is a long description\nover multiple lines',long_description_content_type='text/markdown',r   r   r   rA  rA   rs   rt   rN   rO   r   r   r   zThis is a long descriptionzover multiple lines)r   r   r  r"   r  r#   r.   r  r   rY   rZ   rC   index)r<   r]   r4   r   r   rE   long_desc_liness          r   test_long_description!TestEggInfo.test_long_descriptionM  s    
 	((=	
 	  ::??CIIe$4c*o#FG	

 ww||C8"'',,|Z87KrWWY__T2N L&.888^B''''()=)=b)A)CD+>>>$777 LKs   & D
Dc           	        U R                  S5        [        R                  R                  5       R	                  UR
                  S   S9n[        R                  " S/[        R                  R                  UR
                  S   [        U5      /5      SUS9  [        R                  R                  SS	5      n[        [        R                  R                  US
5      SS9 nUR                  5       R                  S5      nS S S 5        SnUW;   d   eSnXv;   d   eU R                  U5      S:  d   eg ! , (       d  f       N9= f)Nzproject_urls={
                'Link One': 'https://example.com/one/',
                'Link Two': 'https://example.com/two/',
                },r   r   r   r   r   r   rA   rs   rt   rN   rO   r   z/Project-URL: Link One, https://example.com/one/z/Project-URL: Link Two, https://example.com/two/r   rB   r   r"   r   r   r  r.   r   r  r  r#   r  r   rY   rZ   rC   rI   rF  s           r   test_project_urlsTestEggInfo.test_project_urlsd  s    	((	
 **//#**6" + 
 	  ::??CIIe$4c*o#FG		
 ww||C8"'',,|Z87KrWWY__T2N LI...I...''76AAA LKs    D22
E c           	        U R                  S5        [        R                  " S/[        R                  R                  UR                  S   [        U5      /5      SS9  [        R                  R                  SS5      n[        [        R                  R                  US5      S	S
9 nUR                  5       R                  S5      nSSS5        SW;   d   eg! , (       d  f       N= f)zTest single line license.zlicense='MIT',r   r   r   rA  rA   rs   rt   rN   rO   r   NzLicense: MITr   r   r  r"   r  r#   r.   r  r   rY   rZ   rC   rB  s         r   test_licenseTestEggInfo.test_license  s    (()9:  ::??CIIe$4c*o#FG	

 ww||C8"'',,|Z87KrWWY__T2N L/// LKs   & C
C%c           	        U R                  S5        [        R                  " S/[        R                  R                  UR                  S   [        U5      /5      SS9  [        R                  R                  SS5      n[        [        R                  R                  US5      S	S
9 nUR                  5       R                  S5      nSSS5        SW;   d   eSU;   d   eSSR                  U5      ;   d   eg! , (       d  f       N6= f)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   rA  rA   rs   rt   rN   rO   r   Nz%License: This is a long license text z        over multiple linesztext 
        over multiplerV  rB  s         r   test_license_escapeTestEggInfo.test_license_escape  s    ((K	
 	  ::??CIIe$4c*o#FG	

 ww||C8"'',,|Z87KrWWY__T2N L 7.HHH,>>>->1JJJJ LKs   & C66
Dc           	     p   U R                  S5        [        R                  R                  5       R	                  UR
                  S   S9n[        R                  " S/[        R                  R                  UR
                  S   [        U5      /5      SUS9  [        R                  R                  SS	5      n[        [        R                  R                  US
5      SS9 nUR                  5       R                  S5      nS S S 5        SW;   d   eU R                  U5      S:  d   eg ! , (       d  f       N.= f)Nzpython_requires='>=2.7.12',r   r   r   r   r   r   rA   rs   rt   rN   rO   r   zRequires-Python: >=2.7.12rQ  rR  r  s          r   test_python_requires_egg_info)TestEggInfo.test_python_requires_egg_info  s    (()JK**//#**6" + 
 	  ::??CIIe$4c*o#FG		
 ww||C8"'',,|Z87KrWWY__T2N L*n<<<''76AAA LKs    D''
D5c                X    SS/nU H   n[         R                  " U5      (       a  M    e   g )Nz:standard file not found: should have one of foo.py, bar.pyz"standard file 'setup.py' not found)r	   _should_suppress_warning)r<   fixturesr   s      r   'test_manifest_maker_warning_suppression3TestEggInfo.test_manifest_maker_warning_suppression  s2    H0

 C!::3???? r   c                   U R                  5         [        SSS.5      nSUl        [        U5      nUR	                  5         UR                  5         SUR                  R                  ;   d   e[        UR                  S-   SS9 nUR                  5       R                  S	5      nSU;   d   e S S S 5        g ! , (       d  f       g = f)
Nfoo0.0.1r   versionznon_setup.pyr:   z/SOURCES.txtrN   rO   r   )r=   r   script_namer   finalize_optionsr   filelistr  rY   rZ   rC   )r<   r]   r_   egg_info_instancera   sourcess         r   test_egg_info_includes_setup_py+TestEggInfo.test_egg_info_includes_setup_py  s    Uw?@)$TN**,.77=====#,,~=PTUffhnnT*G((( QPPs   (B66
CNc           	     V   [         R                  R                  5       R                  UR                  S   S9nUc  S/n[
        R                  " U[         R                  R                  UR                  S   [        U5      /5      SUS9u  pgU(       a   U5       eU(       a  XG;   d   eg g )Nr   r   r   r   r   r   )
r"   r   r   r  r.   r   r  r  r#   r  )r<   r]   r4   r   outputr   coder    s           r   rw   !TestEggInfo._run_egg_info_command  s    **//#**6" + 
 ;C !--::??CIIe$4c*o#FG	

 x>!> r   c                   U R                  5         [        R                  " S[        S5      05        U R	                  X5        [
        R                  R                  SS5      n[        [
        R                  R                  US5      SS9 nUR                  5       R                  S5      nS S S 5        S	W;   d   eg ! , (       d  f       N= f)
NrL   z
                              [egg_info]
                              tag_build = dev
                              tag_date = 0
                              tag_svn_revision = 0
                              rA   rs   rt   rN   rO   r   zVersion: 0.0.0.dev0r   rB  s         r   test_egg_info_tag_only_once'TestEggInfo.test_egg_info_tag_only_once  s    

"	
 		 	"":3ww||C8"'',,|Z87KrWWY__T2N L$666 LKs    B<<
C
r   )rE   z	list[str]returnztuple[int, int])F)NN)4r   r   r   r   r   r;   r=   r   rI   rd   r[   rp   r{   r   r   r   r   r   r   sysversion_inforG   r   r   r   r   r   r   r   r   r   r  r
  r   r   r   r  r1  r7  r>  rC  rH  rN  rS  rW  rZ  r]  rb  rn  rw   ru  r   r   r   r   r7   r7   2   s   		L	  
>4 2 2!>F* 1B*<$ 4::!!'' ; O !@ F F!!'' !G ! N' 'R ##	
												 &'";g $ TjNkTjN*	8NN9"6$ [[' "&""  .  "&""  .  "&""  . 	 "&"" $5-	  LL!%""  . !a=	
@B9C@B9& [[3 "&"" $1#0 .$ "&"" $1#0	 .  "&"" $1#0
 " "&"" $1#0	 .  "&"" $1#0	   "&"" $2
 "#" "&""  . 
 "&"" $5-	   "&"" $9#0#0 .!$ LL!##0#0".#0#0('8	 ##*+. LL!%"" $1".
 -  LL!%"" $1
 *W{	
~~0~~0* [[3 "&"" $1#0
 ." "&"" $1#0 .& "&"" $1#0#0 >!( "&"	" $1#0#0  >%, "&"" $1#0#0 .!( "&"" $2 .& "&"" $N#0#0#0  >%( LL!%"" $1".	 - LL!%"" $1".#0 -,![_	
bF0GbF0*!EFB968.B@0K$B"@)"&7r   r7   c                       \ rS rSrS rS rSrg)TestWriteEntriesi  c                ,   [        SSS.5      nSS0Ul        UR                  S5      nSn[        R                  " [
        R                  US9 n[        USS	5        S
UR                  R                  S   ;   d   e S S S 5        g ! , (       d  f       g = f)Nre  rf  rg  zfoo = invalid-identifier:foor   z(Problems to parse .*invalid-identifier.*r   entry_pointsrv   z#ensure entry-point follows the specr   )
r   r}  get_command_objr   r   r   OptionErrorr
   r   r   )r<   r]   r4   r_   r   expected_msgexs          r   test_invalid_entry_point)TestWriteEntries.test_invalid_entry_point  s    Uw?@"$BC"":.B]]6--\Bb#~/AB8BHHMM!<LLLL CBBs   -B
Bc                    [        SSS.5      nSS/S.Ul        UR                  S5      n[        USS	5        [	        S	5      R                  S
S9nSU;   d   eSU;   d   eg )Nre  rf  rg  zfoo = bar:bazzfaa = bor:boz)abcdefr   r}  rv   rN   rO   z[abc]
foo = bar:baz
z[def]
faa = bor:boz
)r   r}  r~  r
   r   r  )r<   r]   r4   r_   r   rb   s         r   test_valid_entry_point'TestWriteEntries.test_valid_entry_point  sx    Uw?@"#$
 "":.c>+=>)*44g4F'7222'7222r   r   N)r   r   r   r   r  r  r   r   r   r   r{  r{    s    M
3r   r{  )#
__future__r   r   r   r"   rg   r+   rx  r   pathlibr   unittestr   r   jaracor   
setuptoolsr   setuptools.command.egg_infor   r	   r
   setuptools.distr   r   r   r   textwrapr   r  r   fixturer4   r7   r{  r   r   r   <module>r     sv    " 
  	 	  
       O O ( # 	# 	  *|7 |7~%3 3r   