Current File : //lib64/python3.6/__pycache__/configparser.cpython-36.opt-2.pyc
3


 \X��@s�ddlmZddlmZmZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
dddddd	d
ddd
dddddddddddgZdZdZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGd d�de�ZGd!d�de�ZGd"d
�d
e�ZGd#d�de�ZGd$d	�d	e�ZGd%d�de�ZGd&d
�d
e�Ze�ZGd'd�d�ZGd(d�de�Z Gd)d�de�Z!Gd*d�de�Z"Gd+d�de�Z#Gd,d�de#�Z$Gd-d�de$�Z%Gd.d�de�Z&Gd/d�de�Z'dS)0�)�MutableMapping)�OrderedDict�ChainMapN�NoSectionError�DuplicateOptionError�DuplicateSectionError�
NoOptionError�InterpolationError�InterpolationDepthError�InterpolationMissingOptionError�InterpolationSyntaxError�ParsingError�MissingSectionHeaderError�ConfigParser�SafeConfigParser�RawConfigParser�
Interpolation�BasicInterpolation�ExtendedInterpolation�LegacyInterpolation�SectionProxy�ConverterMapping�DEFAULTSECT�MAX_INTERPOLATION_DEPTHZDEFAULT�
c@s"eZdZddd�Zdd�ZeZdS)�Error�cCs||_tj||�dS)N)�message�	Exception�__init__)�self�msg�r"�$/usr/lib64/python3.6/configparser.pyr�szError.__init__cCs|jS)N)r)r r"r"r#�__repr__�szError.__repr__N)r)�__name__�
__module__�__qualname__rr$�__str__r"r"r"r#r�s
rc@seZdZdd�ZdS)rcCs$tj|d|f�||_|f|_dS)NzNo section: %r)rr�section�args)r r)r"r"r#r�szNoSectionError.__init__N)r%r&r'rr"r"r"r#r�sc@seZdZddd�ZdS)rNcCs�t|�dg}|dk	rRdt|�g}|dk	r8|jdj|��|jd�|j|�|}n|jdd�tj|dj|��||_||_	||_
|||f|_dS)Nz already existszWhile reading from z [line {0:2d}]z
: section rzSection r)�repr�append�format�extend�insertrr�joinr)�source�linenor*)r r)r1r2r!rr"r"r#r�s

zDuplicateSectionError.__init__)NN)r%r&r'rr"r"r"r#r�sc@seZdZddd�ZdS)rNcCs�t|�dt|�dg}|dk	rZdt|�g}|dk	r@|jdj|��|jd�|j|�|}n|jdd�tj|dj|��||_||_	||_
||_||||f|_dS)	Nz in section z already existszWhile reading from z [line {0:2d}]z	: option rzOption r)
r+r,r-r.r/rrr0r)�optionr1r2r*)r r)r3r1r2r!rr"r"r#r�s 

