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

�`'d
��@s|ddlZddlZddlZddlZdddddddd	d
ddd
dddddddddgZdddddddddd d!d"d#d$d%d&d'd(d)gZdddddd*dddd!dd d+d"d#d$d,d&d'd%d-d.d/d(d)gZddd0d"dddd d#d$d1d2d!d%d3gZdd0d4d5d*ddd+d1d2g
Zdddddd d!dd#d$d1d2gZ	ddd0ddd5dddd d+dd"g
Z
d6Zd7d8d9gZd:Z
iZd;d<�Zd=Zd>Zd?d@�ZeefdAdB�ZeefdCdD�ZdEdF�ZGdGdH�dHe�ZGdIdJ�dJe�ZGdKdL�dLe�ZGdMdN�dNee�ZGdOdP�dPee�ZddQlmZeddR�ZeddS�ZeddT�ZdUe_ dVej!_ dWej"_ dXe_ dYej#_ dZej$_ d[ej%_ d\ej&_ d]ej"_ d^e_ ej#j ej#_ ej$j ej$_ ej%j ej%_ d_ej'_ ej&j ej&_ ej"j ej"_ eZ(Gd`d�dee�Z)Gdad�dee�Z*Gdbd�dee�Z+Gdcd�dee�Z,Gddd�dee�Z-Gded�dee�Z.dfdg�Z/e/�[/d�did�Z0djdk�Z1d�dldm�Z2dndo�Z3dpdq�Z4d�drd�Z5dsd�Z6dtd�Z7d�dud�Z8dvd�Z9dwZ:da;dxd�Z<ej=dy�Z>d�d|d�Z?d�d~d	�Z@Gdd��d�eA�ZBd�ZCdaDd�d�d
�ZEd�d�d�ZFeGd��ZHeIeH�ZJiZKGd�d��d�ejL�ZMd�d�d�ZNd�d�d�ZOd�d�d
�ZPd}dddeOfd�d�ZQd�d��ZRd�d��ZSdaTd�d��ZUdaVd�d��ZWd�d��ZXd�d��ZYdaZd�d��Z[d�d�d��Z\d�d��Z]d�d��Z^d�d��Z_d�d��Z`dS)��N�urlparse�
urlunparse�urljoin�	urldefrag�urlsplit�
urlunsplit�	urlencode�parse_qs�	parse_qsl�quote�
quote_plus�quote_from_bytes�unquote�unquote_plus�unquote_to_bytes�DefragResult�ParseResult�SplitResult�DefragResultBytes�ParseResultBytes�SplitResultBytes�Zftp�httpZgopherZnntpZimapZwais�fileZhttpsZshttpZmmsZprosperoZrtspZrtspuZsftpZsvnzsvn+sshZwsZwssZtelnetZsnewsZrsyncZnfsZgitzgit+sshZhdlZsipZsipsZtelZmailtoZnewszAabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+-.�	�
�
�cCstj�tj�dS)N)�_parse_cache�clear�
_safe_quoters�r!r!�$/usr/lib64/python3.6/urllib/parse.py�clear_cacheWsr#�ascii�strictcCs|S)Nr!)�objr!r!r"�_noopfsr'cCs|j||�S)N)�encode)r&�encoding�errorsr!r!r"�_encode_resultisr+cst��fdd�|D��S)Nc3s"|]}|r|j���ndVqdS)rN)�decode)�.0�x)r)r*r!r"�	<genexpr>osz_decode_args.<locals>.<genexpr>)�tuple)�argsr)r*r!)r)r*r"�_decode_argsmsr2cGsZt|dt�}x.|dd�D]}|rt|t�|krtd��qW|rL|tfSt|�tfS)Nr�z$Cannot mix str and non-str arguments)�
isinstance�str�	TypeErrorr'r2r+)r1Z	str_input�argr!r!r"�_coerce_argsqs
r8c@seZdZfZddd�ZdS)�_ResultMixinStrr$r%cs|j��fdd�|D��S)Nc3s|]}|j���VqdS)N)r()r-r.)r)r*r!r"r/�sz)_ResultMixinStr.encode.<locals>.<genexpr>)�_encoded_counterpart)�selfr)r*r!)r)r*r"r(�sz_ResultMixinStr.encodeN)r$r%)�__name__�
__module__�__qualname__�	__slots__r(r!r!r!r"r9�sr9c@seZdZfZddd�ZdS)�_ResultMixinBytesr$r%cs|j��fdd�|D��S)Nc3s|]}|j���VqdS)N)r,)r-r.)r)r*r!r"r/�sz+_ResultMixinBytes.decode.<locals>.<genexpr>)�_decoded_counterpart)r;r)r*r!)r)r*r"r,�sz_ResultMixinBytes.decodeN)r$r%)r<r=r>r?r,r!r!r!r"r@�sr@c@s@eZdZfZedd��Zedd��Zedd��Zedd��Zd	S)
�_NetlocResultMixinBasecCs
|jdS)Nr)�	_userinfo)r;r!r!r"�username�sz_NetlocResultMixinBase.usernamecCs
|jdS)Nr3)rC)r;r!r!r"�password�sz_NetlocResultMixinBase.passwordcCsD|jd}|sdSt|t�r dnd}|j|�\}}}|j�||S)Nr�%�%)�	_hostinfor4r5�	partition�lower)r;�hostname�	separatorZpercentZzoner!r!r"rK�s
z_NetlocResultMixinBase.hostnamecCs@|jd}|dk	r<t|d�}d|ko.dkns<td��|S)Nr3�
ri��zPort out of range 0-65535)rH�int�
ValueError)r;�portr!r!r"rP�s

z_NetlocResultMixinBase.portN)	r<r=r>r?�propertyrDrErKrPr!r!r!r"rB�s
rBc@s(eZdZfZedd��Zedd��ZdS)�_NetlocResultMixinStrcCsD|j}|jd�\}}}|r4|jd�\}}}|s<d}nd}}||fS)N�@�:)�netloc�
rpartitionrI)r;rU�userinfo�	have_info�hostinforD�
have_passwordrEr!r!r"rC�sz_NetlocResultMixinStr._userinfocCsl|j}|jd�\}}}|jd�\}}}|rL|jd�\}}}|jd�\}}}n|jd�\}}}|sdd}||fS)NrS�[�]rT)rUrVrI)r;rU�_rY�have_open_br�	bracketedrKrPr!r!r"rH�sz_NetlocResultMixinStr._hostinfoN)r<r=r>r?rQrCrHr!r!r!r"rR�srRc@s(eZdZfZedd��Zedd��ZdS)�_NetlocResultMixinBytescCsD|j}|jd�\}}}|r4|jd�\}}}|s<d}nd}}||fS)N�@�:)rUrVrI)r;rUrWrXrYrDrZrEr!r!r"rC�sz!_NetlocResultMixinBytes._userinfocCsl|j}|jd�\}}}|jd�\}}}|rL|jd�\}}}|jd�\}}}n|jd�\}}}|sdd}||fS)Nra�[�]rb)rUrVrI)r;rUr]rYr^r_rKrPr!r!r"rH�sz!_NetlocResultMixinBytes._hostinfoN)r<r=r>r?rQrCrHr!r!r!r"r`�sr`)�
namedtuplezurl fragmentz!scheme netloc path query fragmentz(scheme netloc path params query fragmentz�
DefragResult(url, fragment)

A 2-tuple that contains the url without fragment identifier and the fragment
identifier as a separate argument.
z$The URL with no fragment identifier.z�
Fragment identifier separated from URL, that allows indirect identification of a
secondary resource by reference to a primary resource and additional identifying
information.
z�
SplitResult(scheme, netloc, path, query, fragment)

A 5-tuple that contains the different components of a URL. Similar to
ParseResult, but does not split params.
z%Specifies URL scheme for the request.z0
Network location where the request is made to.
z@
The hierarchical path, such as the path to a file to download.
z�
The query component, that contains non-hierarchical data, that along with data
in path component, identifies a resource in the scope of URI's scheme and
network location.
z�
Fragment identifier, that allows indirect identification of a secondary resource
by reference to a primary resource and additional identifying information.
zr
ParseResult(scheme, netloc, path, params,  query, fragment)

A 6-tuple that contains components of a parsed URL.
z�
Parameters for last path element used to dereference the URI in order to provide
access to perform some operation on the resource.
c@seZdZfZdd�ZdS)rcCs |jr|jd|jS|jSdS)N�#)�fragment�url)r;r!r!r"�geturl<szDefragResult.geturlN)r<r=r>r?rir!r!r!r"r:sc@seZdZfZdd�ZdS)rcCst|�S)N)r)r;r!r!r"riDszSplitResult.geturlN)r<r=r>r?rir!r!r!r"rBsc@seZdZfZdd�ZdS)rcCst|�S)N)r)r;r!r!r"riIszParseResult.geturlN)r<r=r>r?rir!r!r!r"rGsc@seZdZfZdd�ZdS)rcCs |jr|jd|jS|jSdS)N�#)rgrh)r;r!r!r"riOszDefragResultBytes.geturlN)r<r=r>r?rir!r!r!r"rMsc@seZdZfZdd�ZdS)rcCst|�S)N)r)r;r!r!r"riWszSplitResultBytes.geturlN)r<r=r>r?rir!r!r!r"rUsc@seZdZfZdd�ZdS)rcCst|�S)N)r)r;r!r!r"ri\szParseResultBytes.geturlN)r<r=r>r?rir!r!r!r"rZscCs8ttfttfttff}x|D]\}}||_||_qWdS)N)rrrrrrr:rA)Z
_result_pairsZ_decodedZ_encodedr!r!r"�_fix_result_transcoding`s
rkTc
Csft||�\}}}t|||�}|\}}}}}|tkrHd|krHt|�\}}nd}t||||||�}	||	�S)N�;r)r8r�uses_params�_splitparamsr)
rh�scheme�allow_fragments�_coerce_resultZsplitresultrU�queryrg�params�resultr!r!r"rmscCsRd|kr,|jd|jd��}|dkr6|dfSn
|jd�}|d|�||dd�fS)N�/rlrrr3)�find�rfind)rh�ir!r!r"rn}s

