
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,afÔ  ã                   @   sÒ  d dl mZ d dlmZ d dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZdddddd	d
ddddddddddddddgZeZdZdZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG d d„ deƒZG d!d„ deƒZG d"d
„ d
eƒZG d#d„ deƒZG d$d	„ d	eƒZG d%d„ deƒZG d&d„ deƒZeƒ ZG d'd„ dƒZG d(d„ deƒZ G d)d„ deƒZ!G d*d„ deƒZ"G d+d„ deƒZ#G d,d„ de#ƒZ$G d-d„ de$ƒZ%G d.d„ deƒZ&G d/d„ deƒZ'dS )0é    )ÚMutableMapping)ÚChainMapNÚNoSectionErrorÚDuplicateOptionErrorÚDuplicateSectionErrorÚNoOptionErrorÚInterpolationErrorÚInterpolationDepthErrorÚInterpolationMissingOptionErrorÚInterpolationSyntaxErrorÚParsingErrorÚMissingSectionHeaderErrorÚConfigParserÚSafeConfigParserÚRawConfigParserÚInterpolationÚBasicInterpolationÚExtendedInterpolationÚLegacyInterpolationÚSectionProxyÚConverterMappingÚDEFAULTSECTÚMAX_INTERPOLATION_DEPTHZDEFAULTé
   c                   @   s"   e Zd Zddd„Zdd„ ZeZdS )ÚErrorÚ c                 C   s   || _ t | |¡ d S ©N)ÚmessageÚ	ExceptionÚ__init__)ÚselfÚmsg© r"   ú1/opt/alt/python38/lib64/python3.8/configparser.pyr   «   s    zError.__init__c                 C   s   | j S r   )r   ©r    r"   r"   r#   Ú__repr__¯   s    zError.__repr__N)r   )Ú__name__Ú
__module__Ú__qualname__r   r%   Ú__str__r"   r"   r"   r#   r   ¨   s   
r   c                   @   s   e Zd Zdd„ ZdS )r   c                 C   s$   t  | d|f ¡ || _|f| _d S )NzNo section: %r)r   r   ÚsectionÚargs©r    r*   r"   r"   r#   r   ¸   s    zNoSectionError.__init__N©r&   r'   r(   r   r"   r"   r"   r#   r   µ   s   c                   @   s   e Zd Zddd„ZdS )r   Nc                 C   s’   t |ƒdg}|d k	rRdt |ƒg}|d k	r8| d |¡¡ | d¡ | |¡ |}n| dd¡ t | d |¡¡ || _|| _	|| _
|||f| _d S )Nú already existsúWhile reading from ú [line {0:2d}]z
: section r   zSection r   )ÚreprÚappendÚformatÚextendÚinsertr   r   Újoinr*   ÚsourceÚlinenor+   )r    r*   r7   r8   r!   r   r"   r"   r#   r   Æ   s    

zDuplicateSectionError.__init__)NNr-   r"   r"   r"   r#   r   ¾   s   c                   @   s   e Zd Zddd„ZdS )r   Nc                 C   s¢   t |ƒdt |ƒdg}|d k	rZdt |ƒg}|d k	r@| d |¡¡ | d¡ | |¡ |}n| dd¡ t | d |¡¡ || _|| _	|| _
|| _||||f| _d S )	Nz in section r.   r/   r0   z	: option r   zOption r   )r1   r2   r3   r4   r5   r   r   r6   r*   Úoptionr7   r8   r+   )r    r*   r9   r7   r8   r!   r   r"   r"   r#   r   ß   s"    ÿ

zDuplicateOptionError.__init__)NNr-   r"   r"   r"   r#   r   Ø   s   c                   @   s   e Zd Zdd„ ZdS )r   c                 C   s.   t  | d||f ¡ || _|| _||f| _d S )NzNo option %r in section: %r©r   r   r9   r*   r+   )r    r9   r*   r"   r"   r#   r   ö   s    ÿzNoOptionError.__init__Nr-   r"   r"   r"   r#   r   ó   s   c                   @   s   e Zd Zdd„ ZdS )r   c                 C   s(   t  | |¡ || _|| _|||f| _d S r   r:   )r    r9   r*   r!   r"   r"   r#   r     s    zInterpolationError.__init__Nr-   r"   r"   r"   r#   r   þ   s   c                   @   s   e Zd Zdd„ ZdS )r
   c                 C   s8   d  ||||¡}t | |||¡ || _||||f| _d S )NzˆBad value substitution: option {!r} in section {!r} contains an interpolation key {!r} which is not a valid option name. Raw value: {!r})r3   r   r   Ú	referencer+   )r    r9   r*   Úrawvalr;   r!   r"   r"   r#   r     s       þz(InterpolationMissingOptionError.__init__Nr-   r"   r"   r"   r#   r
     s   c                   @   s   e Zd ZdS )r   N)r&   r'   r(   r"   r"   r"   r#   r     s   c                   @   s   e Zd Zdd„ ZdS )r	   c                 C   s0   d  ||t|¡}t | |||¡ |||f| _d S )Nz¢Recursion limit exceeded in value substitution: option {!r} in section {!r} contains an interpolation key which cannot be substituted in {} steps. Raw value: {!r})r3   r   r   r   r+   )r    r9   r*   r<   r!   r"   r"   r#   r     s      üz InterpolationDepthError.__init__Nr-   r"   r"   r"   r#   r	     s   c                   @   s8   e Zd Zd	dd„Zedd„ ƒZejdd„ ƒZdd„ ZdS )