zDuplicateOptionError.__init__)NN)r%r&r'rr"r"r"r#r�sc@seZdZdd�ZdS)rcCs.tj|d||f�||_||_||f|_dS)NzNo option %r in section: %r)rrr3r)r*)r r3r)r"r"r#r�s
zNoOptionError.__init__N)r%r&r'rr"r"r"r#r�sc@seZdZdd�ZdS)r	cCs(tj||�||_||_|||f|_dS)N)rrr3r)r*)r r3r)r!r"r"r#rszInterpolationError.__init__N)r%r&r'rr"r"r"r#r	�sc@seZdZdd�ZdS)rcCs8dj||||�}tj||||�||_||||f|_dS)Nz�Bad value substitution: option {!r} in section {!r} contains an interpolation key {!r} which is not a valid option name. Raw value: {!r})r-r	r�	referencer*)r r3r)�rawvalr4r!r"r"r#r
s
z(InterpolationMissingOptionError.__init__N)r%r&r'rr"r"r"r#rsc@seZdZdS)rN)r%r&r'r"r"r"r#rsc@seZdZdd�ZdS)r
cCs0dj||t|�}tj||||�|||f|_dS)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})r-rr	rr*)r r3r)r5r!r"r"r#rs
z InterpolationDepthError.__init__N)r%r&r'rr"r"r"r#r
sc@s8eZdZd	dd�Zedd��Zejdd��Zdd�ZdS)
r
NcCsX|r|rtd��n|r(|r(td��n|r0|}tj|d|�||_g|_|f|_dS)Nz:Cannot specify both `filename' and `source'. Use `source'.z%Required argument `source' not given.z"Source contains parsing errors: %r)�
ValueErrorrrr1�errorsr*)r r1�filenamer"r"r#r+s

zParsingError.__init__cCstjdtdd�|jS)NzSThe 'filename' attribute will be removed in future versions.  Use 'source' instead.�)�
stacklevel)�warnings�warn�DeprecationWarningr1)r r"r"r#r8:s
zParsingError.filenamecCstjdtdd�||_dS)NzSThe 'filename' attribute will be removed in future versions.  Use 'source' instead.r9)r:)r;r<r=r1)r �valuer"r"r#r8Ds
cCs*|jj||f�|jd||f7_dS)Nz
	[line %2d]: %s)r7r,r)r r2�liner"r"r#r,NszParsingError.append)NN)r%r&r'r�propertyr8�setterr,r"r"r"r#r
(s


c@seZdZdd�ZdS)rcCs8tj|d|||f�||_||_||_|||f|_dS)Nz7File contains no section headers.
file: %r, line: %d
%r)rrr1r2r?r*)r r8r2r?r"r"r#rVsz"MissingSectionHeaderError.__init__N)r%r&r'rr"r"r"r#rSsc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
rcCs|S)Nr")r �parserr)r3r>�defaultsr"r"r#�
before_getjszInterpolation.before_getcCs|S)Nr")r rBr)r3r>r"r"r#�
before_setmszInterpolation.before_setcCs|S)Nr")r rBr)r3r>r"r"r#�before_readpszInterpolation.before_readcCs|S)Nr")r rBr)r3r>r"r"r#�before_writesszInterpolation.before_writeN)r%r&r'rDrErFrGr"r"r"r#rgsc@s.eZdZejd�Zdd�Zdd�Zdd�ZdS)	rz
%\(([^)]+)\)scCs$g}|j||||||d�dj|�S)N�r)�_interpolate_somer0)r rBr)r3r>rC�Lr"r"r#rD�szBasicInterpolation.before_getcCs<|jdd�}|jjd|�}d|kr8td||jd�f��|S)Nz%%r�%z1invalid interpolation syntax in %r at position %d)�replace�_KEYCRE�subr6�find)r rBr)r3r>�	tmp_valuer"r"r#rE�szBasicInterpolation.before_setcCsp|j||d|d�}|tkr&t|||���xB|�rj|jd�}	|	dkrP|j|�dS|	dkrv|j|d|	��||	d�}|dd�}
|
dkr�|jd�|dd�}q*|
dk�rV|jj|�}|dkr�t||d|��|j|j	d��}||j
�d�}y||}
Wn&tk
�r"t||||�d�YnXd|
k�rJ|j
||||
|||d�n
|j|
�q*t||d	|f��q*WdS)
NT)�raw�fallbackrKrrHr9�(z'bad interpolation variable reference %rz/'%%' must be followed by '%%' or '(', found: %r)�getrr
rOr,rM�matchr�optionxform�group�end�KeyErrorrrI)r rBr3�accum�restr)�map�depthr5�p�c�m�var�vr"r"r#rI�sF






z$BasicInterpolation._interpolate_someN)	r%r&r'�re�compilerMrDrErIr"r"r"r#rws
c@s.eZdZejd�Zdd�Zdd�Zdd�ZdS)	rz
\$\{([^}]+)\}cCs$g}|j||||||d�dj|�S)NrHr)rIr0)r rBr)r3r>rCrJr"r"r#rD�sz ExtendedInterpolation.before_getcCs<|jdd�}|jjd|�}d|kr8td||jd�f��|S)Nz$$r�$z1invalid interpolation syntax in %r at position %d)rLrMrNr6rO)r rBr)r3r>rPr"r"r#rE�sz ExtendedInterpolation.before_setcCs�|j||d|d�}|tkr&t|||���x�|�r�|jd�}	|	dkrP|j|�dS|	dkrv|j|d|	��||	d�}|dd�}
|
dkr�|jd�|dd�}q*|
dk�r�|jj|�}|dkr�t||d|��|jd�j	d	�}||j
�d�}|}
|}yrt|�dk�r |j|d�}||}nHt|�dk�rV|d}
|j|d�}|j|
|dd
�}nt||d|f��Wn2t
ttfk
�r�t|||d	j|��d�YnXd|k�r�|j|||||
t|j|
dd
��|d�n
|j|�q*t||d|f��q*WdS)
NT)rQrRrerrHr9�{z'bad interpolation variable reference %r�:)rQzMore than one ':' found: %rz-'$' must be followed by '$' or '{', found: %r)rTrr
rOr,rMrUrrW�splitrX�lenrVrYrrrr0rI�dict�items)r rBr3rZr[r)r\r]r5r^r_r`�pathZsect�optrbr"r"r#rI�s^