rncCsLt|�}x*dD]"}|j||�}|dkrt||�}qW|||�||d�fS)Nz/?#r)�lenrv�min)rh�start�delim�cZwdelimr!r!r"�_splitnetloc�s
r~cCs�|stdd�|D��rdSddl}|jdd�}|jdd�}|jdd�}|jdd�}|jd	|�}||krndSx(d
D] }||krttd|dd
��qtWdS)Ncss|]}t|�dkVqdS)�N)�ord)r-r}r!r!r"r/�sz_checknetloc.<locals>.<genexpr>rrSrrTrf�?�NFKCz/?#@:znetloc 'z' contains invalid z#characters under NFKC normalization)�any�unicodedata�replace�	normalizerO)rUr��nZnetloc2r}r!r!r"�_checknetloc�s
r�cCsxtD]}|j|d�}qW|S)Nr)�_UNSAFE_URL_BYTES_TO_REMOVEr�)rh�br!r!r"�_remove_unsafe_bytes_from_url�s
r�c
Cs~t||�\}}}t|�}t|�}t|�}|||t|�t|�f}tj|d�}|rV||�Stt�tkrht�d}}}|j	d�}	|	dk�r�|d|	�dk�rf|d|	�j
�}||	dd�}|dd�dk�rt|d�\}}d|kr�d	|ks�d	|ko�d|k�rtd
��|�r$d|k�r$|j
dd�\}}d|k�r>|j
dd�\}}t|�t|||||�}
|
t|<||
�Sxd|d|	�D]}|tk�rtP�qtW||	dd�}|�s�td
d�|D���r�|d|	�j
�|}}|dd�dk�rt|d�\}}d|k�rd	|k�sd	|k�rd|k�rtd
��|�r<d|k�r<|j
dd�\}}d|k�rV|j
dd�\}}t|�t|||||�}
|
t|<||
�S)NrrTrrr3�z//r[r\zInvalid IPv6 URLrfr�css|]}|dkVqdS)�
0123456789Nr!)r-r}r!r!r"r/�szurlsplit.<locals>.<genexpr>)r8r��bool�typer�getry�MAX_CACHE_SIZEr#rvrJr~rO�splitr�r�scheme_charsr�)
rhrorprq�key�cachedrUrrrgrx�vr}�restr!r!r"r�s`




