a zeS@stddlZddlZddlZddlZddlZddlZddlZddlZddlm Z Gdddej Z GdddZ Gddde Z Gd d d e ejZGd d d e ejZGd dde ejZGdddeZGdddeZGdddeZGddde ejZGddde ejZGdddeZGddde ejZGddde ejZGdd d eZGd!d"d"e ejZGd#d$d$ejZGd%d&d&eZGd'd(d(e ejZGd)d*d*e ejZGd+d,d,Z d-d.Z!Gd/d0d0ejZ"Gd1d2d2ejZ#Gd3d4d4ejZ$Gd5d6d6ejZ%Gd7d8d8ejZ&Gd9d:d:e ejZ'Gd;d<dd>ejZ)e*d?krpe+dS)@N)supportc@s@eZdZddZddZddZddZd d Zd d ZeZ d S) SortedDictcCst|jSN)sorteddataitemsselfr J/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_configparser.pyrszSortedDict.itemscCst|jSr)rrkeysrr r r r szSortedDict.keyscCsdd|DS)NcSsg|] }|dqS)r ).0ir 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 ddZd dd ZdS) CfgParserTestCaseClassF)=:);#TNc CsBt||j|j|j|j|j|j|j|j|j d }|j fi|}|S)N) defaultsallow_no_value delimiterscomment_prefixesinline_comment_prefixesempty_lines_in_values dict_typestrictdefault_section interpolation) dictr!r"r#r$r%r&r'r(r) config_class)r r Z argumentsinstancer 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@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd 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 || ddd|| dd d|| ddd|| ddd|| ddd|| ddd|| ddd||ddd|| ddd||ddd|| dd d!|jr(|| dd"d||j dd dd#d ||j dd d did$d|tj| d%d Wdn1s0Y|tj| dd&Wdn1s0Y||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)Wdn1s0Y||jddd+d#d||jdd,d+d#d+||jdd,d-d#d-|tj|dd,Wdn1s0Y||jddd.d#d||jdd/d0d#d0||jdd/d.d#d.|tj|dd/Wdn1s0Y||jd1dd.d#d.|jr||j dd"dd#d||j dd2dd#d||dd d ||d d d |d}||j d||j||td3|_ Wdn1sT0Y|td4|_Wdn1s0Y||d d ||dd||dd d||ddd||ddd||ddd||d5d d6|jr ||dd"d||d d dd ||dj d dd#d ||dj d d did$d|t|d%d Wdn1s0Y|t|dd&Wdn1s0Y|t"|d%j d dd#Wdn1s0Y||d d&dd||dj d&dd#d||d d&d||d  d dd ||d j d dd#d |t |d' d dWdn1s0Y||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||ddd+d||djdd+d#d||dd,d+d+||djd,d+d#d+||dd,d-d-||djd,d-d#d-||dd,d||ddd.d||djdd.d#d||dd/d0d0||djd/d0d#d0||dd/d.d.||djd/d.d#d.||dd/d|j r ||d d"dd||dj d"dd#d||d d2dd||dj d2dd#dd7||jd8<d9||jd:<||d||dd||d|||j||dd d;||dd d<||dd d=||dd8||dd8|||jd8||dd8|||jd8|tj}|d>d Wdn1 s40Y||jjd?|| d5d d6|d=|d|v|t|d=Wdn1 s0Y|t ||j=Wdn1 s0Y|d d =|d |d v|t|d d =Wdn1 s"0Y|d:|d v|t|d d:=Wdn1 sj0Y||jd:=|d:|d v|t||jd:=Wdn1 s0Y|t|d>d =Wdn1 s0YdS)@N) Commented BarFoo BarInternationalized Stuff Long LineSection\with$weird%characters[ Spaces Spacey BarSpacey Bar From The BeginningTypesNoValue)bazqwe)foobar3r=cSsg|]}|qSr r rsectionr r r rbrz,BasicTestCase.basic_test..r7rBbar1r<bar2rCr@rAr6bar4r;key with spacesvalueanother with spacessplat!r>int*Z42float)\(?z0.44booleanFZ123strange but acceptableoption-without-valuefallbackvarszNo Such Foo Barz no-such-foozNo Such Spacey Barz no-such-intZ18gz no-such-floatz0.0Tzno-such-booleanyesz No Such Typeszno-such-option-without-valuezName is read-onlyzParser is read-onlyr97this line is much, much longer than my editor likes it.1Z this_value2Z 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 removedNo Such Section)r])!r!appendsortsections assertEqualrr(rlistlennamer getgetintassertAlmostEqualgetfloat getboolean assertRaisesr2NoSectionError NoOptionErrorassertIsparserAttributeErrorKeyError assertTrueZremove_section assertFalse has_option remove_option exceptionargs ValueError) r r0EFLeqrdrEcmr r r basic_testGs            ,,,  ,,   & &  , , 2 0 ,  & (  * *  , zBasicTestCase.basic_testcCsd|j|j}|jr|d7}||}|||jr|tj (| t d|jWdn1sr0Y|tj (| t d|jWdq1s0Yn0| t d|j| t d|jdS)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'rjr2DuplicateOptionErrorr.textwrapdedentDuplicateSectionErrorr config_stringr0r r r test_basic%s0   & (  zBasicTestCase.test_basicc Cs>ddiddiddddddddiid d d d d ddddddddd }|jrb|dddii|}|||||jr|tj(|ddiddidWdn1s0Y|tj $|dddd iWdn1s0Yn,|ddiddid!|dddd idS)"NrBrFrGrCrA)rBr@rHrZZ BulgarianZDefaultZEnglishZDeutsch)zfoo[bg]rBzfoo[en]zfoo[de]rJrL)rIrKrNrPFrR)rMrOrQ{) r7r<r=r6r9r:r8r;r>r?rSkeyZkey2value2)r[r zDuplicate Options Herez with a valuezwith another value)optionZOPTION)rEZSECTION) r!updater- read_dictr}r'rjr2rr)r configr0r r r test_basic_from_dictfsv&  &(z"BasicTestCase.test_basic_from_dictcCs|}|d|d|d|}||j}||gd|ddd||ddg||dddd|t j |dddWdn1s0Y| | dd| | dd|ddd d D]}| | d|d q||dd g||ddg|dd||dg|d |jd}||ddg||ddd|jd|jdddid}| | dddS)NAaB)rrrrJb@could not locate option, expecting case-insensitive option namesA-B A-B valuea-bzA-bza-Br9has_option() returned false for option which should existr3[MySection] Option{} first line second line r MySectionrOptionfirst line second line[section] nekey{}nevalue rr rEKey)r- add_sectionr`r_rasetoptionsrerjr2rkrqrsrrrtr1r~r")r r0rzr{optr r r test_case_sensitivitysP   ,  z#BasicTestCase.test_case_sensitivitycCs|}i|d<ddi|d<i|d<dd|D}||j}|j}||tdd|jdg||ddh||dddd|td|dd<Wdn1s0Y| d|dvd |dd <d D]}| ||dvd q||dd h||ddh|dd=||di| d |j d}||ddh||ddd|j d |j dddid}| d|dvdS)NrrrJrcSsg|]}|qSr r rDr r r rrzFBasicTestCase.test_case_sensitivity_mapping_access..rrrrrrrrrrrrrrrrrrE) r-r_raZassertCountEqualrr(r rjrprqr1r~r")r r0rzr{Zelem_eqrr r r $test_case_sensitivity_mapping_accesssN  *   z2BasicTestCase.test_case_sensitivity_mapping_accesscCsP|ddi}|||jddd|ddi}|||jddddS)NrBBarFoorzr rz[Foo] wrong-indent )r cfgparser.3rz. # INI with as many tricky parts as possible utf-8encoding) r- parse_errorr2 ParsingErrorr~r"MissingSectionHeaderErrorrarvr!rfindfileopen)r r0etrickyerrorexpectedfr r r test_parse_errors s>     ,zBasicTestCase.test_parse_errorscCsTt|dr|}n t|}||}||Wdn1sD0Y|jS)Nreadline)hasattrioStringIOrj read_fileru)r r0excsrcsior|r r r r's    (zBasicTestCase.parse_errorcCs|}||gd||dd|tj|dWdn1sX0Y|tj| dddWdn1s0Y| |tjdd}||j d| d| |tj dd}||j ddS) Nz0new ConfigParser should have no defined sectionsrz5new ConfigParser should have no acknowledged sectionsrBbarrJ)rB)rrB)r-rar`rrZ has_sectionrjr2rkrr get_errorrvrrlr r0rr r r test_query_errors0s   (, zBasicTestCase.test_query_errorsc CsTz|||Wn(|y8}z|WYd}~Sd}~00|d|j|jfdS)Nzexpected exception type %s.%s)reZfailrr)r r0rrErrr r r rAs zBasicTestCase.get_errorcCsn|dj|jdd}tddD]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 MORErequalsr ZBOOLTESTzt%dzf%dze%d) r1r~r"rangerqrirrrjrw)r r0xr r r test_booleanJs zBasicTestCase.test_booleancCsP|}|d|tj}|dWdn1s>0Y|j}|t|d||jd|j rL|tj2}|j t dj |jddddWdn1s0Y|j}|t|d ||jd |tj$}|d d d diWdn1s0Y|j}|t|d||jddS)NrzSection 'Foo' already exists)rNNz [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)rrrrvalzis really `opt`)rZOPTzIWhile reading from '': option 'opt' in section 'Bar' already exists)rrzN)r-rrjr2rrurastrrvr'r.rrr~r"rr)r r0r|rr r r test_weird_errorscs, ( $4zBasicTestCase.test_weird_errorscCsdj|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 )rr(z"[Valueless] option-without-value ) r~r"r#r(r!r1rrwriteragetvalue)r rr0routput delimiterZ expect_stringr r r test_writes4     zBasicTestCase.test_writecCs|dj|jdd}Gdddt}|ddd|dd|d|dd d|dd |d|ddd|dd ddS) N[sect] option1{eq}foo rr{c@s eZdZdS)z2BasicTestCase.test_set_string_types..mystrN)rrrr r r r mystrsrsectoption1Zsplatoption2)r1r~r"rr)r r0rr r r test_set_string_typessz#BasicTestCase.test_set_string_typescCsJ|jddkr|dtd}|}||dg}|||g||ddd|}||}|||g||ddd|}|t |}|||g||ddd|}|t ||g}||||g||ddd|}|dg}||g|}|g}||gdS) Nrrincompatible format cfgparser.1nonexistent-filer7rBnewbar) r"skipTestrrr-readrarepathlibPath)r Zfile1r0 parsed_filesr r r test_read_returns_file_lists2      z)BasicTestCase.test_read_returns_file_listcCs|jddkr|dtd}|}||}|||g|}|d}||g|}||dg}|||gdS)Nrrrrsnonexistent-file)r"rrrencoder-rra)r Zfile1_bytestringr0rr r r 0test_read_returns_file_list_with_bytestring_paths    z>BasicTestCase.test_read_returns_file_list_with_bytestring_pathcCs|dj|jddS)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_configs z&BasicTestCase.get_interpolation_configcCs~|jd|jddid}t|jdddid}|||||tj |dWdn1sp0YdS) 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 rr0rzr r r check_items_configs z BasicTestCase.check_items_configcCs|jd|jddid}||dd||dd||dd|t|Wdn1s~0YdS) N [section1] name1 {0[0]} value1 [section2] name2 {0[0]} value2 [section3] name3 {0[0]} value3 rrrrsection1section2section3)r1r~r"rapopitemrjrprr r r test_popitem!s zBasicTestCase.test_popitemcCs|ddi}|||jdddddd|d<||dg|t|dhd ||t|t|t||jdhdS) NrBrrrvalue1r)rrZzing>rrBr)r-rarer(r`rr clearrr r r test_clear0szBasicTestCase.test_clearcCsB|jd|jddid}|t|dddh|t|dd dh|t|d d dh||ddd ||dd d ||d d d||gdddi|d<|t|dddh||ddd|d |d||gdi|d <|t|d dh|d |d ||gd||j||j<| t||jti||j<|t||jt|t|ddh|t|ddh|t|d t||gd|d|d<|t|ddhdS)NrZnameDZvalueDrrZname1namedrZname2rZname3rrZvalue3)rrrZname22Zvalue22) r1r~r"rarr r` assertNotInr(ZassertNotEqualrr r r test_setitem<s>   zBasicTestCase.test_setitemcCs|jr|dtd|jd}|}|tj | |Wdn1sZ0Y| | ddd| |ddddS)Nz2if no_value is allowed, ParsingError is not raisedzC [DEFAULT] test {0} test invalidrZDEFAULTtest) r!rrrr~r"r-rjr2rr.rare)r invalidr0r r r test_invalid_multiline_valuebs (z*BasicTestCase.test_invalid_multiline_valueN)rrrr}rrrrrrrrrrrrrrrrrrrrrr r r r r5Es._AI*(   6!  &r5c@seZdZejZdZdS)StrictTestCaseTN)rrrr2RawConfigParserr+r'r r r r rrsrc@sReZdZejZddZddZddZddZ d d Z d d Z d dZ ddZ dS)ConfigParserTestCasecCs|}|j}||ddd||ddd||ddd||tjdd}|jtjkrr||jd nt |jtj r||jd dS) Nrrz%something with interpolation (1 step)bar9z.something with lots of interpolation (9 steps)bar10z/something with lots of interpolation (10 steps)bar11)rr5something %(with11)s lots of interpolation (11 steps)) rrarerr2InterpolationDepthErrorr)r4rv isinstanceLegacyInterpolation)r r0r{rr r r test_interpolationzs   z'ConfigParserTestCase.test_interpolationcCs|}||tjdd}||jd||jd||jd|jtj kr`||j dnt |jtj r|||j ddS)NInterpolation Errorrd reference)rdr z %(reference)sr ) rrr2InterpolationMissingOptionErrorrar rErr)r4rvrrrr r r test_interpolation_missing_values  z5ConfigParserTestCase.test_interpolation_missing_valuecCs|gddS)N)rr) getdefaultz ||)rz|value|)rdrJrrr r r test_itemsszConfigParserTestCase.test_itemscCs|dj|jdd}||ddd|jtjkrN||dddnDt|jtj r| t |ddWdn1s0YdS) Nzc[section] option1{eq}xxx option2{eq}%(option1)s/xxx ok{eq}%(option1)s/%%s not_ok{eq}%(option2)s/%%srrrEokzxxx/%sZnot_okz xxx/xxx/%s) r1r~r"rarer)r2r4rrrj TypeErrorrr r r test_safe_interpolations  z,ConfigParserTestCase.test_safe_interpolationcCs|dj|jdd}||ddd|t|jddd|t|jddd|t|jddd ||ddd|dd d ||dd d dS) NrrrrrrB%foofoo%f%oorfoo%%barzfoo%bar)r1r~r"rarerjrwrrr r r #test_set_malformatted_interpolationsz8ConfigParserTestCase.test_set_malformatted_interpolationcCs|dj|jdd}|t|jddd|t|jddd|t|jddt|t|jddd|t|jddd|t|jddt|t|jdd d |t|jd dS) Nrrrrrr g?rrzinvalid opt name!)r1r~r"rjrrobjectrrr r r test_set_nonstring_typessz-ConfigParserTestCase.test_set_nonstring_typescCs|}|t|j|jdSr)r-rjrwrr(rr r r test_add_section_defaultsz-ConfigParserTestCase.test_add_section_defaultcCs|jddid}|||jdd|||jdd|jddid}|||jdd |||jddd S) zbpo-23835 fix for ConfigParserr 333333@rr[z2.4r@rz5.2N)r-rar(rgrhrr r r test_defaults_keywords z*ConfigParserTestCase.test_defaults_keywordN)rrrr2 ConfigParserr+rr rrrrrrr r r r rwsrc@sDeZdZejZdZed Z ddZ ddZ ddZ 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) NZnumbersoner[twoz %(one)s * 2threez${common:one} * 3ZhexenZsixteenz${numbers:two} * 8)rarr r r assertMatchesInisz4ConfigParserTestCaseNoInterpolation.assertMatchesInicCs||j}||dSr)r1inir$rr r r test_no_interpolations z9ConfigParserTestCaseNoInterpolation.test_no_interpolationcCs|}||ddSN)r- assertIsNoner.rr r r test_empty_casesz3ConfigParserTestCaseNoInterpolation.test_empty_casecCs2Gdddtj}|}||j||dS)Nc@seZdZdZdS)zbConfigParserTestCaseNoInterpolation.test_none_as_default_interpolation..CustomConfigParserN)rrrZ_DEFAULT_INTERPOLATIONr r r r CustomConfigParsersr+)r2rr.r%r$)r r+r0r r r "test_none_as_default_interpolations zFConfigParserTestCaseNoInterpolation.test_none_as_default_interpolation)rrrr2rr+r)rrstripr%r$r&r*r,r r r r r s r c@s"eZdZejZeZddZdS)'ConfigParserTestCaseLegacyInterpolationcCs|dj|jdd}||ddd|ddd||ddd|ddd||ddd|ddd ||ddd |dd d ||dd d dS) NrrrrrrBrrrrr)r1r~r"rarerrr r r rszKConfigParserTestCaseLegacyInterpolation.test_set_malformatted_interpolationN) rrrr2rr+rr)rr r r r r.sr.c@seZdZdZdZdZdS))ConfigParserTestCaseNonStandardDelimitersz:=$//"Nrrrr"r#r$r r r r r/sr/c@seZdZdZdS)-ConfigParserTestCaseNonStandardDefaultSectionZgeneralN)rrrr(r r r r r6sr6c@s6eZdZejZdddZddZddZ dd Z d S) MultilineValuesTestCasezSI'm having spam spam spam spam spam spam spam beaked beans spam spam spam and spam!  cCs|}tdD]<}d|}||tdD]}||d||jq0qttjd}| |Wdn1sz0YdS)Ndz section{} z lovely_spam{}w) r-rr~rrwonderful_spamrrTESTFNr)r r0rsjrr r r setUp#s    zMultilineValuesTestCase.setUpcCsttjdSr)osunlinkrr>rr r r tearDown-sz MultilineValuesTestCase.tearDowncCs^|}ttj}||Wdn1s20Y||dd|jdddS)NZsection8Z lovely_spam4r9 ) r-rrr>rrarer=replace)r Z cf_from_filerr r r test_dominating_multiline_values0s  ( z8MultilineValuesTestCase.test_dominating_multiline_valuesN) rrrr2rr+rFr=rArDrGr r r r r7s r7c@s2eZdZejZddZddZddZddZ d S) RawConfigParserTestCasecCsZ|}|j}||ddd||ddd||ddd||ddd dS) Nrrz*something %(with1)s interpolation (1 step)rz3something %(with9)s lots of interpolation (9 steps)rz5something %(with10)s lots of interpolation (10 steps)rr)rrarer r0r{r r r r=s    z*RawConfigParserTestCase.test_interpolationcCs|gddS)N)r )rz |%(default)s|)rz |%(name)s|)rdz %(value)srrr r r rIsz"RawConfigParserTestCase.test_itemscCs|}|d|ddd|ddgd|ddddi||ddd||ddgd||ddddi|d |d d d ||d d d |jtjurd d |_|ddd||ddddS)Nz non-stringrMr rb)rr r r r*pign! @rz this is sickTcSs|Srr )rr r r _rzBRawConfigParserTestCase.test_set_nonstring_types..) r-rrrare_dictr2r3 optionxformrr r r rOs"    z0RawConfigParserTestCase.test_set_nonstring_typescCsz|t }|jddidWdn1s00Y|j}|t|d|jddid}|||jdddS) z-bpo-23835 legacy behavior for RawConfigParserr rrNz%'int' object has no attribute 'lower'rrr)rjror-rurarrgr()r ctxerrr0r r r rcs  .z-RawConfigParserTestCase.test_defaults_keywordN) rrrr2rr+rrrrr r r r rH:s  rHc@seZdZdZdZdZdS),RawConfigParserTestCaseNonStandardDelimitersr0r2Nr5r r r r rTmsrTc@s&eZdZejZdZdZdZddZ dS)RawConfigParserTestSambaConf)rrz----)r3FcCstd}|}|j|dgdd}|||ggd}|||||ddd||dd d ||dd d ||d dddS)Nz cfgparser.2rrr)globalZhomesZprinterszprint$z pdf-generatortmpZAgustinrVZ workgroupZMDKGROUPz max log size2z hosts allowz127.rWz echo commandz cat %s; rm %s)rrr-rrar`rerf)r Zsmbconfr0rr`r r r test_readingys z)RawConfigParserTestSambaConf.test_readingN) rrrr2rr+r#r$r%rYr r r r rUss rUc@s\eZdZejZeZdZdZ dddZ ddZ dd Z d d Z d d ZddZddZdS))ConfigParserTestCaseExtendedInterpolationcommonTNcCs"||}|r||_|||Sr)r-rQr.)r r/r rQr0r r r r1s   z4ConfigParserTestCaseExtendedInterpolation.fromstringcCsP|td}|j}||ddd||ddd||ddd||ddd||ddd ||dd d ||dd d ||ddd||ddd||ddd||ddd||ddd||ddd||ddd||ddd||dd d ||ddddS)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)r1rrr-rarIr r r test_extended_interpolations* zEConfigParserTestCaseExtendedInterpolation.test_extended_interpolationcCs|td}|tj|ddWdn1sB0Y|tj|ddWdn1sz0YdS)Nz [one for you] ping = ${one for me:pong} [one for me] pong = ${one for you:ping} [selfish] me = ${me} z one for youZpingZselfishme)r1rrr-rjr2rrr r r test_endless_loops  *z;ConfigParserTestCaseExtendedInterpolation.test_endless_loopcCs|d}||ddd||ddd||dddtj}||}|dd Wdn1sx0Y||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_optionss  *z>ConfigParserTestCaseExtendedInterpolation.test_strange_optionscCstd}||}|j}||ddd||ddd||ddd||ddd ||d d d ||d d ddS)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 OptionUpperValueCommona better valueA Better ValuerandomZfoolowervalue redefinedZFooUpperA Better Value Redefined)rrr-r1rar r%r0r{r r r test_case_sensitivity_basics zEConfigParserTestCaseExtendedInterpolation.test_case_sensitivity_basiccCstd}|tj||}Wdn1s:0Y|j|ddd}|j}||ddd||ddd ||d dd ||d dd ||d dd||d dddS)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 )rr r r rOrz[ConfigParserTestCaseExtendedInterpolation.test_case_sensitivity_conflicts..)rQr[rrJrr`rarbrcrdrBrerrf)rrr-rjr2rr1rargr r r test_case_sensitivity_conflictss (zIConfigParserTestCaseExtendedInterpolation.test_case_sensitivity_conflictscCs`|d}|tj|ddWdn1s80Y|tj|ddWdn1sp0Y|tj|ddWdn1s0Y|tj|ddWdn1s0Y|tj|ddWdn1s0Y|td|dd <Wdn1sR0YdS) 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)r1rjr2InterpolationSyntaxErrorr rwrr r r test_other_errorss ****, z;ConfigParserTestCaseExtendedInterpolation.test_other_errors)NN)rrrr2rr+ExtendedInterpolationr)r(r'r1r\r^r_rhrirkr r r r rZs -rZc@seZdZdZdS)ConfigParserTestCaseNoValueTN)rrrr!r r r r rm2srmc@s2eZdZejZdhZdhZdZddZ ddZ dS) ConfigParserTestCaseTrickyFilerrTcCstd}|}|t|j|ddd||gd||j|jdddid d | t (|j|jdd ddid Wdn1s0Y|t| d d dd|t| dd ddd}| ||d|| |dd|t|dd| tj|dWdn1sJ0Y|| ddd|| dd| dd|| ddddS) Nrrrr )strange corruption&yeah, sections can be indented as well another one!no values heretricky interpolationmore interpolationZgoZ interpolatez-1rVT)rawrWrootherrErprJr;rqzare they subsectionszlets use some Unicodeu 片仮名rrrrsrtZletszdo thisruz go shopping)rrr-rarcrr`rfr(rjrwresplitrrrirr2r )r rr0Zlongnamer r r test_cfgparser_dot_3<s4   $* z3ConfigParserTestCaseTrickyFile.test_cfgparser_dot_3cCsNtd}|}|t|j|ddWdn1s@0YdS)Nrasciir)rrr-rjUnicodeDecodeErrorr)r rr0r r r test_unicode_failure\s  z3ConfigParserTestCaseTrickyFile.test_unicode_failureN) rrrr2rr+r"r#r!r{r~r r r r rn6s  rnc@s,eZdZdZdZddZddZddZd 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|dddt}|||SNF)r!rEr)rrrrrr)r r+cprr r r preparels    zIssue7005TestCase.preparecCsRtjdd}|d|t|dddWdn1sD0YdSr)r2rrrjrr)r rr r r test_none_as_value_stringifiedus   z0Issue7005TestCase.test_none_as_value_stringifiedcCs|tj}|||jdSr)rr2rraexpected_output)r rr r r "test_none_as_value_stringified_raw{s z4Issue7005TestCase.test_none_as_value_stringified_rawN)rrr__doc__rrrrr r r r rcs  rc@seZdZeZddZdS)SortedTestCasecCs0|d}t}||||ddS)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 )r1rrrrar)r r0rr r r test_sorteds    zSortedTestCase.test_sortedN)rrrrr&rr r r r rsrc@s"eZdZejZdZdZddZdS)CompatibleTestCasez#;rcCsTtd}||}||ddd||ddd||ddddS) 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)rrr1rarerr r r test_comment_handlings z(CompatibleTestCase.test_comment_handlingN) rrrr2rr+r#r$rr r r r rsrc@seZdZejZdddZdS) CopyTestCaseNcCsp||}|||}|||D]<}|j|jkr@q.||jD]\}}|||krN||=qNq.|Sr)r-r.rrrdr(r)r r/r r0Zcf_copyrErrJr r r r1s       zCopyTestCase.fromstring)N)rrrr2rr+r1r r r r rsrc@seZdZddZddZdS)FakeFilecCsJtd}t|$}||_|jWdn1s<0YdS)Nr)rrr readlineslinesreverse)r file_pathrr r r __init__s   zFakeFile.__init__cCst|jr|jSdSr')rcrpoprr r r rs  zFakeFile.readlineN)rrrrrr r r r rsrccs |}|r|V|}qdS)z+As advised in Doc/library/configparser.rst.N)r)rliner r r readline_generatorsrc@s,eZdZddZddZddZddZd S) ReadFileTestCasec Cstdg}z||ddWnty6Yn0|D]n}t}t|}||Wdn1sp0Y| d|| d|d| |dddq}t d t ||j dd|_ ||jdWdn1s0Y|D]}| |jt uqdS) Nz%Required argument `source' not given.rfilename)rrz:Cannot specify both `filename' and `source'. Use `source'.rTrecordalways)rjrwr2rrarrurwarningscatch_warnings simplefilterDeprecationWarningrrqcategory)r r|rr<warningr r r test_parsing_error<s & ,  ,z-CoverageOneHundredTestCase.test_parsing_errorcCst}|d|tj}|ddWdn1s@0Y|t|jd|tj}|ddWdn1s0Y|t|jddS)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.rjrjrarrur rnr|r r r test_interpolation_validationOs **z8CoverageOneHundredTestCase.test_interpolation_validationcCstd}t}tjdd*}tdt|j|ddWdn1sN0Y|D]}| |j tuq\| t |d| |dd d dS) Nz2 [section] option = value TrrrrrJrErrJ) rrr2rrrrrZreadfprqrrarc)r rrnr<rr r r test_readfp_deprecation`s  ,z2CoverageOneHundredTestCase.test_readfp_deprecationcCs^tjdd$}tdtt}Wdn1s60Y|D]}||jtuqDdS)NTrr)rrrrr2ZSafeConfigParserrqr)r r<rnrr r r !test_safeconfigparser_deprecationns  &z)r2rr.rareprrr r r test_sectionproxy_reprus z1CoverageOneHundredTestCase.test_sectionproxy_reprcCst}ddl}|j|jd<|d|d|j||ddd||ddd ||ddd||ddd |`| t |ddWdn1s0Y|d|j|jd=| d|j| t |ddWdn1s0Y| t |ddWdn1sN0Y| t |ddWdn1s0YdS) NrdecimalzS [s1] one = 1 [s2] two = 2 s1r!r s2r"rJ) r2rrDecimal convertersr.rra getdecimalrjror)r rnrr r r "test_inconsistent_converters_state}s*   * , . z=CoverageOneHundredTestCase.test_inconsistent_converters_stateN) rrrrrrrrrrrrr r r r r(s rc@sheZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZdS)ExceptionPicklingTestCasezBTests for issue #13760: ConfigParser exceptions are not picklable.cCsdddl}td}t|jdD]>}|||}||}||j|j|t |t |q dS)NrrJr ) pickler2ErrorrHIGHEST_PROTOCOLdumpsloadsramessagerr re1protoZpicklede2r r r test_errors   z$ExceptionPicklingTestCase.test_errorcCsddl}td}t|jdD]^}|||}||}||j|j||j |j ||j |j |t |t |q dS)NrrEr ) rr2rkrrrrrarrvrErrr r r test_nosectionerrors   z-ExceptionPicklingTestCase.test_nosectionerrorcCsddl}tdd}t|jdD]n}|||}||}||j|j||j |j ||j |j ||j |j |t |t |q"dS)NrrrEr ) rr2rlrrrrrarrvrErrrr r r test_nooptionerrors   z,ExceptionPicklingTestCase.test_nooptionerrorcCsddl}tddd}t|jdD]~}|||}||}||j|j||j |j ||j |j ||j |j ||j |j |t |t |q$dS)NrrErrr )rr2rrrrrrarrvrErrrrr r r test_duplicatesectionerrors  z4ExceptionPicklingTestCase.test_duplicatesectionerrorcCsddl}tdddd}t|jdD]}|||}||}||j|j||j |j ||j |j ||j |j ||j |j ||j |j |t|t|q&dS)NrrErrrr )rr2rrrrrrarrvrErrrrrr r r test_duplicateoptionerrors   z3ExceptionPicklingTestCase.test_duplicateoptionerrorcCsddl}tddd}t|jdD]n}|||}||}||j|j||j |j ||j |j ||j |j |t |t |q$dSNrrrEmsgr ) rr2ZInterpolationErrorrrrrrarrvrErrrr r r test_interpolationerrors  z1ExceptionPicklingTestCase.test_interpolationerrorcCsddl}tdddd}t|jdD]~}|||}||}||j|j||j |j ||j |j ||j |j ||j |j |t |t |q&dS)NrrrErr r )rr2r rrrrrarrvrErr rrr r r $test_interpolationmissingoptionerrors  z>ExceptionPicklingTestCase.test_interpolationmissingoptionerrorcCsddl}tddd}t|jdD]n}|||}||}||j|j||j |j ||j |j ||j |j |t |t |q$dSr) rr2rjrrrrrarrvrErrrr r r test_interpolationsyntaxerrors  z7ExceptionPicklingTestCase.test_interpolationsyntaxerrorcCsddl}tddd}t|jdD]n}|||}||}||j|j||j |j ||j |j ||j |j |t |t |q$dS)NrrrErr ) rr2rrrrrrarrvrErrrr r r test_interpolationdeptherrors  z6ExceptionPicklingTestCase.test_interpolationdeptherrorcCsfddl}td}|dd|dd|ddt|jdD]n}|||}||}||j |j ||j |j ||j |j ||j |j |t |t |qDtjd d }|dd|dd|ddt|jdD]n}|||}||}||j |j ||j |j ||j |j ||j |j |t |t |qdS) Nrrr Zline1rJZline2rKZline3rr)rr2rr^rrrrrarrvrerrorsrrr r r test_parsingerror s2            z+ExceptionPicklingTestCase.test_parsingerrorcCsddl}tddd}t|jdD]~}|||}||}||j|j||j |j ||j |j ||j |j ||j |j |t |t |q$dS)Nrrrrr )rr2rrrrrrarrvrrrrrr r r test_missingsectionheadererror's  z8ExceptionPicklingTestCase.test_missingsectionheadererrorN)rrrrrrrrrrrrrrrr r r r rs       rc@seZdZdZddZdS)InlineCommentStrippingTestCasez}Tests for issue #14590: ConfigParser doesn't strip inline comment when delimiter occurs earlier without preceding space..cCstjdd}|d|d}||dd||dd||d d ||d d ||d d||dd||dd|d}||dd||dd||d ddS)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)rrrrrr r r r r5src@s8eZdZdZddZddZddZdd Zd d Zd S) ExceptionContextTestCasezO Test that implementation details doesn't leak through raising exceptions. cCsbt}|d|tj}||ddWdn1sD0Y||jjddS)Nz [Paths] home_dir: /Users my_dir: %(home_dir1)s/lumberjack my_pictures: %(my_dir)s/Pictures Pathsmy_dirT) r2rr.rjr rermru__suppress_context__rr r r test_get_basic_interpolation]s   *z5ExceptionContextTestCase.test_get_basic_interpolationcCsjtjtd}|d|tj}||ddWdn1sL0Y||jj ddS)N)r)z [Paths] home_dir: /Users my_dir: ${home_dir1}/lumberjack my_pictures: ${my_dir}/Pictures rrT) r2rrlr.rjr rermrurrr r r test_get_extended_interpolationjs  *z8ExceptionContextTestCase.test_get_extended_interpolationcCs\t}|d|tj}|dWdn1s>0Y||jjddS)Nz2 [Paths] home_dir: /Users rT) r2rr.rjrkrrmrurrr r r test_missing_optionsxs  (z-ExceptionContextTestCase.test_missing_optionscCsVt}|tj}|dddWdn1s80Y||jjddS)NSection1an_intZ15T)r2rrjrkrrmrurr rr|r r r test_missing_sections,z-ExceptionContextTestCase.test_missing_sectioncCsTt}|tj}|ddWdn1s60Y||jjddS)NrrT)r2rrjrkrtrmrurrr r r test_remove_options*z+ExceptionContextTestCase.test_remove_optionN) rrrrrrrrrr r r r rYs   rcs0eZdZdZejZdfdd ZddZZ S)ConvertersTestCasez Introduced in 3.5, issue #18159.Ncs tj|d}dd|jd<|S)NrcSsdd|DS)NcSsg|]}|r|qSr )r-)rrr r r rszBConvertersTestCase.newconfig....)rzvr r r rOrz.ConvertersTestCase.newconfig..rb)superr-r)r r r, __class__r r r-szConvertersTestCase.newconfigcCs|}|d|j|d|j||jd||jd||jd||jd|t|jd|tdd|jd<Wdn1s0Y|td d|jd<Wdn1s0Y| d |d }||d d ||dd||dd||dd||dd|| d d d || d dd|| d dd|| d dd|| d dd|| d d d || d dd|| d dd|| d dgd||d dd|| d d || dd|| dd|| dgd||dd|t|d dWdn1s0Y|t|dWdn1s0Yddl}|j|jd<|d|j||jd|t|jd|d}||d d|||d||jd=|d|j|t|jd|t|d dWdn1s0Y|t|dWdn1s0Y|t|jd=Wdn1s0Y|t|jd=Wdn1sH0Y|t|jd=Wdn1s|0YdS)NrQrbrMrOrycSs|Srr rr r r rOrz4ConvertersTestCase.test_converters..r(cSs|Srr rr r r rOrz~ [s] str = string int = 1 float = 0.5 list = a b c d e f g bool = yes r?rr/r[z0.5z a b c d e f gboolrYr g?)rrcdrrgTrrr)r-rrr)assertIsNotNonerarcrjrwr.rerfrhZgetlistrirorrrrrp)r rr?rZdec0_5r r r test_converterssv , ,  , *   , * ( ( z"ConvertersTestCase.test_converters)N) rrrrr2rr+r-r __classcell__r r rr rsrc@s4eZdZdZdZddZddZddZd 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||||jddS)Nrc)r)r2rrcr.r _test_lenrrr rr r r test_converters_at_inits  z9BlatantOverrideConvertersTestCase.test_converters_at_initcCsGdddtj}|}||j||||jd||dd||dd| |dd| |dd|j |jd<| |dd| |dd| |dd| |dddS)Ncs@eZdZdZddejdfdd ZddejdddZZS) zOBlatantOverrideConvertersTestCase.test_inheritance..StrangeConfigParserz0a historic borough in south central PennsylvaniaFNrwrWrUcs"||kr dStj|||||dS)NTr)rrir rErrwrWrUrr r ris zZBlatantOverrideConvertersTestCase.test_inheritance..StrangeConfigParser.getbooleancSs|j||t|||dS)Nr)Z _get_convrcrr r r getlenszVBlatantOverrideConvertersTestCase.test_inheritance..StrangeConfigParser.getlen) rrrZ gettysburgr2r4rirrr r rr StrangeConfigParsersrrcr!r"rQ) r2rr.rrr)rrqrirr_convert_to_boolean)r rrr r r test_inheritances   z2BlatantOverrideConvertersTestCase.test_inheritancecCs|t|jd|d|j|d|j|d|j||jd||jd||jd||ddd||dd d||dd d ||d dd||d d d||d d d||jd d d dd |tj |d d Wdn1s,0Y||ddd||dd d||dd d ||d dd||d d d||d d d||d d d d ||d d ddS)NryrQrcZtysburgrMrOr!rr"r#ZfourrrT) rarcrrrr)rrjr2rlrr r r rs0,z+BlatantOverrideConvertersTestCase._test_lencs&tdd_fdd_|j|tjd| dj| dj| 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 Wdn1s0Y|t&|d d d Wdn1s0YdS)NcSsdS)NTr rErr r r rO0rzLBlatantOverrideConvertersTestCase.test_instance_assignment..cst||Sr)rcrrr r rO1rrKrQrcrMrOr!r"rr#rry)r2rrirr.rrarcrrrr)rqrrrrjrorr rr test_instance_assignment.s:    6 z:BlatantOverrideConvertersTestCase.test_instance_assignmentN) rrrrrrrrrr r r r rs  rc@seZdZddZdS) 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__), collectionsr2rrBrrZunittestrrrUserDictrrr5ZTestCaserrr r.r/r6r7rHrTrUrZrmrnrrrrrrrrrrrrrrrmainr r r r s` !3b$3,- Sr$6Ro