r   Nc                 C   sT   |r|rt dƒ‚n|s$|s$t dƒ‚n|r,|}t | d| ¡ || _g | _|f| _d S )Nz:Cannot specify both `filename' and `source'. Use `source'.z%Required argument `source' not given.z"Source contains parsing errors: %r)Ú
ValueErrorr   r   r7   Úerrorsr+   )r    r7   Úfilenamer"   r"   r#   r   ,  s    

zParsingError.__init__c                 C   s   t jdtdd� | jS ©NzSThe 'filename' attribute will be removed in future versions.  Use 'source' instead.é   ©Ú
stacklevel©ÚwarningsÚwarnÚDeprecationWarningr7   r$   r"   r"   r#   r?   ;  s     ýzParsingError.filenamec                 C   s   t jdtdd� || _d S r@   rD   ©r    Úvaluer"   r"   r#   r?   E  s     ýc                 C   s*   | j  ||f¡ |  jd||f 7  _d S )Nz
	[line %2d]: %s)r>   r2   r   )r    r8   Úliner"   r"   r#   r2   O  s    zParsingError.append)NN)r&   r'   r(   r   Úpropertyr?   Úsetterr2   r"   r"   r"   r#   r   )  s   

	
	c                   @   s   e Zd Zdd„ ZdS )r   c                 C   s8   t  | d|||f ¡ || _|| _|| _|||f| _d S )Nz7File contains no section headers.
file: %r, line: %d
%r)r   r   r7   r8   rJ   r+   )r    r?   r8   rJ   r"   r"   r#   r   W  s    ÿþz"MissingSectionHeaderError.__init__Nr-   r"   r"   r"   r#   r   T  s   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
r   c                 C   s   |S r   r"   )r    Úparserr*   r9   rI   Údefaultsr"   r"   r#   Ú
before_getk  s    zInterpolation.before_getc                 C   s   |S r   r"   ©r    rM   r*   r9   rI   r"   r"   r#   Ú
before_setn  s    zInterpolation.before_setc                 C   s   |S r   r"   rP   r"   r"   r#   Úbefore_readq  s    zInterpolation.before_readc                 C   s   |S r   r"   rP   r"   r"   r#   Úbefore_writet  s    zInterpolation.before_writeN)r&   r'   r(   rO   rQ   rR   rS   r"   r"   r"   r#   r   h  s   c                   @   s.   e Zd Ze d¡Zdd„ Zdd„ Zdd„ ZdS )	r   z%\(([^)]+)\)sc              	   C   s$   g }|   ||||||d¡ d |¡S ©Né   r   ©Ú_interpolate_somer6   ©r    rM   r*   r9   rI   rN   ÚLr"   r"   r#   rO   ‰  s    zBasicInterpolation.before_getc                 C   s<   |  dd¡}| j d|¡}d|kr8td|| d¡f ƒ‚|S )Nz%%r   ú%ú1invalid interpolation syntax in %r at position %d©ÚreplaceÚ_KEYCREÚsubr=   Úfind©r    rM   r*   r9   rI   Z	tmp_valuer"   r"   r#   rQ   Ž  s    ÿzBasicInterpolation.before_setc              
   C   sj  |j ||d|d�}|tkr&t|||ƒ‚|�rf| d¡}	|	dk rL| |¡ d S |	dkrr| |d |	… ¡ ||	d … }|dd… }
|
dkrž| d¡ |dd … }q&|
dk�rR| j |¡}|d krÌt||d| ƒ‚| | 	d¡¡}|| 
¡ d … }z|| }W n& tk
�r   t||||ƒd ‚Y nX d|k�rF|  |||||||d ¡ n
| |¡ q&t||d	|f ƒ‚q&d S )
NT©ÚrawÚfallbackrZ   r   rU   rA   ú(ú'bad interpolation variable reference %rz/'%%' must be followed by '%%' or '(', found: %r)Úgetr   r	   r`   r2   r^   Úmatchr   ÚoptionxformÚgroupÚendÚKeyErrorr
   rW   )r    rM   r9   ÚaccumÚrestr*   ÚmapÚdepthr<   ÚpÚcÚmÚvarÚvr"   r"   r#   rW   –  s`    