cCs<t|�\}}}}}}}|r&d||f}|t|||||f��S)Nz%s;%s)r8r)�
componentsrorUrhrsrrrgrqr!r!r"r�scCs�t|�\}}}}}}|s4|r`|tkr`|dd�dkr`|rP|dd�dkrPd|}d|pXd|}|rp|d|}|r�|d|}|r�|d|}||�S)	Nr�z//r3rurrTr�rf)r8�uses_netloc)r�rorUrhrrrgrqr!r!r"r�s cCs�|s|S|s|St||�\}}}t|d|�\}}}}}}	t|||�\}
}}}
}}|
|ks`|
tkrh||�S|
tkr�|r�|t|
|||
||f��S|}|r�|
r�|}|}
|s�|}|t|
|||
||f��S|jd�}|ddkr�|d=|dd�dk�r�|jd�}n(||jd�}td|dd��|dd	�<g}xX|D]P}|dk�rdy|j�Wntk
�r`YnXn|dk�rt�q0n
|j	|��q0W|d
dk�r�|j	d�|t|
|dj
|��p�d|
||f��S)Nrrur3�..�.���r�r�r�r�)r�r�)r8r�
uses_relativer�rr��filter�pop�
IndexError�append�join)�baserhrprqZbschemeZbnetlocZbpathZbparamsZbqueryZ	bfragmentrorU�pathrsrrrgZ
base_partsZsegmentsZ
resolved_pathZsegr!r!r"r�sT






