(6+.ddlmZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z ddl Z ddlmZddlmZddlmZmZmZddlmZd d lmZmZd d lmZGd d eZe jdZ GddZ!GddZ"dS)) annotationsN)Path)mock)path)errors)egg_infomanifest_maker write_entries) Distribution)contexts environment)DALSceZdZdS) EnvironmentN)__name__ __module__ __qualname__p/builddir/build/BUILD/cloudlinux-venv-1.0.10/venv/lib/python3.11/site-packages/setuptools/tests/test_egg_info.pyrrsDrrc # Ktjd5t}tjt jd}tfd|D|_tttj |j tj|jddtdjdi|jii|VddddS#1swxYwYdS) Nzsetuptools-test.)prefix)homelibscriptsdatazegg-basec3\K|]&}|tj|fV'dS)N)osrjoin).0dirnameenv_dirs r zenv.."s8WWw'27<<#A#ABWWWWWWrrz.pydistutils.cfgzR [egg_info] egg-base = {egg-base} r)r tempdirrrchmodstatS_IRWXUdictpathslistmapmkdirvaluesrbuildrformat)envsubsr#s @rr1r1s\  !3 4 4 4'"" $,''';WWWWRVWWWWW  S39++-- . ./// If "D((!Y((%%    !sCC99C=C=c:eZdZedZdZeddZdZed Z d Z d Z d Z d Z dZdZddZdejddZdejddZdZGddZeddddddd d!d"d#d$eee%d&Zd'Zd(Zd)Zd*Zd+Zejd,ed-d.d/d0fed1d.d/dfed2d.d/d0fed-d3d.d4d0fej ed5d.d/d0d67gd8Z!ejd9ed:d;dd?ggfed@d;dd?ggfedAd;dgd?gfedBd;dd?gfedCd;dgfedDd.dEd>gdFgfed2d.d/dGggfedHd3d.d4dGggfed:dId;dd?ggfej dKd;dLdMdNdgdXgdY7ej edZd;dEd>ggd[7ej ed\d;d]dGd^id_dGd`gdagdb7g dcZ"ejd9eddd;dd?gfeded;dd?gfedfd;dgdd?gdlgfedfd.dmdlgd>d?gfedndod;dgdgdXgdY7ej edrd;dMdNdsd>dtgdugdv7g dwZ#dxZ$dyZ%dzZ&d{Z'd|Z(d}Z)d~Z*dZ+dZ,dZ-ddZ.dZ/dS) TestEggInfoz from setuptools import setup setup( name='foo', py_modules=['hello'], entry_points={'console_scripts': ['hi = hello.run']}, zip_safe=False, ) cXtj|jtdddS)NzO def run(): print('hello') )setup.pyzhello.py)rr/ setup_scriptr)selfs r_create_projectzTestEggInfo._create_project?sB )       rpkg_info_lines list[str]returntuple[int, int]c|ddd}tt|ddd\}}||fS)Nr r .)splitr,int)r: version_strmajorminors r_extract_mv_versionzTestEggInfo._extract_mv_versionJsS$Q'--c2215 3 1 1# 6 6rr :;; ue|rctj|jdd}t }t |}|||t|dd5}| }dddn #1swxYwYd|vsJd|vsJd |vsJd }| ||dS) 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.cfgrutf-8encodingN [egg_info] tag_build = tag_date = 0 tag_buildtag_date) rrr r*r rinitialize_optionssave_version_infoopenread_validate_content_order r8 tmpdir_cwdr1 setup_cfgdisteifcontentexpected_orders r+test_egg_info_save_version_info_setup_emptyz7TestEggInfo.test_egg_info_save_version_info_setup_emptyPs( GLL6!2K@@ ~~ d^^  Y''' )S7 3 3 3 qffhhG               w&&&&''''((((  $$Wn=====sB%%B),B)cd|}tjtjz}tj|||sJdS)zY Assert that the strings in expected appear in content in order. z.*N)r re MULTILINEDOTALLsearch)r_expectedpatternflagss rrXz#TestEggInfo._validate_content_orderjsC ))H%% ry(y'51111111rctj|jdd}tj|t dit }t|}|| |t|dd5}| }dddn #1swxYwYd|vsJd |vsJd |vsJd }| ||dS) 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. rrIzU [egg_info] tag_build = tag_date = 0 rJrKrLNrNrOrPrQ) rrr r*r/rr rrTrUrVrWrXrYs r.test_egg_info_save_version_info_setup_defaultsz:TestEggInfo.test_egg_info_save_version_info_setup_defaultstsW GLL6!2K@@  t    ~~ d^^  Y''' )S7 3 3 3 qffhhG               w&&&&''''((((  $$Wn=====s'CC C c||||tjd}gd}t ||ksJdS)N foo.egg-info)PKG-INFO SOURCES.txtzdependency_links.txtentry_points.txtz not-zip-safez top_level.txt)r9_run_egg_info_commandrlistdirsorted)r8rZr1actualrgs rtest_expected_files_producedz(TestEggInfo.test_expected_files_producedsi  "":s333N++   f~~))))))rct}t|}tjdt d}tjdd}|5|5ddl}d}t j|jj |5| dddn #1swxYwYdddn #1swxYwYddddS#1swxYwYdS) Nzos.utimeTEST) side_effectz+setuptools.command.egg_info.egg_info.mkpath) return_valrz,Cannot update time stamp of directory 'None'match) r rrpatchOSErrordistutils.errorspytestraisesrDistutilsFileErrorrun) r8rZr1r\r] utime_patch mkpath_patch distutilsmsgs rtest_handling_utime_errorz%TestEggInfo.test_handling_utime_errors~~ d^^jIII z 9d     ,   # # # #ACy/B#NNN                                                   sZC'B;B$ B;$B( (B;+B( ,B;/ C;B? ?CB? CCCc*td}td}tj||dtjt 5}|||dddn #1swxYwYd|jjdvsJdS)Nzp [metadata] name=foo version=0.0.1 license=file:MIT zK from setuptools import setup setup() r6rI ValueErrorr) rrr/rrAssertionErrorrqvalueargs)r8rZr1 setup_configr7excs rtest_license_is_a_stringz$TestEggInfo.test_license_is_a_strings       $%     ]> * * 8c  & &z3 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 sy~a0000000sA22A69A6c:||||tjd}t jd|||tjd}||ksJdS)z9Ensure timestamps are updated when the command is re-run.rmgMbP?N)r9rqrrgetmtimetimesleep)r8rZr1 timestamp_a timestamp_bs r test_rebuiltzTestEggInfo.test_rebuilts  "":s333g&&~66  5 "":s333g&&~66 k))))))rc|tjtdddid|||t jdd}t j|d}t|d 5}d | d vsJ ddddS#1swxYwYdS) Nz: recursive-include docs *.rst z usage.rstzRun 'hi') MANIFEST.indocsr@rmrorKrLzdocs/usage.rst r9rr/rrqrr rVrWrB)r8rZr1 egg_info_dir sources_txtr^s rtest_manifest_template_is_readz*TestEggInfo.test_manifest_template_is_reads.   Z    "":s333w||C88 gll<?? + 0 0 0 ++c$eZdZedZdS)TestEggInfo.RequiresTestHelperc g}g}|D]J}|dd}|dd}t|dkr/|d}t j|}ni}|d} fd|D\} } } | | df| dz| d ffD]y\} }}|| d }|d r|d d}tj j }|tj ||| || zLtj d||S)Nz rrr cDg|]}t|jdiS)r)rr0)r!a format_dicts r z>TestEggInfo.RequiresTestHelper.parametrize..sDLLL67NDGGN11[11LLLrF _in_setup_cfgTrz@xfail )marks)rrexpected_requiresinstall_cmd_kwargs)ids)lstriprBpoplenstripast literal_evalappend startswithrmarkxfailparam parametrize) test_listridlist argvaluestest test_params name_kwargsvalrnamesetup_py_requiressetup_cfg_requiresrid_ruse_cfgrs ` rrz*TestEggInfo.RequiresTestHelper.parametrize sFI!  "kkmm11&!<< )ooa0066t<< {##a''%a...00C),)9#)>)>&&)+&"1~++--LLLL;FLLLH!#57H,e4O+-?F/*C7MM#&&&E**:662#+ABB< & 1$$ $#-."' $;** +   rN)rrr staticmethodrrrrRequiresTestHelperr s- * *  * * * rrz 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_markermismatch_markermismatch_marker_alternatecH||||j||fi|tjdd}tj|d}tj|r>t |d5} | } dddn #1swxYwYnd} | |ksJtj tj|j ddgksJdS) Nr@rmz requires.txtrKrLrr barbazquux*) rrqrrr existsrVrWrglobr*) r8rZr1rrrrr requires_txtfpinstall_requiress r test_requireszTestEggInfo.test_requires9sK| ((=AAA"":sII6HIIIw||C88 w||L.AA 7>>, ' ' "lW555 -#%7799  - - - - - - - - - - - - - - - " &&((,=====yci&6 FFGG2MMMMMMsB77B;>B;cd}||tjt5|||ddddS#1swxYwYdS)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)rrrrrq)r8rZr1reqs r*test_install_requires_unordered_disallowedz6TestEggInfo.test_install_requires_unordered_disalloweds A ((--- ]> * * 8 8  & &z3 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8sAAAc~d}||j}||tjt 5|||dddn #1swxYwYtjtj |j ddgksJdS)Nz/extras_require={{":{marker}": ["barbazquux"]}},markerrr r0rrrrrrqrrrr r*r8rZr1tmplrs r'test_extras_require_with_invalid_markerz3TestEggInfo.test_extras_require_with_invalid_markers@kk!4k55 ((--- ]> * * 8 8  & &z3 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8yci&6 FFGG2MMMMMM A//A36A3c~d}||j}||tjt 5|||dddn #1swxYwYtjtj |j ddgksJdS)Nz5extras_require={{"extra": ["barbazquux; {marker}"]}},rrrrrs r.test_extras_require_with_invalid_marker_in_reqz:TestEggInfo.test_extras_require_with_invalid_marker_in_reqsFkk!4k55 ((--- ]> * * 8 8  & &z3 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8yci&6 FFGG2MMMMMMrc ~|dtj|jd}t jdgtj |jdt|gd|tj dd }ttj |d d 5}| d }dddn #1swxYwYd|vsJd|vsJdS)Nz*extras_require={"foobar": ["barbazquux"]},rHOMErrr cmdpypath data_streamr1r@rmrnrKrLrzProvides-Extra: foobarMetadata-Version: 2.4rrenvironcopyupdater*r run_setup_pypathsepr strrrVrWrBr8rZr1rrrr:s rtest_provides_extrazTestEggInfo.test_provides_extras^ (()UVVV*//##**6"+     :??CIe$4c*oo#FGG     w||C88 "',,|Z887 K K K 3rWWYY__T22N 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3'>9999&.8888882(D&&D*-D*c L|dtj|jd}t jdgtj |jdt|gd|tj dd }ttj |d d 5}| }dddn #1swxYwYd |vsJdS)Nz0install_requires=["spam ; python_version<'3.6'"]rrrrr rr@rmrnrKrLzProvides-Extra:)rrrrrr*rrrr rrrVrW)r8rZr1rrr pkg_info_texts rtest_doesnt_provides_extraz&TestEggInfo.test_doesnt_provides_extrasI (( B   *//##**6"+     :??CIe$4c*oo#FGG     w||C88 "',,|Z887 K K K &rGGIIM & & & & & & & & & & & & & & & 555555s2DDD)fileslicense_in_sourcesz} [metadata] license_file = LICENSE z Test license)rILICENSETz [metadata] license_file = INVALID_LICENSE z zexclude LICENSE)rIrrz [metadata] license_file = LICEN[CS]E* glob_pattern)idc |tj|tjdgt j|jdt|gt jdd}t|d d}|rd |vsJdSd |vsJd |vsJdS) Nrrrrr@rmrorKrLrINVALID_LICENSE) r9rr/rrrrr r*rr read_text)r8rZr1rrr sources_texts rtest_setup_cfg_license_filez'TestEggInfo.test_setup_cfg_license_file!sD  5  :??CIe$4c*oo#FGG    w||C88 L-88BBGBTT  9 ,,,,,,L0000$L888888r)r incl_licenses excl_licensesz [metadata] license_files = LICENSE-ABC LICENSE-XYZ ABC license XYZ license)rI LICENSE-ABC LICENSE-XYZr r z [metadata] license_files = LICENSE-ABC, LICENSE-XYZ z [metadata] license_files = LICENSE-ABC zv [metadata] license_files = z [metadata] license_files = LICENSE-XYZ z [metadata] license_files = LICENSE-ABC INVALID_LICENSE )rIr rrz~ [metadata] license_files = LICENSE zexclude LICENSE-XYZ)rIrr r rz ABC copyingz ABC noticez ABC authorsLicensezInvalid license)rIr  COPYING-ABC NOTICE-ABC AUTHORS-ABC LICENCE-XYZrINVALID-LICENSE)r rrrrrrdefault_glob_patternsz [metadata] license_files = LICENSE* z XYZ notice)rIr  NOTICE-XYZrno_default_glob_patternsz [metadata] license_files = LICENSE-ABC LICENSE* files_only_added_oncez [metadata] license_files = **/LICENSE z Don't includeVendor license)rIr LICENSE-OTHERvendorzvendor/LICENSErrecursive_globc 6|tj|tjdgt j|jdt|gt jdd}t|d d}d | D}|D]} | | d ksJ|D]} | | d ksJdS) Nrrrr@rmrorKrLc6g|]}|Srrr!lines rrz.Q LLL$LLLrr rr9rr/rrrrr r*rrr splitlinescount r8rZr1rrrrr sources_lineslfs rtest_setup_cfg_license_filesz(TestEggInfo.test_setup_cfg_license_filesus+d  5  :??CIe$4c*oo#FGG    w||C88 L-88BBGBTT LL,2I2I2K2KLLL  0 0B &&r**a///// 0 0B &&r**a///// 0 0rz [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)rIr  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()rIr(a [metadata] license_file = LICENSE-ABC license_files = LICENSE-PQR LICENSE-XYZ z'exclude LICENSE-ABC exclude LICENSE-PQR)rIrr r(r z~ [metadata] license_file = LICENSE* z [metadata] license_file = LICENSE* license_files = NOTICE* )rIr rrrrcombined_glob_patterrnsc 6|tj|tjdgt j|jdt|gt jdd}t|d d}d | D}|D]} | | d ksJ|D]} | | d ksJdS) Nrrrr@rmrorKrLc6g|]}|Srrrs rrzITestEggInfo.test_setup_cfg_license_file_license_files.. r rr rr!r$s r)test_setup_cfg_license_file_license_filesz5TestEggInfo.test_setup_cfg_license_file_license_filesYs+L  5  :??CIe$4c*oo#FGG    w||C88 L-88BBGBTT LL,2I2I2K2KLLL  0 0B &&r**a///// 0 0B &&r**a///// 0 0rc |tjtdddddddidt jd gt j|j d t|g t jd d }tt j|dd5}| d}dddn #1swxYwYd|D}t|dksJd|dksJd|ddvsJd|ddvsJd|dvsJdS)zCAll matched license files should have a corresponding License-File.z [metadata] license_files = NOTICE* LICENSE* **/LICENSE r r includedz not includerr)rIr r NOTICEIGNORErrrrr@rmrnrKrLrNc<g|]}|d|S)z License-File:)rrs rrz?TestEggInfo.test_license_file_attr_pkg_info..,s9   t/O/O    rzLicense-File: NOTICErzLicense-File: LICENSE-ABCr zLicense-File: LICENSE-XYZzLicense-File: vendor/LICENSEr)r9rr/rrrrrr r*rrVrWrBr)r8rZr1rrr:license_file_liness rtest_license_file_attr_pkg_infoz+TestEggInfo.test_license_file_attr_pkg_infos  ")( # "23     "   :??CIe$4c*oo#FGG    w||C88 "',,|Z887 K K K 3rWWYY__T22N 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3  +    %&&!++++%);A)>>>>>*.@.DDDDD*.@.DDDDD-1CA1FFFFFFFs(DDDc  |dtjdgtj|jdt|gdtjdd}ttj|dd 5}| d }d d d n #1swxYwY| |d ksJd S)z5Make sure latest metadata version is used by default.rrrr rrrr@rmrnrKrLrN)rAr2) rrrrrr r*rrrVrWrBrGr8rZr1rrr:s rtest_metadata_versionz!TestEggInfo.test_metadata_version8s' ((,,,  :??CIe$4c*oo#FGG    w||C88 "',,|Z887 K K K 3rWWYY__T22N 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3''776AAAAAA4(C((C,/C,c |dtj|jd}t jdgtj |jdt|gd|tj dd }ttj |d d 5}| d }dddn #1swxYwYd}||vsJd|vsJdS)Nz.long_description_content_type='text/markdown',rrrrr rr@rmrnrKrLrz'Description-Content-Type: text/markdownrrr8rZr1rrrr: expected_lines r"test_long_description_content_typez.TestEggInfo.test_long_description_content_typeFsm (( @   *//##**6"+     :??CIe$4c*oo#FGG     w||C88 "',,|Z887 K K K 3rWWYY__T22N 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3A ....&.888888rc d|dtjdgtj|jdt|gdtjdd}ttj|dd 5}| d }dddn #1swxYwYd |vsJd |dksJ|| d d}d|vsJd|vsJdS)Nzqlong_description='This is a long description\nover multiple lines',long_description_content_type='text/markdown',rrr r6r@rmrnrKrLrrrzThis is a long descriptionzover multiple lines) rrrrrr r*rrrVrWrBindex)r8rZr1rrr:long_desc_liness rtest_long_descriptionz!TestEggInfo.test_long_descriptionasz (( =      :??CIe$4c*oo#FGG    w||C88 "',,|Z887 K K K 3rWWYY__T22N 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3&.8888^B'''''()=)=b)A)A)C)CD+>>>>$777777r9c |dtj|jd}t jdgtj |jdt|gd|tj dd }ttj |d d 5}| d }dddn #1swxYwYd}||vsJd}||vsJ||dksJdS)Nzproject_urls={ 'Link One': 'https://example.com/one/', 'Link Two': 'https://example.com/two/', },rrrrr rr@rmrnrKrLrz/Project-URL: Link One, https://example.com/one/z/Project-URL: Link Two, https://example.com/two/r rArrrrrr*rrrr rrrVrWrBrGr;s rtest_project_urlszTestEggInfo.test_project_urlsxs ((    *//##**6"+     :??CIe$4c*oo#FGG     w||C88 "',,|Z887 K K K 3rWWYY__T22N 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3I ....I ....''776AAAAAArc |dtjdgtj|jdt|gdtjdd}ttj|dd 5}| d }d d d n #1swxYwYd |vsJd S)zTest single line license.zlicense='MIT',rrr r6r@rmrnrKrLrNz License: MIT rrrrrr r*rrrVrWrBr7s r test_licensezTestEggInfo.test_licenses (()9:::  :??CIe$4c*oo#FGG    w||C88 "',,|Z887 K K K 3rWWYY__T22N 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3//////r9c 4|dtjdgtj|jdt|gdtjdd}ttj|dd 5}| d }d d d n #1swxYwYd |vsJd|vsJdd |vsJd S)z:Test license is escaped correctly if longer than one line.z>>>->1J1JJJJJJJr9c |dtj|jd}t jdgtj |jdt|gd|tj dd }ttj |d d 5}| d }dddn #1swxYwYd|vsJ||dksJdS)Nzpython_requires='>=2.7.12',rrrrr rr@rmrnrKrLrzRequires-Python: >=2.7.12rDrErs rtest_python_requires_egg_infoz)TestEggInfo.test_python_requires_egg_infosl (()JKKK*//##**6"+     :??CIe$4c*oo#FGG     w||C88 "',,|Z887 K K K 3rWWYY__T22N 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3*n<<<<''776AAAAAArcDddg}|D]}tj|sJdS)Nz:standard file not found: should have one of foo.py, bar.pyz"standard file 'setup.py' not found)r _should_suppress_warning)r8fixturesrs r'test_manifest_maker_warning_suppressionz3TestEggInfo.test_manifest_maker_warning_suppressionsH H 0   @ @C!:3?? ? ?? ? @ @rc|tddd}d|_t|}||d|jjvsJt|jdzd5}| d }d|vsJ ddddS#1swxYwYdS) Nfoo0.0.1rversionz non_setup.pyr6z /SOURCES.txtrKrLr) r9r script_namerfinalize_optionsrfilelistrrVrWrB)r8rZr\egg_info_instancer^sourcess rtest_egg_info_includes_setup_pyz+TestEggInfo.test_egg_info_includes_setup_pys$ Uw??@@)$TNN**,,,.7===== #,~= P P P )TUffhhnnT**G((((( ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s.C  CCNc Ztj|jd}|dg}t j|tj|jdt|gd|\}}|r J||r||vsJdSdS)Nrrrrr r) rrrrr*rrrr r)r8rZr1routputrcoders rrqz!TestEggInfo._run_egg_info_commands*//##**6"+   ;C!-:??CIe$4c*oo#FGG    d x  "T>>>> " "!>rc|tjdtdi|||t jdd}tt j|dd5}| d}dddn #1swxYwYd |vsJdS) NrIz [egg_info] tag_build = dev tag_date = 0 tag_svn_revision = 0 r@rmrnrKrLrzVersion: 0.0.0.dev0rr7s rtest_egg_info_tag_only_oncez'TestEggInfo.test_egg_info_tag_only_onces  "   "":s333w||C88 "',,|Z887 K K K 3rWWYY__T22N 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3$666666s(CCC)r:r;r<r=)F)NN)0rrrrr7r9rrGrarXrkrurrrrrsys version_inforrrrrrrrrrrrrrrr'r,r4r8r=rBrFrIrKrMrQr\rqrarrrr4r41sD 4   L    \ >>>422\2!>!>!>F***   111B * * *<<<$     @)9!)<???O KS5Ea5H K K KN,,,,,,,,\##           &'";g$TTjNNkTTjN* 8 8 8NNNNNN999"666$ ['"&""" . "&""" . "&""" .  "&""" $5-    FL!%""" .!   a= @@B99C@@B9& [3"&"""$1#0   . $"&""" $1#0   .  "&"""$1#0   ""&""" $1#0   .  "&""" $1#0    "&"""$2  "# ""&""" .   "&""" $5-     "&"""$9#0#0   .! $ FL!##0#0".#0#0('8  ##*+   . FL!%"""$1".  -    FL!%"""$1  *    FL!%""" -%4(*:;  ,- !#   wK NN^00_NN^0* [3"&"""$1#0   . ""&"""$1#0   . &"&"""$1#0#0  >==! ("&" " "$1#0#0 >==% ,"&"""$1#0#0   .! ("&"""$2   . &"&"""$N#0#0#0 >==% ( FL!%""" $1".  -    FL!%"""$1".#0   -,!   [_ bbF00GbbF0*%G%G%GN B B B9996888.BBB@ 0 0 0KKK$BBB"@@@ ) ) )""""&77777rr4ceZdZdZdZdS)TestWriteEntriescjtddd}ddi|_|d}d}tjt jtf|5}t|dd d |j j d vsJd t|j vsJ ddddS#1swxYwYdS) NrSrTrUzfoo = invalid-identifier:foorz,(Invalid object reference|Problems to parse)rz entry_pointsrpz#ensure entry-point follows the specrzinvalid-identifier) r rgget_command_objrrr OptionErrorrr rrr)r8rZr1r\r expected_msgexs rtest_invalid_entry_pointz)TestWriteEntries.test_invalid_entry_pointsUw??@@"$BC"":..F ]F. ;< P P P 9TV #~/A B B B8BHM!+=>>>)**44g4FF'72222'7222222rN)rrrrlrprrrreres2999 3 3 3 3 3rre)# __future__rrrrrcr'rbrpathlibrunittestrrjaracor setuptoolsrsetuptools.command.egg_inforr r setuptools.distr rr rtextwraprrrfixturer1r4rerrrrzs""""""  OOOOOOOOOO((((((########     #   (Q7Q7Q7Q7Q7Q7Q7Q7h&3333333333r