HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.10/test/__pycache__/test_configparser.cpython-310.opt-1.pyc
o

�i�U�@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z	ddl
mZGdd�dej�Z
Gdd�d�ZGdd	�d	e�ZGd
d�deej�ZGdd
�d
eej�ZGdd�deej�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�deej�ZGdd�deej�ZGdd�de�ZGdd�deej�ZGdd�deej�ZGd d!�d!e�ZGd"d#�d#eej�ZGd$d%�d%ej�ZGd&d'�d'e�ZGd(d)�d)eej�Z Gd*d+�d+eej�Z!Gd,d-�d-�Z"d.d/�Z#Gd0d1�d1ej�Z$Gd2d3�d3ej�Z%Gd4d5�d5ej�Z&Gd6d7�d7ej�Z'Gd8d9�d9ej�Z(Gd:d;�d;eej�Z)Gd<d=�d=ej�Z*Gd>d?�d?ej�Z+e,d@k�r@e�-�dSdS)A�N)�support)�	os_helperc@s@eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�ZeZ	d
S)�
SortedDictcC�t|j���S�N)�sorted�data�items��self�r�3/usr/local/lib/python3.10/test/test_configparser.pyr	�zSortedDict.itemscCrr)rr�keysr
rrr
rrzSortedDict.keyscC�dd�|��D�S)NcSsg|]}|d�qS)�r)�.0�irrr
�
<listcomp>sz%SortedDict.values.<locals>.<listcomp>)r	r
rrr
�values�zSortedDict.valuescC�t|���Sr)�iterr	r
rrr
�	iteritems�zSortedDict.iteritemscCrr)rrr
rrr
�iterkeysrzSortedDict.iterkeyscCrr)rrr
rrr
�
itervaluesrzSortedDict.itervaluesN)
�__name__�
__module__�__qualname__r	rrrrr�__iter__rrrr
rsrc@sJeZdZdZdZdZdZdZej	Z
dZejZ
ejZd
dd�Zd
dd	�ZdS)�CfgParserTestCaseClassF)�=�:)�;�#TNcCsBt||j|j|j|j|j|j|j|j|j	d�
}|j
di|��}|S)N)
�defaults�allow_no_value�
delimiters�comment_prefixes�inline_comment_prefixes�empty_lines_in_values�	dict_type�strict�default_section�
interpolationr)�dictr'r(r)r*r+r,r-r.r/�config_class)rr&Z	arguments�instancerrr
�	newconfig0s�z CfgParserTestCaseClass.newconfigcCs|�|�}|�|�|Sr)r3�read_string)r�stringr&�cfrrr
�
fromstring@�

z!CfgParserTestCaseClass.fromstringr)rrrr'r(r)r*r+�configparser�
_default_dictr,r-ZDEFAULTSECTr.�_UNSETr/r3r7rrrr
r!%s
r!c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�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
�qs||��||j�||�dd	�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�||�dd �d!�||�d"d#�d$�|j�r||�dd%�d�||jdd	dd&�d
�||jdd	d	did'�d�|�tj��|�d(d	�Wd�n	1�sMwY|�tj��|�dd)�Wd�n	1�sjwY||jd(d	dd&�d�||jdd)dd&�d�||jdd	dd&�d�||jd*d	dd&�d�||j
ddd+d&�d�||j
dd,d+d&�d+�||j
dd,d-d&�d-�|�tj��|�
dd,�Wd�n	1�s�wY|�|jddd.d&�d�|�|jdd/d.d&�d.�||jdd/d0d&�d0�|�tj��|�dd/�Wd�n	1�swY||jddd1d&�d�||jdd2d3d&�d3�||jdd2d1d&�d1�|�tj��|�dd2�Wd�n	1�sRwY||jd4dd1d&�d1�|j�r|||jdd%dd&�d�||jdd5dd&�d�||dd	d
�||dd	d�|d}||j
d�|�|j|�|�t��d6|_
Wd�n	1�s�wY|�t��d7|_Wd�n	1�s�wY||d	d
�||dd�||dd	d�||ddd�||ddd�||ddd�||d8d	d9�|j�r||dd%d�||d�d	d�d
�||djd	dd&�d
�||djd	d	did'�d�|�t��|d(d	Wd�n	1�sUwY|�t��|dd)Wd�n	1�sqwY|�t��|d(jd	dd&�Wd�n	1�s�wY||d�d)d�d�||djd)dd&�d�||d�d)�d�||d�d	d�d�||djd	dd&�d�|�t��|d*�d	d�Wd�n	1�s�wY||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/d0�d0�||djd/d0d&�d0�||d�d/�d�||d�dd1�d�||djdd1d&�d�||d�d2d3�d3�||djd2d3d&�d3�||d�d2d1�d1�||djd2d1d&�d1�||d�d2�d�|j�r||d�d%d�d�||djd%dd&�d�||d�d5d�d�||djd5dd&�d�d:||jd;<d<||jd=<|�|�d��|�|�dd��|�|�d��|�|�|j��|�|�dd	�d>�|�|�dd	�d?�|�|�dd	�d@�|�|�dd;��|�|�dd;��|�|�|jd;��|�|�dd;��|�|�|jd;��|�tj��}|�dAd	�Wd�n	1�s�wY|�|jjdB�||�d8d	�d9�|d=|�d|v�|�t��|d=Wd�n	1�s�wY|�t ��||j=Wd�n	1�s�wY|dd	=|�d	|dv�|�t��
|dd	=Wd�n	1�swY|�d=|dv�|�t��
|dd==Wd�n	1�s>wY||jd==|�d=|dv�|�t��||jd==Wd�n	1�siwY|�t��|dAd	=Wd�dS1�s�wYdS)CN)
�
Commented Bar�Foo Bar�Internationalized Stuff�	Long Line�Section\with$weird%characters[	�Spaces�
Spacey Bar�Spacey Bar From The Beginning�Types�This One Has A ] In It�NoValue)�baz�qwe)�foo�bar3rDcS�g|]}|�qSrr�r�sectionrrr
rd�z,BasicTestCase.basic_test.<locals>.<listcomp>r>rJ�bar1rC�bar2rKrHrIr=�bar4rB�key with spaces�value�another with spaces�splat!rE�int�*Z42�float�)\��(�?z0.44�booleanFZ123�strange but acceptablerF�forks�spoons�option-without-value��fallback��varszNo Such Foo Barzno-such-foozNo Such Spacey Bar�zno-such-intZ18gz
no-such-floatz0.0Tzno-such-boolean�yesz
No Such Typeszno-such-option-without-valuezName is read-onlyzParser is read-onlyr@�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)ri)!r'�append�sort�sections�assertEqualr	r.r�list�len�namer&�get�getint�assertAlmostEqual�getfloat�
getboolean�assertRaisesr9�NoSectionError�
NoOptionError�assertIs�parser�AttributeError�KeyError�
assertTrueZremove_section�assertFalse�
has_option�
remove_option�	exception�args�
ValueError)	rr6�E�F�L�eqrprN�cmrrr
�
basic_testHs�





����������
����������������������
�
���$�zBasicTestCase.basic_testcCs�d�|j|j�}|jr|d7}|�|�}|�|�|jrc|�tj	��|�
t�d�|j���Wd�n1s9wY|�tj
��|�
t�d�|j���Wd�dS1s\wYdS|�
t�d�|j���|�
t�d�|j���dS)Nax[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
[This One Has A ] In It]
  forks {0[0]} spoons
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'r7r�r-rvr9�DuplicateOptionErrorr4�textwrap�dedent�DuplicateSectionError�r�
config_stringr6rrr
�
test_basic(s4��


��
�"�
�

�zBasicTestCase.test_basicc
CsDddiddiddd�ddd�ddiid	d
ddd
�ddd�ddddd�ddid�
}|jr4|�dddii�|��}|�|�|�|�|jr�|�tj��|�ddiddid��Wd�n1sbwY|�tj	��|�dd d!d"�i�Wd�dS1s�wYdS|�ddiddid#��|�dd d!d"�i�dS)$NrJrPrQrKrI)rJrHrRrfZ	BulgarianZDefaultZEnglishZDeutsch)zfoo[bg]rJzfoo[en]zfoo[de]rTrV)rSrUrXrZFr\)rWrYr[�{r]r^)
r>rCrDr=r@rAr?rBrErFrGr_�keyZkey2�value2)rgrzDuplicate Options Herezwith a valuezwith another value)�optionZOPTION)rNZSECTION)
r'�updater3�	read_dictr�r-rvr9r�r�)r�configr6rrr
�test_basic_from_dictks~����������)��


����"���
�z"BasicTestCase.test_basic_from_dictcCs�|��}|�d�|�d�|�d�|��}|��|j}||gd��|�ddd�||�d�dg�||�dd�dd�|�t	j
��|�ddd�Wd�n1sWwY|�|�dd��|�
|�dd��|�ddd	�d
D]}|�|�d|�d�qw||�d�dg�||�d�dg�|�dd�||�d�g�|�d
�|jd��}||�d�dg�||�dd�d�|jd�|jd�ddid�}|�|�dd��dS)N�A�a�B)r�r�r�rT�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&rN�Key)r3�add_sectionrlrkrm�set�optionsrqrvr9rwr}rr~r�r7r�r()rr6r�r��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�n1sYwY|�	d|dv�d	|dd
<dD]}|�	||dvd�qo||d��d
h�||d��dh�|dd=||d��i�|�
d�|jd��}||d��dh�||ddd�|j
d�|jd�ddid�}|�	d|dv�dS)Nr�r�rTr�cSrLrrrMrrr
r�rOzFBasicTestCase.test_case_sensitivity_mapping_access.<locals>.<listcomp>r�r�r�r�r�r�r�r�rr�r�r�r�r�r�r�r�rN)
r3rkrmZassertCountEqualrr.rrvr|r}r7r�r()rr6r�r�Zelem_eqr�rrr
�$test_case_sensitivity_mapping_access�sN��
�
���z2BasicTestCase.test_case_sensitivity_mapping_accesscCsP|�ddi�}|�|�|jd�dd�|�ddi�}|�|�|jd�dd�dS)NrJ�Bar�Foor�z<could not locate option, expecting case-insensitive defaults)r3rmrqr.�rr6rrr
�test_default_case_sensitivity	s��z+BasicTestCase.test_default_case_sensitivitycCs|��}|�|tjd�|jd��|�|tjd�|jd��|�|tjd�}|�|jd�|j	s�|�|tjd�}|�|jd�t
�d�}|jdd	krTtj}|f}ntj}|dd
f}t|dd��}|�|||�}Wd�n1stwY|�|j|�dSdS)
Nz[Foo]
{}val-without-opt-name
rr�No Section!
)�<???>rr�z[Foo]
  wrong-indent
)r��cfgparser.3r"z.  # INI with as many tricky parts as possible
�utf-8��encoding)
r3�parse_errorr9�ParsingErrorr�r(�MissingSectionHeaderErrorrmr�r'r�findfile�open)rr6�e�tricky�error�expected�frrr
�test_parse_errorss>
�
�
�
�
���zBasicTestCase.test_parse_errorscCsXt|d�r|}nt�|�}|�|��}|�|�Wd�|jS1s$wY|jS)N�readline)�hasattr�io�StringIOrv�	read_filer�)rr6�exc�src�sior�rrr
r�/s


��zBasicTestCase.parse_errorcCs�|��}|�|��gd�|�|�d�d�|�tj��
|�d�Wd�n1s,wY|�tj��|�	ddd�Wd�n1sIwY|�
|tjdd�}|�|jd�|�d�|�
|tj
dd�}|�|jd�dS)	Nz0new ConfigParser should have no defined sectionsr�z5new ConfigParser should have no acknowledged sectionsrJ�barrT)rJ)r�rJ)r3rmrlr~Zhas_sectionrvr9rwr�r��	get_errorr�r�rx�rr6r�rrr
�test_query_errors8s$����
zBasicTestCase.test_query_errorsc
CsTz|�||�Wn|y}z|WYd}~Sd}~ww|�d|j|jf�dS)Nzexpected exception type %s.%s)rqZfailrr)rr6r�rNr�r�rrr
r�Is��

�zBasicTestCase.get_errorcCsn|�dj|jdd��}tdd�D]#}|�|�dd|��|�|�dd|��|�t|jdd	|�qdS)
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)	r7r�r(�ranger}rur~rvr�)rr6�xrrr
�test_booleanRs
����zBasicTestCase.test_booleancCsP|��}|�d�|�tj��
}|�d�Wd�n1swY|j}|�t|�d�|�|jd�|j	r�|�tj��}|j
t�dj
|jdd��dd�Wd�n1s[wY|j}|�t|�d	�|�|jd
�|�tj��}|�ddd
d�i�Wd�n1s�wY|j}|�t|�d�|�|jd�dSdS)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��	<foo-bar>��sourcezFWhile reading from '<foo-bar>' [line  5]: section 'Foo' already exists)r�r�r�r��valzis really `opt`)r�ZOPTzIWhile reading from '<dict>': option 'opt' in section 'Bar' already exists)r�r�z<dict>N)r3r�rvr9r�r�rm�strr�r-r4r�r�r�r(r�r�)rr6r�r�rrr
�test_weird_errorsks4
�

���	��zBasicTestCase.test_weird_errorscCs�dj|j|jd|jd�}|jr|d7}|�|�}dD]0}t��}|j||d�|jd}|r4d�|�}dj||jd	�}|jrC|d
7}|�	|�
�|�qdS)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'r7r�r��writerm�getvalue)rr�r6r��output�	delimiterZ
expect_stringrrr
�
test_write�s6���



����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.<locals>.mystrN)rrrrrrr
�mystr�sr��sect�option1Zsplat�option2)r7r�r(r�r�)rr6r�rrr
�test_set_string_types�s
�z#BasicTestCase.test_set_string_typescCsb|jddkr|�d�t�d�}|��}|j|dgdd�}|�||g�|�|�dd	�d
�|��}|j|dd�}|�||g�|�|�dd	�d
�|��}|jt�	|�dd�}|�||g�|�|�dd	�d
�|��}|jt�	|�|gdd�}|�|||g�|�|�dd	�d
�|��}|jdgdd�}|�|g�|��}|jgdd�}|�|g�dS)Nrr"�incompatible format�cfgparser.1�nonexistent-filer�r�r>rJ�newbar)
r(�skipTestrr�r3�readrmrq�pathlib�Path)rZfile1r6�parsed_filesrrr
�test_read_returns_file_list�s2

z)BasicTestCase.test_read_returns_file_listcCs�|jddkr|�d�t�d���}|��}|j|dd�}|�||g�|��}|jddd�}|�|g�|��}|j|dgdd�}|�||g�dS)Nrr"r�r�r�r�snonexistent-file)r(r�rr��encoder3r�rm)rZfile1_bytestringr6r�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�)r7r�r(r
rrr
�get_interpolation_configs

��z&BasicTestCase.get_interpolation_configcCs�|jd�|j�ddid�}t|jdddid��}|��|�||�|�tj	��|�d�Wd�dS1s9wYdS)	Nz�
            [section]
            name {0[0]} %(value)s
            key{0[1]} |%(name)s|
            getdefault{0[1]} |%(default)s|
        �default�	<default>r�rNrTrbzno such section)
r7r�r(rnr	rkrmrvr9rw)rr�r6r�rrr
�check_items_configs�"�z BasicTestCase.check_items_configcCs�|jd�|j�ddid�}|�|��dd�|�|��dd�|�|��dd�|�t��
|��Wd�dS1s@wYdS)	N��
            [section1]
            name1 {0[0]} value1
            [section2]
            name2 {0[0]} value2
            [section3]
            name3 {0[0]} value3
        r�r�r�r�section1�section2�section3)r7r�r(rm�popitemrvr|r�rrr
�test_popitem)s�
"�zBasicTestCase.test_popitemcCs�|�ddi�}|�|�|jd�dd�ddd�|d<|�|��dg�|�t|d���hd	��|��|�t|���t��|�t||j���dh�dS)
NrJr�r�r��value1r�)r�r�Zzing>r�rJr�)r3rmrqr.rlr�r�clearr�rrr
�
test_clear8s� zBasicTestCase.test_clearcCsB|jd�|j�ddid�}|�t|d���ddh�|�t|d���d	dh�|�t|d
���ddh�|�|ddd�|�|dd	d
�|�|d
dd�|�|��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�ZnameDZvalueDr�r�Zname1�namedr�Zname2r�Zname3rr�Zvalue3)r�r�r�Zname22Zvalue22)
r7r�r(rmr�rrl�assertNotInr.ZassertNotEqualr�rrr
�test_setitemDs:�
zBasicTestCase.test_setitemcCs�|jr|�d�t�d�|jd��}|��}|�tj	��
|�
|�Wd�n1s-wY|�|�dd�d�|�|ddd�dS)Nz2if no_value is allowed, ParsingError is not raisedzC            [DEFAULT]
            test {0} test
            invalidrZDEFAULT�test)