ÿ   ÿÿ
  ÿ ÿþz$BasicInterpolation._interpolate_someN©	r&   r'   r(   ÚreÚcompiler^   rO   rQ   rW   r"   r"   r"   r#   r   x  s   
c                   @   s.   e Zd Ze d¡Zdd„ Zdd„ Zdd„ ZdS )	r   z\$\{([^}]+)\}c              	   C   s$   g }|   ||||||d¡ d |¡S rT   rV   rX   r"   r"   r#   rO   Æ  s    z ExtendedInterpolation.before_getc                 C   s<   |  dd¡}| j d|¡}d|kr8td|| d¡f ƒ‚|S )Nz$$r   ú$r[   r\   ra   r"   r"   r#   rQ   Ë  s    ÿz ExtendedInterpolation.before_setc                 C   sò  |j ||d|d�}|tkr&t|||ƒ‚|�rî| d¡}	|	dk rL| |¡ d S |	dkrr| |d |	… ¡ ||	d … }|dd… }
|
dkrž| d¡ |dd … }q&|
dk�rÚ| j |¡}|d krÌt||d| ƒ‚| d¡ 	d	¡}|| 
¡ d … }|}|}zrt|ƒdk�r| |d ¡}|| }nHt|ƒdk�rR|d }| |d ¡}|j ||dd
�}nt||d|f ƒ‚W n2 tttfk
�r˜   t|||d	 |¡ƒd ‚Y nX d|k�rÎ|  |||||t|j|dd
�ƒ|d ¡ n
| |¡ q&t||d|f ƒ‚q&d S )NTrb   ry   r   rU   rA   Ú{rf   ú:)rc   zMore than one ':' found: %rz-'$' must be followed by '$' or '{', found: %r)rg   r   r	   r`   r2   r^   rh   r   rj   Úsplitrk   Úlenri   rl   r   r   r
   r6   rW   ÚdictÚitems)r    rM   r9   rm   rn   r*   ro   rp   r<   rq   rr   rs   ÚpathZsectÚoptru   r"   r"   r#   rW   Ó  sx    



ÿ
 þ   ÿÿ
þ ÿþz'ExtendedInterpolation._interpolate_someNrv   r"   r"   r"   r#   r   À  s   
c                   @   s2   e Zd Ze d¡Zdd„ Zdd„ Zedd„ ƒZ	dS )	r   z%\(([^)]*)\)s|.c           
   
   C   s¦   |}t }|rŠ|d8 }|rŠd|krŠtj| j|d�}| j ||¡}z|| }W qˆ tk
r‚ }	 zt||||	jd ƒd ‚W 5 d }	~	X Y qˆX qqŠq|r¢d|kr¢t	|||ƒ‚|S )NrU   z%()rM   r   )
r   Ú	functoolsÚpartialÚ_interpolation_replacer^   r_   rl   r
   r+   r	   )
r    rM   r*   r9   rI   Úvarsr<   rp   r]   Úer"   r"   r#   rO     s0    ÿ   ÿÿzLegacyInterpolation.before_getc                 C   s   |S r   r"   rP   r"   r"   r#   rQ   $  s    zLegacyInterpolation.before_setc                 C   s,   |   d¡}|d kr|   ¡ S d| |¡ S d S )NrU   z%%(%s)s)rj   ri   )rh   rM   Úsr"   r"   r#   r„   '  s    
z*LegacyInterpolation._interpolation_replaceN)
r&   r'   r(   rw   rx   r^   rO   rQ   Ústaticmethodr„   r"   r"   r"   r#   r   
  s
   
c                
       s2  e Zd ZdZdZdZeƒ Ze 	eej
¡Ze 	ejdd�ej
¡Ze 	ejdd�ej
¡Ze 	d¡Zddddddddd	œZd
edfddd
ddeeedœdd„Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdcdd„Zdddd„Zdedd „Zdfd"d#„Zdgd$d%„Zdd
ed&œd'd(„Zd)d*„ Z dd
ed&œd+d,„Z!dd
ed&œd-d.„Z"dd
ed&œd/d0„Z#dd
ed&œd1d2„Z$edd
f‡ fd3d4„	Z%d5d6„ Z&d7d8„ Z'd9d:„ Z(dhd;d<„Z)did=d>„Z*d?d@„ Z+dAdB„ Z,dCdD„ Z-dEdF„ Z.dGdH„ Z/dIdJ„ Z0dKdL„ Z1dMdN„ Z2dOdP„ Z3dQdR„ Z4dSdT„ Z5dUdV„ Z6dWdX„ Z7dYdZ„ Z8d[d\„ Z9d]d]d]d^œd_d`„Z:e;dadb„ ƒZ<‡  Z=S )jr   z¥
        \[                                 # [
        (?P<header>[^]]+)                  # very permissive!
        \]                                 # ]
        a›  
        (?P<option>.*?)                    # very permissive!
        \s*(?P<vi>{delim})\s*              # any number of space/tab,
                                           # followed by any of the
                                           # allowed delimiters,
                                           # followed by any space/tab
        (?P<value>.*)$                     # everything up to eol
        aÓ  
        (?P<option>.*?)                    # very permissive!
        \s*(?:                             # any number of space/tab,
        (?P<vi>{delim})\s*                 # optionally followed by
                                           # any of the allowed
                                           # delimiters, followed by any
                                           # space/tab
        (?P<value>.*))?$                   # everything up to eol
        z=|:©Zdelimz\STF)Ú1ZyesÚtrueZonÚ0ZnoZfalseZoffN©ú=r{   )ú#ú;)Ú