c	CsTt|�\}}d|kr>t|�\}}}}}}t|||||df�}nd}|}|t||��S)Nrfr)r8rrr)	rhrq�sr��p�a�qZfragZdefragr!r!r"rDsZ0123456789ABCDEFabcdefcCs�|s|jdSt|t�r"|jd�}|jd�}t|�dkr<|S|dg}|j}tdkrbdd�tD�axb|dd�D]R}y(|t|dd��||dd��Wqptk
r�|d�||�YqpXqpWdj	|�S)	N�zutf-8rGr3rcSs4i|],}tD]"}tt||d�g�||j��qqS)�)�_hexdig�bytesrNr()r-r�r�r!r!r"�
<dictcomp>jsz$unquote_to_bytes.<locals>.<dictcomp>r�)
r�r4r5r(ryr��
_hextobyter��KeyErrorr�)�string�bits�resr��itemr!r!r"rWs*



z([-]+)�utf-8r�cCs�d|kr|j|S|dkrd}|dkr*d}tj|�}|dg}|j}x@tdt|�d�D],}|t||�j||��|||d�qVWdj|�S)NrFzutf-8r�rr3r�r)r��_asciirer��rangeryrr,r�)r�r)r*r�r�r�rxr!r!r"rws


Fc	CsRi}t|||||||d�}x2|D]*\}	}
|	|kr@||	j|
�q |
g||	<q W|S)N)r)r*�max_num_fieldsrL)r
r�)�qs�keep_blank_values�strict_parsingr)r*r�rLZ
parsed_result�pairs�name�valuer!r!r"r	�sc@seZdZdS)�_QueryStringSeparatorWarningN)r<r=r>r!r!r!r"r��sr�z/etc/python/urllib.cfgcCs�t|�\}}t|t�r |jd�}|s6t|ttf�rF|dk	rFtd��t�}|dk�rVt}d}	|dkrvtj	j
|	�}d}
|dkr�ytt�}Wnt
k
r�YnJX|�:ddl}|jdd&d�}
|
j|�|
j
d|	dd	�}|aWdQRXt}
|dk�rd
|k�rddlm}|d,tdd�d}n:|dk�r,|}n*t|�dk�rVt|	�d|
�d�dd��|dk	�r�||k�r�d|jd�|jd
�}nd|j|�}||k�r�td��||k�r�dd�|jd�D�}ndd�|j|�D�}g}x�|D]�}|�r�|�r��q�|jd d�}t|�dk�r>|�r(td!|f��|�r�|jd"�n�q�t|d��sR|�r�|djd#d$�}t|||d%�}||�}|djd#d$�}t|||d%�}||�}|j||f��q�W|S)-Nr$z*Separator must be of type string or bytes.ZPYTHON_URLLIB_QS_SEPARATORzenvironment variablerrf)Z
interpolationZcomment_prefixesr	)Zfallbackrl)�warnz4The default separator of urllib.parse.parse_qsl and z1parse_qs was changed to '&' to avoid a web cache z"poisoning issue (CVE-2021-23336). z4By default, semicolons no longer act as query field zseparators. z3See https://access.redhat.com/articles/5860431 for z
more details.r�)�
stacklevel�&Zlegacyr3z (from z) must contain z1 character, or "legacy". See z<https://access.redhat.com/articles/5860431 for more details.zMax number of fields exceededcSs g|]}|jd�D]}|�qqS)rl)r�)r-�s1�s2r!r!r"�
<listcomp>!szparse_qsl.<locals>.<listcomp>cSsg|]}|�qSr!r!)r-r�r!r!r"r�#s�=zbad query field: %rr�+� )r)r*)rfzeThe default separator of urllib.parse.parse_qsl and parse_qs was changed to '&' to avoid a web cache z�The default separator of urllib.parse.parse_qsl and parse_qs was changed to '&' to avoid a web cache poisoning issue (CVE-2021-23336). z�The default separator of urllib.parse.parse_qsl and parse_qs was changed to '&' to avoid a web cache poisoning issue (CVE-2021-23336). By default, semicolons no longer act as query field z�The default separator of urllib.parse.parse_qsl and parse_qs was changed to '&' to avoid a web cache poisoning issue (CVE-2021-23336). By default, semicolons no longer act as query field separators. z�The default separator of urllib.parse.parse_qsl and parse_qs was changed to '&' to avoid a web cache poisoning issue (CVE-2021-23336). By default, semicolons no longer act as query field separators. See https://access.redhat.com/articles/5860431 for aThe default separator of urllib.parse.parse_qsl and parse_qs was changed to '&' to avoid a web cache poisoning issue (CVE-2021-23336). By default, semicolons no longer act as query field separators. See https://access.redhat.com/articles/5860431 for more details.)r8r4r�r,r5rO�object�_default_qs_separator�os�environr��open�_QS_SEPARATOR_CONFIG_FILENAME�FileNotFoundError�configparserZConfigParserZ	read_file�warningsr�r�ry�countr�r�r�r)r�r�r�r)r*r�rLrqZ_legacyZenvvar_nameZ
config_sourcerr��configr��
num_fieldsr��rZ
name_valueZnvr�r�r!r!r"r
�s�












cCs|jdd�}t|||�S)Nr�r�)r�r)r�r)r*r!r!r"r;ssAABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.-c@s$eZdZdd�Zdd�Zdd�ZdS)�QuotercCstj|�|_dS)N)�_ALWAYS_SAFE�union�safe)r;r�r!r!r"�__init__SszQuoter.__init__cCsd|jjt|�fS)Nz<%s %r>)�	__class__r<�dict)r;r!r!r"�__repr__WszQuoter.__repr__cCs(||jkrt|�ndj|�}|||<|S)Nz%{:02X})r��chr�format)r;r�r�r!r!r"�__missing__[szQuoter.__missing__N)r<r=r>r�r�r�r!r!r!r"r�Ksr�rucCsbt|t�r8|s|S|dkrd}|dkr*d}|j||�}n |dk	rHtd��|dk	rXtd��t||�S)Nzutf-8r%z,quote() doesn't support 'encoding' for bytesz*quote() doesn't support 'errors' for bytes)r4r5r(r6r
)r�r�r)r*r!r!r"ras
cCsdt|t�rd|ks$t|t�r2d|kr2t||||�St|t�rBd}nd}t|||||�}|jdd�S)Nr�� r�)r4r5r�rr�)r�r�r)r*Zspacer!r!r"r�s
cs�t|ttf�std��|sdSt|t�r6|jdd�}ntdd�|D��}|jt|�s^|j�Syt	|�Wn&t
k
r�t|�jt	|<�YnXdj
�fdd�|D��S)Nz!quote_from_bytes() expected bytesrr$�ignorecSsg|]}|dkr|�qS)�r!)r-r}r!r!r"r��sz$quote_from_bytes.<locals>.<listcomp>csg|]}�|��qSr!r!)r-�char)�quoterr!r"r��s)r4r��	bytearrayr6r5r(�rstrip�_ALWAYS_SAFE_BYTESr,r r�r��__getitem__r�)Zbsr�r!)r�r"r
�s
cCst|d�r|j�}nRy t|�r2t|dt�r2t�Wn0tk
rdtj�\}}}td�j|��YnXg}	|s�xr|D]j\}
}t|
t	�r�||
|�}
n|t
|
�|||�}
t|t	�r�|||�}n|t
|�|||�}|	j|
d|�qtW�n,�x(|D�]\}
}t|
t	��r||
|�}
n|t
|
�|||�}
t|t	��rL|||�}|	j|
d|�q�t|t
��rz|||||�}|	j|
d|�q�yt|�}Wn:tk
�r�|t
|�|||�}|	j|
d|�Yq�XxJ|D]B}
t|
t	��r�||
|�}
n|t
|
�|||�}
|	j|
d|
��q�Wq�Wdj|	�S)N�itemsrz1not a valid non-string sequence or mapping objectr�r�)
�hasattrr�ryr4r0r6�sys�exc_info�with_tracebackr�r5r�r�)rrZdoseqr�r)r*Z	quote_viaZtyZva�tb�l�kr�r.Zeltr!r!r"r�sP