z'ExtendedInterpolation._interpolate_someN)	r%r&r'rcrdrMrDrErIr"r"r"r#r�s
c@s2eZdZejd�Zdd�Zdd�Zedd��Z	dS)	rz%\(([^)]*)\)s|.c
Cs�|}t}x�|r�|d8}|r�d|kr�tj|j|d�}|jj||�}y||}Wq�tk
r�}	zt||||	jd�d�WYdd}	~	Xq�Xq
Pq
W|r�d|kr�t	|||��|S)NrHz%()rBr)
r�	functools�partial�_interpolation_replacerMrNrYrr*r
)
r rBr)r3r>�varsr5r]rL�er"r"r#rDs"(zLegacyInterpolation.before_getcCs|S)Nr")r rBr)r3r>r"r"r#rE#szLegacyInterpolation.before_setcCs,|jd�}|dkr|j�Sd|j|�SdS)NrHz%%(%s)s)rWrV)rUrB�sr"r"r#rp&s
z*LegacyInterpolation._interpolation_replaceN)
r%r&r'rcrdrMrDrE�staticmethodrpr"r"r"r#r	s
c
s*eZdZdZdZdZe�Zej	eej
�Zej	ejdd�ej
�Z
ej	ejdd�ej
�Zej	d�Zddddddddd	�Zd
edfdcddd
ddeeed�dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdedd�Zdfdd�Zdgd!d"�Zdhd$d%�Zdid&d'�Zdd
ed(�d)d*�Zd+d,�Z dd
ed(�d-d.�Z!dd
ed(�d/d0�Z"dd
ed(�d1d2�Z#dd
ed(�d3d4�Z$edd
f�fd5d6�	Z%d7d8�Z&d9d:�Z'd;d<�Z(djd=d>�Z)dkd?d@�Z*dAdB�Z+dCdD�Z,dEdF�Z-dGdH�Z.dIdJ�Z/dKdL�Z0dMdN�Z1dOdP�Z2dQdR�Z3dSdT�Z4dUdV�Z5dWdX�Z6dYdZ�Z7d[d\�Z8d]d]d]d^�d_d`�Z9e:dadb��Z;�Z<S)lrz�
        \[                                 # [
        (?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=|:)�delimz\STF)�1�yes�trueZon�0�noZfalseZoffN�=rg�#�;)�
delimiters�comment_prefixes�inline_comment_prefixes�strict�empty_lines_in_values�default_section�
interpolation�
converterscCsX||_|j�|_|j�|_t|�|_|j�|_t||	�|j|	<|rhx$|j�D]\}}
|
|j|j|�<qLWt	|�|_
|dkr�|r�|jn|j|_
nNdjdd�|D��}|r�tj|jj|d�tj�|_
ntj|jj|d�tj�|_
t	|p�f�|_t	|p�f�|_||_||_||_|	|_|
|_|jtk�r*|j|_|jdk�r>t�|_|tk	�rT|jj|�dS)Nr{rg�|css|]}tj|�VqdS)N)rc�escape)�.0�dr"r"r#�	<genexpr>lsz+RawConfigParser.__init__.<locals>.<genexpr>)ru)r{rg) �_dict�	_sections�	_defaultsr�_converters�_proxiesrrkrV�tuple�_delimiters�	OPTCRE_NV�OPTCRE�_optcrer0rcrd�_OPT_NV_TMPLr-�VERBOSE�	_OPT_TMPL�_comment_prefixes�_inline_comment_prefixes�_strict�_allow_no_value�_empty_lines_in_valuesr��_interpolation�_UNSET�_DEFAULT_INTERPOLATIONr�update)r rCZ	dict_typeZallow_no_valuer~rr�r�r�r�r�r��keyr>r�r"r"r#rXs>