delimitersÚcomment_prefixesÚinline_comment_prefixesÚstrictÚempty_lines_in_valuesÚdefault_sectionÚinterpolationÚ
convertersc                C   s<  || _ |   ¡ | _|   ¡ | _t| ƒ| _|   ¡ | _t| |	ƒ| j|	< t|ƒ| _|dkrd|rZ| j	n| j
| _nNd dd„ |D ƒ¡}|r˜t | jj|d�tj¡| _nt | jj|d�tj¡| _t|pºdƒ| _t|pÈdƒ| _|| _|| _|| _|	| _|
| _| jtkrþ| j| _| jd k�rtƒ | _|tk	�r(| j |¡ |�r8|  |¡ d S )Nr�   ú|c                 s   s   | ]}t  |¡V  qd S r   )rw   Úescape)Ú.0Údr"   r"   r#   Ú	<genexpr>j  s     z+RawConfigParser.__init__.<locals>.<genexpr>r‰   r"   )Ú_dictÚ	_sectionsÚ	_defaultsr   Ú_convertersÚ_proxiesr   ÚtupleÚ_delimitersÚ	OPTCRE_NVÚOPTCREÚ_optcrer6   rw   rx   Ú_OPT_NV_TMPLr3   ÚVERBOSEÚ	_OPT_TMPLÚ_comment_prefixesÚ_inline_comment_prefixesÚ_strictÚ_allow_no_valueÚ_empty_lines_in_valuesr–   Ú_interpolationÚ_UNSETÚ_DEFAULT_INTERPOLATIONr   ÚupdateÚ_read_defaults)r    rN   Z	dict_typeZallow_no_valuer‘   r’   r“   r”   r•   r–   r—   r˜   rœ   r"   r"   r#   r   Y  s@    




ÿÿ

zRawConfigParser.__init__c                 C   s   | j S r   )r    r$   r"   r"   r#   rN   �  s    zRawConfigParser.defaultsc                 C   s   t | j ¡ ƒS r   )ÚlistrŸ   Úkeysr$   r"   r"   r#   Úsections„  s    zRawConfigParser.sectionsc                 C   sJ   || j krtd| ƒ‚|| jkr(t|ƒ‚|  ¡ | j|< t| |ƒ| j|< d S )NzInvalid section name: %r)r–   r=   rŸ   r   rž   r   r¢   r,   r"   r"   r#   Úadd_section‰  s    

zRawConfigParser.add_sectionc                 C   s
   || j kS r   )rŸ   r,   r"   r"   r#   Úhas_section—  s    zRawConfigParser.has_sectionc                 C   sJ   z| j |  ¡ }W n tk
r0   t|ƒd ‚Y nX | | j¡ t| ¡ ƒS r   )rŸ   Úcopyrl   r   r³   r    rµ   r¶   )r    r*   Zoptsr"   r"   r#   Úoptionsž  s    zRawConfigParser.optionsc              
   C   sŒ   t |tttjfƒr|g}g }|D ]f}z(t||d��}|  ||¡ W 5 Q R X W n tk
rd   Y q Y nX t |tjƒr|t |¡}| 	|¡ q |S )N)Úencoding)
Ú
isinstanceÚstrÚbytesÚosÚPathLikeÚopenÚ_readÚOSErrorÚfspathr2   )r    Ú	filenamesr¼   Zread_okr?   Úfpr"   r"   r#   Úread§  s    

zRawConfigParser.readc                 C   s<   |d kr,z
|j }W n tk
r*   d}Y nX |  ||¡ d S )Nz<???>)ÚnameÚAttributeErrorrÃ   )r    Úfr7   r"   r"   r#   Ú	read_fileÁ  s    