r'r�r�r�r�r(r3rvr9r�r4rmrq)r�invalidr6rrr
�test_invalid_multiline_valuejs
��z*BasicTestCase.test_invalid_multiline_valueN)rrrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr	rrrr
r<Fs0aCL*(
		6!
&r<c@seZdZejZdZdS)�StrictTestCaseTN)rrrr9�RawConfigParserr1r-rrrr
r
zsr
c@sReZdZejZdd�Zdd�Zdd�Zdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dS)�ConfigParserTestCasecCs�|��}|j}||�dd�d�||�dd�d�||�dd�d�|�|tjdd�}|jtjkr:|�|jd	�dSt	|jtj
�rJ|�|jd	�dSdS)
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�rmrqr�r9�InterpolationDepthErrorr/r;r��
isinstance�LegacyInterpolation)rr6r�r�rrr
�test_interpolation�s���z'ConfigParserTestCase.test_interpolationcCs�|��}|�|tjdd�}|�|jd�|�|jd�|�|jd�|jtj	kr1|�|j
d�dSt|jtj�rA|�|j
d�dSdS)N�Interpolation Errorrp�	reference)rprz
%(reference)sr)
r�r�r9�InterpolationMissingOptionErrorrmrrNr�r/r;r�rrr�rrr
� test_interpolation_missing_value�s
��z5ConfigParserTestCase.test_interpolation_missing_valuecC�|�gd��dS)N)�r�r�)�
getdefaultz|<default>|)r�z|value|)rprT�r�r
rrr
�
test_items�rzConfigParserTestCase.test_itemscCs�|�dj|jdd��}|�|�dd�d�|jtjkr(|�|�dd�d�dSt|jtj	�rM|�
t��|�dd�Wd�dS1sFwYdSdS)	Nzc[section]
option1{eq}xxx
option2{eq}%(option1)s/xxx
ok{eq}%(option1)s/%%s
not_ok{eq}%(option2)s/%%srr�rN�okzxxx/%sZnot_okz
xxx/xxx/%s)r7r�r(rmrqr/r9r;rrrv�	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�rJ�%foo�foo%�f%oor��foo%%barzfoo%bar)r7r�r(rmrqrvr�r�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�rg�?r�r�zinvalid opt name!)r7r�r(rvrr��objectr�r�rrr
�test_set_nonstring_types�s
�z-ConfigParserTestCase.test_set_nonstring_typescCs|��}|�t|j|j�dSr)r3rvr�r�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@r�rgz2.4r��������@r�z5.2N)r3rmr.rsrtr�rrr
�test_defaults_keyword�sz*ConfigParserTestCase.test_defaults_keywordN)rrrr9�ConfigParserr1rrrr r%r'r(r+rrrr
rsrc@sDeZdZejZdZe�d��	�Z
dd�Zdd�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�onerg�twoz%(one)s * 2�threez${common:one} * 3ZhexenZsixteenz${numbers:two} * 8)rmr�rrr
�assertMatchesIni�sz4ConfigParserTestCaseNoInterpolation.assertMatchesInicCs|�|j�}|�|�dSr)r7�inir1r�rrr
�test_no_interpolation�sz9ConfigParserTestCaseNoInterpolation.test_no_interpolationcCs|��}|�|�d��dS�N�)r3�assertIsNoner4r�rrr
�test_empty_case�sz3ConfigParserTestCaseNoInterpolation.test_empty_casecCs2Gdd�dtj�}|�}|�|j�|�|�dS)Nc@seZdZdZdS)zbConfigParserTestCaseNoInterpolation.test_none_as_default_interpolation.<locals>.CustomConfigParserN)rrrZ_DEFAULT_INTERPOLATIONrrrr
�CustomConfigParser��r8)r9r,r4r2r1)rr8r6rrr
�"test_none_as_default_interpolation�szFConfigParserTestCaseNoInterpolation.test_none_as_default_interpolation)rrrr9r,r1r/r�r��stripr2r1r3r7r: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�rJr!r"r#r�r$)r7r�r(rmrqr�r�rrr
r%	s
�zKConfigParserTestCaseLegacyInterpolation.test_set_malformatted_interpolationN)	rrrr9r,r1rr/r%rrrr
r<sr<c@�eZdZdZdZdZdS)�)ConfigParserTestCaseNonStandardDelimiters�z:=�$��//�"N�rrrr(r)r*rrrr
r>�r>c@�eZdZdZdS)�-ConfigParserTestCaseNonStandardDefaultSectionZgeneralN)rrrr.rrrr
rG!r9rGc@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�qqttjddd��}|�	|�Wd�dS1s@wYdS)N�dz	section{}�
z
lovely_spam{}�wr�r�)
r3r�r�r�r��wonderful_spamr�r�TESTFNr�)rr6r�s�jr�rrr
�setUp+s

�"�zMultilineValuesTestCase.setUpcCst�tj�dSr)�os�unlinkrrOr
rrr
�tearDown5sz MultilineValuesTestCase.tearDowncCsb|��}ttjdd��
}|�|�Wd�n1swY|�|�dd�|j�dd��dS)Nr�r�Zsection8Zlovely_spam4rJ�
)	r3r�rrOr�rmrqrN�replace)rZcf_from_filer�rrr
� test_dominating_multiline_values8s��z8MultilineValuesTestCase.test_dominating_multiline_valuesN)rrrr9r,r1rWrNrRrUrXrrrr
rH%s�
rHc@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)r
z3something %(with9)s lots of interpolation (9 steps)rz5something %(with10)s lots of interpolation (10 steps)rr)r�rmrq�rr6r�rrr
rEs����z*RawConfigParserTestCase.test_interpolationcCr)N)r)rz
|%(default)s|)r�z
|%(name)s|)rpz	%(value)srr
rrr
rQrz"RawConfigParserTestCase.test_itemscCs�|��}|�d�|�ddd�|�ddgd��|�ddddi�|�|�dd�d�|�|�dd�gd��|�|�dd�ddi�|�d	�|�d	d
d�|�|�d	d
�d�|jtjurxdd
�|_|�ddd�|�|�dd�d�dSdS)Nz
non-stringrWrrn)rrr��r���
r0�pign��!	@r�zthis is sickTcS�|Srr)r�rrr
�<lambda>g�zBRawConfigParserTestCase.test_set_nonstring_types.<locals>.<lambda>)	r3r�r�rmrq�_dictr9r:�optionxformr�rrr
r'Ws$
�

�z0RawConfigParserTestCase.test_set_nonstring_typescCsz|�t��}|jddid�Wd�n1swY|j}|�t|�d�|jddid�}|�||jdd�dS)	z-bpo-23835 legacy behavior for RawConfigParserrr)r�Nz%'int' object has no attribute 'lower'r�r*r�)rvr{r3r�rmr�rsr.)r�ctx�errr6rrr
r+ks�z-RawConfigParserTestCase.test_defaults_keywordN)
rrrr9rr1rrr'r+rrrr
rYBsrYc@r=)�,RawConfigParserTestCaseNonStandardDelimitersr?rANrDrrrr
rgurErgc@s&eZdZejZdZdZdZdd�Z	dS)�RawConfigParserTestSambaConf)r%r$z----)rBFcCs�t�d�}|��}|j|dgdd�}|�||g�gd�}|�|��|�|�|�dd�d�|�|�dd	�d
�|�|�dd�d�|�|�d
d�d�dS)Nzcfgparser.2r�r�r�)�globalZhomesZprinterszprint$z
pdf-generator�tmpZAgustinriZ	workgroupZMDKGROUPzmax log size�2zhosts allowz127.rjzecho commandz
cat %s; rm %s)rr�r3r�rmrlrqrr)rZsmbconfr6r�rlrrr
�test_reading�s
z)RawConfigParserTestSambaConf.test_readingN)
rrrr9rr1r)r*r+rlrrrr
rh{srhc@s\eZdZejZe��ZdZdZ	ddd�Z
dd�Zdd	�Zd
d�Z
dd
�Zdd�Zdd�ZdS)�)ConfigParserTestCaseExtendedInterpolation�commonTNcCs"|�|�}|r
||_|�|�|Sr)r3rdr4)rr5r&rdr6rrr
r7�s


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}
        rnzfavourite 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)r7r�r�r;rmrZrrr
�test_extended_interpolation�s.��zEConfigParserTestCaseExtendedInterpolation.test_extended_interpolationcCs�|�t�d����}|�tj��|ddWd�n1s!wY|�tj��|ddWd�dS1s>wYdS)Nz�
            [one for you]
            ping = ${one for me:pong}

            [one for me]
            pong = ${one for you:ping}

            [selfish]
            me = ${me}
        zone for youZpingZselfish�me)r7r�r�r;rvr9rr�rrr
�test_endless_loop�s	��"�z;ConfigParserTestCaseExtendedInterpolation.test_endless_loopcCs�|�d�}|�|ddd�|�|ddd�|�|ddd�tj}|�|��}|dd	Wd�n1s<wY|�|jjd
�|�|jjdd�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:${sickr[z${dollars:${sick}})r7rmr9rrvr�rr�)rr6Zexception_classr�rrr
�test_strange_options�s
�z>ConfigParserTestCaseExtendedInterpolation.test_strange_optionscCs�t�d���}|�|�}|j}||ddd�||ddd�||ddd�||ddd	�||d
dd�||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
        rnZoptionlowerrTZOptionUpper�Value�Common�a better value�A Better Value�randomZfoolower�value redefinedZFooUpper�A Better Value Redefined)r�r�r;r7rm�rr2r6r�rrr