zRawConfigParser.__init__cCs|jS)N)r�)r r"r"r#rC�szRawConfigParser.defaultscCst|jj��S)N)�listr��keys)r r"r"r#�sections�szRawConfigParser.sectionscCsJ||jkrtd|��||jkr(t|��|j�|j|<t||�|j|<dS)NzInvalid section name: %r)r�r6r�rr�rr�)r r)r"r"r#�add_section�s

zRawConfigParser.add_sectioncCs
||jkS)N)r�)r r)r"r"r#�has_section�szRawConfigParser.has_sectioncCsJy|j|j�}Wntk
r0t|�d�YnX|j|j�t|j��S)N)r��copyrYrr�r�r�r�)r r)Zoptsr"r"r#�options�szRawConfigParser.optionscCs�t|ttjf�r|g}g}xl|D]d}y(t||d��}|j||�WdQRXWntk
rbw YnXt|tj�rztj|�}|j|�q W|S)N)�encoding)	�
isinstance�str�os�PathLike�open�_read�OSError�fspathr,)r �	filenamesr�Zread_okr8�fpr"r"r#�read�s

zRawConfigParser.readcCs<|dkr,y
|j}Wntk
r*d}YnX|j||�dS)Nz<???>)�name�AttributeErrorr�)r �fr1r"r"r#�	read_file�s

