
    7f                    6   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 d	dl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   )environment)DALS)contextsc                      e Zd ZdS )EnvironmentN)__name__
__module____qualname__     \/home/feoh/.local/pipx/shared/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        z            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.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   r0   r0   !   sC     		!3	4	4	4 '""
$,''';WWWWRVWWWWW	S39++--..///
If"D i	 % % 

 
	 
	 
	 			#                 s   CC11C58C5c                  .   e Zd Z ed          Zd Zed}d            Zd Zed	             Z	d
 Z
d Zd Zd Zd Zd Zd~dZd                    ej        d                   Zd                    ej        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.d/f ed0          d-d.df ed1          d-d.d/f ed,          d2d-d3d/f ej!         ed4          d-d.d/d56          g          d7             Z"ej                             d8 ed9          d:d;d<d=d>gg f ed?          d:d;d<d=d>gg f ed@          d:d;d<d=gd>gf edA          d:d;d<g d=d>gf edB          d:d;d<d>gd=gf edC          d-dDd=gdEgf ed1          d-d.dFgg f edG          d2d-d3dFgg f ed9          dHd:d;dId=d>gg f ej!        dJd:dKdLdMd;dNdOdPg dQdRgdS6           ej!         edT          d:dUdVd=gdWgdX6           ej!         edY          d:dDd=gg dZ6          g          d[             Z#ej                             d8 ed\          d:d;d<g d=d>gf ed]          d:d;d<g d=d>gf ed^          d:d_d;d`g dag f edb          d:d_d;d`g dag f edc          d:d_d;d`d=d>gddgf ed^          d-deddgd=d>gf edf          dgd:d_d;dhg dag f ej!         edi          d:dUdVd=gdWgdX6           ej!         edj          d:dLdMdkd=dlgdmgdn6          g	          do             Z$dp Z%dq Z&dr Z'ds Z(dt Z)du Z*dv Z+dw Z,dx Z-dy Z.dd{Z/d| Z0dzS )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_projectE   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)r9   version_strmajorminors       r   _extract_mv_versionzTestEggInfo._extract_mv_versionP   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	r7   
tmpdir_cwdr0   	setup_cfgdisteifcontentexpected_orders	            r   +test_egg_info_save_version_info_setup_emptyz7TestEggInfo.test_egg_info_save_version_info_setup_emptyV   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   rW   z#TestEggInfo._validate_content_orderp   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   rH   zU
            [egg_info]
            tag_build =
            tag_date = 0
            rI   rJ   rK   NrM   rN   rO   rP   )r   r   r    r*   r/   r   r   r   rS   rT   rU   rV   rW   rX   s	            r   .test_egg_info_save_version_info_setup_defaultsz:TestEggInfo.test_egg_info_save_version_info_setup_defaultsz   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)r8   _run_egg_info_commandr   listdirsorted)r7   rY   r0   actualrf   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)	r7   rY   r0   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()
            r5   rH   
ValueErrorr   )	r   r   r/   r~   r   AssertionErrorrp   valueargs)r7   rY   r0   setup_configr6   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.rl   gMbP?N)r8   rp   r   r   getmtimetimesleep)r7   rY   r0   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?   rl   rn   rJ   rK   zdocs/usage.rst

r8   r   r/   r   rp   r   r    rU   rV   rA   )r7   rY   r0   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/   )r7   requiresuse_setup_cfgr6   r   s        r   _setup_script_with_requiresz'TestEggInfo._setup_script_with_requires   sg    
 
 !.RRh0 $18xxb
$%
 
 	 	 	 	 	r   zpython_version<'{this_ver}'r   )this_verzpython_version < "{this_ver}"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              3  L   K   | ]} t          |          j        di V  d S )Nr   )r   format)r!   aformat_dicts     r   r$   z=TestEggInfo.RequiresTestHelper.parametrize.<locals>.<genexpr>#  sT       L L67NDGGN11[11L L L L L Lr   F_in_setup_cfgTr   z@xfail
   )marksz;requires,use_setup_cfg,expected_requires,install_cmd_kwargs)ids)lstriprA   poplenstripastliteral_evalappend
startswithr~   markxfailparamparametrize)	test_listr   idlist	argvaluestesttest_paramsname_kwargsvalinstall_cmd_kwargsnamesetup_py_requiressetup_cfg_requiresexpected_requires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$$$#-."'     $ ;**M +   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?   rl   zrequires.txtrJ   rK   r   r   barbazquux*)r   rp   r   r   r    existsrU   rV   r   globr*   )r7   rY   r0   r   r   r   r   r   requires_txtfpinstall_requiress              r   test_requireszTestEggInfo.test_requires>  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   rp   )r7   rY   r0   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   r   r   r   r~   r   r   rp   r   r   r   r    r*   r7   rY   r0   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_streamr0   r?   rl   rm   rJ   rK   r   zProvides-Extra: foobarMetadata-Version: 2.1r   r   environcopyupdater*   r   run_setup_pypathsepr    strr   rU   rV   rA   	r7   rY   r0   r   coder   r   r   r9   s	            r   test_provides_extrazTestEggInfo.test_provides_extra  s_   (()UVVV*//##**6" + 
 
 !-:??CIe$4c*oo#FGG	
 
 

d 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   5(D))D-0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?   rl   rm   rJ   rK   zProvides-Extra:)r   r   r   r   r   r*   r   r   r   r    r   r   rU   rV   )r7   rY   r0   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zfiles, license_in_sourcesz}
                              [metadata]
                              license_file = LICENSE
                              zTest license)rH   LICENSETz
                              [metadata]
                              license_file = INVALID_LICENSE
                              z
                              zexclude LICENSE)rH   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?   rl   rn   rJ   rK   r   INVALID_LICENSE)r8   r   r/   r   r   r   r   r    r*   r   r   	read_text)r7   rY   r0   fileslicense_in_sourcesr   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   z#files, incl_licenses, excl_licensesz
                              [metadata]
                              license_files =
                                  LICENSE-ABC
                                  LICENSE-XYZ
                              ABC licenseXYZ license)rH   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
                              )rH   r  r   r   z~
                              [metadata]
                              license_files = LICENSE
                              zexclude LICENSE-XYZ)rH   r   r  r	  r   zABC copyingz
ABC noticezABC authorsLicensezInvalid license)rH   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)rH   r  
NOTICE-XYZr  no_default_glob_patternsz
                              [metadata]
                              license_files =
                                  LICENSE-ABC
                                  LICENSE*
                              files_only_added_oncec           	     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?   rl   rn   rJ   rK   c                6    g | ]}|                                 S r   r   r!   lines     r   
<listcomp>z<TestEggInfo.test_setup_cfg_license_files.<locals>.<listcomp>F       LLL$LLLr   r   r   r8   r   r/   r   r   r   r   r    r*   r   r   r  
splitlinescount
r7   rY   r0   r  incl_licensesexcl_licensesr   r  sources_lineslfs
             r   test_setup_cfg_license_filesz(TestEggInfo.test_setup_cfg_license_filesz  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)rH   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$  )rH   r$  a  
                              [metadata]
                              license_file = LICENSE-ABC
                              license_files =
                                LICENSE-PQR
                                LICENSE-XYZ
                              z'exclude LICENSE-ABC
exclude LICENSE-PQR)rH   r   r  r$  r	  z~
                              [metadata]
                              license_file = LICENSE*
                              z
                              [metadata]
                              license_file = LICENSE*
                              license_files =
                                NOTICE*
                              )rH   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?   rl   rn   rJ   rK   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_filesN  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           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             }d|d         k    sJ d|dd         v sJ d|dd         v sJ dS )zCAll matched license files should have a corresponding License-File.z
                              [metadata]
                              license_files =
                                  NOTICE*
                                  LICENSE*
                              r  r  includedznot include)rH   r  r	  NOTICEIGNOREr   r   r   r?   rl   rm   rJ   rK   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-XYZ)r8   r   r/   r   r   r   r   r   r    r*   r   rU   rV   rA   )r7   rY   r0   r   r   r9   license_file_liness          r   test_license_file_attr_pkg_infoz+TestEggInfo.test_license_file_attr_pkg_info  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
 
+
 
 
 &);A)>>>>>*.@.DDDDD*.@.DDDDDDDs   (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?   rl   rm   rJ   rK   r   N)r@   r   )r   r   r   r   r   r    r*   r   r   rU   rV   rA   rF   r7   rY   r0   r   r   r   r   r9   s           r   test_metadata_versionz!TestEggInfo.test_metadata_version)  s(   ((,,, -:??CIe$4c*oo#FGG
 
 

d
 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   7(C++C/2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?   rl   rm   rJ   rK   r   z'Description-Content-Type: text/markdownr   r   
r7   rY   r0   r   r   r   r   r   r9   expected_lines
             r   "test_long_description_content_typez.TestEggInfo.test_long_description_content_type7  sn    	((@	
 	
 	
 *//##**6" + 
 
 !-:??CIe$4c*oo#FGG	
 
 

d 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           	     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|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   r1  r?   rl   rm   rJ   rK   r   r   r   zThis is a long descriptionzover multiple lines)r   r   r   r   r   r    r*   r   r   rU   rV   rA   index)	r7   rY   r0   r   r   r   r   r9   long_desc_liness	            r   test_long_descriptionz!TestEggInfo.test_long_descriptionR  s{   
 	((=	
 	
 	
 !-:??CIe$4c*oo#FGG
 
 

d
 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7r4  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?   rl   rm   rJ   rK   r   z/Project-URL: Link One, https://example.com/one/z/Project-URL: Link Two, https://example.com/two/r   r@   r   r   r   r   r   r*   r   r   r   r    r   r   rU   rV   rA   rF   r6  s
             r   test_project_urlszTestEggInfo.test_project_urlsi  s    	((	
 	
 	
 *//##**6" + 
 
 !-:??CIe$4c*oo#FGG	
 
 

d 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   r1  r?   rl   rm   rJ   rK   r   NzLicense: MITr   r   r   r   r   r    r*   r   r   rU   rV   rA   r2  s           r   test_licensezTestEggInfo.test_license  s   (()9::: -:??CIe$4c*oo#FGG
 
 

d
 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//////r4  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|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   r1  r?   rl   rm   rJ   rK   r   Nz%License: This is a long license text z        over multiple linesztext 
        over multiplerC  r2  s           r   test_license_escapezTestEggInfo.test_license_escape  sQ   ((K	
 	
 	
 !-:??CIe$4c*oo#FGG
 
 

d
 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Jr4  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?   rl   rm   rJ   rK   r   zRequires-Python: >=2.7.12r?  r@  r   s	            r   test_python_requires_egg_infoz)TestEggInfo.test_python_requires_egg_info  sm   (()JKKK*//##**6" + 
 
 !-:??CIe$4c*oo#FGG	
 
 

d 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)r7   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.pyr5   z/SOURCES.txtrJ   rK   r   )r8   r   script_namer   finalize_optionsr   filelistr  rU   rV   rA   )r7   rY   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   )r7   rY   r0   r   outputr   r   r   s           r   rp   z!TestEggInfo._run_egg_info_command  s    *//##**6" + 
 
 ;C !-:??CIe$4c*oo#FGG	
 
 

d  	"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 )
NrH   z
                              [egg_info]
                              tag_build = dev
                              tag_date = 0
                              tag_svn_revision = 0
                              r?   rl   rm   rJ   rK   r   zVersion: 0.0.0.dev0r   )r7   rY   r0   r   r   r9   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)r9   r:   r;   r<   )F)NN)1r   r   r   r   r6   r8   r   rF   r`   rW   rj   rt   r   r   r   r   r   r   sysversion_infor   r   r   r   r   r   r   r   r   r   r   r~   r   r   r  r#  r(  r/  r3  r8  r=  rA  rD  rF  rH  rL  rW  rp   r[  r   r   r   r3   r3   7   s
       4		 L	 	 	    \
> > >4 2 2 \2!> !> !>F* * *   1 1 1B* * *< < <$    4::!!$ ;  O !@ F F!!$ !G ! ! N' ' ' ' ' ' ' 'R ##	
												 &'";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& [- "&"" " $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
 
 *  W{	
~ ~~0 0~ ~~0* [- "&"" " $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*!E !E !EF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   r3   c                      e Zd Zd Zd ZdS )TestWriteEntriesc                ,   t          ddd          }ddi|_        |                    d          }d}t          j        t
          j        |          5 }t          |dd	           d
|j        j	        d         v sJ 	 d d d            d S # 1 swxY w Y   d S )NrN  rO  rP  zfoo = invalid-identifier:foor   z(Problems to parse .*invalid-identifier.*ry   entry_pointsro   z#ensure entry-point follows the specr   )
r   ra  get_command_objr~   r   r   OptionErrorr
   r   r   )r7   rY   r0   r[   r   expected_msgexs          r   test_invalid_entry_pointz)TestWriteEntries.test_invalid_entry_point  s    Uw??@@"$BC"":..B]6-\BBB 	Mb#~/ABBB8BHM!<LLLLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	Ms   (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 )NrN  rO  rP  zfoo = bar:bazzfaa = bor:boz)abcdefr   ra  ro   rJ   rK   z[abc]
foo = bar:baz
z[def]
faa = bor:boz
)r   ra  rb  r
   r   r  )r7   rY   r0   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   rf  rj  r   r   r   r_  r_    s5        M M M
3 
3 
3 
3 
3r   r_  )#
__future__r   r\  r   r   r   rb   r'   r   pathlibr   unittestr   r~   jaracor   
setuptoolsr   setuptools.command.egg_infor   r	   r
   setuptools.distr   r   r   textwrapr   r   r   r   fixturer0   r3   r_  r   r   r   <module>rt     s   " " " " " " 



 



 				  				                                    
 ) ( ( ( ( (                  	 	 	 	 	# 	 	 	   *|7 |7 |7 |7 |7 |7 |7 |7~%3 3 3 3 3 3 3 3 3 3r   