�test_case_sensitivity_basic�s�
zEConfigParserTestCaseExtendedInterpolation.test_case_sensitivity_basiccCs�t�d���}|�tj��
|�|�}Wd�n1swY|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
        cSr`rr)r�rrr
rarbz[ConfigParserTestCaseExtendedInterpolation.test_case_sensitivity_conflicts.<locals>.<lambda>)rdrnr�rTr�rsrtrurvrwrJrxr�ry)r�r�r;rvr9r�r7rmrzrrr
�test_case_sensitivity_conflictss�
�zIConfigParserTestCaseExtendedInterpolation.test_case_sensitivity_conflictscCs^|�d�}|�tj��|ddWd�n1swY|�tj��|ddWd�n1s8wY|�tj��|ddWd�n1sTwY|�tj��|ddWd�n1spwY|�tj��|ddWd�n1s�wY|�t��d|dd	<Wd�dS1s�wYdS)
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)r7rvr9�InterpolationSyntaxErrorrr�r�rrr
�test_other_errors"s&
	�����"�z;ConfigParserTestCaseExtendedInterpolation.test_other_errors)NN)rrrr9r,r1�ExtendedInterpolationr/r.r-r7rorqrrr{r|r~rrrr
rm�s
-rmc@rF)�ConfigParserTestCaseNoValueTN)rrrr'rrrr
r�:r9r�c@s2eZdZejZdhZdhZdZdd�Z	dd�Z
dS)	�ConfigParserTestCaseTrickyFiler"r%TcCs�t�d�}|��}|�t|j|dd��d�|�|��gd��|�|j|jdddid	�d
�|�	t
��|j|jddddid�Wd�n1sKwY|�t|�d
d��d��d�|�t|�dd��d��d�d}|�
|�|d��|�|�|d�d�|�t|�d��d�|�	tj��
|�d�Wd�n1s�wY|�|�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 interpolationZgoZinterpolatez-1rb���T)�rawrcr��otherrV�r�rTrLr�zare they subsectionszlets use some Unicodeu	片仮名r�r�r�r�Zletszdo thisr�zgo shopping)rr�r3rmror�rlrrr.rvr�rq�splitr~rur	r9r)rr�r6Zlongnamerrr
�test_cfgparser_dot_3Ds8
�����
�z3ConfigParserTestCaseTrickyFile.test_cfgparser_dot_3cCsPt�d�}|��}|�t��|j|dd�Wd�dS1s!wYdS)Nr��asciir�)rr�r3rv�UnicodeDecodeErrorr�)rr�r6rrr
�test_unicode_failureds

"�z3ConfigParserTestCaseTrickyFile.test_unicode_failureN)rrrr9r,r1r(r)r'r�r�rrrr
r�>s r�c@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'rNr�)r�r�r�r�r�r�)rr1�cpr�rrr
�preparets


zIssue7005TestCase.preparecCsTtjdd�}|�d�|�t��|�ddd�Wd�dS1s#wYdSr�)r9r,r�rvrr�)rr�rrr
�test_none_as_value_stringified}s

"�z0Issue7005TestCase.test_none_as_value_stringifiedcCs|�tj�}|�||j�dSr)r�r9rrm�expected_output)rr�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
r�ks	r�c@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

)r7r�r�r�rmr�)rr6r�rrr
�test_sorted�s


�zSortedTestCase.test_sortedN)rrrrr,r�rrrr
r��sr�c@s"eZdZejZdZdZdd�ZdS)�CompatibleTestCasez#;r$cCsTt�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
        r=rJzbar # not a comment!rHrIZquirkzthis;is not a comment)r�r�r7rmrqr�rrr
�test_comment_handling�s

	��z(CompatibleTestCase.test_comment_handlingN)	rrrr9rr1r)r*r�rrrr
r��s
r�c@seZdZejZddd�ZdS)�CopyTestCaseNcCsp|�|�}|�|�|��}|�|�|��D]}|j|jkr q||j��D]
\}}|||kr4||=q'q|Sr)r3r4r�rrpr.r	)rr5r&r6Zcf_copyrNr�rTrrr
r7�s


��zCopyTestCase.fromstringr)rrrr9r,r1r7rrrr
r��sr�c@seZdZdd�Zdd�ZdS)�FakeFilecCsPt�d�}t|dd��}|��|_|j��Wd�dS1s!wYdS)Nr�r�r�)rr�r��	readlines�lines�reverse)r�	file_pathr�rrr
�__init__�s


"�zFakeFile.__init__cCst|j�r
|j��SdSr4)ror��popr
rrr
r��r8zFakeFile.readlineN)rrrr�r�rrrr
r��sr�ccs(�|��}|r|V|��}|sdSdS)z+As advised in Doc/library/configparser.rst.N)r�)r��linerrr
�readline_generator�s��r�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�ReadFileTestCasec	Cs�t�d�g}z|�|d�d��Wn	tyYnw|D]9}t��}t|dd��
}|�|�Wd�n1s:wY|�	d|�|�	d|d�|�
|ddd�qdS)	Nr�r�utf8r�r�r>rJr�)rr�rjr��UnicodeEncodeErrorr9r,r�r��assertInrm)rZ
file_pathsr�rzr�rrr
�	test_file�s���zReadFileTestCase.test_filecCsZt�d����d�}t��}|�|�|�d|�|�d|d�|�|ddd�dS)Nz%
        [Foo Bar]
        foo=newbarrVr>rJr�)	r�r�r;r�r9r,r�r�rm)rr�rzrrr
�
test_iterable�s
�
zReadFileTestCase.test_iterablecCs�t��}|�t��|�t��Wd�n1swY|�tt���|�d|�|�d|d�|�|ddd�dS)z
Issue #11670.Nr>rJr�)	r9r,rvrr�r�r�r�rm�rrzrrr
�test_readline_generator�s�z(ReadFileTestCase.test_readline_generatorcCs�t�d����d�}t��}|�tj��}|j|dd�Wd�n1s&wY|�	t
|j�d�t�d����d�}t��}|�tj��}|j|dd�Wd�n1sZwY|�	t
|j�d�t�d	����d�}t��}|�tj
��}|j|dd�Wd�n1s�wY|�	t
|j�d
�t�d����d�}t��}|�tj��}|j|dd�Wd�n1s�wY|�	t
|j�d�dS)
z
Issue #18260.z"
        [badbad]
        [badbad]rVsbadbadr�NzGWhile reading from b'badbad' [line  2]: section 'badbad' already existsz5
        [badbad]
        bad = bad
        bad = badzWWhile reading from b'badbad' [line  3]: option 'bad' in section 'badbad' already existsz
        [badbad]
        = badz=Source contains parsing errors: b'badbad'
	[line  2]: '= bad'z"
        [badbad
        bad = badzDFile contains no section headers.
file: b'badbad', line: 1
'[badbad')r�r�r;r�r9r,rvr�r�rmr�r�r�r�r�)rr�rzZdserrr
�test_source_as_bytessX
���
���
���
���z%ReadFileTestCase.test_source_as_bytesN)rrrr�r�r�r�rrrr
r��s


r�c@sPeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�ZdS)�CoverageOneHundredTestCasez"Covers edge cases in the codebase.cCsft�dd�}|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�|�t|�d�dS)NrNr�)rNr�NNz3Option 'option' in section 'section' already exists)	r9r�rmrNr�r��linenor�r��rr�rrr
�test_duplicate_option_error3sz6CoverageOneHundredTestCase.test_duplicate_option_errorcCs<t�ddd�}|�|jd�|�|jd�|�|jd�dS)Nr�rN�rawval)r�rNr�)r9rrmr�r�rNr�rrr
�test_interpolation_depth_error=s�z9CoverageOneHundredTestCase.test_interpolation_depth_errorcCs |�t��}t��Wd�n1swY|�t|j�d�|�t��}tjddd�Wd�n1s9wY|�t|j�d�tjdd�}|�|jd�tj	dd��}t�
d	t�|�|jd�d|_|�|jd�Wd�n1s|wY|D]
}|�
|jtu�q�dS)
Nz%Required argument `source' not given.r��filename)r�r�z:Cannot specify both `filename' and `source'. Use `source'.�r�T��record�always)rvr�r9r�rmr�r�r��warnings�catch_warnings�simplefilter�DeprecationWarningr�r}�category)rr�r�rM�warningrrr
�test_parsing_errorDs&
����z-CoverageOneHundredTestCase.test_parsing_errorcCs�t��}|�d�|�tj��}|ddWd�n1s wY|�t|j�d�|�tj��}|ddWd�n1sEwY|�t|j�d�dS)Nz�
            [section]
            invalid_percent = %
            invalid_reference = %(()
            invalid_variable = %(does_not_exist)s
        rNZinvalid_percentz.'%' must be followed by '%' or '(', found: '%'Zinvalid_referencez+bad interpolation variable reference '%(()')r9r,r4rvr}rmr�r��rrzr�rrr
�test_interpolation_validationWs
��z8CoverageOneHundredTestCase.test_interpolation_validationcCs�t�d�}t��}tjdd��}t�dt�|j|dd�Wd�n1s'wY|D]
}|�	|j
tu�q.|�t|�d�|�|dd	d
�dS)Nz2
        [section]
        option = value
        Tr�r�r�r�r[rNr�rT)
r�r�r9r,r�r�r�r�Zreadfpr}r�rmro)rr�rzrMr�rrr
�test_readfp_deprecationhs
�z2CoverageOneHundredTestCase.test_readfp_deprecationcCs^tjdd��}t�dt�t��}Wd�n1swY|D]
}|�|jtu�q"dS)NTr�r�)r�r�r�r�r9ZSafeConfigParserr}r�)rrMrzr�rrr
�!test_safeconfigparser_deprecationvs
��z<CoverageOneHundredTestCase.test_safeconfigparser_deprecationcCs*t��}|�d�|�t|d�d�dS)Nz7
            [section]
            key = value
        rNz<Section: section>)r9r,r4rm�reprr�rrr