zRawConfigParser.read_file�<string>cCstj|�}|j||�dS)N)�io�StringIOr�)r �stringr1Zsfiler"r"r#�read_string�s
zRawConfigParser.read_string�<dict>cCs�t�}x�|j�D]�\}}t|�}y|j|�Wn(ttfk
rV|jrR||krR�YnX|j|�xl|j�D]`\}}|jt|��}|dk	r�t|�}|jr�||f|kr�t	|||��|j||f�|j|||�qlWqWdS)N)
�setrkr�r�rr6r��addrVr)r Z
dictionaryr1�elements_addedr)r�r�r>r"r"r#�	read_dict�s"

zRawConfigParser.read_dictcCs"tjdtdd�|j||d�dS)NzRThis method will be removed in future versions.  Use 'parser.read_file()' instead.r9)r:)r1)r;r<r=r�)r r�r8r"r"r#�readfp�s
zRawConfigParser.readfp)rQrqrRcCs�y|j||�}Wn$tk
r4|tkr,�n|SYnX|j|�}y||}Wn,tk
rx|tkrpt||��n|SYnX|s�|dkr�|S|jj|||||�SdS)N)�
_unify_valuesrr�rVrYrr�rD)r r)r3rQrqrRr�r>r"r"r#rT�s"


zRawConfigParser.getcKs||j||f|��S)N)rT)r r)�convr3�kwargsr"r"r#�_get"szRawConfigParser._getcKsDy|j|||f||d�|��Sttfk
r>|tkr:�|SXdS)N)rQrq)r�rrr�)r r)r3r�rQrqrRr�r"r"r#�	_get_conv%szRawConfigParser._get_convcKs|j||tf|||d�|��S)N)rQrqrR)r��int)r r)r3rQrqrRr�r"r"r#�getint0szRawConfigParser.getintcKs|j||tf|||d�|��S)N)rQrqrR)r��float)r r)r3rQrqrRr�r"r"r#�getfloat5szRawConfigParser.getfloatcKs |j|||jf|||d�|��S)N)rQrqrR)r��_convert_to_boolean)r r)r3rQrqrRr�r"r"r#�
getboolean:szRawConfigParser.getbooleanc
s��tkrt�j�S�jj��y�j�j��Wn&tk
rV��jkrRt	���YnX|r�x"|j�D]\}}|��j
|�<qfW���fdd��|r��fdd���fdd��j�D�S)Ncs�jj��|�|��S)N)r�rD)r3)r�r)r r"r#�<lambda>Vsz'RawConfigParser.items.<locals>.<lambda>cs�|S)Nr")r3)r�r"r#r�Yscsg|]}|�|�f�qSr"r")r�r3)�value_getterr"r#�
<listcomp>Zsz)RawConfigParser.items.<locals>.<listcomp>)r��superrkr�r�r�r�rYr�rrVr�)r r)rQrqr�r>)�	__class__)r�r)r r�r#rk?s


zRawConfigParser.itemscCs.x$|j�D]}||}||=||fSWt�dS)N)r�rY)r r�r>r"r"r#�popitem\s

zRawConfigParser.popitemcCs|j�S)N)�lower)r Z	optionstrr"r"r#rViszRawConfigParser.optionxformcCsX|s||jkr$|j|�}||jkS||jkr2dS|j|�}||j|kpR||jkSdS)NF)r�rVr�r�)r r)r3r"r"r#�
has_optionls



zRawConfigParser.has_optioncCsn|r|jj||||�}|s&||jkr.|j}n.y|j|}Wntk
rZt|�d�YnX|||j|�<dS)N)r�rEr�r�r�rYrrV)r r)r3r>�sectdictr"r"r#r�zszRawConfigParser.setcCsl|rdj|jd�}n
|jd}|jr>|j||j|jj�|�x(|jD]}|j|||j|j�|�qFWdS)Nz {} r)r-r�r��_write_sectionr�rkr�)r r�Zspace_around_delimitersr�r)r"r"r#�write�s

zRawConfigParser.writecCs~|jdj|��x^|D]V\}}|jj||||�}|dk	s@|jrV|t|�jdd�}nd}|jdj||��qW|jd�dS)Nz[{}]
�
z
	rz{}{}
)r�r-r�rGr�r�rL)r r�Zsection_nameZ
section_itemsZ	delimiterr�r>r"r"r#r��szRawConfigParser._write_sectioncCsf|s||jkr|j}n.y|j|}Wntk
rDt|�d�YnX|j|�}||k}|rb||=|S)N)r�r�r�rYrrV)r r)r3r��existedr"r"r#�
remove_option�s
zRawConfigParser.remove_optioncCs"||jk}|r|j|=|j|=|S)N)r�r�)r r)r�r"r"r#�remove_section�s

zRawConfigParser.remove_sectioncCs(||jkr|j|�rt|��|j|S)N)r�r�rYr�)r r�r"r"r#�__getitem__�szRawConfigParser.__getitem__cCs@||jkr|jj�n||jkr.|j|j�|j||i�dS)N)r�r��clearr�r�)r r�r>r"r"r#�__setitem__�s


zRawConfigParser.__setitem__cCs2||jkrtd��|j|�s$t|��|j|�dS)Nz"Cannot remove the default section.)r�r6r�rYr�)r r�r"r"r#�__delitem__�s


zRawConfigParser.__delitem__cCs||jkp|j|�S)N)r�r�)r r�r"r"r#�__contains__�szRawConfigParser.__contains__cCst|j�dS)NrH)rir�)r r"r"r#�__len__�szRawConfigParser.__len__cCstj|jf|jj��S)N)�	itertools�chainr�r�r�)r r"r"r#�__iter__�szRawConfigParser.__iter__cCs2t�}d}d}d}d}d}d}	�x�t|dd�D�]�\}}
tj}dd�|jD�}x||tjkr�|r�i}
x`|j�D]T\}}|
j||d�}|dkr�ql||
|<|dks�|dkrl|
|dj�rlt||�}qlW|
}qPWx"|j	D]}|
j
�j|�r�d}Pq�W|tjk�rd}|
d|�j
�}|�s^|j�rV|dk�r\|dk	�r\|�r\||dk	�r\||j
d�q.tj}q.|jj|
�}|�rx|j�nd}|dk	�r�|�r�||k�r�||j
|�q.|}|jj|�}|�rL|jd�}||jk�r|j�r�||k�r�t|||��|j|}|j|�n@||jk�r|j}n,|j�}||j|<t||�|j|<|j|�d}q.|dk�rdt|||
��q.|jj|�}|�r|jdd	d
�\}}}|�s�|j|	|||
�}	|j |j!��}|j�r�||f|k�r�t"||||��|j||f�|dk	�r�|j
�}|g||<nd||<q.|j|	|||
�}	q.W|j#�|	�r.|	�dS)NrrH)�startcSsi|]
}d|�qS)rH���r")r�r^r"r"r#�
<dictcomp>�sz)RawConfigParser._read.<locals>.<dictcomp>r�headerr3�vir>r�)$r��	enumerate�sys�maxsizer�rkrO�isspace�minr��strip�
startswithr�r,�NONSPACECRE�searchr��SECTCRErUrWr�r�rr�r�r�r�rr�rr��
_handle_errorrV�rstripr�_join_multiline_values)r r��fpnamer�ZcursectZsectnameZoptnamer2Zindent_levelrrr?Z
comment_startZinline_prefixesZ
next_prefixes�prefix�indexr>Zfirst_nonspaceZcur_indent_levelZmor�Zoptvalr"r"r#r��s� 