zRawConfigParser.read_fileú<string>c                 C   s   t  |¡}|  ||¡ d S r   )ÚioÚStringIOrÌ   )r    Ústringr7   Zsfiler"   r"   r#   Úread_stringÐ  s    
zRawConfigParser.read_stringú<dict>c              
   C   sÐ   t ƒ }| ¡ D ]¼\}}t|ƒ}z|  |¡ W n( ttfk
rT   | jrP||krP‚ Y nX | |¡ | ¡ D ]`\}}|  t|ƒ¡}|d k	rŽt|ƒ}| jr¬||f|kr¬t	|||ƒ‚| ||f¡ |   |||¡ qhqd S r   )
Úsetr   r¾   r¸   r   r=   r­   Úaddri   r   )r    Z
dictionaryr7   Úelements_addedr*   r¶   ÚkeyrI   r"   r"   r#   Ú	read_dictÕ  s"    
zRawConfigParser.read_dictc                 C   s"   t jdtdd� | j||d� d S )NzRThis method will be removed in future versions.  Use 'parser.read_file()' instead.rA   rB   )r7   )rE   rF   rG   rÌ   )r    rÇ   r?   r"   r"   r#   Úreadfpô  s     ýzRawConfigParser.readfp©rc   r…   rd   c                C   sª   z|   ||¡}W n( tk
r8   |tkr,‚ n| Y S Y nX |  |¡}z|| }W n0 tk
r€   |tkrtt||ƒ‚n| Y S Y nX |sŽ|d kr’|S | j | ||||¡S d S r   )Ú_unify_valuesr   r±   ri   rl   r   r°   rO   )r    r*   r9   rc   r…   rd   rœ   rI   r"   r"   r#   rg   ý  s$    
ÿzRawConfigParser.getc                 K   s   || j ||f|ŽƒS r   )rg   )r    r*   Úconvr9   Úkwargsr"   r"   r#   Ú_get"  s    zRawConfigParser._getc             	   K   sJ   z| j |||f||dœ|—ŽW S  ttfk
rD   |tkr<‚ | Y S X d S )N)rc   r…   )rÝ   r   r   r±   )r    r*   r9   rÛ   rc   r…   rd   rÜ   r"   r"   r#   Ú	_get_conv%  s    ÿzRawConfigParser._get_convc                K   s   | j ||tf|||dœ|—ŽS ©NrÙ   )rÞ   Úint©r    r*   r9   rc   r…   rd   rÜ   r"   r"   r#   Úgetint0  s
    ÿÿzRawConfigParser.getintc                K   s   | j ||tf|||dœ|—ŽS rß   )rÞ   Úfloatrá   r"   r"   r#   Úgetfloat5  s
    ÿÿzRawConfigParser.getfloatc                K   s    | j ||| jf|||dœ|—ŽS rß   )rÞ   Ú_convert_to_booleanrá   r"   r"   r#   Ú
getboolean:  s      ÿÿzRawConfigParser.getbooleanc                    sº   ˆt krtƒ  ¡ S ˆj ¡ ‰ zˆ  ˆjˆ ¡ W n& tk
rV   ˆˆjkrRt	ˆƒ‚Y nX t
ˆ  ¡ ƒ}|rˆ| ¡ D ]\}}|ˆ ˆ |¡< qp‡ ‡‡fdd„‰|r¨‡ fdd„‰‡fdd„|D ƒS )Nc                    s   ˆj  ˆˆ| ˆ |  ˆ ¡S r   )r°   rO   ©r9   )rœ   r*   r    r"   r#   Ú<lambda>W  s
      ÿz'RawConfigParser.items.<locals>.<lambda>c                    s   ˆ |  S r   r"   rç   )rœ   r"   r#   rè   Z  ó    c                    s   g | ]}|ˆ |ƒf‘qS r"   r"   )r›   r9   )Úvalue_getterr"   r#   Ú
<listcomp>[  s     z)RawConfigParser.items.<locals>.<listcomp>)r±   Úsuperr   r    rº   r³   rŸ   rl   r–   r   rµ   r¶   ri   )r    r*   rc   r…   Z	orig_keysrÖ   rI   ©Ú	__class__)rœ   r*   r    rê   r#   r   ?  s     


zRawConfigParser.itemsc                 C   s.   |   ¡ D ]}| | }| |= ||f  S t‚d S r   )r·   rl   ©r    rÖ   rI   r"   r"   r#   Úpopitem]  s
    zRawConfigParser.popitemc                 C   s   |  ¡ S r   )Úlower)r    Z	optionstrr"   r"   r#   ri   j  s    zRawConfigParser.optionxformc                 C   sV   |r|| j kr"|  |¡}|| jkS || jkr0dS |  |¡}|| j| kpP|| jkS d S )NF)r–   ri   r    rŸ   )r    r*   r9   r"   r"   r#   Ú
has_optionm  s    



ÿzRawConfigParser.has_optionc                 C   sl   |r| j  | |||¡}|r$|| jkr,| j}n.z| j| }W n tk
rX   t|ƒd ‚Y nX |||  |¡< d S r   )r°   rQ   r–   r    rŸ   rl   r   ri   )r    r*   r9   rI   Úsectdictr"   r"   r#   rÓ   {  s    ÿzRawConfigParser.setc                 C   sh   |rd  | jd ¡}n
| jd }| jr>|  || j| j ¡ |¡ | jD ]}|  ||| j|  ¡ |¡ qDd S )Nz {} r   )r3   r¤   r    Ú_write_sectionr–   r   rŸ   )r    rÇ   Zspace_around_delimitersrœ   r*   r"   r"   r#   Úwrite‰  s    

 ÿ
 ÿzRawConfigParser.writec                 C   sx   |  d |¡¡ |D ]T\}}| j | |||¡}|d k	s<| jsR|t|ƒ dd¡ }nd}|  d ||¡¡ q|  d¡ d S )Nz[{}]
Ú
z
	r   z{}{}
)rõ   r3   r°   rS   r®   r¾   r]   )r    rÇ   Zsection_nameZsection_itemsZ	delimiterrÖ   rI   r"   r"   r#   rô   š  s    ÿzRawConfigParser._write_sectionc                 C   sd   |r|| j kr| j}n.z| j| }W n tk
rB   t|ƒd ‚Y nX |  |¡}||k}|r`||= |S r   )r–   r    rŸ   rl   r   ri   )r    r*   r9   ró   Úexistedr"   r"   r#   Úremove_option§  s    
zRawConfigParser.remove_optionc                 C   s"   || j k}|r| j |= | j|= |S r   )rŸ   r¢   )r    r*   r÷   r"   r"   r#   Úremove_section¶  s
    