�test_sectionproxy_repr}s
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\wY|�d|j�|jd=|�d|j�|�	t
��|�dd�Wd�n1s�wY|�	t
��|d�d�Wd�n1s�wY|�	t
��|d�d�Wd�dS1s�wYdS)
Nr�decimalzS
            [s1]
            one = 1
            [s2]
            two = 2
        �s1r.r�s2r/r[)r9r,r��Decimal�
convertersr4r�rm�
getdecimalrvr{r)rrzr�rrr
�"test_inconsistent_converters_state�s2
���"�z=CoverageOneHundredTestCase.test_inconsistent_converters_stateN)rrrr�r�r�r�r�r�r�r�r�rrrr
r�0s
r�c@sheZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�ExceptionPicklingTestCasezBTests for issue #13760: ConfigParser exceptions are not picklable.cCsdddl}t�d�}t|jd�D]}|�||�}|�|�}|�|j|j�|�t	|�t	|��qdS)NrrTr)
�pickler9�Errorr��HIGHEST_PROTOCOL�dumps�loadsrm�messager��rr��e1�protoZpickled�e2rrr
�
test_error�s

�z$ExceptionPicklingTestCase.test_errorcCs�ddl}t�d�}t|jd�D]/}|�||�}|�|�}|�|j|j�|�|j	|j	�|�|j
|j
�|�t|�t|��qdS)NrrNr)r�r9rwr�r�r�r�rmr�r�rNr�r�rrr
�test_nosectionerror�s

�z-ExceptionPicklingTestCase.test_nosectionerrorcCs�ddl}t�dd�}t|jd�D]7}|�||�}|�|�}|�|j|j�|�|j	|j	�|�|j
|j
�|�|j|j�|�t|�t|��qdS)Nrr�rNr)
r�r9rxr�r�r�r�rmr�r�rNr�r�r�rrr
�test_nooptionerror�s
�z,ExceptionPicklingTestCase.test_nooptionerrorcC�ddl}t�ddd�}t|jd�D]?}|�||�}|�|�}|�|j|j�|�|j	|j	�|�|j
|j
�|�|j|j�|�|j|j�|�t
|�t
|��qdS)NrrNr�r�r)r�r9r�r�r�r�r�rmr�r�rNr�r�r�r�rrr
�test_duplicatesectionerror��
�z4ExceptionPicklingTestCase.test_duplicatesectionerrorcCs�ddl}t�dddd�}t|jd�D]G}|�||�}|�|�}|�|j|j�|�|j	|j	�|�|j
|j
�|�|j|j�|�|j|j�|�|j
|j
�|�t|�t|��qdS)NrrNr�r�r�r)r�r9r�r�r�r�r�rmr�r�rNr�r�r�r�r�rrr
�test_duplicateoptionerror�s
�
�z3ExceptionPicklingTestCase.test_duplicateoptionerrorcC�ddl}t�ddd�}t|jd�D]7}|�||�}|�|�}|�|j|j�|�|j	|j	�|�|j
|j
�|�|j|j�|�t|�t|��qdS�Nrr�rN�msgr)
r�r9ZInterpolationErrorr�r�r�r�rmr�r�rNr�r�r�rrr
�test_interpolationerror��
�z1ExceptionPicklingTestCase.test_interpolationerrorcCs�ddl}t�dddd�}t|jd�D]?}|�||�}|�|�}|�|j|j�|�|j	|j	�|�|j
|j
�|�|j|j�|�|j|j�|�t
|�t
|��qdS)Nrr�rNr�rr)r�r9rr�r�r�r�rmr�r�rNr�rr�r�rrr
�$test_interpolationmissingoptionerror�s�
�z>ExceptionPicklingTestCase.test_interpolationmissingoptionerrorcCr�r�)
r�r9r}r�r�r�r�rmr�r�rNr�r�r�rrr
�test_interpolationsyntaxerror�r�z7ExceptionPicklingTestCase.test_interpolationsyntaxerrorcCr�)Nrr�rNr�r)
r�r9rr�r�r�r�rmr�r�rNr�r�r�rrr
�test_interpolationdeptherrors�
�z6ExceptionPicklingTestCase.test_interpolationdeptherrorcCsfddl}t�d�}|�dd�|�dd�|�dd�t|jd�D]7}|�||�}|�|�}|�|j	|j	�|�|j
|j
�|�|j|j�|�|j|j�|�t
|�t
|��q"tjd	d
�}|�dd�|�dd�|�dd�t|jd�D]7}|�||�}|�|�}|�|j	|j	�|�|j
|j
�|�|j|j�|�|j|j�|�t
|�t
|��qydS)Nrr�rZline1r[Zline2r\Zline3r�r�)r�r9r�rjr�r�r�r�rmr�r�r��errorsr�r�rrr
�test_parsingerrors4


�z+ExceptionPicklingTestCase.test_parsingerrorcCr�)Nrr�r�r�r)r�r9r�r�r�r�r�rmr�r�r�r�r�r�r�rrr
�test_missingsectionheadererror/r�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
�|�|dd�|�|d
d�|�|dd�|�|dd�|d}|�|dd�|�|dd�|�|d	d�dS)N)r$r%rB)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
        rNZk1zv1;still v1Zk2Zv2Zk3Zv3Zk4zv4;still v4Zk5zv5;still v5Zk6zv6;still v6; and still v6Zk7zv7;still v7; and still v7Zmultiprefixzv3;#//still v3# and still v3)r9r,r4rm)r�cfgrPrrr
�test_strippingAs
z-InlineCommentStrippingTestCase.test_strippingN)rrrr�r�rrrr
r�=sr�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�n1s"wY|�|jjd�dS)Nz�
        [Paths]
        home_dir: /Users
        my_dir: %(home_dir1)s/lumberjack
        my_pictures: %(my_dir)s/Pictures
        �Paths�my_dirT)	r9r,r4rvrrqryr��__suppress_context__r�rrr
�test_get_basic_interpolationes
�z5ExceptionContextTestCase.test_get_basic_interpolationcCsjtjt��d�}|�d�|�tj�}|�|�dd�Wd�n1s&wY|�|jj	d�dS)N)r/z�
        [Paths]
        home_dir: /Users
        my_dir: ${home_dir1}/lumberjack
        my_pictures: ${my_dir}/Pictures
        r�r�T)
