K ibddlZddlZddlZddlZddlmZddlmZmZddl Z ddl m Z ddl m Z mZmZddlmZmZddlmZdd lmZdd lmZmZGd d e eZdd Z ddZej:ddZdZGddZ GddZ!GddZ"ejFZ$GddZ%y)N)Path)Mockpatch)InvalidRequirement) ConfigHandlerTargetread_configuration) Distribution _Distribution)SetuptoolsDeprecationWarning)DALS)DistutilsFileErrorDistutilsOptionErrorceZdZdZdZy)ErrConfigHandlerz7Erroneous handler. Fails to implement required methods.z**err**N)__name__ __module__ __qualname____doc__section_prefixk/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/setuptools/tests/config/test_setupcfg.pyrrs ANrrc|}|jdD]}|j|}d}|s"|jd}|jd||fS)N/ __init__.py)splitmkdirjoinwrite)namebase_dirns dir_packagedir_name init_files rmake_package_dirr)s]KJJsO2!''1 2I $$]3   !!rc|d}|jdj||jd}|j|j|dt||\}}|jd||fS)Nz%from setuptools import setup setup() setup.py setup.cfgwb)modezWVERSION = (1, 2, 3) VERSION_MAJOR = 1 def get_version(): return [3, 4, 5, "dev"] )r!r"encoder))tmpdir setup_cfgsetup_pyencoding package_pathconfig package_dirr(s rfake_envr7%s~< KK !!(+ [[ %F LL!!(+$L7-lFCK OO   rc#K|xsi}|j5t|}d|_|xr|j|dddy#1swYyxYww)Nr+)as_cwdr script_nameparse_config_files)r0kwargs_initialparsedists rget_distr?>sV#)rN N+% +$))+ sA+A  A AActjt5tdidt }|j dddy#1swYyxYw)NF)pytestraisesNotImplementedErrorrrparsers)handlers rtest_parsers_implementedrFJs= * +"4UDF;s #AAceZdZdZdZdZy)TestConfigurationReaderct|d\}}tt|}|dddk(sJ|ddddgk(sJ|dd d d gk(sJy) NzX[metadata] version = 10.1.1 keywords = one, two [options] scripts = bin/a.py, bin/b.py metadataversion10.1.1keywordsonetwooptionsscriptszbin/a.pyzbin/b.py)r7r strselfr0_r5 config_dicts r test_basicz"TestConfigurationReader.test_basicQsy  - 6)V5 :&y1X===:&z2uenDDD9%i0Z4LLLLrctjt5tt |j ddddy#1swYyxYw)Nr,)rArBrr rRr!rTr0s rtest_no_configz&TestConfigurationReader.test_no_config`s: ]]- . > s6;;{#;< = > > >s $AAc"t|d\}}tjt5t t |dddt t |d}|ddddgk(sJd|dvsJ|j y#1swYHxYw) Nz<[metadata] version = attr: none.VERSION keywords = one, two T)ignore_option_errorsrJrMrNrOrK)r7rArB ImportErrorr rRremoverSs rtest_ignore_errorsz*TestConfigurationReader.test_ignore_errorsds  M 6]]; ' , s6{ + ,)V4P :&z2uenDDD J 7777  , ,s BBN)rrrrWrZr_rrrrHrHPs M> rrHceZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZej0j3ddedddifdedddifgdZy) TestMetadatact|d|jdjdddi}t||5}|j}|j dk(sJ|j dk(sJ|jdk(sJ|jdk(sJ|jd d gk(sJ|jdk(sJ|jd k(sJ|jd d gk(sJ|jdk(sJ|jdk(sJ dddy#1swYyxYw)Na-[metadata] version = 10.1.1 description = Some description long_description_content_type = text/something long_description = file: README name = fake_name keywords = one, two provides = package, package.sub license = otherlic download_url = http://test.test.com/test/ maintainer_email = test@test.com READMEreadme contents line2licensezBSD 3-Clause LicenserLzSome descriptiontext/somethingpackagez package.sub fake_namerNrOhttp://test.test.com/test/ test@test.com)r7r!r"r?rJrK descriptionlong_description_content_typelong_descriptionprovidesrer#rM download_urlmaintainer_email)rTr0 meta_initialr>rJs rrWzTestMetadata.test_basicus?  1   H##$<= - fl + @t}}H##x/ //''+== ==99=MM MM,,0HH HH$$M(BB BB##'== ====K/ //$$6 66((,HH HH,,? ?? @ @ @s B;DD ct|tdt|5}|j}|jdk(sJ|j dk(sJ|j dk(sJ dddy#1swYyxYw)Nzr [metadata] name=foo version=0.0.1 license=Apache 2.0 fooz0.0.1z Apache 2.0)r7rr?rJr#rKrerTr0r>rJs rtest_license_cfgzTestMetadata.test_license_cfgs~    f  4}}H==E) ))##w. ..##|3 33  4 4 4s AA++A4ct|d|jdjd|jdjdt|5}|jj dk(sJ dddy#1swYyxYw)Nz=[metadata] long_description = file: README.rst, CHANGES.rst z README.rstrdz CHANGES.rstzchangelog contents and stuffz2readme contents line2 changelog contents and stuff)r7r!r"r?rJrmrTr0r>s rtest_file_mixedzTestMetadata.test_file_mixeds  N  L!''(@A M"(()HI f  ==11G    s A>>BcF|jd|jdd}|jdt|dt|d5}t j t 5|jddddddy#1swYxYw#1swYyxYw) Nrcdepth1depth2T)dirz1[metadata] long_description = file: ../../README Fr=)ensurer!r7r?rArBrr;)rTr0projectr>s rtest_file_sandboxedz TestMetadata.test_file_sandboxeds h++h14 OP gU + *t34 *'') * * * * * * *s$B)B :B B BB c(t|dt|5}|j}|jdk(sJ|jdk(sJ|j dk(sJ|j ddgk(sJ|jddgk(sJ dddy#1swYyxYw) Nz[metadata] author_email = test@test.com home_page = http://test.test.com/test/ summary = Short summary platform = a, b classifier = Framework :: Django Programming Language :: Python :: 3.5 rjriz Short summaryabFramework :: Django%Programming Language :: Python :: 3.5)r7r?rJ author_emailurlrk platforms classifiersrts r test_aliaseszTestMetadata.test_aliasess  8 f  }}H((O; ;;<<#?? ??''?: ::%%#s3 33''%7,    s A&BBct|dt|5}|j}|jddgk(sJ|jddgk(sJ dddy#1swYyxYw)Nz[metadata] name = fake_name keywords = one two classifiers = Framework :: Django Programming Language :: Python :: 3.5 rNrOrr)r7r?rJrMrrts rtest_multilinezTestMetadata.test_multilinesw  8 f  }}H$$6 66''%7,    s 3AAct|dt|5}|j}|jdddk(sJ dddy#1swYyxYw)Nzf[metadata] project_urls = Link One = https://example.com/one/ Link Two = https://example.com/two/ https://example.com/one/https://example.com/two/zLink OnezLink Two)r7r?rJ project_urlsrts r test_dictzTestMetadata.test_dicts_  6 f  }}H((66-    s !AA cHt|d\}}|jd}|jdjd|jdjd|jd}|jdjd|jdjdt |5}|j j d k(sJ ddd|jd t |5}|j j d k(sJ ddd|jd t |5}|j j d k(sJ ddd|jdt |5}|j j dk(sJ ddd|jdt |5}|j j dk(sJ dddy#1swYxYw#1swYxYw#1swYxYw#1swYpxYw#1swYyxYw)Nz0[metadata] version = attr: fake_package.VERSION subpkg_arrzmod.pyzVERSION = (2016, 11, 26)subpkg_bz2import third_party_module VERSION = (2016, 11, 26)1.2.3z4[metadata] version = attr: fake_package.get_version z 3.4.5.devz6[metadata] version = attr: fake_package.VERSION_MAJOR 1z=[metadata] version = attr: fake_package.subpkg_a.mod.VERSION z 2016.11.26z=[metadata] version = attr: fake_package.subpkg_b.mod.VERSION )r7r r!r"r?rJrK)rTr0r6r5sub_asub_br>s r test_versionzTestMetadata.test_versions& H  V!!*- =!''+ 8""#=>!!*- =!''+ 8"" A f  4==((G3 33 4  MN f  8==((K7 77 8  OP f  0==((C/ // 0  VW f  9==((L8 88 9  VW f  9==((L8 88 9 9! 4 4 8 8 0 0 9 9 9 9s<=G'>G4?HH H'G14G=H  HH!ct|d|jddjdt|5}|jj dk(sJ ddd|jddjdt jt5t|5}|jj ddddddy#1swYwxYw#1swYxYw#1swYyxYw)Nz4[metadata] version = file: fake_package/version.txt fake_packagez version.txtz1.2.3 rz 1.2.3 4.5.6 ) r7r!r"r?rJrKrArBrrws rtest_version_filezTestMetadata.test_version_file#sQR NM288C f  4==((G3 33 4  NM2889IJ ]]/ 0 &&! &T %% & & &  4 4  & & & &s/C  C$$C;C$ CC! C$$C-ct|ddt|5}|jjdk(sJ dddy#1swYyxYw)NzY[metadata] version = attr: fake_package_simple.VERSION [options] package_dir = = src zsrc/fake_package_simpler4rr7r?rJrKrws r$test_version_with_package_dir_simplez1TestMetadata.test_version_with_package_dir_simple/sP   3 f  4==((G3 33 4 4 4 AA ct|ddt|5}|jjdk(sJ dddy#1swYyxYw)Nzr[metadata] version = attr: fake_package_rename.VERSION [options] package_dir = fake_package_rename = fake_dir fake_dirrrrrws r$test_version_with_package_dir_renamez1TestMetadata.test_version_with_package_dir_rename=sP  3 $ f  4==((G3 33 4 4 4rct|ddt|5}|jjdk(sJ dddy#1swYyxYw)Nzx[metadata] version = attr: fake_package_complex.VERSION [options] package_dir = fake_package_complex = src/fake_dir z src/fake_dirrrrrws r%test_version_with_package_dir_complexz2TestMetadata.test_version_with_package_dir_complexKsP  8 ( f  4==((G3 33 4 4 4rct|dt|d5}|jdddy#1swYyxYw)Nz+[metadata] name = fake_name unknown = some Fr})r7r?r;rws rtest_unknown_meta_itemz#TestMetadata.test_unknown_meta_itemYs:IJ fE * &d  # # % & & &s4=ct|dt|d5}tjt5|j ddddddy#1swYxYw#1swYyxYw)Nz[metadata.some] key = val Fr}r7r?rArBrr;rws rtest_usupported_sectionz$TestMetadata.test_usupported_section^sa78 fE * *d34 *'') * * * * * * *"A"AA"A A""A+ctgd}t|d\}}|jdjdt |5}t|j j |k(sJ ddd|jdt |5}t|j j |k(sJ dddy#1swYTxYw#1swYyxYw)N)rz#Programming Language :: Python :: 3rz+[metadata] classifiers = file: classifiers rz^Framework :: Django Programming Language :: Python :: 3 Programming Language :: Python :: 3.5 z[metadata] classifiers = Framework :: Django Programming Language :: Python :: 3 Programming Language :: Python :: 3.5 )setr7r!r"r?rJr)rTr0expectedrUr5r>s rtest_classifierszTestMetadata.test_classifiersds  V%TU 6 M"(( 6 f  >t}}001X= == >   : f  >t}}001X= == > > > > > >s%C%C C  Cct|dtjtj5t |5 ddddddy#1swYxYw#1swYyxYw)Nz%[metadata] description = %(message)s )r7rArB configparserInterpolationMissingOptionErrorr?rYs rtest_interpolationzTestMetadata.test_interpolationsYBC ]]<GG H &!        s! AAAA AA$cbt|ddt|5 dddy#1swYyxYw)Nu$[metadata] description = éàïôñ utf-8r3r7r?rYs rtest_non_ascii_1zTestMetadata.test_non_ascii_1s/AGT f      s%.c^t|dt|5 dddy#1swYyxYw)Nz # -*- coding: invalid rrYs rtest_non_ascii_3zTestMetadata.test_non_ascii_3s-45 f      s#,ct|ddt|5}|jjdk(sJ dddy#1swYyxYw)Nu8# -*- coding: utf-8 [metadata] description = éàïôñ rru éàïôñ)r7r?rJrkrws rtest_non_ascii_4zTestMetadata.test_non_ascii_4sL  I f  ===,, < << = = =rct|ddtjt5t |5 ddddddy#1swYxYw#1swYyxYw)z= Config files encoded not in UTF-8 will fail uJ# vim: set fileencoding=iso-8859-15 : [metadata] description = éàïôñ z iso-8859-15rN)r7rArBUnicodeDecodeErrorr?rYs r test_not_utf8zTestMetadata.test_not_utf8s^   [" ]]- . &!        s! AAAA AA) error_msgr5invalidzCInvalid dash-separated key 'author-email' in 'metadata' (setup.cfg)z [metadata] author-email = test@test.com maintainer_email = foo@foo.com z author-emailrjz6Invalid uppercase key 'Name' in 'metadata' (setup.cfg)z [metadata] Name = foo description = Some description Namersct||tjtt j |5t |j}ddd|jdj|jD]@\}}|jddj}tj||k(r@Jy#1swY|xYw)Nmatchr,-rU)r7rAwarnsr reescaper? __enter__r!r^itemsreplacelowergetattrrJ) rTr0rr5rr>fieldvalueattrs r*test_invalid_options_previously_deprecatedz7TestMetadata.test_invalid_options_previously_deprecatedsB  \\6bii >R S 0F#--/D 0  K '')#MMO 9LE5==c*002D4==$/58 88 9  0 0s CCN)rrrrWrurxrrrrrrrrrrrrrrrrrrAmark parametrizerrrrrrarats#@J4( *0(  9D & 4 4 4& * ><   =  [[*V 1 I  69769rraceZdZdZdZdZdZdZdZdZ dZ e jjd gd d Ze jjd gd d Ze jjd gde jj!ddZdZdZdZdZdZdZdZdZdZdZy) TestOptionscNt|dtjtd}|5t |5}|j sJ|j sJ|jdddk(sJ|jddgk(sJ|jd d gk(sJ|jd d gk(sJ|jd dgk(sJ|jgdk(sJ|jgdk(sJ|jdk(sJ|jddgk(sJ ddddddy#1swYxYw#1swYyxYw)Na[options] zip_safe = True include_package_data = yes package_dir = b=c, =src packages = pack_a, pack_b.subpack namespace_packages = pack1, pack2 scripts = bin/one.py, bin/two.py eager_resources = bin/one.py, bin/two.py install_requires = docutils>=0.3; pack ==1.1, ==1.3; hey setup_requires = docutils>=0.3; spack ==1.1, ==1.3; there dependency_links = http://some.com/here/1, http://some.com/there/2 python_requires = >=1.0, !=2.8 py_modules = module1, module2 namespace_packagesrsrccrrpack_apack_b.subpackpack1pack2 bin/one.py bin/two.pyhttp://some.com/here/1http://some.com/there/2 docutils>=0.3pack==1.1,==1.3heyrzspack ==1.1, ==1.3therez >=1.0, !=2.8module1module2)r7rArr r?zip_safeinclude_package_datar6packagesrrQdependency_linksinstall_requiressetup_requirespython_requires py_modulesrTr0deprecr>s rrWzTestOptions.test_basicsf  . ":BVW  =Xf% === =,, ,,##E'<< <<==X/?$@@ @@**w.@@ @@<9 99??y)&<< <<- = = = = = =s# DCD>DD DD$ct|dtjtd}|5t |5}|j dddk(sJ|j ddgk(sJ|jd d gk(sJ|jd d gk(sJ|jd dgk(sJ|jgdk(sJ|jgdk(sJ ddddddy#1swYxYw#1swYyxYw)Na[options] package_dir = b=c =src packages = pack_a pack_b.subpack namespace_packages = pack1 pack2 scripts = bin/one.py bin/two.py eager_resources = bin/one.py bin/two.py install_requires = docutils>=0.3 pack ==1.1, ==1.3 hey setup_requires = docutils>=0.3 spack ==1.1, ==1.3 there dependency_links = http://some.com/here/1 http://some.com/there/2 rrrrrrrrrrrrrrr) r7rArr r?r6rrrQrrrrs rrzTestOptions.test_multilines  * <:BVW  Xf% ##E'<< <<==X/?$@@ @@**w.@@ @@<CC CC$ct|dt|d5}tjt5|j ddddddy#1swYxYw#1swYyxYw)Nz[options] package_dir = a b Fr}rrws rtest_package_dir_failz!TestOptions.test_package_dir_fail4sa9: fE * *d34 *'') * * * * * * *rct|dt|5}|jddgdgdk(sJ|jddgdgdk(sJ dddy#1swYyxYw) Nz}[options.package_data] * = *.txt, *.rst hello = *.msg [options.exclude_package_data] * = fake1.txt, fake2.txt hello = *.dat z*.txtz*.rstz*.msg)rhelloz fake1.txtz fake2.txtz*.dat)r7r? package_dataexclude_package_datarws rtest_package_datazTestOptions.test_package_data:s   f  $$g&!) ,, +.!1     s /AAct|dt|5}|jdgk(sJ dddy#1swYyxYw)Nptions] packages = find: r)r7r?rrws r test_packageszTestOptions.test_packagesPsA89 f  5==^$44 44 5 5 5s5>ct|d\}}td|td|t|5}t|jtgdk(sJ ddd|j dt|5}|jdgk(sJ ddd|j dt|5}t|jtdd gk(sJ dddy#1swYxYw#1swYaxYw#1swYyxYw) Nrsub_onesub_two)rfake_package.sub_twofake_package.sub_onezi[options] packages = find: [options.packages.find] where = . include = fake_package.sub_one two rzW[options] packages = find: [options.packages.find] exclude = fake_package.sub_one rrr7r)r?rrr"rTr0r&r5r>s rtest_find_directivezTestOptions.test_find_directiveVs&v/NO VK0K0 f  t}}%.*      f  ===%;$<< << =   ) f  Wt}}%n>T-U)VV VV W W9  " = = W Ws#&C&>C26&C>&C/2C;>Dct|d\}}td|td|dt|5}t|jhdk(sJ ddd|j dt|5}|jdgk(sJ ddd|j d t|5}t|jd d hk(sJ dddy#1swYxYw#1swYXxYw#1swYyxYw) Nz%[options] packages = find_namespace: rrT)r%>rrrzs[options] packages = find_namespace: [options.packages.find] where = . include = fake_package.sub_one two rza[options] packages = find_namespace: [options.packages.find] exclude = fake_package.sub_one rrrr s rtest_find_namespace_directivez)TestOptions.test_find_namespace_directive{s& =  V K0KD9 f  t}}%*      f  ===%;$<< << =   ) f  Rt}}%.:P)QQ QQ R R9  " = = R Rs#C7C"/C.C"C+.C7ct|dt|5}|jddgddgdk(sJt|jj ddhk(sJ dddy#1swYyxYw) Nz_[options.extras_require] pdf = ReportLab>=1.2; RXP rest = docutils>=0.3 pack ==1.1, ==1.3 zReportLab>=1.2RXPrr)pdfrestrr)r7r?extras_requirerrJprovides_extrasrws rtest_extras_requirezTestOptions.test_extras_requires  $ f  I&&(%0(*;<+ t}}445%H HH  I I Is ?A!!A*r5)z5[options.extras_require] foo = bar;python_version<'3'z3[options.extras_require] foo = bar;os_name=='linux'z6[options.extras_require] foo = bar;python_version<'3' z4[options.extras_require] foo = bar;os_name=='linux' z3[options] install_requires = bar;python_version<'3'z1[options] install_requires = bar;os_name=='linux'z4[options] install_requires = bar;python_version<'3' z2[options] install_requires = bar;os_name=='linux' ct||d}tjt|5t |5} ddddddy#1swYxYw#1swYyxYwNzoOne of the parsed requirements in `(install_requires|extras_require.+)` looks like a valid environment marker.*r)r7rArBrr?rTr5r0rrUs r+test_raises_accidental_env_marker_misconfigz7TestOptions.test_raises_accidental_env_marker_misconfigse   6 ]]-U ; &! Q       ! AA A A AA)z3[options.extras_require] foo = bar;python_version<3z4[options.extras_require] foo = bar;python_version<3 z1[options] install_requires = bar;python_version<3z2[options] install_requires = bar;python_version<3 ct||d}tjt|5t |5} ddddddy#1swYxYw#1swYyxYwr)r7rArr r?rs r)test_warn_accidental_env_marker_misconfigz5TestOptions.test_warn_accidental_env_marker_misconfigse   6 \\6e D &! Q       r) z9[options.extras_require] foo = bar;python_version<'3'z4[options.extras_require] foo = bar;baz boo = xxx;yyyz:[options.extras_require] foo = bar;python_version<'3' z5[options.extras_require] foo = bar;baz boo = xxx;yyy z<[options.extras_require] foo = bar python_version<3 z7[options] install_requires = bar;python_version<'3'z2[options] install_requires = bar;baz boo = xxx;yyyz8[options] install_requires = bar;python_version<'3' z3[options] install_requires = bar;baz boo = xxx;yyy z:[options] install_requires = bar python_version<3 z.error::setuptools.SetuptoolsDeprecationWarningct||t|}t|5} dddt||k(sJy#1swYxYw)N)r7lenr?)rTr5r0recwarn num_warningsrUs r+test_nowarn_accidental_env_marker_misconfigz7TestOptions.test_nowarn_accidental_env_marker_misconfigsM"  7| f    7||+++  s >Act|dt|5}|jdgdgdk(sJ dddy#1swYyxYw)Nz2[options.extras_require] foo-a = foo foo_b = test rstest)zfoo-afoo_b)r7r?rrws r"test_dash_preserved_extras_requirez.TestOptions.test_dash_preserved_extras_requiresMPQ f  P&&UGvh*OO OO P P Ps 9Ac\t|d\}}t|5}|jddgdgdk(sJ dddd}|jdj ||j dt|5}|j|k(sJ dddy#1swYcxYw#1swYyxYw) Nz[options.entry_points] group1 = point1 = pack.module:func, .point2 = pack.module2:func_rest [rest] group2 = point3 = pack.module:func2 point1 = pack.module:func'.point2 = pack.module2:func_rest [rest]point3 = pack.module:func2)group1group2zN[blogtool.parsers] .rst = some.nested.module:SomeClass.some_classmethod[reST] entry_pointsz,[options] entry_points = file: entry_points )r7r?r*r!r")rTr0rUr5r>rs rtest_entry_pointszTestOptions.test_entry_pointss  4 6f  $$/=88 )   K   N#))(3  EF f  1$$0 00 1 1'  & 1 1sB:B"B"B+ct|dt|5}|jddgdgdk(sJ dddy#1swYyxYw)Nz[options.entry_points] GROUP1 = point1 = pack.module:func, .point2 = pack.module2:func_rest [rest] group2 = point3 = pack.module:func2 r%r&r')GROUP1r))r7r?r*rws r test_case_sensitive_entry_pointsz,TestOptions.test_case_sensitive_entry_pointssc  4 f  $$/=88 )    s :Act|dt|5}dddgfdddgfg}t|jt|k(sJ dddy#1swYyxYw)NzQ[options.data_files] cfg = a/b.conf c/d.conf data = e/f.dat, g/h.dat cfga/b.confc/d.confdataze/f.datzg/h.dat)r7r?sorted data_filesrTr0r>rs rtest_data_fileszTestOptions.test_data_files,sr  ( f  ?Z01)Y/0H$//*fX.>> >>  ? ? ?s 0AAct|d|jdjd|jdjd|jdjd|jdjd|jdjd|jdjd|jd jd|jd jd|jd jdt|5}d d dgfdgdfdgdfdgdfg}t |j t |k(sJ dddy#1swYyxYw)Nz[options.data_files] cfg = a/b.conf c/d.conf data = *.dat icons = *.ico audio = *.wav sounds.db a.datrb.datc.data.icob.icoc.icobeep.wavboop.wav sounds.dbr0r1r2r3)r9r:r;icons)r<r=r>audio)r?r@rA)r7r!r"r?r4r5r6s rtest_data_files_globbyz"TestOptions.test_data_files_globby=sO     G""2& G""2& G""2& G""2& G""2& G""2& J%%b) J%%b) K &&r* f  ?Z014556?@ H $//*fX.>> >> ? ? ?s 8:E<<Fct|tdt|5}|jdddy#1swYyxYw)NzE [options] python_requires=>=2.7 r7rr?r;rws rtest_python_requires_simplez'TestOptions.test_python_requires_simple`G    f  &  # # % & & & ;Act|tdt|5}|jdddy#1swYyxYw)NzM [options] python_requires=>=2.7,!=3.0.* rFrws rtest_python_requires_compoundz)TestOptions.test_python_requires_compoundmrHrIct|tdtjt5t |5}|j ddddddy#1swYxYw#1swYyxYw)NzG [options] python_requires=invalid )r7rrArB Exceptionr?r;rws rtest_python_requires_invalidz(TestOptions.test_python_requires_invalidzsm    ]]9 % *&! *T'') * * * * * * *s" A)A A)A& "A))A2ct|d}|jjdd|jddd}t |t j |t|5}|jd}|jd k(sJ|jd k(sJ|jt j|sJ dddy#1swYyxYw) Nzsrc/custom_build.pyT)parentsexist_okzBfrom distutils.core import Command class CustomCmd(Command): pass rrzi [options] cmdclass = customcmd = custom_build.CustomCmd customcmd CustomCmd custom_build) rparentr write_textr7inspectcleandocr?cmdclassrrsamefilegetfile)rTr0 module_pathr1r>rYs r test_cmdclasszTestOptions.test_cmdclasss6#89    = R   )))45 f  C}}[1H$$ 3 33&&.8 88''(AB BB  C C Cs )AC  Cc<t|td|jdjd|jdjdt |5}|j dgk(sJ|j ddgik(sJ dddy#1swYyxYw)Nz [options] install_requires = file:requirements.txt [options.extras_require] colors = file:requirements-extra.txt zrequirements.txtz docutils>=0.3 zrequirements-extra.txtcoloramarcolors)r7rr!r"r?rrrws rtest_requirements_filez"TestOptions.test_requirements_files      &'--.CD ,-33J? f  C((_,== ==&&8j\*BB BB C C Cs !'BBN)rrrrWrrrrr r rrArrrrfilterwarningsrr#r+r.r7rDrGrKrNr]rarrrrrs)=V2h* ,5 #WJ%RNI" [[    [[  [[  [[ PQ,R ,P 1>$?"!?F & & *C*CrrcHeZdZdZej edddZy)TestExternalSetterscft||d|j_ddd|j_y)Nrfrrr)saved_dist_initrJrlr)rTr>attrss r_fake_distribution_initz+TestExternalSetters._fake_distribution_inits.e$6F 332&  "r__init__T)autospecc|j|_tdddii}|jjdk(sJ|jj dddk(sJy) Nrwill_beignored)rgrfrrr)rh side_effectr rJrlr)rTmock_parent_initr0r>s rtest_external_settersz)TestExternalSetters.test_external_settersse'+'C'C$>Iy3I"JK}}::>NNNN}}))22.    rN)rrrrhrobjectr rprrrrdrds* U\\-d;  <  rrd)F)Nasciir)NT)&r contextlibrWrpathlibr unittest.mockrrrApackaging.requirementsrsetuptools.config.setupcfgrrr setuptools.distr r setuptools.warningsr textwraprdistutils.errorsrrrr)r7contextmanagerr?rFrHrarrirfrdrrrr}s % 5PP7<E}V, "FT2  !!H]9]9@ [C[C| ((  r