zRawConfigParser._readcCsz|j|jf}tj|f|jj��}xT|D]L\}}xB|j�D]6\}}t|t�rXdj|�j	�}|j
j||||�||<q8Wq&WdS)Nr�)r�r�r�r�r�rkr�r�r0r�r�rF)r rCZall_sectionsr)r�r��valr"r"r#r�Ys
z&RawConfigParser._join_multiline_valuescCs |st|�}|j|t|��|S)N)r
r,r+)r �excr�r2r?r"r"r#r�eszRawConfigParser._handle_errorc
Cs�i}y|j|}Wn&tk
r8||jkr4t|��YnXi}|rvx2|j�D]&\}}|dk	rdt|�}|||j|�<qLWt|||j�S)N)	r�rYr�rrkr�rV�	_ChainMapr�)r r)rqZsectiondictZvardictr�r>r"r"r#r�ks
zRawConfigParser._unify_valuescCs(|j�|jkrtd|��|j|j�S)NzNot a boolean: %s)r��BOOLEAN_STATESr6)r r>r"r"r#r�sz#RawConfigParser._convert_to_booleanr)r)r3r>cCsFt|t�std��t|t�s$td��|js0|rBt|t�sBtd��dS)Nzsection names must be stringszoption keys must be stringszoption values must be strings)r�r��	TypeErrorr�)r r)r3r>r"r"r#�_validate_value_types�s


z%RawConfigParser._validate_value_typescCs|jS)N)r�)r r"r"r#r��szRawConfigParser.converters)r{rg)r|r})N)N)r�)r�)N)N)T)=r%r&r'Z
_SECT_TMPLr�r�rr�rcrdr�r�r-r�r�r�r��
_default_dictrr�rrCr�r�r�r�r�r�r�r�r�rTr�r�r�r�r�rkr�rVr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr@r��
__classcell__r"r")r�r#r/st	
$	




	%