r9r,rr4rvrrqryr�r�r�rrr
�test_get_extended_interpolationrs�
�z8ExceptionContextTestCase.test_get_extended_interpolationcCs\t��}|�d�|�tj��
}|�d�Wd�n1swY|�|jjd�dS)Nz2
        [Paths]
        home_dir: /Users
        rT)	r9r,r4rvrwr�ryr�r�r�rrr
�test_missing_options�s
�z-ExceptionContextTestCase.test_missing_optionscCsVt��}|�tj��}|�ddd�Wd�n1swY|�|jjd�dS)N�Section1�an_intZ15T)r9r,rvrwr�ryr�r��rr�r�rrr
�test_missing_section�s
�z-ExceptionContextTestCase.test_missing_sectioncCsTt��}|�tj��}|�dd�Wd�n1swY|�|jjd�dS)Nr�r�T)r9r,rvrwr�ryr�r�r�rrr
�test_remove_option�s
�z+ExceptionContextTestCase.test_remove_optionN)	rrrr�r�r�r�r�r�rrrr
r�as

r�cs0eZdZdZejZd�fdd�	Zdd�Z�Z	S)�ConvertersTestCasez Introduced in 3.5, issue #18159.Ncs t�j|d�}dd�|jd<|S)Nr�cSr)NcSsg|]
}|��r|���qSr)r;)rr�rrr
r�s�zBConvertersTestCase.newconfig.<locals>.<lambda>.<locals>.<listcomp>)r���vrrr
ra�sz.ConvertersTestCase.newconfig.<locals>.<lambda>rn)�superr3r�)rr&r2��	__class__rr
r3�szConvertersTestCase.newconfigcCs�|��}|�d|j�|�d|j�|�|jd�|�|jd�|�|jd�|�|jd�|�t|j�d�|�t��dd�|jd<Wd�n1sRwY|�t��d	d�|jd<Wd�n1snwY|�	d
�|d}|�|dd
�|�|dd�|�|dd�|�|dd�|�|dd�|�|�
dd�d
�|�|�
dd�d�|�|�
dd�d�|�|�
dd�d�|�|�
dd�d�|�|�
dd�d
�|�|�dd�d�|�|�dd�d�|�|�
dd�gd��|�|�dd�d�|�|�
d�d
�|�|�d�d�|�|�d�d�|�|�
d�gd��|�|�d�d�|�t��|�dd�Wd�n	1�sPwY|�t��
|�d�Wd�n	1�skwYddl}|j|jd<|�d|j�|�|jd�|�t|j�d�|�d�}|�|�dd�|�|�|�d�|�|jd=|�d|j�|�t|j�d�|�t��|�dd�Wd�n	1�s�wY|�t��
|�d�Wd�n	1�s�wY|�t��|jd=Wd�n	1�s
wY|�t��|jd=Wd�n	1�s$wY|�t��
|jd=Wd�dS1�s?wYdS)Nr[rnrWrYr�cSr`rrr�rrr
ra�rbz4ConvertersTestCase.test_converters.<locals>.<lambda>r5cSr`rrr�rrr
ra�rbz~
        [s]
        str = string
        int = 1
        float = 0.5
        list = a b c d e f g
        bool = yes
        rPr�r5rgz0.5z
a b c d e f g�boolrerg�?)r�r��c�dr�r��gTrr�r�)r3r�r�r6�assertIsNotNonermrorvr�r4rqrrrtZgetlistrur{r�r�r�rr|)rr�rPr�Zdec0_5rrr
�test_converters�s���
��
��
�
�
$�z"ConvertersTestCase.test_convertersr)
rrrr�r9r,r1r3r�
__classcell__rrrr
r��s
r�c@s4eZdZdZdZdd�Zdd�Zdd�Zd	d
�ZdS)�!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)Nro)r�)r9r,ror4r��	_test_lenrr��rr�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.<locals>.StrangeConfigParserz0a historic borough in south central PennsylvaniaFN�r�rcracs"||krdSt�j|||||d�S)NTr
)r�ru�rrNr�r�rcrarrr
rus
�zZBlatantOverrideConvertersTestCase.test_inheritance.<locals>.StrangeConfigParser.getbooleancSs|j||t|||d�S)Nr
)Z	_get_convrorrrr
�getlen	s�zVBlatantOverrideConvertersTestCase.test_inheritance.<locals>.StrangeConfigParser.getlen)	rrrZ
gettysburgr9r;rurrrrrr
�StrangeConfigParsers��rror.r/r[)r9r,r4r�r
r6r�r}rur~�_convert_to_boolean)rrr�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
d�d
�|�tj	��|�d	d�Wd�n1s�wY|�|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)Nr�r[roZtysburgrWrYr.r�r/r0�Zfourrr`)
rmror�r�rr6rrvr9rxrrrr
r
s2�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�wY|�t��|��d
�d	�d�Wd�dS1�swYdS)NcSsdS)NTr�rNr�rrr
ra8rbzLBlatantOverrideConvertersTestCase.test_instance_assignment.<locals>.<lambda>cst�||�Sr)ror�r�rr
ra9rOr\r[rorWrYr.r/r�r0rr�)r9r,rurr4r�rmror�r�rr6r}rr~rvr{r
rrr
�test_instance_assignment6s>
�$�z:BlatantOverrideConvertersTestCase.test_instance_assignmentN)	rrrr�r�rrr
rrrrr
r	�sr	c@seZdZdd�ZdS)�MiscTestCasecCstj|tdhd�dS)Nr�)Znot_exported)rZcheck__all__r9r
rrr
�test__all__YszMiscTestCase.test__all__N)rrrrrrrr
rXsr�__main__).�collectionsr9r�rSr�r�Zunittestr�rrZtest.supportr�UserDictrr!r<ZTestCaser
rr-r<r>rGrHrYrgrhrmr�r�r�r�r�r�r�r�r�r�r�r�r�r�r	rr�mainrrrr
�<module>sf!:b$3,-
Sr$6Ro