zRawConfigParser.remove_sectionc                 C   s&   || j kr|  |¡st|ƒ‚| j| S r   )r–   r¹   rl   r¢   ©r    rÖ   r"   r"   r#   Ú__getitem__¾  s    zRawConfigParser.__getitem__c                 C   sX   || kr| | |krd S || j kr.| j ¡  n|| jkrF| j|  ¡  |  ||i¡ d S r   )r–   r    ÚclearrŸ   r×   rï   r"   r"   r#   Ú__setitem__Ã  s    

zRawConfigParser.__setitem__c                 C   s2   || j krtdƒ‚|  |¡s$t|ƒ‚|  |¡ d S )Nz"Cannot remove the default section.)r–   r=   r¹   rl   rù   rú   r"   r"   r#   Ú__delitem__Ð  s
    

zRawConfigParser.__delitem__c                 C   s   || j kp|  |¡S r   )r–   r¹   rú   r"   r"   r#   Ú__contains__×  s    zRawConfigParser.__contains__c                 C   s   t | jƒd S )NrU   )r}   rŸ   r$   r"   r"   r#   Ú__len__Ú  s    zRawConfigParser.__len__c                 C   s   t  | jf| j ¡ ¡S r   )Ú	itertoolsÚchainr–   rŸ   r¶   r$   r"   r"   r#   Ú__iter__Ý  s    zRawConfigParser.__iter__c                 C   s   t ƒ }d }d }d }d}d}d }	t|dd�D �]Ü\}}
tj}dd„ | jD ƒ}|tjkrÀ|rÀi }| ¡ D ]T\}}|
 ||d ¡}|dkr†qd|||< |dks®|dkrd|
|d   ¡ rdt||ƒ}qd|}qJ| j	D ]}|
 