zcs0eZdZe�Zd�fdd�	Z�fdd�Z�ZS)rNcs"|j||d�t�j|||�dS)N)r3r>)rr�r�)r r)r3r>)r�r"r#r��szConfigParser.setcs|j|d�t�j|�dS)N)r))rr�r�)r r))r�r"r#r��szConfigParser.add_section)N)r%r&r'rr�r�r�rr"r")r�r#r�scseZdZ�fdd�Z�ZS)rcs"t�j||�tjdtdd�dS)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.r9)r:)r�rr;r<r=)r r*r�)r�r"r#r�szSafeConfigParser.__init__)r%r&r'rrr"r")r�r#r�sc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zedd��Z
edd��Zddddd�dd�ZdS)rcCsJ||_||_x8|jD].}d|}tj|jt||�d�}t|||�qWdS)NrT)�_impl)�_parser�_namer�rnrorT�getattr�setattr)r rBr�r�r��getterr"r"r#r�szSectionProxy.__init__cCsdj|j�S)Nz
<Section: {}>)r-r)r r"r"r#r$�szSectionProxy.__repr__cCs(|jj|j|�st|��|jj|j|�S)N)rr�rrYrT)r r�r"r"r#r��szSectionProxy.__getitem__cCs"|jj||d�|jj|j||�S)N)r3r>)rrr�r)r r�r>r"r"r#r��szSectionProxy.__setitem__cCs,|jj|j|�o|jj|j|�s(t|��dS)N)rr�rr�rY)r r�r"r"r#r��szSectionProxy.__delitem__cCs|jj|j|�S)N)rr�r)r r�r"r"r#r��szSectionProxy.__contains__cCst|j��S)N)ri�_options)r r"r"r#r��szSectionProxy.__len__cCs|j�j�S)N)r
r�)r r"r"r#r��szSectionProxy.__iter__cCs*|j|jjkr|jj|j�S|jj�SdS)N)rrr�r�rC)r r"r"r#r
�szSectionProxy._optionscCs|jS)N)r)r r"r"r#rB�szSectionProxy.parsercCs|jS)N)r)r r"r"r#r��szSectionProxy.nameNF)rQrqrcKs(|s|jj}||j|f|||d�|��S)N)rQrqrR)rrTr)r r3rRrQrqrr�r"r"r#rT�s
zSectionProxy.get)N)r%r&r'rr$r�r�r�r�r�r�r
r@rBr�rTr"r"r"r#r�s	c@sFeZdZejd�Zdd�Zdd�Zdd�Zdd	�Z	d
d�Z
dd
�ZdS)rz^get(?P<name>.+)$cCsZ||_i|_xHt|j�D]:}|jj|�}|stt|j|��rBqd|j|jd�<qWdS)Nr�)r�_data�dir�	GETTERCRErU�callablerrW)r rBr	r`r"r"r#rszConverterMapping.__init__cCs
|j|S)N)r)r r�r"r"r#r�szConverterMapping.__getitem__c
Cs�yd|}Wn(tk
r4tdj|t|����YnX|dkrFtd��||j|<tj|jj|d�}||_	t
|j||�x.|jj�D] }tj|j|d�}t
|||�q�WdS)NrTzIncompatible key: {} (type: {})z)Incompatible key: cannot use "" as a name)r�)r)
rr6r-�typerrnrorr�Z	converterr�valuesrT)r r�r>�k�func�proxyr	r"r"r#r�s
zConverterMapping.__setitem__cCs�yd|p
d}Wntk
r,t|��YnX|j|=xDtj|jf|jj��D]*}yt||�WqNtk
rvwNYqNXqNWdS)NrT)	rrYrr�r�rr�delattrr�)r r�rZinstr"r"r#r�,szConverterMapping.__delitem__cCs
t|j�S)N)�iterr)r r"r"r#r�:szConverterMapping.__iter__cCs
t|j�S)N)rir)r r"r"r#r�=szConverterMapping.__len__N)r%r&r'rcrdr
rr�r�r�r�r�r"r"r"r#rs
	)(�collections.abcr�collectionsrrrr�rnr�r�r�rcr�r;�__all__rrrrrrrrr	rrr
r
r�objectr�rrrrrrrrrr"r"r"r#�<module>�sV
	

+HJ&u
F
No se encontró la página – Alquiler de Limusinas, Autos Clásicos y Microbuses

Alquiler de Autos Clásicos para Sesiones Fotográficas: Estilo y Elegancia en Cada Toma

Si buscas darle un toque auténtico, elegante o retro a tus fotos, el alquiler de autos clásicos para sesiones fotográficas es la opción ideal. Este tipo de vehículos no solo son íconos del diseño automotriz, sino que se convierten en un elemento visual impactante que transforma cualquier sesión en una experiencia única.


¿Por Qué Usar Autos Clásicos en Sesiones Fotográficas?

1. Estética Visual Única

Un auto clásico aporta personalidad, historia y carácter a tus imágenes. Desde tomas urbanas hasta escenarios naturales, estos vehículos se adaptan a diferentes estilos visuales.

2. Ideal para Diversos Usos

  • Sesiones de boda y pre-boda
  • Campañas publicitarias
  • Editoriales de moda
  • Proyectos cinematográficos
  • Contenido para redes sociales

3. Variedad de Modelos

Desde convertibles vintage hasta muscle cars de los años 60 y 70, puedes elegir el modelo que mejor se ajuste a la estética de tu sesión.


Beneficios del Alquiler Profesional

  • Vehículos en excelente estado estético y mecánico
  • Choferes disponibles si se requiere movilidad
  • Asesoría para elegir el modelo adecuado
  • Posibilidad de ambientación adicional (flores, letreros, decoración retro)

Conclusión: Captura Momentos con Estilo

Un auto clásico puede transformar tu sesión fotográfica en una obra de arte visual. No importa el propósito: el estilo, la elegancia y el impacto están garantizados.


📸 ¡Reserva tu auto clásico y crea fotos memorables!

Consulta disponibilidad y haz de tu sesión algo realmente especial. ¡Llama la atención con cada toma!

Not Found

404

Sorry, the page you’re looking for doesn’t exist.