cCsJt|t�rFy|jd�j�}Wn(tk
rDtdt|�d��YnX|S)N�ASCIIzURL z contains non-ASCII characters)r4r5r(r,�UnicodeError�repr)rhr!r!r"�to_bytess
r�cCs`t|�j�}|dd�dkr<|dd�dkr<|dd�j�}|dd�dkr\|dd�j�}|S)Nr3�<�>�zURL:r�r�)r5�strip)rhr!r!r"�unwraps r�cCsDtdkrtjdtj�atj|�}|r<|j�\}}|j�|fSd|fS)Nz
([^/:]+):(.*))�	_typeprog�re�compile�DOTALL�match�groupsrJ)rhr�ro�datar!r!r"�	splittypes
rcCsXtdkrtjdtj�atj|�}|rP|j�\}}|rH|ddkrHd|}||fSd|fS)Nz//([^/#?]*)(.*)rru)�	_hostprogr�r�r�r�r�)rhr�Z	host_portr�r!r!r"�	splithost's
rcCs |jd�\}}}|r|nd|fS)NrS)rV)�host�userr|r!r!r"�	splituser5srcCs |jd�\}}}||r|ndfS)NrT)rI)rr|Zpasswdr!r!r"�splitpasswd:srcCsDtdkrtjdtj�atj|�}|r<|j�\}}|r<||fS|dfS)Nz(.*):([0-9]*)$)�	_portprogr�r�r�r�r�)rr�rPr!r!r"�	splitportAs
r	r3cCsT|jd�\}}}|s|}n2|rLyt|�}Wntk
rBd}YnX||fS||fS)NrT)rVrNrO)rZdefportr|rPZnportr!r!r"�
splitnportNs
r
cCs$|jd�\}}}|r||fS|dfS)Nr�)rV)rhr�r|rrr!r!r"�
splitquery^srcCs$|jd�\}}}|r||fS|dfS)Nrf)rV)rhr�r|�tagr!r!r"�splittagesr
cCs|jd�}|d|dd�fS)Nrlrr3)r�)rhZwordsr!r!r"�	splitattrls
rcCs |jd�\}}}||r|ndfS)Nr�)rI)�attrr|r�r!r!r"�
splitvaluersr)rT)r)rT)T)r�r�)FFr�r�NN)FFr�r�NN)r�r�)ruNN)rNN)rur�)r�)ar�r�r��collections�__all__r�r�rmZnon_hierarchicalZ
uses_queryZ
uses_fragmentr�r�r�rr#Z_implicit_encodingZ_implicit_errorsr'r+r2r8r�r9r@rBrRr`reZ_DefragResultBaseZ_SplitResultBaseZ_ParseResultBase�__doc__rhrgrorUr�rrrsZ
ResultBaserrrrrrrkrrnr~r�r�rrrrrr�r�rr�r�rr	�RuntimeWarningr�r�r�r
r�	frozensetr�r�r�r �defaultdictr�rrr
rr�r�r�rrrrrrr	r
rr
rrr!r!r!r"�<module>s�





!


	

<
E


&
y
	
,

O


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.