a 4êdg´Sã@stddlZddlZddlZddlZddlZddlZddlZddlZddlm Z Gdd„dej ƒZ Gdd„dƒZ Gdd„de ƒZ Gd d „d e ejƒZGd d „d e ejƒZGd d„de ejƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„de ejƒZGdd„de ejƒZGdd„deƒZGdd„de ejƒZGdd„de ejƒZGdd „d eƒZGd!d"„d"e ejƒZGd#d$„d$ejƒZGd%d&„d&eƒZGd'd(„d(e ejƒZGd)d*„d*e ejƒZGd+d,„d,ƒZ d-d.„Z!Gd/d0„d0ejƒZ"Gd1d2„d2ejƒZ#Gd3d4„d4ejƒZ$Gd5d6„d6ejƒZ%Gd7d8„d8ejƒZ&Gd9d:„d:e ejƒZ'Gd;d<„d„d>ejƒZ)e*d?krpe +¡dS)@éN)Úsupportc@s@eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „ZeZ d S)Ú SortedDictcCst|j ¡ƒS©N)ÚsortedÚdataÚitems©Úself©r ú2/usr/local/lib/python3.9/test/test_configparser.pyrszSortedDict.itemscCst|j ¡ƒSr)rrÚkeysrr r r r szSortedDict.keyscCsdd„| ¡DƒS)NcSsg|] }|d‘qS)ér )Ú.0Úir r r Ú óz%SortedDict.values..)rrr r r ÚvaluesszSortedDict.valuescCs t| ¡ƒSr)Úiterrrr r r Ú iteritemsszSortedDict.iteritemscCs t| ¡ƒSr)rr rr r r ÚiterkeysszSortedDict.iterkeyscCs t| ¡ƒSr)rrrr r r Ú itervaluesszSortedDict.itervaluesN) Ú__name__Ú __module__Ú __qualname__rr rrrrÚ__iter__r r r r r src@sJeZdZdZdZdZdZdZej Z dZ ej Z ejZd dd„Zd dd „ZdS) ÚCfgParserTestCaseClassF)ú=ú:)ú;ú#TNc CsBt||j|j|j|j|j|j|j|j|j d }|j fi|¤Ž}|S)N) ÚdefaultsÚallow_no_valueÚ delimitersÚcomment_prefixesÚinline_comment_prefixesÚempty_lines_in_valuesÚ dict_typeÚstrictÚdefault_sectionÚ interpolation) Údictr!r"r#r$r%r&r'r(r)Ú config_class)r r Z argumentsÚinstancer r r Ú newconfig/sö z CfgParserTestCaseClass.newconfigcCs| |¡}| |¡|Sr)r-Ú read_string)r Ústringr Úcfr r r Ú fromstring?s  z!CfgParserTestCaseClass.fromstring)N)N)rrrr!r"r#r$r%Ú configparserÚ _default_dictr&r'Z DEFAULTSECTr(Ú_UNSETr)r-r1r r r r r$s rc@s¼eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-S).Ú BasicTestCasec Cs gd¢}|jr| d¡| ¡ddg}| ¡}| ¡|j}|||ƒ| d¡}| ¡|||ƒdd„|Dƒ}| ¡| |j¡| ¡|||ƒ|d ¡}tt|ƒƒ}|||ƒ| ¡}tt|ƒƒ}| t |ƒt |ƒ¡|D]\}}|||j ƒqæ||  ¡||jƒ||  dd ¡d ƒ||  d d ¡d ƒ||  dd ¡d ƒ||  dd¡dƒ||  dd ¡dƒ||  dd¡dƒ||  dd¡dƒ||  dd¡dƒ||  dd¡dƒ||  dd¡dƒ| | dd¡d¡||  dd¡dƒ|| dd¡dƒ||  dd ¡d!ƒ|jr(||  dd"¡dƒ||j dd dd#d ƒ||j dd d did$dƒ| tj¡|  d%d ¡Wdƒn1sˆ0Y| tj¡|  dd&¡Wdƒn1sÂ0Y||j d%d dd#dƒ||j dd&dd#dƒ||j d d dd#d ƒ||j d'd dd#dƒ||j ddd(d#dƒ||j dd)d(d#d(ƒ||j dd)d*d#d*ƒ| tj¡|  dd)¡Wdƒn1s–0Y| |jddd+d#d¡| |jdd,d+d#d+¡||jdd,d-d#d-ƒ| tj¡| dd,¡Wdƒn1s0Y||jddd.d#dƒ||jdd/d0d#d0ƒ||jdd/d.d#d.ƒ| tj¡| dd/¡Wdƒn1s’0Y||jd1dd.d#d.ƒ|jræ||j dd"dd#dƒ||j dd2dd#dƒ||dd d ƒ||d d d ƒ|d}||j dƒ| |j|¡| t¡d3|_ Wdƒn1sT0Y| t¡d4|_Wdƒn1s†0Y||d d ƒ||ddƒ||dd dƒ||dddƒ||dddƒ||dddƒ||d5d d6ƒ|jr ||dd"dƒ||d  d d¡d ƒ||dj d dd#d ƒ||dj d d did$dƒ| t¡|d%d Wdƒn1s˜0Y| t¡|dd&Wdƒn1sÐ0Y| t¡"|d%j d dd#Wdƒn1s0Y||d  d&d¡dƒ||dj d&dd#dƒ||d  d&¡dƒ||d   d d¡d ƒ||d j d dd#d ƒ| t¡ |d'  d d¡Wdƒn1sº0Y||d  dd(¡dƒ||dj dd(d#dƒ||d  d)d(¡d(ƒ||dj d)d(d#d(ƒ||d  d)d*¡d*ƒ||dj d)d*d#d*ƒ||d  d)¡dƒ| |d dd+¡d¡| |djdd+d#d¡| |d d,d+¡d+¡| |djd,d+d#d+¡||d d,d-¡d-ƒ||djd,d-d#d-ƒ||d d,¡dƒ||d dd.¡dƒ||djdd.d#dƒ||d d/d0¡d0ƒ||djd/d0d#d0ƒ||d d/d.¡d.ƒ||djd/d.d#d.ƒ||d d/¡dƒ|j r ||d  d"d¡dƒ||dj d"dd#dƒ||d  d2d¡dƒ||dj d2dd#dƒd7||jd8<d9||jd:<| | d¡¡| | dd¡¡| | d¡¡| | |j¡¡| | dd ¡d;¡| | dd ¡d<¡| | dd ¡d=¡| | dd8¡¡| | dd8¡¡| | |jd8¡¡| | dd8¡¡| | |jd8¡¡| tj¡}| d>d ¡Wdƒn1 s40Y| |jjd?¡||  d5d ¡d6ƒ|d=| d|v¡| t¡|d=Wdƒn1 sœ0Y| t ¡||j=Wdƒn1 sÐ0Y|d d =| d |d v¡| t¡|d d =Wdƒn1 s"0Y| d:|d v¡| t¡|d d:=Wdƒn1 sj0Y||jd:=| d:|d v¡| t¡||jd:=Wdƒn1 sÀ0Y| t¡|d>d =Wdƒn1 sö0YdS)@N) ú Commented BarúFoo BarúInternationalized Stuffú Long LineúSection\with$weird%characters[ ÚSpacesú Spacey BarúSpacey Bar From The BeginningÚTypesÚNoValue)ÚbazÚqwe)ÚfooÚbar3r=cSsg|]}|‘qSr r ©rÚsectionr r r rbrz,BasicTestCase.basic_test..r7rBÚbar1r<Úbar2rCr@rAr6Úbar4r;úkey with spacesÚvalueúanother with spacesúsplat!r>Úinté*Z42Úfloatç)\Âõ(Ü?z0.44ÚbooleanFZ123ústrange but acceptableúoption-without-value©Úfallback©ÚvarszNo Such Foo Barz no-such-foozNo Such Spacey Baréz no-such-intZ18gz no-such-floatz0.0Tzno-such-booleanÚyesz No Such Typeszno-such-option-without-valuezName is read-onlyzParser is read-onlyr9ú7this line is much, much longer than my editor likes it.Ú1Z this_valueÚ2Z that_valuez4remove_option() failed to report existence of optionz'remove_option() failed to remove optionzIremove_option() failed to report non-existence of option that was removedúNo Such Section)r])!r!ÚappendÚsortÚsectionsÚ assertEqualrr(rÚlistÚlenÚnamer ÚgetÚgetintÚassertAlmostEqualÚgetfloatÚ getbooleanÚ assertRaisesr2ÚNoSectionErrorÚ NoOptionErrorÚassertIsÚparserÚAttributeErrorÚKeyErrorÚ assertTrueZremove_sectionÚ assertFalseÚ has_optionÚ remove_optionÚ exceptionÚargsÚ ValueError) r r0ÚEÚFÚLÚeqrdrEÚcmr r r Ú basic_testGsœ            ,,, ÿÿ ÿÿ,ÿ, ÿÿ  & & ÿ , , 2 0ÿÿÿÿÿ ÿÿÿÿÿ, ÿ & (  * *  , zBasicTestCase.basic_testcCsöd |j|j¡}|jr|d7}| |¡}| |¡|jrÂ| tj ¡(|  t   d |j¡¡¡Wdƒn1sr0Y| tj ¡(|  t   d |j¡¡¡Wdƒqò1s¶0Yn0|  t   d |j¡¡¡|  t   d |j¡¡¡dS)NaI[Foo Bar] foo{0[0]}bar1 [Spacey Bar] foo {0[0]} bar2 [Spacey Bar From The Beginning] foo {0[0]} bar3 baz {0[0]} qwe [Commented Bar] foo{0[1]} bar4 {1[1]} comment baz{0[0]}qwe {1[0]}another one [Long Line] foo{0[1]} this line is much, much longer than my editor likes it. [Section\with$weird%characters[ ] [Internationalized Stuff] foo[bg]{0[1]} Bulgarian foo{0[0]}Default foo[en]{0[0]}English foo[de]{0[0]}Deutsch [Spaces] key with spaces {0[1]} value another with spaces {0[0]} splat! [Types] int {0[1]} 42 float {0[0]} 0.44 boolean {0[0]} NO 123 {0[1]} strange but acceptable z[NoValue] option-without-value z¡ [Duplicate Options Here] option {0[0]} with a value option {0[1]} with another value zÄ [And Now For Something] completely different {0[0]} True [And Now For Something] the larch {0[1]} 1 z‘ [Duplicate Options Here] option {0[0]} with a value option {0[1]} with another value z° [And Now For Something] completely different {0[0]} True [And Now For Something] the larch {0[1]} 1 )Úformatr"r#r!r1r}r'rjr2ÚDuplicateOptionErrorr.ÚtextwrapÚdedentÚDuplicateSectionError©r Ú config_stringr0r r r Ú test_basic%s0äÿ   ü& û( ü ûzBasicTestCase.test_basicc Cs>ddiddidddœdddœddiid d d d d œdddœdddddœdœ }|jrb| dddii¡| ¡}| |¡| |¡|jr| tj¡(| ddiddidœ¡Wdƒn1sÀ0Y| tj ¡$| dddd œi¡Wdƒn1s0Yn,| ddiddid!œ¡| dddd œi¡dS)"NrBrFrGrCrA)rBr@rHrZZ BulgarianZDefaultZEnglishZDeutsch)zfoo[bg]rBzfoo[en]zfoo[de]rJrL)rIrKrNrPFrR)rMrOrQé{) r7r<r=r6r9r:r8r;r>r?rSÚkeyZkey2Úvalue2)r[r zDuplicate Options Herez with a valuezwith another value)ÚoptionZOPTION)rEZSECTION) r!Úupdater-Ú read_dictr}r'rjr2r‚r)r Úconfigr0r r r Útest_basic_from_dictfsvÿÿþþÿüþüá&ÿÿ  þ&þÿ(þþÿz"BasicTestCase.test_basic_from_dictcCs¶| ¡}| d¡| d¡| d¡| ¡}| ¡|j}||gd¢ƒ| ddd¡|| d¡dgƒ|| dd¡ddƒ| t j ¡| ddd¡Wdƒn1s®0Y|  |  dd¡¡|  |  dd¡¡| ddd ¡d D]}|  |  d|¡d ¡qî|| d¡d gƒ|| d¡dgƒ| dd¡|| d¡gƒ| d  |jd¡¡}|| d¡dgƒ|| dd¡dƒ|jd |jd¡ddid}|  |  dd¡¡dS)NÚAÚaÚB)rŽrrrJÚbú@could not locate option, expecting case-insensitive option namesúA-Bú A-B value©úa-bzA-bza-Br“ú9has_option() returned false for option which should existr–ú3[MySection] Option{} first line second line rÚ MySectionr‰ÚOptionúfirst line second lineú[section] nekey{}nevalue r‡©r rEÚKey)r-Ú add_sectionr`r_raÚsetÚoptionsrerjr2rkrqrsrrrtr1r~r")r r0rzr{Úoptr r r Útest_case_sensitivity¯sP   ÿ, þ ÿÿÿþz#BasicTestCase.test_case_sensitivitycCs¬| ¡}i|d<ddi|d<i|d<dd„|Dƒ}| ¡|j}|j}||tdd|jdgƒƒ||d ¡dhƒ||ddddƒ| t¡d|dd<Wdƒn1s²0Y|  d|dv¡d |dd <d D]}|  ||dvd ¡qÞ||d ¡d hƒ||d ¡dhƒ|dd=||d ¡iƒ|  d  |j d¡¡}||d ¡dhƒ||dddƒ|j d  |j d¡ddid}|  d|dv¡dS)NrŽrrJrcSsg|]}|‘qSr r rDr r r rÞrzFBasicTestCase.test_case_sensitivity_mapping_access..r‘r’r”r“r•r—r–r˜rr™r‰ršr›rœr‡rržrE) r-r_raZassertCountEqualrr(r rjrprqr1r~r")r r0rzr{Zelem_eqr¢r r r Ú$test_case_sensitivity_mapping_accessÙsN ÿ *  þ ÿÿÿþz2BasicTestCase.test_case_sensitivity_mapping_accesscCsP| ddi¡}| | |jd¡dd¡| ddi¡}| | |jd¡dd¡dS)NrBÚBarÚFoor’zr r©z[Foo] wrong-indent )rªú cfgparser.3rz. # INI with as many tricky parts as possible úutf-8©Úencoding) r-Ú parse_errorr2Ú ParsingErrorr~r"ÚMissingSectionHeaderErrorrarvr!rÚfindfileÚopen)r r0ÚeÚtrickyÚerrorÚexpectedÚfr r r Útest_parse_errors s> ÿÿ ÿÿ ÿ ÿ ÿ,zBasicTestCase.test_parse_errorscCsTt|dƒr|}n t |¡}| |¡}| |¡Wdƒn1sD0Y|jS)NÚreadline)ÚhasattrÚioÚStringIOrjÚ read_fileru)r r0ÚexcÚsrcÚsior|r r r r¯'s    (zBasicTestCase.parse_errorcCsê| ¡}| | ¡gd¡| | d¡d¡| tj¡| d¡Wdƒn1sX0Y| tj¡|  ddd¡Wdƒn1s’0Y|  |tjdd¡}| |j d¡|  d¡|  |tj dd¡}| |j d¡dS) Nz0new ConfigParser should have no defined sectionsr¦z5new ConfigParser should have no acknowledged sectionsrBÚbarrJ)rB)rÂrB)r-rar`rrZ has_sectionrjr2rkr¡r Ú get_errorrvrŸrl©r r0r´r r r Útest_query_errors0s  ÿ ÿ(, zBasicTestCase.test_query_errorsc CsTz| ||¡Wn(|y8}z|WYd}~Sd}~00| d|j|jf¡dS)Nzexpected exception type %s.%s)reZfailrr)r r0r¿rEr‰r´r r r rÃAs ÿzBasicTestCase.get_errorcCsn| dj|jdd¡}tddƒD]F}| | dd|¡¡| | dd|¡¡| t|jdd |¡q"dS) Nzä[BOOLTEST] T1{equals}1 T2{equals}TRUE T3{equals}True T4{equals}oN T5{equals}yes F1{equals}0 F2{equals}FALSE F3{equals}False F4{equals}oFF F5{equals}nO E1{equals}2 E2{equals}foo E3{equals}-1 E4{equals}0.1 E5{equals}FALSE AND MOREr©Úequalsr éZBOOLTESTzt%dzf%dze%d) r1r~r"Úrangerqrirrrjrw)r r0Úxr r r Ú test_booleanJsñÿ ÿzBasicTestCase.test_booleancCsP| ¡}| d¡| tj¡}| d¡Wdƒn1s>0Y|j}| t|ƒd¡| |jd¡|j rL| tj¡2}|j t   dj |jdd¡ddWdƒn1s¸0Y|j}| t|ƒd ¡| |jd ¡| tj¡$}| d d d dœi¡Wdƒn1s0Y|j}| t|ƒd¡| |jd¡dS)Nr¦zSection 'Foo' already exists)r¦NNzì [Foo] will this be added{equals}True [Bar] what about this{equals}True [Foo] oops{equals}this won't rrÆú ©ÚsourcezFWhile reading from '' [line 5]: section 'Foo' already exists)r¦rÌrÈr¥Úvalzis really `opt`)r¢ZOPTzIWhile reading from '': option 'opt' in section 'Bar' already exists)r¥r¢zN)r-rŸrjr2r‚ruraÚstrrvr'r.r€rr~r"rr‹)r r0r|r´r r r Útest_weird_errorscs, ( ùù$4zBasicTestCase.test_weird_errorscCsœdj|j|jd|jd}|jr(|d7}| |¡}dD]`}t ¡}|j||d|jd}|rhd |¡}dj||jd }|jr†|d 7}|  |  ¡|¡q6dS) Na8[Long Line] foo{0[0]} this line is much, much longer than my editor likes it. [{default_section}] foo{0[1]} another very long line [Long Line - With Comments!] test {0[1]} we {comment} can also {comment} place comments {comment} in multiline {comment} values r)Zcommentr(z![Valueless] option-without-value )TF)Úspace_around_delimitersz {} zÑ[{default_section}] foo{equals}another very long line [Long Line] foo{equals}this line is much, much longer than my editor likes it. [Long Line - With Comments!] test{equals}we also comments multiline )rÇr(z"[Valueless] option-without-value ) r~r"r#r(r!r1r¼r½ÚwriteraÚgetvalue)r r„r0rÒÚoutputÚ delimiterZ expect_stringr r r Ú test_write‚s4 ôÿÿ    òÿÿzBasicTestCase.test_writecCsˆ| dj|jdd¡}Gdd„dtƒ}| ddd¡| dd|dƒ¡| dd d¡| dd |dƒ¡| ddd¡| dd d¡dS) Nú[sect] option1{eq}foo r©r{c@s eZdZdS)z2BasicTestCase.test_set_string_types..mystrN)rrrr r r r Úmystr½srÚÚsectÚoption1ZsplatÚoption2)r1r~r"rÐr )r r0rÚr r r Útest_set_string_types¸sÿz#BasicTestCase.test_set_string_typescCsJ|jddkr| d¡t d¡}| ¡}| |dg¡}| ||g¡| | dd¡d¡| ¡}| |¡}| ||g¡| | dd¡d¡| ¡}| t  |¡¡}| ||g¡| | dd¡d¡| ¡}| t  |¡|g¡}| |||g¡| | dd¡d¡| ¡}| dg¡}| |g¡| ¡}| g¡}| |g¡dS) Nrrúincompatible formatú cfgparser.1únonexistent-filer7rBÚnewbar) r"ÚskipTestrr²r-ÚreadrareÚpathlibÚPath)r Zfile1r0Ú parsed_filesr r r Útest_read_returns_file_listÆs2      z)BasicTestCase.test_read_returns_file_listcCsŒ|jddkr| d¡t d¡ ¡}| ¡}| |¡}| ||g¡| ¡}| d¡}| |g¡| ¡}| |dg¡}| ||g¡dS)Nrrrßràsnonexistent-file)r"rãrr²Úencoder-rära)r Zfile1_bytestringr0rçr r r Ú0test_read_returns_file_list_with_bytestring_pathçs    z>BasicTestCase.test_read_returns_file_list_with_bytestring_pathcCs| dj|jdd¡S)Nah[Foo] bar{equals}something %(with1)s interpolation (1 step) bar9{equals}something %(with9)s lots of interpolation (9 steps) bar10{equals}something %(with10)s lots of interpolation (10 steps) bar11{equals}something %(with11)s lots of interpolation (11 steps) with11{equals}%(with10)s with10{equals}%(with9)s with9{equals}%(with8)s with8{equals}%(With7)s with7{equals}%(WITH6)s with6{equals}%(with5)s With5{equals}%(with4)s WITH4{equals}%(with3)s with3{equals}%(with2)s with2{equals}%(with1)s with1{equals}with [Mutual Recursion] foo{equals}%(bar)s bar{equals}%(foo)s [Interpolation Error] name{equals}%(reference)s rrÆ)r1r~r"rr r r Úget_interpolation_configùs éÿz&BasicTestCase.get_interpolation_configcCs~|jd |j¡ddid}t|jdddidƒ}| ¡| ||¡| tj ¡| d¡Wdƒn1sp0YdS) Nz [section] name {0[0]} %(value)s key{0[1]} |%(name)s| getdefault{0[1]} |%(default)s| Údefaultú rrErJrVzno such section) r1r~r"rbrr_rarjr2rk)r r·r0rzr r r Úcheck_items_configsûû z BasicTestCase.check_items_configcCsŒ|jd |j¡ddid}| | ¡dd¡| | ¡dd¡| | ¡dd¡| t¡| ¡Wdƒn1s~0YdS) Nú® [section1] name1 {0[0]} value1 [section2] name2 {0[0]} value2 [section3] name3 {0[0]} value3 rìrírrÚsection1Úsection2Úsection3)r1r~r"raÚpopitemrjrpr§r r r Ú test_popitem!sùù zBasicTestCase.test_popitemcCs | ddi¡}| | |jd¡dd¡dddœ|d<| | ¡dg¡| t|d ¡ƒhd £¡| ¡| t| ¡ƒtƒ¡| t||j ¡ƒdh¡dS) NrBr¥r¦r’Úvalue1rˆ)rÜrÝZzing>rÜrÝrB)r-rarer(r`r r Úclearr§r r r Ú test_clear0sþzBasicTestCase.test_clearcCsB|jd |j¡ddid}| t|d ¡ƒddh¡| t|d ¡ƒd dh¡| t|d  ¡ƒd dh¡| |ddd ¡| |dd d ¡| |d d d¡| | ¡gd¢¡ddi|d<| t|d ¡ƒddh¡| |ddd¡| d |d¡| | ¡gd¢¡i|d <| t|d  ¡ƒdh¡| d |d ¡| | ¡gd¢¡||j||j<|  t||j ¡ƒtƒ¡i||j<| t||j ¡ƒtƒ¡| t|d ¡ƒdh¡| t|d ¡ƒdh¡| t|d  ¡ƒtƒ¡| | ¡gd¢¡|d|d<| t|d ¡ƒdh¡dS)NrïZnameDZvalueDrrðZname1ÚnamedrñZname2ròZname3rõrˆZvalue3)rðrñròZname22Zvalue22) r1r~r"rar r r`Ú assertNotInr(ZassertNotEqualr§r r r Ú test_setitem<s>ùù   zBasicTestCase.test_setitemcCs|jr| d¡t d |jd¡¡}| ¡}| tj ¡|  |¡Wdƒn1sZ0Y|  |  dd¡d¡|  |ddd¡dS)Nz2if no_value is allowed, ParsingError is not raisedzC [DEFAULT] test {0} test invalidrZDEFAULTÚtest) r!rãr€rr~r"r-rjr2r°r.rare)r Úinvalidr0r r r Útest_invalid_multiline_valuebs ý(z*BasicTestCase.test_invalid_multiline_valueN)rrrr}r…rr£r¤r¨r¹r¯rÅrÃrËrÑr×rÞrèrêrërîrôr÷rúrýr r r r r5Es._AI*(   6!  &r5c@seZdZejZdZdS)ÚStrictTestCaseTN)rrrr2ÚRawConfigParserr+r'r r r r rþrsrþc@sReZdZejZdd„Zdd„Zdd„Zdd„Z d d „Z d d „Z d d„Z dd„Z dS)ÚConfigParserTestCasecCs’| ¡}|j}|| dd¡dƒ|| dd¡dƒ|| dd¡dƒ| |tjdd¡}|jtjkrr| |jd ¡nt |jtj ƒrŽ| |jd ¡dS) Nr¦rÂz%something with interpolation (1 step)Úbar9z.something with lots of interpolation (9 steps)Úbar10z/something with lots of interpolation (10 steps)Úbar11)rr¦ú5something %(with11)s lots of interpolation (11 steps)) rërarerÃr2ÚInterpolationDepthErrorr)r4rvÚ isinstanceÚLegacyInterpolation)r r0r{r´r r r Útest_interpolationzs ÿ ÿ z'ConfigParserTestCase.test_interpolationcCs€| ¡}| |tjdd¡}| |jd¡| |jd¡| |jd¡|jtj kr`| |j d¡nt |jtj ƒr|| |j d¡dS)NúInterpolation ErrorrdÚ reference)rdr z %(reference)sr ) rërÃr2ÚInterpolationMissingOptionErrorrar rEr‰r)r4rvrrrÄr r r Ú test_interpolation_missing_valueŠs ÿ z5ConfigParserTestCase.test_interpolation_missing_valuecCs| gd¢¡dS)N)©rìrí)Ú getdefaultz ||)r‡z|value|)rdrJ©rîrr r r Ú test_items˜szConfigParserTestCase.test_itemscCs–| dj|jdd¡}| | dd¡d¡|jtjkrN| | dd¡d¡nDt|jtj ƒr’|  t ¡| dd¡Wdƒn1sˆ0YdS) Nzc[section] option1{eq}xxx option2{eq}%(option1)s/xxx ok{eq}%(option1)s/%%s not_ok{eq}%(option2)s/%%srrÙrEÚokzxxx/%sZnot_okz xxx/xxx/%s) r1r~r"rarer)r2r4rrrjÚ TypeErrorr§r r r Útest_safe_interpolationžsû  z,ConfigParserTestCase.test_safe_interpolationcCs¢| dj|jdd¡}| | dd¡d¡| t|jddd¡| t|jddd¡| t|jddd ¡| | dd¡d¡| dd d ¡| | dd ¡d ¡dS) NrØrrÙrÛrÜrBú%fooúfoo%úf%oorÝúfoo%%barzfoo%bar)r1r~r"rarerjrwr r§r r r Ú#test_set_malformatted_interpolation­sÿz8ConfigParserTestCase.test_set_malformatted_interpolationcCs¼| dj|jdd¡}| t|jddd¡| t|jddd¡| t|jddtƒ¡| t|jddd¡| t|jddd¡| t|jddtƒ¡| t|jdd d ¡| t|jd ¡dS) NrØrrÙrÛrÜr gð?rÝr†zinvalid opt name!)r1r~r"rjrr ÚobjectrŸr§r r r Útest_set_nonstring_types½sÿz-ConfigParserTestCase.test_set_nonstring_typescCs| ¡}| t|j|j¡dSr)r-rjrwrŸr(r§r r r Útest_add_section_defaultËsz-ConfigParserTestCase.test_add_section_defaultcCs€|jddid}| ||jdd¡| ||j d¡d¡|jddid}| ||jdd ¡| ||j d¡d¡d S) zbpo-23835 fix for ConfigParserr ç333333@rr[z2.4rŽçÍÌÌÌÌÌ@rz5.2N)r-rar(rgrhr§r r r Útest_defaults_keywordÏs z*ConfigParserTestCase.test_defaults_keywordN)rrrr2Ú ConfigParserr+rr rrrrrrr r r r rwsrc@sDeZdZejZdZe d¡  ¡Z dd„Z dd„Z dd„Z d d „ZdS) Ú#ConfigParserTestCaseNoInterpolationNz™ [numbers] one = 1 two = %(one)s * 2 three = ${common:one} * 3 [hexen] sixteen = ${numbers:two} * 8 cCsT| |ddd¡| |ddd¡| |ddd¡| |dd d ¡dS) NZnumbersÚoner[Útwoz %(one)s * 2Úthreez${common:one} * 3ZhexenZsixteenz${numbers:two} * 8)rar§r r r ÚassertMatchesIniæsz4ConfigParserTestCaseNoInterpolation.assertMatchesInicCs| |j¡}| |¡dSr)r1Úinir$r§r r r Útest_no_interpolationìs z9ConfigParserTestCaseNoInterpolation.test_no_interpolationcCs| ¡}| | d¡¡dS©NÚ)r-Ú assertIsNoner.r§r r r Útest_empty_caseðsz3ConfigParserTestCaseNoInterpolation.test_empty_casecCs2Gdd„dtjƒ}|ƒ}| |j¡| |¡dS)Nc@seZdZdZdS)zbConfigParserTestCaseNoInterpolation.test_none_as_default_interpolation..CustomConfigParserN)rrrZ_DEFAULT_INTERPOLATIONr r r r ÚCustomConfigParserõsr+)r2rr.r%r$)r r+r0r r r Ú"test_none_as_default_interpolationôs zFConfigParserTestCaseNoInterpolation.test_none_as_default_interpolation)rrrr2rr+r)r€rÚstripr%r$r&r*r,r r r r r Ùs r c@s"eZdZejZe ¡Zdd„ZdS)Ú'ConfigParserTestCaseLegacyInterpolationcCs¸| dj|jdd¡}| | dd¡d¡| ddd¡| | dd¡d¡| ddd¡| | dd¡d¡| ddd ¡| | dd¡d ¡| dd d ¡| | dd ¡d ¡dS) NrØrrÙrÛrÜrBrrrrÝr)r1r~r"rarer r§r r r rsÿzKConfigParserTestCaseLegacyInterpolation.test_set_malformatted_interpolationN) rrrr2rr+rr)rr r r r r.ýsr.c@seZdZdZdZdZdS)Ú)ConfigParserTestCaseNonStandardDelimiters©z:=ú$©ú//ú"N©rrrr"r#r$r r r r r/sr/c@seZdZdZdS)Ú-ConfigParserTestCaseNonStandardDefaultSectionZgeneralN)rrrr(r r r r r6sr6c@s6eZdZejZd dd¡Zdd„Zdd„Z dd „Z d S) ÚMultilineValuesTestCasezSI'm having spam spam spam spam spam spam spam beaked beans spam spam spam and spam!ú ú cCsˆ| ¡}tdƒD]<}d |¡}| |¡tdƒD]}| |d |¡|j¡q0qttjdƒ}|  |¡Wdƒn1sz0YdS)Nédz section{}é z lovely_spam{}Úw) r-rÉr~rŸr Úwonderful_spamr³rÚTESTFNrÓ)r r0rÚsÚjr¸r r r ÚsetUp#s    zMultilineValuesTestCase.setUpcCst tj¡dSr)ÚosÚunlinkrr>rr r r ÚtearDown-sz MultilineValuesTestCase.tearDowncCs^| ¡}ttjƒ}| |¡Wdƒn1s20Y| | dd¡|j dd¡¡dS)NZsection8Z lovely_spam4r9Ú ) r-r³rr>r¾rarer=Úreplace)r Z cf_from_filer¸r r r Ú test_dominating_multiline_values0s  ( ÿz8MultilineValuesTestCase.test_dominating_multiline_valuesN) rrrr2rr+rFr=rArDrGr r r r r7sþ r7c@s2eZdZejZdd„Zdd„Zdd„Zdd„Z d S) ÚRawConfigParserTestCasecCsZ| ¡}|j}|| dd¡dƒ|| dd¡dƒ|| dd¡dƒ|| dd¡d ƒdS) Nr¦rÂz*something %(with1)s interpolation (1 step)rz3something %(with9)s lots of interpolation (9 steps)rz5something %(with10)s lots of interpolation (10 steps)rr)rërare©r r0r{r r r r=s ÿ ÿ ÿ ÿz*RawConfigParserTestCase.test_interpolationcCs| gd¢¡dS)N)r )rz |%(default)s|)r‡z |%(name)s|)rdz %(value)srrr r r rIsz"RawConfigParserTestCase.test_itemscCsð| ¡}| d¡| ddd¡| ddgd¢¡| ddddi¡| | dd¡d¡| | dd¡gd¢¡| | dd¡ddi¡| d ¡| d d d ¡| | d d ¡d ¡|jtjurìd d „|_| ddd¡| | dd¡d¡dS)Nz non-stringrMr rb)rr r éérÈéé r*Úpign†ðù! @r†z this is sickTcSs|Srr )rÊr r r Ú_rzBRawConfigParserTestCase.test_set_nonstring_types..) r-rŸr rareÚ_dictr2r3Ú optionxformr§r r r rOs" ÿ   z0RawConfigParserTestCase.test_set_nonstring_typescCsz| t¡ }|jddidWdƒn1s00Y|j}| t|ƒd¡|jddid}| ||jdd¡dS) z-bpo-23835 legacy behavior for RawConfigParserr rrNz%'int' object has no attribute 'lower'rŽrr)rjror-rurarÐrgr()r ÚctxÚerrr0r r r rcs  .z-RawConfigParserTestCase.test_defaults_keywordN) rrrr2rÿr+rrrrr r r r rH:s  rHc@seZdZdZdZdZdS)Ú,RawConfigParserTestCaseNonStandardDelimitersr0r2Nr5r r r r rTmsrTc@s&eZdZejZdZdZdZdd„Z dS)ÚRawConfigParserTestSambaConf)rrz----)r3FcCsžt d¡}| ¡}|j|dgdd}| ||g¡gd¢}| | ¡|¡| | dd¡d¡| | dd ¡d ¡| | dd ¡d ¡| | d d¡d¡dS)Nz cfgparser.2rár¬r­)ÚglobalZhomesZprinterszprint$z pdf-generatorÚtmpZAgustinrVZ workgroupZMDKGROUPz max log sizeé2z hosts allowz127.rWz echo commandz cat %s; rm %s)rr²r-rärar`rerf)r Zsmbconfr0rçr`r r r Ú test_readingys z)RawConfigParserTestSambaConf.test_readingN) rrrr2rÿr+r#r$r%rYr r r r rUss rUc@s\eZdZejZe ¡ZdZdZ ddd„Z dd„Z dd „Z d d „Z d d „Zdd„Zdd„ZdS)Ú)ConfigParserTestCaseExtendedInterpolationÚcommonTNcCs"| |¡}|r||_| |¡|Sr)r-rQr.)r r/r rQr0r r r r1s   z4ConfigParserTestCaseExtendedInterpolation.fromstringcCsP| t d¡ ¡¡}|j}||dddƒ||dddƒ||dddƒ||dddƒ||ddd ƒ||dd d ƒ||dd d ƒ||dddƒ||dddƒ||dddƒ||dddƒ||dddƒ||dddƒ||dddƒ||dddƒ||dd d ƒ||dddƒdS)Na [common] favourite Beatle = Paul favourite color = green [tom] favourite band = ${favourite color} day favourite pope = John ${favourite Beatle} II sequel = ${favourite pope}I [ambv] favourite Beatle = George son of Edward VII = ${favourite Beatle} V son of George V = ${son of Edward VII}I [stanley] favourite Beatle = ${ambv:favourite Beatle} favourite pope = ${tom:favourite pope} favourite color = black favourite state of mind = paranoid favourite movie = soylent ${common:favourite color} favourite song = ${favourite color} sabbath - ${favourite state of mind} r[zfavourite BeatleZPaulzfavourite colorZgreenZtomzfavourite bandz green dayzfavourite popez John Paul IIZsequelz John Paul IIIZambvZGeorgezson of Edward VIIzGeorge Vzson of George Vz George VIZstanleyZblackzfavourite state of mindZparanoidzfavourite moviez soylent greenzfavourite songzblack sabbath - paranoid)r1r€rr-rarIr r r Útest_extended_interpolation”s* ÿzEConfigParserTestCaseExtendedInterpolation.test_extended_interpolationcCsˆ| t d¡ ¡¡}| tj¡|ddWdƒn1sB0Y| tj¡|ddWdƒn1sz0YdS)Nz¸ [one for you] ping = ${one for me:pong} [one for me] pong = ${one for you:ping} [selfish] me = ${me} z one for youZpingZselfishÚme)r1r€rr-rjr2rr§r r r Útest_endless_loopÁs  *z;ConfigParserTestCaseExtendedInterpolation.test_endless_loopcCsª| d¡}| |ddd¡| |ddd¡| |ddd¡tj}| |¡}|dd Wdƒn1sx0Y| |jjd ¡| |jjd d ¡dS) Nzì [dollars] $var = $$value $var2 = ${$var} ${sick} = cannot interpolate me [interpolated] $other = ${dollars:$var} $trying = ${dollars:${sick}} Zdollarsz$varz$valueZ interpolatedz$otherz${sick}zcannot interpolate mez$tryingzdollars:${sickrJz${dollars:${sick}})r1rar2r rjrur rv)r r0Zexception_classr|r r r Útest_strange_optionsÒs  *z>ConfigParserTestCaseExtendedInterpolation.test_strange_optionscCsŽt d¡ ¡}| |¡}|j}||dddƒ||dddƒ||dddƒ||ddd ƒ||d d d ƒ||d d dƒdS)Naj [common] optionlower = value OptionUpper = Value [Common] optionlower = a better ${common:optionlower} OptionUpper = A Better ${common:OptionUpper} [random] foolower = ${common:optionlower} redefined FooUpper = ${Common:OptionUpper} Redefined r[Z optionlowerrJZ OptionUpperÚValueÚCommonúa better valueúA Better ValueÚrandomZfoolowerúvalue redefinedZFooUpperúA Better Value Redefined)r€rr-r1ra©r r%r0r{r r r Útest_case_sensitivity_basicçs zEConfigParserTestCaseExtendedInterpolation.test_case_sensitivity_basiccCsÌt d¡ ¡}| tj¡| |¡}Wdƒn1s:0Y|j|dd„d}|j}||dddƒ||ddd ƒ||d dd ƒ||d dd ƒ||d ddƒ||d ddƒdS)Na8 [common] option = value Option = Value [Common] option = a better ${common:option} Option = A Better ${common:Option} [random] foo = ${common:option} redefined Foo = ${Common:Option} Redefined cSs|Srr )r¢r r r rOrz[ConfigParserTestCaseExtendedInterpolation.test_case_sensitivity_conflicts..)rQr[r‰rJršr`rarbrcrdrBrer¦rf)r€rr-rjr2rr1rargr r r Útest_case_sensitivity_conflictsÿs (zIConfigParserTestCaseExtendedInterpolation.test_case_sensitivity_conflictscCs`| d¡}| tj¡|ddWdƒn1s80Y| tj¡|ddWdƒn1sp0Y| tj¡|ddWdƒn1s¨0Y| tj¡|ddWdƒn1sà0Y| tj¡|ddWdƒn1s0Y| t¡d|dd <Wdƒn1sR0YdS) Na [interpolation fail] case1 = ${where's the brace case2 = ${does_not_exist} case3 = ${wrong_section:wrong_value} case4 = ${i:like:colon:characters} case5 = $100 for Fail No 5! zinterpolation failZcase1Zcase2Zcase3Zcase4Zcase5z BLACK $ABBATHZcase6)r1rjr2ÚInterpolationSyntaxErrorr rwr§r r r Útest_other_errorss ****, z;ConfigParserTestCaseExtendedInterpolation.test_other_errors)NN)rrrr2rr+ÚExtendedInterpolationr)r(r'r1r\r^r_rhrirkr r r r rZ‡s -rZc@seZdZdZdS)ÚConfigParserTestCaseNoValueTN)rrrr!r r r r rm2srmc@s2eZdZejZdhZdhZdZdd„Z dd„Z dS) ÚConfigParserTestCaseTrickyFilerrTcCsœt d¡}| ¡}| t|j|ddƒd¡| | ¡gd¢¡| |j|jdddid d ¡|  t ¡(|j|jdd ddid Wdƒn1s–0Y| t|  d d¡  d¡ƒd¡| t|  dd¡  d¡ƒd¡d}|  | |d¡¡| |  |d¡d¡| t| d¡ƒd¡|  tj¡| d¡Wdƒn1sJ0Y| |  dd¡d¡| |  dd¡|  dd¡¡| |  dd¡d¡dS) Nr«r¬r­r )ÚstrangeÚ corruptionú&yeah, sections can be indented as wellú another one!úno values hereútricky interpolationúmore interpolationZgoZ interpolatez-1rVéÿÿÿÿT)ÚrawrWroÚotherrEérprJr;rqzare they subsectionszlets use some Unicodeu 片仮årrrÈrsrtZletszdo thisruz go shopping)rr²r-rarcrär`rfr(rjrwreÚsplitrrrirr2r )r rµr0Zlongnamer r r Útest_cfgparser_dot_3<s4 ÿÿ  ÿ$* ÿz3ConfigParserTestCaseTrickyFile.test_cfgparser_dot_3cCsNt d¡}| ¡}| t¡|j|ddWdƒn1s@0YdS)Nr«Úasciir­)rr²r-rjÚUnicodeDecodeErrorrä)r rµr0r r r Útest_unicode_failure\s  z3ConfigParserTestCaseTrickyFile.test_unicode_failureN) rrrr2rr+r"r#r!r{r~r r r r rn6s  rnc@s,eZdZdZdZdd„Zdd„Zdd„Zd S) ÚIssue7005TestCasezrTest output when None is set() as a value and allow_no_value == False. http://bugs.python.org/issue7005 z[section] option = None cCs<|dd}| d¡| ddd¡t ¡}| |¡| ¡S©NF)r!rEr‰)rŸr r¼r½rÓrÔ)r r+ÚcprÁr r r Úpreparels    zIssue7005TestCase.preparecCsRtjdd}| d¡| t¡| ddd¡Wdƒn1sD0YdSr€)r2rrŸrjrr )r rr r r Útest_none_as_value_stringifiedus   z0Issue7005TestCase.test_none_as_value_stringifiedcCs| tj¡}| ||j¡dSr)r‚r2rÿraÚexpected_output)r rÕr r r Ú"test_none_as_value_stringified_raw{s z4Issue7005TestCase.test_none_as_value_stringified_rawN)rrrÚ__doc__r„r‚rƒr…r r r r rcs  rc@seZdZeZdd„ZdS)ÚSortedTestCasecCs0| d¡}t ¡}| |¡| | ¡d¡dS)Nz [b] o4=1 o3=2 o2=3 o1=4 [a] k=v z,[a] k = v [b] o1 = 4 o2 = 3 o3 = 2 o4 = 1 )r1r¼r½rÓrarÔ)r r0rÕr r r Ú test_sortedƒs    ÿzSortedTestCase.test_sortedN)rrrrr&rˆr r r r r‡€sr‡c@s"eZdZejZdZdZdd„ZdS)ÚCompatibleTestCasez#;rcCsTt d¡}| |¡}| | dd¡d¡| | dd¡d¡| | dd¡d¡dS) Nzî [Commented Bar] baz=qwe ; a comment foo: bar # not a comment! # but this is a comment ; another comment quirk: this;is not a comment ; a space must precede an inline comment r6rBzbar # not a comment!r@rAZquirkzthis;is not a comment)r€rr1rarerƒr r r Útest_comment_handlingœs ÿÿz(CompatibleTestCase.test_comment_handlingN) rrrr2rÿr+r#r$rŠr r r r r‰—sr‰c@seZdZejZddd„ZdS)Ú CopyTestCaseNcCsp| |¡}| |¡| ¡}| |¡| ¡D]<}|j|jkr@q.||j ¡D]\}}|||krN||=qNq.|Sr)r-r.r‹rrdr(r)r r/r r0Zcf_copyrErìrJr r r r1°s       zCopyTestCase.fromstring)N)rrrr2rr+r1r r r r r‹­sr‹c@seZdZdd„Zdd„ZdS)ÚFakeFilecCsJt d¡}t|ƒ$}| ¡|_|j ¡Wdƒn1s<0YdS)Nrà)rr²r³Ú readlinesÚlinesÚreverse)r Ú file_pathr¸r r r Ú__init__Ás   zFakeFile.__init__cCst|jƒr|j ¡SdSr')rcrŽÚpoprr r r rºÇs  zFakeFile.readlineN)rrrr‘rºr r r r rŒÀsrŒccs | ¡}|r|V| ¡}qdS)z+As advised in Doc/library/configparser.rst.N)rº)r¸Úliner r r Úreadline_generatorÍsr”c@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚReadFileTestCasec Cs°t d¡g}z| |d d¡¡Wnty6Yn0|D]n}t ¡}t|ƒ}| |¡Wdƒn1sp0Y|  d|¡|  d|d¡|  |ddd¡q}t  d t ¡| |j d¡d|_ | |jd¡Wdƒn1sø0Y|D]}|  |jt u¡qdS) Nz%Required argument `source' not given.rÎÚfilename)rÎr¤z:Cannot specify both `filename' and `source'. Use `source'.©r¤T©ÚrecordÚalways)rjrwr2r°rarÐrurÎÚwarningsÚcatch_warningsÚ simplefilterÚDeprecationWarningr¤rqÚcategory)r r|r¶r<Úwarningr r r Útest_parsing_error<s & ,  ,z-CoverageOneHundredTestCase.test_parsing_errorcCsªt ¡}| d¡| tj¡}|ddWdƒn1s@0Y| t|jƒd¡| tj¡}|ddWdƒn1sŠ0Y| t|jƒd¡dS)Nz– [section] invalid_percent = % invalid_reference = %(() invalid_variable = %(does_not_exist)s rEZinvalid_percentz.'%' must be followed by '%' or '(', found: '%'Zinvalid_referencez+bad interpolation variable reference '%(()')r2rr.rjrjrarÐru©r rnr|r r r Útest_interpolation_validationOs **z8CoverageOneHundredTestCase.test_interpolation_validationcCsšt d¡}t ¡}tjdd*}t dt¡|j|ddWdƒn1sN0Y|D]}|  |j tu¡q\|  t |ƒd¡|  |dd d ¡dS) Nz2 [section] option = value Tr¦r¨r½r¥rJrEr‰rJ) r¼r½r2rr©rªr«r¬Zreadfprqr­rarc)r rÁrnr<r®r r r Útest_readfp_deprecation`s  ,z2CoverageOneHundredTestCase.test_readfp_deprecationcCs^tjdd$}t dt¡t ¡}Wdƒn1s60Y|D]}| |jtu¡qDdS)NTr¦r¨)r©rªr«r¬r2ZSafeConfigParserrqr­)r r<rnr®r r r Ú!test_safeconfigparser_deprecationns  &z)r2rr.raÚreprr›r r r Útest_sectionproxy_reprus z1CoverageOneHundredTestCase.test_sectionproxy_reprcCs–t ¡}ddl}|j|jd<| d¡| d|j¡| | dd¡d¡| | dd¡d ¡| |d d¡d¡| |d d¡d ¡|`|  t ¡| dd¡Wdƒn1s¸0Y| d|j¡|jd=|  d|j¡|  t ¡| dd¡Wdƒn1s0Y|  t ¡|d d¡Wdƒn1sN0Y|  t ¡|d d¡Wdƒn1sˆ0YdS) NrÚdecimalzS [s1] one = 1 [s2] two = 2 Ús1r!r Ús2r"rJ) r2rr¶ÚDecimalÚ convertersr.r˜raÚ getdecimalrjrorù)r rnr¶r r r Ú"test_inconsistent_converters_state}s*   * , . z=CoverageOneHundredTestCase.test_inconsistent_converters_stateN) rrrr†r¡r£r¯r±r²r³rµr¼r r r r rž(s ržc@sheZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dd„ZdS)ÚExceptionPicklingTestCasezBTests for issue #13760: ConfigParser exceptions are not picklable.cCsdddl}t d¡}t|jdƒD]>}| ||¡}| |¡}| |j|j¡| t |ƒt |ƒ¡q dS)NrrJr ) Úpickler2ÚErrorrÉÚHIGHEST_PROTOCOLÚdumpsÚloadsraÚmessager´©r r¾Úe1ÚprotoZpickledÚe2r r r Ú test_errors   z$ExceptionPicklingTestCase.test_errorcCs„ddl}t d¡}t|jdƒD]^}| ||¡}| |¡}| |j|j¡| |j |j ¡| |j |j ¡| t |ƒt |ƒ¡q dS)NrrEr ) r¾r2rkrÉrÀrÁrÂrarÃrvrEr´rÄr r r Útest_nosectionerror¦s   z-ExceptionPicklingTestCase.test_nosectionerrorcCs–ddl}t dd¡}t|jdƒD]n}| ||¡}| |¡}| |j|j¡| |j |j ¡| |j |j ¡| |j |j ¡| t |ƒt |ƒ¡q"dS)Nrr‰rEr ) r¾r2rlrÉrÀrÁrÂrarÃrvrEr‰r´rÄr r r Útest_nooptionerror±s   z,ExceptionPicklingTestCase.test_nooptionerrorcCs¨ddl}t ddd¡}t|jdƒD]~}| ||¡}| |¡}| |j|j¡| |j |j ¡| |j |j ¡| |j |j ¡| |j |j ¡| t |ƒt |ƒ¡q$dS)NrrErÎr†r )r¾r2r‚rÉrÀrÁrÂrarÃrvrErÎrŸr´rÄr r r Útest_duplicatesectionerror½s  z4ExceptionPicklingTestCase.test_duplicatesectionerrorcCsºddl}t dddd¡}t|jdƒD]Ž}| ||¡}| |¡}| |j|j¡| |j |j ¡| |j |j ¡| |j |j ¡| |j |j ¡| |j |j ¡| t|ƒt|ƒ¡q&dS)NrrEr‰rÎr†r )r¾r2rrÉrÀrÁrÂrarÃrvrEr‰rÎrŸr´rÄr r r Útest_duplicateoptionerrorÊs ÿ  z3ExceptionPicklingTestCase.test_duplicateoptionerrorcCs˜ddl}t ddd¡}t|jdƒD]n}| ||¡}| |¡}| |j|j¡| |j |j ¡| |j |j ¡| |j |j ¡| t |ƒt |ƒ¡q$dS©Nrr‰rEÚmsgr ) r¾r2ZInterpolationErrorrÉrÀrÁrÂrarÃrvrEr‰r´rÄr r r Útest_interpolationerrorÙs  z1ExceptionPicklingTestCase.test_interpolationerrorcCsªddl}t dddd¡}t|jdƒD]~}| ||¡}| |¡}| |j|j¡| |j |j ¡| |j |j ¡| |j |j ¡| |j |j ¡| t |ƒt |ƒ¡q&dS)Nrr‰rEr¢r r )r¾r2r rÉrÀrÁrÂrarÃrvrEr‰r r´rÄr r r Ú$test_interpolationmissingoptionerroråsÿ  z>ExceptionPicklingTestCase.test_interpolationmissingoptionerrorcCs˜ddl}t ddd¡}t|jdƒD]n}| ||¡}| |¡}| |j|j¡| |j |j ¡| |j |j ¡| |j |j ¡| t |ƒt |ƒ¡q$dSrÍ) r¾r2rjrÉrÀrÁrÂrarÃrvrEr‰r´rÄr r r Útest_interpolationsyntaxerrorós  z7ExceptionPicklingTestCase.test_interpolationsyntaxerrorcCs˜ddl}t ddd¡}t|jdƒD]n}| ||¡}| |¡}| |j|j¡| |j |j ¡| |j |j ¡| |j |j ¡| t |ƒt |ƒ¡q$dS)Nrr‰rEr¢r ) r¾r2rrÉrÀrÁrÂrarÃrvrEr‰r´rÄr r r Útest_interpolationdeptherrorÿsÿ  z6ExceptionPicklingTestCase.test_interpolationdeptherrorcCsfddl}t d¡}| dd¡| dd¡| dd¡t|jdƒD]n}| ||¡}| |¡}| |j |j ¡| |j |j ¡| |j |j ¡| |j |j ¡| t |ƒt |ƒ¡qDtjd d }| dd¡| dd¡| dd¡t|jdƒD]n}| ||¡}| |¡}| |j |j ¡| |j |j ¡| |j |j ¡| |j |j ¡| t |ƒt |ƒ¡qòdS) NrrÎr Zline1rJZline2rKZline3r¤r¥)r¾r2r°r^rÉrÀrÁrÂrarÃrvrÎÚerrorsr´rÄr r r Útest_parsingerror s2            z+ExceptionPicklingTestCase.test_parsingerrorcCs¨ddl}t ddd¡}t|jdƒD]~}| ||¡}| |¡}| |j|j¡| |j |j ¡| |j |j ¡| |j |j ¡| |j |j ¡| t |ƒt |ƒ¡q$dS)Nrr¤r†r“r )r¾r2r±rÉrÀrÁrÂrarÃrvr“rÎrŸr´rÄr r r Útest_missingsectionheadererror's  z8ExceptionPicklingTestCase.test_missingsectionheadererrorN)rrrr†rÈrÉrÊrËrÌrÏrÐrÑrÒrÔrÕr r r r r½šs       r½c@seZdZdZdd„ZdS)ÚInlineCommentStrippingTestCasez}Tests for issue #14590: ConfigParser doesn't strip inline comment when delimiter occurs earlier without preceding space..cCsÊtjdd}| d¡|d}| |dd¡| |dd¡| |d d ¡| |d d ¡| |d d¡| |dd¡| |dd¡|d}| |dd¡| |dd¡| |d d¡dS)N)rrr3)r$aæ [section] k1 = v1;still v1 k2 = v2 ;a comment k3 = v3 ; also a comment k4 = v4;still v4 ;a comment k5 = v5;still v5 ; also a comment k6 = v6;still v6; and still v6 ;a comment k7 = v7;still v7; and still v7 ; also a comment [multiprefix] k1 = v1;still v1 #a comment ; yeah, pretty much k2 = v2 // this already is a comment ; continued k3 = v3;#//still v3# and still v3 ; a comment rEZk1z v1;still v1Zk2Zv2Zk3Zv3Zk4z v4;still v4Zk5z v5;still v5Zk6zv6;still v6; and still v6Zk7zv7;still v7; and still v7Z multiprefixzv3;#//still v3# and still v3)r2rr.ra)r Úcfgr?r r r Útest_stripping9s  z-InlineCommentStrippingTestCase.test_strippingN)rrrr†rØr r r r rÖ5srÖc@s8eZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd S) ÚExceptionContextTestCasezO Test that implementation details doesn't leak through raising exceptions. cCsbt ¡}| d¡| tj¡}|| dd¡Wdƒn1sD0Y| |jjd¡dS)Nz„ [Paths] home_dir: /Users my_dir: %(home_dir1)s/lumberjack my_pictures: %(my_dir)s/Pictures ÚPathsÚmy_dirT) r2rr.rjr rermruÚ__suppress_context__r°r r r Útest_get_basic_interpolation]s   *z5ExceptionContextTestCase.test_get_basic_interpolationcCsjtjt ¡d}| d¡| tj¡}|| dd¡Wdƒn1sL0Y| |jj d¡dS)N)r)z‚ [Paths] home_dir: /Users my_dir: ${home_dir1}/lumberjack my_pictures: ${my_dir}/Pictures rÚrÛT) r2rrlr.rjr rermrurÜr°r r r Útest_get_extended_interpolationjsÿ  *z8ExceptionContextTestCase.test_get_extended_interpolationcCs\t ¡}| d¡| tj¡}| d¡Wdƒn1s>0Y| |jjd¡dS)Nz2 [Paths] home_dir: /Users rûT) r2rr.rjrkr¡rmrurÜr°r r r Útest_missing_optionsxs  (z-ExceptionContextTestCase.test_missing_optionscCsVt ¡}| tj¡}| ddd¡Wdƒn1s80Y| |jjd¡dS)NÚSection1Úan_intZ15T)r2rrjrkr rmrurÜ©r rŒr|r r r Útest_missing_section‚s,z-ExceptionContextTestCase.test_missing_sectioncCsTt ¡}| tj¡}| dd¡Wdƒn1s60Y| |jjd¡dS)NràráT)r2rrjrkrtrmrurÜrâr r r Útest_remove_optionˆs*z+ExceptionContextTestCase.test_remove_optionN) rrrr†rÝrÞrßrãrär r r r rÙYs   rÙcs0eZdZdZejZd‡fdd„ Zdd„Z‡Z S)ÚConvertersTestCasez Introduced in 3.5, issue #18159.Ncs tƒj|d}dd„|jd<|S)NrcSsdd„| ¡DƒS)NcSsg|]}| ¡r| ¡‘qSr )r-)rr´r r r r–sÿzBConvertersTestCase.newconfig....)rz©Úvr r r rO–rz.ConvertersTestCase.newconfig..rb)Úsuperr-rº)r r r,©Ú __class__r r r-”szConvertersTestCase.newconfigcCsŠ| ¡}| d|j¡| d|j¡| |jd¡| |jd¡| |jd¡| |jd¡| t|jƒd¡| t¡dd„|jd<Wdƒn1s¤0Y| t¡d d„|jd<Wdƒn1sÜ0Y|  d ¡|d }| |d d ¡| |dd¡| |dd¡| |dd¡| |dd¡| |  d d ¡d ¡| |  d d¡d¡| |  d d¡d¡| |  d d¡d¡| |  d d¡d¡| |  d d ¡d ¡| |  d d¡d¡| |  d d¡d¡| |  d d¡gd¢¡| | d d¡d¡| |  d ¡d ¡| |  d¡d¡| |  d¡d¡| |  d¡gd¢¡| | d¡d¡| t¡| d d¡Wdƒn1s 0Y| t¡| d¡Wdƒn1sÖ0Yddl}|j|jd<| d|j¡| |jd¡| t|jƒd¡| d¡}| | d d¡|¡| | d¡|¡|jd=| d|j¡| t|jƒd¡| t¡| d d¡Wdƒn1sª0Y| t¡| d¡Wdƒn1sà0Y| t¡|jd=Wdƒn1s0Y| t¡|jd=Wdƒn1sH0Y| t¡|jd=Wdƒn1s|0YdS)NrQrbrMrOrycSs|Srr rær r r rO¤rz4ConvertersTestCase.test_converters..r(cSs|Srr rær r r rO¦rz~ [s] str = string int = 1 float = 0.5 list = a b c d e f g bool = yes r?rÐr/r[z0.5z a b c d e f gÚboolrYr gà?)rr‘ÚcÚdr´r¸ÚgTrr¶rÈ)r-r˜rºr)ÚassertIsNotNonerarcrjrwr.rerfrhZgetlistriror»r¶r¹rùrp)r r×r?r¶Zdec0_5r r r Útest_convertersšsv , ,  , *   , * ( ( z"ConvertersTestCase.test_converters)N) rrrr†r2rr+r-rðÚ __classcell__r r rér råsråc@s4eZdZdZdZdd„Zdd„Zdd„Zd d „Zd S) Ú!BlatantOverrideConvertersTestCasez}What if somebody overrode a getboolean()? We want to make sure that in this case the automatic converters do not kick in.z¨ [one] one = false two = false three = long story short [two] one = false two = false three = four cCs:tjdtid}| |j¡| |¡| |jd¡dS)Nrc)rº)r2rrcr.rŒÚ _test_lenrïrº©r r×r r r Útest_converters_at_initñs  z9BlatantOverrideConvertersTestCase.test_converters_at_initcCsÞGdd„dtjƒ}|ƒ}| |j¡| |¡| |jd¡| | dd¡¡| | dd¡¡|  | dd¡¡|  | dd¡¡|j |jd<|  | dd¡¡|  | dd¡¡|  | dd¡¡|  | dd¡¡dS)Ncs@eZdZdZddejdœ‡fdd„ Zddejdœdd„Z‡ZS) zOBlatantOverrideConvertersTestCase.test_inheritance..StrangeConfigParserz0a historic borough in south central PennsylvaniaFN©rwrWrUcs"||kr dStƒj|||||dS)NTrö)rèri©r rEr‰rwrWrUrér r riûs ÿzZBlatantOverrideConvertersTestCase.test_inheritance..StrangeConfigParser.getbooleancSs|j||t|||dS)Nrö)Z _get_convrcr÷r r r ÚgetlensÿzVBlatantOverrideConvertersTestCase.test_inheritance..StrangeConfigParser.getlen) rrrZ gettysburgr2r4rirørñr r rér ÚStrangeConfigParserøsÿÿrùrcr!r"rQ) r2rr.rŒrór)rºrqrirrÚ_convert_to_boolean)r rùr×r r r Útest_inheritance÷s   z2BlatantOverrideConvertersTestCase.test_inheritancecCsì| t|jƒd¡| d|j¡| d|j¡| d|j¡| |jd¡| |jd¡| |jd¡| | dd¡d¡| | dd ¡d¡| | dd ¡d ¡| | d d¡d¡| | d d ¡d¡| | d d ¡d¡| |jd d d dd ¡| tj ¡| d d ¡Wdƒn1s,0Y| |d d¡d¡| |d d ¡d¡| |d d ¡d ¡| |d  d¡d¡| |d  d ¡d¡| |d  d ¡d¡| |d  d d ¡d ¡| |d  d ¡d¡dS)NryrQrcZtysburgrMrOr!rÈr"r#éZfourrrT) rarcrºr˜rùr)rørjr2rlrôr r r rós0,z+BlatantOverrideConvertersTestCase._test_lencs&t ¡‰dd„ˆ_‡fdd„ˆ_ˆ |j¡| tˆjƒd¡|  dˆj¡|  dˆj¡|  ˆjd¡|  ˆjd¡|  ˆjd¡|  ˆ d d ¡¡|  ˆ d d ¡¡|  ˆ d d ¡¡|  ˆ d d ¡¡ˆj ˆjd<| ˆ d d ¡¡| ˆ d d ¡¡| ˆ d d ¡¡| ˆ d d ¡¡| ˆ d d ¡d ¡| ˆ d d ¡d ¡| ˆ d d ¡d ¡| ˆ d d ¡d ¡| ˆ d d ¡d ¡| ˆ d d ¡d¡| t¡&| ˆd  d ¡d ¡Wdƒn1sÖ0Y| t¡&| ˆd  d ¡d ¡Wdƒn1s0YdS)NcSsdS)NTr ©rEr‰r r r rO0rzLBlatantOverrideConvertersTestCase.test_instance_assignment..cstˆ||ƒSr)rcrý©r×r r rO1rrKrQrcrMrOr!r"rÈr#rüry)r2rrirør.rŒrarcrºr˜rùr)rqrúrrrjrorr rþr Útest_instance_assignment.s:    6 z:BlatantOverrideConvertersTestCase.test_instance_assignmentN) rrrr†rŒrõrûrórÿr r r r ròás  ròc@seZdZdd„ZdS)Ú MiscTestCasecCsdh}tj|t|ddS)Nr¿)Ú blacklist)rZ check__all__r2)r rr r r Ú test__all__QszMiscTestCase.test__all__N)rrrrr r r r rPsrÚ__main__),Ú collectionsr2r¼rBrår€Zunittestr©rûrÚUserDictrrr5ZTestCaserþrr r.r/r6r7rHrTrUrZrmrnrr‡r‰r‹rŒr”r•ržr½rÖrÙråròrrÚmainr r r r Ús` !3b$3,- Sr$6Ro