¡  |¡rÆd} qâqÆ|tjkrðd }|
d |…  
¡ }|�sN| j�rF|d k�rL|d k	�rL|�rL|| d k	�rL||  d¡ q*tj}q*| j |
¡}|�rh| ¡ nd}|d k	�r–|�r–||k�r–||  |¡ q*|}| j |¡}|�r<| d¡}|| jk�rö| j�rà||k�ràt|||ƒ‚| j| }| |¡ n@|| jk�r
| j}n,|  ¡ }|| j|< t| |ƒ| j|< | |¡ d }q*|d k�rTt|||
ƒ‚q*| j |¡}|�rø| d	d
d¡\}}}|�s�|  |	|||
¡}	|   | !¡ ¡}| j�rÂ||f|k�rÂt"||||ƒ‚| ||f¡ |d k	�rî| 
¡ }|g||< nd ||< q*|  |	|||
¡}	q*|  #¡  |	�r|	‚d S )Nr   rU   )Ústartc                 S   s   i | ]
}|d “qS )éÿÿÿÿr"   )r›   rq   r"   r"   r#   Ú
<dictcomp>ü  s      z)RawConfigParser._read.<locals>.<dictcomp>r  r   Úheaderr9   ÚvirI   )$rÓ   Ú	enumerateÚsysÚmaxsizer¬   r   r`   ÚisspaceÚminr«   ÚstripÚ
startswithr¯   r2   ÚNONSPACECREÚsearchr  ÚSECTCRErh   rj   rŸ   r­   r   rÔ   r–   r    rž   r   r¢   r   r§   Ú_handle_errorri   Úrstripr   Ú_join_multiline_values)r    rÇ   ÚfpnamerÕ   ZcursectZsectnameZoptnamer8   Zindent_levelr†   rJ   Zcomment_startZinline_prefixesZnext_prefixesÚprefixÚindexrI   Zfirst_nonspaceZcur_indent_levelZmor  Zoptvalr"   r"   r#   rÃ   á  s®     


ÿþ
ýÿ
ÿ




ÿ ÿ

zRawConfigParser._readc                 C   sr   | j | jf}t |f| j ¡ ¡}|D ]H\}}| ¡ D ]6\}}t|tƒrTd |¡ 	¡ }| j
 | |||¡||< q4q$d S )Nrö   )r–   r    r  r  rŸ   r   r½   rµ   r6   r  r°   rR   )r    rN   Zall_sectionsr*   r»   rÉ   Úvalr"   r"   r#   r  [  s    ÿ
 þz&RawConfigParser._join_multiline_valuesc                 C   s&   |  ¡ D ]\}}|| j|  |¡< qd S r   )r   r    ri   )r    rN   rÖ   rI   r"   r"   r#   r´   g  s    zRawConfigParser._read_defaultsc                 C   s    |st |ƒ}| |t|ƒ¡ |S r   )r   r2   r1   )r    Úexcr  r8   rJ   r"   r"   r#   r  m  s    zRawConfigParser._handle_errorc                 C   s‚   i }z| j | }W n( tk
r:   || jkr6t|ƒd ‚Y nX i }|rt| ¡ D ]&\}}|d k	rdt|ƒ}|||  |¡< qLt||| jƒS r   )	rŸ   rl   r–   r   r   r¾   ri   Ú	_ChainMapr    )r    r*   r…   ZsectiondictZvardictrÖ   rI   r"   r"   r#   rÚ   s  s    
zRawConfigParser._unify_valuesc                 C   s(   |  ¡ | jkrtd| ƒ‚| j|  ¡  S )NzNot a boolean: %s)rñ   ÚBOOLEAN_STATESr=   rH   r"   r"   r#   rå   ‡  s    z#RawConfigParser._convert_to_booleanr   )r*   r9   rI   c                C   sD   t |tƒstdƒ‚t |tƒs$tdƒ‚| jr.|r@t |tƒs@tdƒ‚d S )Nzsection names must be stringszoption keys must be stringszoption values must be strings)r½   r¾   Ú	TypeErrorr®   ©r    r*   r9   rI   r"   r"   r#   Ú_validate_value_typesŽ  s    



z%RawConfigParser._validate_value_typesc                 C   s   | j S r   )r¡   r$   r"   r"   r#   r˜   £  s    zRawConfigParser.converters)N)N)rÍ   )rÒ   )N)N)T)>r&   r'   r(   Z
_SECT_TMPLrª   r¨   r   r²   rw   rx   r©   r  r3   r¦   r¥   r  r  Ú_default_dictr   r±   r   rN   r·   r¸   r¹   r»   rÈ   rÌ   rÑ   r×   rØ   rg   rÝ   rÞ   râ   rä   ræ   r   rð   ri   rò   rÓ   rõ   rô   rø   rù   rû   rý   rþ   rÿ   r   r  rÃ   r  r´   r  rÚ   rå   r  rK   r˜   Ú__classcell__r"   r"   rí   r#   r   0  s”   

   ÿÿ   û(	




	%ÿÿÿÿ

zc                       s8   e Zd Zeƒ Zd‡ fdd„	Z‡ fdd„Zdd„ Z‡  ZS )	r   Nc                    s"   | j ||d� tƒ  |||¡ d S ©N)r9   rI   )r  rì   rÓ   r  rí   r"   r#   rÓ   ­  s    zConfigParser.setc                    s   | j |d� tƒ  |¡ d S )N)r*   )r  rì   r¸   r,   rí   r"   r#   r¸   ³  s    zConfigParser.add_sectionc                 C   s0   z"| j }tƒ | _ |  | j|i¡ W 5 || _ X d S r   )r°   r   r×   r–   )r    rN   Zhold_interpolationr"   r"   r#   r´   º  s
    zConfigParser._read_defaults)N)	r&   r'   r(   r   r²   rÓ   r¸   r´   r!  r"   r"   rí   r#   r   ¨  s   c                       s   e Zd Z‡ fdd„Z‡  ZS )r   c                    s"   t ƒ j||Ž tjdtdd� d S )NzœThe SafeConfigParser class has been renamed to ConfigParser in Python 3.2. This alias will be removed in future versions. Use ConfigParser directly instead.rA   rB   )rì   r   rE   rF   rG   )r    r+   rÜ   rí   r"   r#   r   Ë  s     üzSafeConfigParser.__init__)r&   r'   r(   r   r!  r"   r"   rí   r#   r   È  s   c                   @   s€   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zedd„ ƒZedd„ ƒZdddddœdd„ZdS )r   c                 C   sF   || _ || _|jD ].}d| }tj| jt||ƒd�}t| ||ƒ qd S )Nrg   ©Ú_impl)Ú_parserÚ_namer˜   r‚   rƒ   rg   ÚgetattrÚsetattr)r    rM   rÉ   rÛ   rÖ   Úgetterr"   r"   r#   r   Ø  s    
zSectionProxy.__init__c                 C   s   d  | j¡S )Nz<Section: {}>)r3   r&  r$   r"   r"   r#   r%   á  s    zSectionProxy.__repr__c                 C   s(   | j  | j|¡st|ƒ‚| j  | j|¡S r   )r%  rò   r&  rl   rg   rú   r"   r"   r#   rû   ä  s    zSectionProxy.__getitem__c                 C   s"   | j j||d� | j  | j||¡S r"  )r%  r  rÓ   r&  rï   r"   r"   r#   rý   é  s    zSectionProxy.__setitem__c                 C   s,   | j  | j|¡r | j  | j|¡s(t|ƒ‚d S r   )r%  rò   r&  rø   rl   rú   r"   r"   r#   rþ   í  s    ÿzSectionProxy.__delitem__c                 C   s   | j  | j|¡S r   )r%  rò   r&  rú   r"   r"   r#   rÿ   ò  s    zSectionProxy.__contains__c                 C   s   t |  ¡ ƒS r   )r}   Ú_optionsr$   r"   r"   r#   r   õ  s    zSectionProxy.__len__c                 C   s   |   ¡  ¡ S r   )r*  r  r$   r"   r"   r#   r  ø  s    zSectionProxy.__iter__c                 C   s*   | j | jjkr| j | j ¡S | j ¡ S d S r   )r&  r%  r–   r»   rN   r$   r"   r"   r#   r*  û  s    zSectionProxy._optionsc                 C   s   | j S r   )r%  r$   r"   r"   r#   rM     s    zSectionProxy.parserc                 C   s   | j S r   )r&  r$   r"   r"   r#   rÉ     s    zSectionProxy.nameNF)rc   r…   r$  c                K   s(   |s| j j}|| j|f|||dœ|—ŽS rß   )r%  rg   r&  )r    r9   rd   rc   r…   r$  rÜ   r"   r"   r#   rg     s    
ÿÿzSectionProxy.get)N)r&   r'   r(   r   r%   rû   rý   rþ   rÿ   r   r  r*  rK   rM   rÉ   rg   r"   r"   r"   r#   r   Õ  s    	

ÿc                   @   sF   e Zd Ze d¡Zdd„ Zdd„ Zdd„ Zdd	„ Z	d
d„ Z
dd„ ZdS )r   z^get(?P<name>.+)$c                 C   sR   || _ i | _t| j ƒD ]6}| j |¡}|rtt| j |ƒƒs<qd | j| d¡< qd S )NrÉ   )r%  Ú_dataÚdirÚ	GETTERCRErh   Úcallabler'  rj   )r    rM   r)  rs   r"   r"   r#   r   %  s    zConverterMapping.__init__c                 C   s
   | j | S r   )r+  rú   r"   r"   r#   rû   .  s    zConverterMapping.__getitem__c              	   C   s¦   zd| }W n( t k
r4   td |t|ƒ¡ƒ‚Y nX |dkrFtdƒ‚|| j|< tj| jj|d�}||_	t
| j||ƒ | j ¡ D ] }tj|j|d�}t
|||ƒ q€d S )Nrg   zIncompatible key: {} (type: {})z)Incompatible key: cannot use "" as a name)rÛ   r#  )r  r=   r3   Útyper+  r‚   rƒ   r%  rÞ   Z	converterr(  Úvaluesrg   )r    rÖ   rI   ÚkÚfuncÚproxyr)  r"   r"   r#   rý   1  s      ÿ
zConverterMapping.__setitem__c              	   C   s~   zd|p
d  }W n t k
r,   t|ƒ‚Y nX | j|= t | jf| j ¡ ¡D ],}zt||ƒ W qL tk
rv   Y qLY qLX qLd S )Nrg   )	r  rl   r+  r  r  r%  r0  ÚdelattrrÊ   )r    rÖ   r1  Úinstr"   r"   r#   rþ   A  s    zConverterMapping.__delitem__c                 C   s
   t | jƒS r   )Úiterr+  r$   r"   r"   r#   r  O  s    zConverterMapping.__iter__c                 C   s
   t | jƒS r   )r}   r+  r$   r"   r"   r#   r   R  s    zConverterMapping.__len__N)r&   r'   r(   rw   rx   r-  r   rû   rý   rþ   r  r   r"   r"   r"   r#   r     s   
	)(Zcollections.abcr   Úcollectionsr   r  r‚   rÎ   r  rÀ   rw   r
  rE   Ú__all__r~   r   r   r   r   r   r   r   r   r   r   r
   r   r	   r   r   Úobjectr±   r   r   r   r   r   r   r   r   r   r"   r"   r"   r#   Ú<module>�   sp              ù		
+HJ&    | F