K iddlmZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z ddl Z ddlmZddlmZddlmZmZmZddlmZd d lmZmZd d lmZGd d eZe j>dZ GddZ!GddZ"y)) annotationsN)Path)mock)path)errors)egg_infomanifest_maker write_entries) Distribution)contexts environment)DALSc eZdZy) EnvironmentN)__name__ __module__ __qualname__d/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/setuptools/tests/test_egg_info.pyrrsrrc #Ktjd5t}tjt j d}tfd|D|_tttj|jjtj|jddtdj di|jii|dddy#1swYyxYww) Nzsetuptools-test.)prefix)homelibscriptsdatazegg-basec3bK|]&}|tjj|f(yw)N)osrjoin).0dirnameenv_dirs r zenv.."s%Ww'277<<#ABWs,/rz.pydistutils.cfgzR [egg_info] egg-base = {egg-base} r)r tempdirrrchmodstatS_IRWXUdictpathslistmapmkdirvaluesrbuildrformat)envsubsr#s @rr1r1s   !3 4'" $,,';WRVWW  S399++- ./ IIf "DF(!YY(%    !sDCC6- D6C?;DceZdZedZdZeddZdZedZ dZ dZ dZ d Z d Zd Zdd Zdej$ddZdej$ddZdZGddZej/ddddddddddd eee!d"Zd#Zd$Zd%Zd&Zd'Zej>j/d(ed)d*d+d,fed-d*d+d fed.d*d+d,fed)d/d*d0d,fej@ed1d*d+d,d23gd4Z!ej>j/d5ed6d7d8d9d:d;ggfed<d7d8d9d:d;ggfed=d7d8d9d:gd;gfed>d7d8d9gd:d;gfed?d7d8d9d;gd:gfed@d*dAd:gdBgfed.d*d+dCggfedDd/d*d0dCggfed6dEd7d8dFd:d;ggfej@dGd7dHdIdJd8dKdLdMgdNdOgdP3ej@edQd7dRdSd:gdTgdU3ej@edVd7dAd:ggdW3ej@edXd7dYdCdZid[dCd\gd]gd^3g d_Z"ej>j/d5ed`d7d8d9gd:d;gfedad7d8d9gd:d;gfedbd7dcd8ddgdegfedfd7dcd8ddgdegfedgd7dcd8ddd:d;gdhgfedbd*didhgd:d;gfedjdkd7dcd8dlgdegfej@edmd7dRdSd:gdTgdU3ej@ednd7dIdJdod:dpgdqgdr3g dsZ#dtZ$duZ%dvZ&dwZ'dxZ(dyZ)dzZ*d{Z+d|Z,d}Z-ddZ.dZ/y~) TestEggInfoz from setuptools import setup setup( name='foo', py_modules=['hello'], entry_points={'console_scripts': ['hi = hello.run']}, zip_safe=False, ) cZtj|jtddy)NzO def run(): print('hello') )setup.pyzhello.py)rr/ setup_scriptr)selfs r_create_projectzTestEggInfo._create_project?s) ))  rc|djdd}tt|jddd\}}||fS)Nr r .)splitr,int)pkg_info_lines version_strmajorminors r_extract_mv_versionzTestEggInfo._extract_mv_versionJsH$Q'--c215 3 1 1# 6r :; ue|rc|tjj|jdd}t }t |}|j |j|t|dd5}|j}ddddvsJd|vsJd |vsJd }|j||y#1swY0xYw) 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 GGLL6!2K@ ~ d^  Y' )S7 3 qffhG w&&&'''(((  $$Wn=  s 2B22B;cdj|}tjtjz}tj|||sJy)zY Assert that the strings in expected appear in content in order. z.*N)r re MULTILINEDOTALLsearch)r\expectedpatternflagss rrUz#TestEggInfo._validate_content_orderjs: ))H% ryy(yy'5111rctjj|jdd}tj|t dit }t|}|j|j|t|dd5}|j}ddddvsJd |vsJd |vsJd }|j||y#1swY0xYw) 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. rrFzU [egg_info] tag_build = tag_date = 0 rGrHrINrKrLrMrN) rrr r*r/rr rrQrRrSrTrUrVs r.test_egg_info_save_version_info_setup_defaultsz:TestEggInfo.test_egg_info_save_version_info_setup_defaultsts GGLL6!2K@  t  ~ d^  Y' )S7 3 qffhG w&&&'''(((  $$Wn=  s CCc|j|j||tjd}gd}t ||k(sJy)N foo.egg-info)PKG-INFO SOURCES.txtzdependency_links.txtentry_points.txtz not-zip-safez top_level.txt)r9_run_egg_info_commandrlistdirsorted)r8rWr1actualrds rtest_expected_files_producedz(TestEggInfo.test_expected_files_producedsG  "":s3N+ f~)))rct}t|}tjdt d}tjdd}|5|5ddl}d}t j|jj|5|jdddddddddy#1swYxYw#1swYxYw#1swYyxYw) Nzos.utimeTEST) side_effectz+setuptools.command.egg_info.egg_info.mkpath) return_valrz,Cannot update time stamp of directory 'None'match) r rrpatchOSErrordistutils.errorspytestraisesrDistutilsFileErrorrun) r8rWr1rYrZ utime_patch mkpath_patch distutilsmsgs rtest_handling_utime_errorz%TestEggInfo.test_handling_utime_errors~ d^jjI zz 9d  ,  #ACy//BB#N             s<C2B:B.B:C.B7 3B::C ?CCctd}td}tj||dtjt 5}|j ||ddddjjdvsJy#1swY'xYw)Nzp [metadata] name=foo version=0.0.1 license=file:MIT zK from setuptools import setup setup() r6rF ValueErrorr) rrr/r|r}AssertionErrorrnvalueargs)r8rWr1 setup_configr7excs rtest_license_is_a_stringz$TestEggInfo.test_license_is_a_strings     $%  ]]> * 8c  & &z3 7 8 syy~~a0000  8 8s BB c |j|j||tjj d}t j d|j||tjj d}||k7sJy)z9Ensure timestamps are updated when the command is re-run.rjgMbP?N)r9rnrrgetmtimetimesleep)r8rWr1 timestamp_a timestamp_bs r test_rebuiltzTestEggInfo.test_rebuiltsr  "":s3gg&&~6  5 "":s3gg&&~6 k)))rc|jtjtdddid|j ||t jj dd}t jj |d}t|d 5}d |jjd vsJ dddy#1swYyxYw) Nz: recursive-include docs *.rst z usage.rstzRun 'hi') MANIFEST.indocsr<rjrlrHrIzdocs/usage.rst r9rr/rrnrr rSrTr>)r8rWr1 egg_info_dir sources_txtr[s rtest_manifest_template_is_readz*TestEggInfo.test_manifest_template_is_reads   Z   "":s3ww||C8 ggll<? + 0 ++ceZdZedZy)TestEggInfo.RequiresTestHelperc g}g}|D]>}|jjdd}|jdjd}t|dkDr)|dj }t j |}ni}|dj } |D cgc]} t| jd i|c} \} } } | | df| dz| dffD]r\}}}|j|d }|jd r|d d}tjj}|jtj||| || tAtjjd ||Scc} w)Nz rrr F _in_setup_cfgTrz@xfail )marks)rrexpected_requiresinstall_cmd_kwargs)ids)lstripr>poplenstripast literal_evalrr0append startswithr|markxfailparam parametrize) test_list format_dictidlist argvaluestest test_params name_kwargsvalrnameasetup_py_requiressetup_cfg_requiresrid_ruse_cfgrs rrz*TestEggInfo.RequiresTestHelper.parametrize sFI! "kkm11&!< )ooa066t< {#a'%a...0C),)9)9#)>&)+&"1~++-;FL67NDGNN1[1LH!#57H,e4O+-?F/*C7MM#&E**:6#+AB< & 1 1$$ $#-."'  <;;** +  +Ls"E+N)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_alternatec,|j|||j||fi|tjj dd}tjj |d}tjj |r't |d5} | j} dddnd}  j|k(sJtjtjj |jddgk(sJy#1swYdxYw) Nr<rjz requires.txtrHrIrr barbazquux*) rrnrrr existsrSrTrglobr*) r8rWr1rrrrr requires_txtfpinstall_requiress r test_requireszTestEggInfo.test_requires9s| ((=A""":sI6HIww||C8 ww||L.A 77>>, 'lW5 -#%779  - - " &&(,====yycii&6 FG2MMM  - -s D  Dcd}|j|tjt5|j ||dddy#1swYyxYw)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)rr|r}rrn)r8rWr1reqs r*test_install_requires_unordered_disallowedz6TestEggInfo.test_install_requires_unordered_disallowedsI A ((- ]]> * 8  & &z3 7 8 8 8s A  Acld}|j|j}|j|tjt 5|j ||dddtjtjj|jddgk(sJy#1swYOxYw)Nz/extras_require={{":{marker}": ["barbazquux"]}},markerrr r0rrr|r}rrnrrrr r*r8rWr1tmplrs r'test_extras_require_with_invalid_markerz3TestEggInfo.test_extras_require_with_invalid_markers@kk!4!4k5 ((- ]]> * 8  & &z3 7 8yycii&6 FG2MMM 8 8 B**B3cld}|j|j}|j|tjt 5|j ||dddtjtjj|jddgk(sJy#1swYOxYw)Nz5extras_require={{"extra": ["barbazquux; {marker}"]}},rrrrrs r.test_extras_require_with_invalid_marker_in_reqz:TestEggInfo.test_extras_require_with_invalid_marker_in_reqsFkk!4!4k5 ((- ]]> * 8  & &z3 7 8yycii&6 FG2MMM 8 8rc P|jdtjjj |j d}t jdgtjj|j dt|gd|tjjdd }ttjj|d d 5}|jjd }ddddvsJd|vsJy#1swYxYw)Nz*extras_require={"foobar": ["barbazquux"]},rHOMErrr cmdpypath data_streamr1r<rjrkrHrIrzProvides-Extra: foobarMetadata-Version: 2.4rrenvironcopyupdater*r run_setup_pypathsepr strrrSrTr>r8rWr1rrrr@s rtest_provides_extrazTestEggInfo.test_provides_extras (()UV**//#**6"+     ::??CIIe$4c*o#FG  ww||C8 "'',,|Z87 K 3rWWY__T2N 3'>999&.888 3 3s ' DD%c &|jdtjjj |j d}t jdgtjj|j dt|gd|tjjdd }ttjj|d d 5}|j}dddd vsJy#1swYxYw)Nz0install_requires=["spam ; python_version<'3.6'"]rrrrr rr<rjrkrHrIzProvides-Extra:)rrrrrr*rrrr rrrSrT)r8rWr1rrr pkg_info_texts rtest_doesnt_provides_extraz&TestEggInfo.test_doesnt_provides_extras (( B **//#**6"+     ::??CIIe$4c*o#FG  ww||C8 "'',,|Z87 K &rGGIM & 555 & &s 'DD)fileslicense_in_sourcesz} [metadata] license_file = LICENSE z Test license)rFLICENSETz [metadata] license_file = INVALID_LICENSE z zexclude LICENSE)rFrrz [metadata] license_file = LICEN[CS]E* glob_pattern)idc |jtj|tjdgt j j|jdt|gt jjdd}t|djd}|rd |vsJyd |vsJd |vsJy) Nrrrrr<rjrlrHrIrINVALID_LICENSE) r9rr/rrrrr r*rr read_text)r8rWr1rrr sources_texts rtest_setup_cfg_license_filez'TestEggInfo.test_setup_cfg_license_file!sD  5   ::??CIIe$4c*o#FG ww||C8 L-8BBGBT  , ,,L0 00$L8 88r)r incl_licenses excl_licensesz [metadata] license_files = LICENSE-ABC LICENSE-XYZ ABC license XYZ license)rF LICENSE-ABC LICENSE-XYZrrz [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 )rFrrrz~ [metadata] license_files = LICENSE zexclude LICENSE-XYZ)rFrrrrz ABC copyingz ABC noticez ABC authorsLicensezInvalid license)rFr COPYING-ABC NOTICE-ABC AUTHORS-ABC LICENCE-XYZrINVALID-LICENSE)rrr r r rr default_glob_patternsz [metadata] license_files = LICENSE* z XYZ notice)rFr NOTICE-XYZrno_default_glob_patternsz [metadata] license_files = LICENSE-ABC LICENSE* files_only_added_oncez [metadata] license_files = **/LICENSE z Don't includeVendor license)rFr LICENSE-OTHERvendorzvendor/LICENSErrecursive_globc 4|jtj|tjdgt j j|jdt|gt jjdd}t|djd}|jDcgc]}|j} }|D]} | j| d k(rJ|D]} | j| d k(rJycc}w Nrrrr<rjrlrHrIr rr9rr/rrrrr r*rrr splitlinesrcount r8rWr1rrrrrline sources_lineslfs rtest_setup_cfg_license_filesz(TestEggInfo.test_setup_cfg_license_filesusd  5   ::??CIIe$4c*o#FG ww||C8 L-8BBGBT 2>2I2I2KL$L L 0B &&r*a/ // 0  0B &&r*a/ // 0 MDz [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)rFr LICENSE-PQRr)rr ra9 [metadata] license_file = LICENSE-ABC license_files = LICENSE-ABC LICENSE-XYZ LICENSE-PQR z [metadata] license_file = LICENSE-ABC license_files = LICENSE-XYZ r )rFr a [metadata] license_file = LICENSE-ABC license_files = LICENSE-PQR LICENSE-XYZ z'exclude LICENSE-ABC exclude LICENSE-PQR)rFrrr rz~ [metadata] license_file = LICENSE* z [metadata] license_file = LICENSE* license_files = NOTICE* )rFrr r r r combined_glob_patterrnsc 4|jtj|tjdgt j j|jdt|gt jjdd}t|djd}|jDcgc]}|j} }|D]} | j| d k(rJ|D]} | j| d k(rJycc}wrrrs r)test_setup_cfg_license_file_license_filesz5TestEggInfo.test_setup_cfg_license_file_license_filesYsL  5   ::??CIIe$4c*o#FG ww||C8 L-8BBGBT 2>2I2I2KL$L L 0B &&r*a/ // 0  0B &&r*a/ // 0 Mrc |jtjtdddddddidt j d gt jj|jd t|g t jjd d }tt jj|dd5}|jjd}dddDcgc]}|jds|}}t|dk(sJd|dk(sJd|ddvsJd|ddvsJd|dvsJy#1swY`xYwcc}w)zCAll matched license files should have a corresponding License-File.z [metadata] license_files = NOTICE* LICENSE* **/LICENSE rrincludedz not includerr)rFrrNOTICEIGNORErrrrr<rjrkrHrIrNz License-File:zLicense-File: NOTICErzLicense-File: LICENSE-ABCr zLicense-File: LICENSE-XYZzLicense-File: vendor/LICENSEr)r9rr/rrrrrr r*rrSrTr>rr)r8rWr1rrr@rlicense_file_liness rtest_license_file_attr_pkg_infoz+TestEggInfo.test_license_file_attr_pkg_infosj  ")( # "23  "    ::??CIIe$4c*o#FG ww||C8 "'',,|Z87 K 3rWWY__T2N 3, t/OD  %&!+++%);A)>>>>*.@.DDDD*.@.DDDD-1CA1FFFF 3 3 s E<EEEc |jdtjdgtjj |j dt|gdtjj dd}ttjj |dd 5}|jjd }d d d |jd k(sJy #1swY xYw)z5Make sure latest metadata version is used by default.rrrr rrrr<rjrkrHrIrN)r=r() rrrrrr r*rrrSrTr>rDr8rWr1rrr@s rtest_metadata_versionz!TestEggInfo.test_metadata_version8s ((,   ::??CIIe$4c*o#FG ww||C8 "'',,|Z87 K 3rWWY__T2N 3''76AAA 3 3s + C**C3c T|jdtjjj |j d}t jdgtjj|j dt|gd|tjjdd }ttjj|d d 5}|jjd }dddd}|vsJd|vsJy#1swYxYw)Nz.long_description_content_type='text/markdown',rrrrr rr<rjrkrHrIrz'Description-Content-Type: text/markdownrrr8rWr1rrrr@ expected_lines r"test_long_description_content_typez.TestEggInfo.test_long_description_content_typeFs (( @ **//#**6"+     ::??CIIe$4c*o#FG  ww||C8 "'',,|Z87 K 3rWWY__T2N 3A ...&.888  3 3s ' DD'c  |jdtjdgtjj |j dt|gdtjj dd}ttjj |dd 5}|jjd }dddd vsJd |dk(sJ||jd d}d|vsJd|vsJy#1swY:xYw)Nzqlong_description='This is a long description\nover multiple lines',long_description_content_type='text/markdown',rrr r,r<rjrkrHrIrrrzThis is a long descriptionzover multiple lines) rrrrrr r*rrrSrTr>index)r8rWr1rrr@long_desc_liness rtest_long_descriptionz!TestEggInfo.test_long_descriptionas (( =     ::??CIIe$4c*o#FG ww||C8 "'',,|Z87 K 3rWWY__T2N 3&.888^B''''()=)=b)A)CD+>>>$777  3 3s + DD c |jdtjjj |j d}t jdgtjj|j dt|gd|tjjdd }ttjj|d d 5}|jjd }dddd}|vsJd}||vsJ|j|dk\sJy#1swY0xYw)Nzproject_urls={ 'Link One': 'https://example.com/one/', 'Link Two': 'https://example.com/two/', },rrrrr rr<rjrkrHrIrz/Project-URL: Link One, https://example.com/one/z/Project-URL: Link Two, https://example.com/two/r r=rrrrrr*rrrr rrrSrTr>rDr0s rtest_project_urlszTestEggInfo.test_project_urlsxs ((  **//#**6"+     ::??CIIe$4c*o#FG  ww||C8 "'',,|Z87 K 3rWWY__T2N 3I ...I ...''76AAA  3 3s ' D66D?c |jdtjdgtjj |j dt|gdtjj dd}ttjj |dd 5}|jjd }d d d d vsJy #1swYxYw)zTest single line license.zlicense='MIT',rrr r,r<rjrkrHrIrNz License: MIT rrrrrr r*rrrSrTr>r-s r test_licensezTestEggInfo.test_licenses (()9:   ::??CIIe$4c*o#FG ww||C8 "'',,|Z87 K 3rWWY__T2N 3/// 3 3s + CC#c |jdtjdgtjj |j dt|gdtjj dd}ttjj |dd 5}|jjd }d d d d vsJd|vsJdd j |vsJy #1swY+xYw)z:Test license is escaped correctly if longer than one line.z>>->1JJJJ  3 3s + C55C>c p|jdtjjj |j d}t jdgtjj|j dt|gd|tjjdd }ttjj|d d 5}|jjd }ddddvsJ|j|dk\sJy#1swY&xYw)Nzpython_requires='>=2.7.12',rrrrr rr<rjrkrHrIrzRequires-Python: >=2.7.12r9r:rs rtest_python_requires_egg_infoz)TestEggInfo.test_python_requires_egg_infos (()JK**//#**6"+     ::??CIIe$4c*o#FG  ww||C8 "'',,|Z87 K 3rWWY__T2N 3*n<<<''76AAA 3 3s ' D,,D5cHddg}|D]}tj|rJy)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_suppressions6 H 0   @C!::3? ?? @rc|jtddd}d|_t|}|j |j d|j jvsJt|jdzd5}|jjd }d|vsJ dddy#1swYyxYw) Nfoo0.0.1rversionz non_setup.pyr6z /SOURCES.txtrHrIr) r9r script_namerfinalize_optionsrfilelistrrSrTr>)r8rWrYegg_info_instancer[sourcess rtest_egg_info_includes_setup_pyz+TestEggInfo.test_egg_info_includes_setup_pys Uw?@)$TN**,.77===== #,,~= P )TUffhnnT*G( (( ) ) )s &B55B>Nc Jtjjj|jd}|dg}t j |tjj|jdt|gd|\}}|rJ||r||vsJyy)Nrrrrr r) rrrrr*rrrr r)r8rWr1routputrcoders rrnz!TestEggInfo._run_egg_info_commands**//#**6"+  ;C!--::??CIIe$4c*o#FG  d x T> !> rc|jtjdtdi|j ||t jj dd}tt jj |dd5}|jjd}dddd vsJy#1swYxYw) NrFz [egg_info] tag_build = dev tag_date = 0 tag_svn_revision = 0 r<rjrkrHrIrzVersion: 0.0.0.dev0rr-s rtest_egg_info_tag_only_oncez'TestEggInfo.test_egg_info_tag_only_onces  "   "":s3ww||C8 "'',,|Z87 K 3rWWY__T2N 3$666 3 3s  B==C)r@z list[str]returnztuple[int, int])F)NN)0rrrrr7r9rrDr^rUrhrrrrrrrsys version_inforrrrrrrrrrrr|rrrrr#r*r.r2r7r;r>r@rBrFrQrnrVrrrr4r41s  L   >422!>F* 1B *<$  ))9)9!)<(=Q?O"4S5E5Ea5H4I KN,,\##           &'";g$TjNkTjN* 8NN9"6$ [['"&"" . "&"" . "&"" .  "&"" $5-   FLL!%"" .! a= @B9C@B9& [[3"&""$1#0  . $"&"" $1#0  .  "&""$1#0  ""&"" $1#0  .  "&"" $1#0   "&""$2 "# ""&"" .   "&"" $5-    "&""$9#0#0  .! $ FLL!##0#0".#0#0('8 ##*+ . FLL!%""$1". -  FLL!%""$1 *  FLL!%"" -%4(*:; ,- !# wK N^0_N^0* [[3"&""$1#0  . ""&""$1#0  . &"&""$1#0#0 >! ("&" "$1#0#0 >% ,"&""$1#0#0  .! ("&""$2  . &"&""$N#0#0#0 >% ( FLL!%"" $1". -  FLL!%""$1".#0  -,! [_ bF0GbF0*%GN B968.B@ 0K$B"@ )"&7rr4ceZdZdZdZy)TestWriteEntriesc`tddd}ddi|_|jd}d}tjt j tf|5}t|dd d |jjd vsJd t|jvsJ dddy#1swYyxYw) NrHrIrJzfoo = invalid-identifier:foorz,(Invalid object reference|Problems to parse)rw entry_pointsrmz#ensure entry-point follows the specrzinvalid-identifier) r r]get_command_objr|r}r OptionErrorrr rrr)r8rWr1rYr expected_msgexs rtest_invalid_entry_pointz)TestWriteEntries.test_invalid_entry_pointsUw?@"$BC"":.F ]]F.. ;< P 9TV #~/A B8BHHMM!+=>)*44g4F'7222'7222rN)rrrrbrfrrrr[r[s 9 3rr[)# __future__rrrrr`r'rXrpathlibrunittestrr|jaracor setuptoolsrsetuptools.command.egg_inforr r setuptools.distr rr rtextwraprrrfixturer1r4r[rrrrpsv"  OO(# # (Q7Q7h&33r