o
    ì6WjÈ…  ã                   @  sè  d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	m
Z
mZ ddlmZ ddlmZmZmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZmZmZ ddlm Z m!Z!m"Z"m#Z# ddl$m%Z%m&Z&m'Z'm(Z( ddl)m*Z*m+Z+ ddl,m-Z-m.Z.m/Z/m0Z0m1Z1 ddl2m3Z3 ddl4m5Z5 ddl6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@ erÄddlAmBZB ddlCmDZDmEZE ddlFmZG ddlmHZH ejIdkrÍejJZKnejZKefd-d d!„ZLefd.d%d&„ZMG d'd(„ d(ƒZNG d)d*„ d*eNƒZOd/d+d,„ZPdS )0z•
requests.sessions
~~~~~~~~~~~~~~~~~

This module provides a Session object to manage and persist settings across
requests (cookies, auth, proxies).
é    )ÚannotationsN)ÚOrderedDict)Ú	GeneratorÚMappingÚMutableMapping)Ú	timedelta)ÚTYPE_CHECKINGÚAnyÚcasté   )Úto_native_string)Úis_prepared)ÚHTTPAdapter)Ú_basic_auth_str)Ú	cookielibÚurljoinÚurlparse)ÚRequestsCookieJarÚcookiejar_from_dictÚextract_cookies_to_jarÚmerge_cookies)ÚChunkedEncodingErrorÚContentDecodingErrorÚInvalidSchemaÚTooManyRedirects)Údefault_hooksÚdispatch_hook)ÚDEFAULT_REDIRECT_LIMITÚREDIRECT_STATIÚPreparedRequestÚRequestÚResponse)Úcodes)ÚCaseInsensitiveDict)
ÚDEFAULT_PORTSÚdefault_headersÚget_auth_from_urlÚget_environ_proxiesÚget_netrc_authÚrequote_uriÚresolve_proxiesÚrewind_bodyÚshould_bypass_proxiesÚto_key_val_list)Ú	CookieJar)ÚSelfÚUnpack)Ú_types)ÚBaseAdapterÚwin32Úrequest_settingr	   Úsession_settingÚ
dict_classÚtypeÚreturnc                 C  sp   |du r| S | du r|S t |tƒrt | tƒs| S |t|ƒƒ}| t| ƒ¡ dd„ | ¡ D ƒ}|D ]}||= q0|S )zèDetermines appropriate setting for a given request, taking into account
    the explicit setting on that request, and the setting in the session. If a
    setting is a dictionary, they will be merged together using `dict_class`
    Nc                 S  s   g | ]
\}}|d u r|‘qS ©N© )Ú.0ÚkÚvr:   r:   ú`/home/esfera/Documents/content_generation/venv/lib/python3.10/site-packages/requests/sessions.pyÚ
<listcomp>e   s    z!merge_setting.<locals>.<listcomp>)Ú
isinstancer   r-   ÚupdateÚitems)r4   r5   r6   Úmerged_settingÚ	none_keysÚkeyr:   r:   r>   Úmerge_settingL   s   ÿÿrF   Úrequest_hooksú_t.HooksTypeÚsession_hooksc                 C  s@   |du s|  d¡g kr| S | du s|   d¡g kr|S t| ||ƒS )z©Properly merges both requests and session hooks.

    This is necessary because when request_hooks == {'response': []}, the
    merge breaks Session hooks entirely.
    NÚresponse)ÚgetrF   )rG   rI   r6   r:   r:   r>   Úmerge_hooksl   s
   
rL   c                   @  sz   e Zd ZU ded< ded< ded< d4dd„Zd5dd„Zd6dd„Z						d7d8d(d)„Zd9d-d.„Zd:d0d1„Z	d9d2d3„Z
dS );ÚSessionRedirectMixinÚintÚmax_redirectsÚboolÚ	trust_envr   ÚcookiesÚrequestr   Úkwargsr	   r8   r!   c                 K  s   d S r9   r:   )ÚselfrS   rT   r:   r:   r>   Úsend„   s    zSessionRedirectMixin.sendÚrespú
str | Nonec                 C  s(   |j r|jd }| d¡}t|dƒS dS )z7Receives a Response. Returns a redirect URI or ``None``ÚlocationÚlatin1Úutf8N)Úis_redirectÚheadersÚencoder   )rU   rW   rY   r:   r:   r>   Úget_redirect_target†   s
   


z(SessionRedirectMixin.get_redirect_targetÚold_urlÚstrÚnew_urlc                 C  sš   t |ƒ}t |ƒ}|j|jkrdS |jdkr&|jdv r&|jdkr&|jdv r&dS |j|jk}|j|jk}t |jd¡df}|sI|j|v rI|j|v rIdS |pL|S )zFDecide whether Authorization header should be removed when redirectingTÚhttp)éP   NÚhttps)i»  NFN)r   ÚhostnameÚschemeÚportr$   rK   )rU   r`   rb   Ú
old_parsedÚ
new_parsedÚchanged_portÚchanged_schemeÚdefault_portr:   r:   r>   Úshould_strip_authš   s$   



ÿ

z&SessionRedirectMixin.should_strip_authFNTÚreqÚstreamÚtimeoutú_t.TimeoutTypeÚverifyú_t.VerifyTypeÚcertú_t.CertTypeÚproxiesúdict[str, str] | NoneÚyield_requestsÚadapter_kwargsúGenerator[Response, None, None]c	              
   k  sH  � g }
|   |¡}t|jƒj}|�r"| ¡ }|
dd… |_|
 |¡ z|j W n tt	t
fy9   |jjdd� Y nw t|jƒ| jkrMtd| j› d�|d�‚| ¡  | d¡ret|jƒ}d t|jƒ|g¡}t|ƒ}|jd	krw|rw|j|d
�}n|jr}|j}| ¡ }|js�t|jt|ƒƒ}nt|ƒ}t|ƒ|_|  ||¡ |jtjtjfvr¶d}|D ]	}|j  |d¡ q©d|_!|j}|  dd¡ t"d|j#ƒ}t$|||jƒ t%|| j&ƒ | '|¡ |  (||¡}|  )||¡ |j*duoïd|v pïd|v }|röt+|ƒ |}|rþ|V  n | j,|f|||||ddœ|	¤Ž}t$| j&||jƒ |   |¡}|V  |sdS dS )zBReceives a Response. Returns a generator of Responses or Requests.NF)Údecode_contentz	Exceeded z redirects.)rJ   z//ú:Ú )Úfragment)úContent-LengthzContent-TypeúTransfer-EncodingÚCookier.   r€   r�   )rp   rq   rs   ru   rw   Úallow_redirects)-r_   r   Úurlr   ÚcopyÚhistoryÚappendÚcontentr   r   ÚRuntimeErrorÚrawÚreadÚlenrO   r   ÚcloseÚ
startswithÚjoinr   rg   Ú_replaceÚgeturlÚnetlocr   r)   Úrebuild_methodÚstatus_coder"   Útemporary_redirectÚpermanent_redirectr]   ÚpopÚbodyr
   Ú_cookiesr   r   rR   Úprepare_cookiesÚrebuild_proxiesÚrebuild_authÚ_body_positionr+   rV   )rU   rW   ro   rp   rq   rs   ru   rw   ry   rz   Úhistr„   Úprevious_fragmentÚprepared_requestÚparsed_rurlÚparsedÚpurged_headersÚheaderr]   Ú
cookie_jarÚ
rewindabler:   r:   r>   Úresolve_redirectsº   s�   €


ÿÿ


þ

ÿÿùø
™z&SessionRedirectMixin.resolve_redirectsr    rJ   ÚNonec                 C  sv   |j }t|ƒs	J ‚t|ƒsJ ‚|j}|j}|j}d|v r%|  ||¡r%|d= | jr,t|ƒnd}|dur9| |¡ dS dS )zéWhen being redirected we may want to strip authentication from the
        request to avoid leaking credentials. This method intelligently removes
        and reapplies authentication where possible to avoid credential loss.
        ÚAuthorizationN)rS   Ú_is_preparedr]   r„   rn   rQ   r(   Úprepare_auth)rU   r    rJ   Úoriginal_requestr]   Úoriginal_urlr„   Únew_authr:   r:   r>   rœ   5  s   ÿz!SessionRedirectMixin.rebuild_authúdict[str, str]c                 C  sŽ   t |ƒsJ ‚|j}t|jƒj}t||| jƒ}d|v r|d= z
t|| ƒ\}}W n ty4   d\}}Y nw | 	d¡sE|rE|rEt
||ƒ|d< |S )a°  This method re-evaluates the proxy configuration by considering the
        environment variables. If we are redirected to a URL covered by
        NO_PROXY, we strip the proxy configuration. Otherwise, we set missing
        proxy keys for this URL (in case they were stripped by a previous
        redirect).

        This method also replaces the Proxy-Authorization header where
        necessary.

        :rtype: dict
        zProxy-Authorization©NNre   )rª   r]   r   r„   rg   r*   rQ   r&   ÚKeyErrorrŽ   r   )rU   r    rw   r]   rg   Únew_proxiesÚusernameÚpasswordr:   r:   r>   r›   N  s   ÿz$SessionRedirectMixin.rebuild_proxiesc                 C  sX   |j }|jtjkr|dkrd}|jtjkr|dkrd}|jtjkr'|dkr'd}||_ dS )z‚When being redirected we may want to change the method of the request
        based on certain specs or browser behavior.
        ÚHEADÚGETÚPOSTN)Úmethodr”   r"   Ú	see_otherÚfoundÚmoved)rU   r    rJ   r¸   r:   r:   r>   r“   r  s   
z#SessionRedirectMixin.rebuild_method©rS   r   rT   r	   r8   r!   )rW   r!   r8   rX   )r`   ra   rb   ra   r8   rP   )FNTNNF)rW   r!   ro   r   rp   rP   rq   rr   rs   rt   ru   rv   rw   rx   ry   rP   rz   r	   r8   r{   )r    r   rJ   r!   r8   r¨   )r    r   rw   rx   r8   r¯   )Ú__name__Ú
__module__Ú__qualname__Ú__annotations__rV   r_   rn   r§   rœ   r›   r“   r:   r:   r:   r>   rM      s"   
 


$÷
{
$rM   c                   @  sp  e Zd ZU dZded< ded< ded< ded	< d
ed< ded< ded< ded< ded< ded< ded< ded< g d¢Zded< dkdd„Zdld!d"„Zdmd%d&„Zdnd*d+„Z		,	,	,	,	,	,	,	-	,	,	,	,	,	,dodpdCdD„Z
	,dqdrdGdH„ZdsdJdK„ZdsdLdM„Z	,	,dtdudOdP„Z	,dqdvdRdS„Z	,dqdvdTdU„ZdsdVdW„ZdwdXdY„Zdxd[d\„Zdyd^d_„Zdkd`da„Zdzddde„Zd{dfdg„Zd|didj„Zd,S )}ÚSessiona€  A Requests session.

    Provides cookie persistence, connection-pooling, and configuration.

    Basic Usage::

      >>> import requests
      >>> s = requests.Session()
      >>> s.get('https://httpbin.org/get')
      <Response [200]>

    Or as a context manager::

      >>> with requests.Session() as s:
      ...     s.get('https://httpbin.org/get')
      <Response [200]>
    zCaseInsensitiveDict[str]r]   ú_t.AuthTypeÚauthr¯   rw   zdict[str, list[_t.HookType]]ÚhookszMutableMapping[str, Any]ÚparamsrP   rp   rt   rs   rv   ru   rN   rO   rQ   r   rR   z MutableMapping[str, BaseAdapter]Úadapters)r]   rR   rÃ   rw   rÄ   rÅ   rs   ru   rÆ   rp   rQ   rO   z	list[str]Ú	__attrs__r8   r¨   c                 C  sr   t ƒ | _d | _i | _tƒ | _i | _d| _d| _d | _	t
| _d| _ti ƒ| _tƒ | _|  dtƒ ¡ |  dtƒ ¡ d S )NFTzhttps://zhttp://)r%   r]   rÃ   rw   r   rÄ   rÅ   rp   rs   ru   r   rO   rQ   r   rR   r   rÆ   Úmountr   ©rU   r:   r:   r>   Ú__init__º  s   
zSession.__init__r/   c                 C  s   | S r9   r:   rÉ   r:   r:   r>   Ú	__enter__ù  s   zSession.__enter__Úargsr	   c                 G  s   |   ¡  d S r9   )r�   )rU   rÌ   r:   r:   r>   Ú__exit__ü  s   zSession.__exit__rS   r    r   c                 C  sÄ   t d|jƒ}t t|jƒ}|jpi }t|tjƒst|ƒ}t	t	t
ƒ | jƒ|ƒ}|j}| jr4|s4| js4t|ƒ}tƒ }|j| ¡ ||j|j|jt|j| jtd�t|j| jƒt|| jƒ|t|j| jƒd�
 |S )a‹  Constructs a :class:`PreparedRequest <PreparedRequest>` for
        transmission and returns it. The :class:`PreparedRequest` has settings
        merged from the :class:`Request <Request>` instance and those of the
        :class:`Session`.

        :param request: :class:`Request` instance to prepare with this
            session's settings.
        :rtype: requests.PreparedRequest
        ú
_t.UriType)r6   )
r¸   r„   ÚfilesÚdataÚjsonr]   rÅ   rÃ   rR   rÄ   )r
   r„   ra   r¸   rR   r@   r   r.   r   r   r   rÃ   rQ   r(   r   ÚprepareÚupperrÏ   rÐ   rÑ   rF   r]   r#   rÅ   rL   rÄ   )rU   rS   r„   r¸   rR   Úmerged_cookiesrÃ   Úpr:   r:   r>   Úprepare_requestÿ  s6   

ÿ
ÿ
ôzSession.prepare_requestNTr¸   ra   r„   rÎ   ú_t.ParamsTyperÐ   ú_t.DataTypeú_t.HeadersTypeú5RequestsCookieJar | CookieJar | dict[str, str] | NonerÏ   ú_t.FilesTyperq   rr   rƒ   rx   ú_t.HooksInputType | Noneúbool | Noneú_t.VerifyType | NonerÑ   ú_t.JsonTyper!   c                 C  s˜   t |tƒr
| d¡}t| ¡ ||||pi ||pi |||d�
}|  |¡}t|ƒs)J ‚|p,i }|  |j||||¡}|	|
dœ}| 	|¡ | j
|fi |¤Ž}|S )a
  Constructs a :class:`Request <Request>`, prepares it and sends it.
        Returns :class:`Response <Response>` object.

        :param method: method for the new :class:`Request` object.
        :param url: URL for the new :class:`Request` object.
        :param params: (optional) Dictionary or bytes to be sent in the query
            string for the :class:`Request`.
        :param data: (optional) Dictionary, list of tuples, bytes, or file-like
            object to send in the body of the :class:`Request`.
        :param json: (optional) json to send in the body of the
            :class:`Request`.
        :param headers: (optional) Dictionary of HTTP Headers to send with the
            :class:`Request`.
        :param cookies: (optional) Dict or CookieJar object to send with the
            :class:`Request`.
        :param files: (optional) Dictionary of ``'filename': file-like-objects``
            for multipart encoding upload.
        :param auth: (optional) Auth tuple or callable to enable
            Basic/Digest/Custom HTTP Auth.
        :param timeout: (optional) How many seconds to wait for the server to send
            data before giving up, as a float, or a :ref:`(connect timeout,
            read timeout) <timeouts>` tuple.
        :type timeout: float or tuple
        :param allow_redirects: (optional) Set to True by default.
        :type allow_redirects: bool
        :param proxies: (optional) Dictionary mapping protocol or protocol and
            hostname to the URL of the proxy.
        :param hooks: (optional) Dictionary mapping hook name to one event or
            list of events, event must be callable.
        :param stream: (optional) whether to immediately download the response
            content. Defaults to ``False``.
        :param verify: (optional) Either a boolean, in which case it controls whether we verify
            the server's TLS certificate, or a string, in which case it must be a path
            to a CA bundle to use. Defaults to ``True``. When set to
            ``False``, requests will accept any TLS certificate presented by
            the server, and will ignore hostname mismatches and/or expired
            certificates, which will make your application vulnerable to
            man-in-the-middle (MitM) attacks. Setting verify to ``False``
            may be useful during local development or testing.
        :param cert: (optional) if String, path to ssl client cert file (.pem).
            If Tuple, ('cert', 'key') pair.
        :rtype: requests.Response
        zutf-8)
r¸   r„   r]   rÏ   rÐ   rÑ   rÅ   rÃ   rR   rÄ   )rq   rƒ   )r@   ÚbytesÚdecoder    rÓ   rÖ   rª   Úmerge_environment_settingsr„   rA   rV   )rU   r¸   r„   rÅ   rÐ   r]   rR   rÏ   rÃ   rq   rƒ   rw   rÄ   rp   rs   ru   rÑ   ro   ÚprepÚsettingsÚsend_kwargsrW   r:   r:   r>   rS   -  s4   
>
ö
ÿþ
zSession.requestrT   úUnpack[_t.GetKwargs]c                 K  s$   |  dd¡ | jd|fd|i|¤ŽS )ai  Sends a GET request. Returns :class:`Response` object.

        :param url: URL for the new :class:`Request` object.
        :param params: (optional) Dictionary, list of tuples or bytes to send
        in the query string for the :class:`Request`.
        :param \*\*kwargs: Optional arguments that ``request`` takes.
        :rtype: requests.Response
        rƒ   Tr¶   rÅ   ©Ú
setdefaultrS   )rU   r„   rÅ   rT   r:   r:   r>   rK   �  s   zSession.getúUnpack[_t.RequestKwargs]c                 K  ó    |  dd¡ | jd|fi |¤ŽS )zéSends a OPTIONS request. Returns :class:`Response` object.

        :param url: URL for the new :class:`Request` object.
        :param \*\*kwargs: Optional arguments that ``request`` takes.
        :rtype: requests.Response
        rƒ   TÚOPTIONSrç   ©rU   r„   rT   r:   r:   r>   Úoptions¡  ó   zSession.optionsc                 K  rê   )zæSends a HEAD request. Returns :class:`Response` object.

        :param url: URL for the new :class:`Request` object.
        :param \*\*kwargs: Optional arguments that ``request`` takes.
        :rtype: requests.Response
        rƒ   Frµ   rç   rì   r:   r:   r>   Úhead¬  rî   zSession.headúUnpack[_t.PostKwargs]c                 K  s   | j d|f||dœ|¤ŽS )aÈ  Sends a POST request. Returns :class:`Response` object.

        :param url: URL for the new :class:`Request` object.
        :param data: (optional) Dictionary, list of tuples, bytes, or file-like
            object to send in the body of the :class:`Request`.
        :param json: (optional) json to send in the body of the :class:`Request`.
        :param \*\*kwargs: Optional arguments that ``request`` takes.
        :rtype: requests.Response
        r·   )rÐ   rÑ   ©rS   )rU   r„   rÐ   rÑ   rT   r:   r:   r>   Úpost·  s   zSession.postúUnpack[_t.DataKwargs]c                 K  ó   | j d|fd|i|¤ŽS )au  Sends a PUT request. Returns :class:`Response` object.

        :param url: URL for the new :class:`Request` object.
        :param data: (optional) Dictionary, list of tuples, bytes, or file-like
            object to send in the body of the :class:`Request`.
        :param \*\*kwargs: Optional arguments that ``request`` takes.
        :rtype: requests.Response
        ÚPUTrÐ   rñ   ©rU   r„   rÐ   rT   r:   r:   r>   ÚputÊ  ó   zSession.putc                 K  rô   )aw  Sends a PATCH request. Returns :class:`Response` object.

        :param url: URL for the new :class:`Request` object.
        :param data: (optional) Dictionary, list of tuples, bytes, or file-like
            object to send in the body of the :class:`Request`.
        :param \*\*kwargs: Optional arguments that ``request`` takes.
        :rtype: requests.Response
        ÚPATCHrÐ   rñ   rö   r:   r:   r>   ÚpatchØ  rø   zSession.patchc                 K  s   | j d|fi |¤ŽS )zèSends a DELETE request. Returns :class:`Response` object.

        :param url: URL for the new :class:`Request` object.
        :param \*\*kwargs: Optional arguments that ``request`` takes.
        :rtype: requests.Response
        ÚDELETErñ   rì   r:   r:   r>   Údeleteæ  s   zSession.deletec                 K  s–  |  d| j¡ |  d| j¡ |  d| j¡ d|vr#t|| j| jƒ|d< t|tƒr,t	dƒ‚t
|ƒs2J ‚| dd¡}| d¡}|j}| j|jd�}tƒ }|j|fi |¤Ž}tƒ | }	t|	d	�|_td
||fi |¤Ž}|jrz|jD ]}
t| j|
j|
jƒ qnt| j||jƒ |r–| j||fi |¤Ž}dd„ |D ƒ}ng }|r§| d|¡ | ¡ }||_|sÄzt| j||fddi|¤Žƒ|_W n	 tyÃ   Y nw |sÉ|j |S )zISend a given PreparedRequest.

        :rtype: requests.Response
        rp   rs   ru   rw   z#You can only send PreparedRequests.rƒ   T)r„   )ÚsecondsrJ   c                 S  s   g | ]}|‘qS r:   r:   )r;   rW   r:   r:   r>   r?   %  s    z Session.send.<locals>.<listcomp>r   ry   ) rè   rp   rs   ru   r*   rw   rQ   r@   r    Ú
ValueErrorrª   r—   rK   rÄ   Úget_adapterr„   Úpreferred_clockrV   r   Úelapsedr   r†   r   rR   rS   rŠ   r§   ÚinsertÚnextÚ_nextÚStopIterationrˆ   )rU   rS   rT   rƒ   rp   rÄ   ÚadapterÚstartÚrr  rW   Úgenr†   r:   r:   r>   rV   ð  sP   




ÿÿzSession.sendúdict[str, Any]c           
      C  s¸   | j r=|dur| d¡nd}t||d�}|dur'| ¡ D ]
\}}	| ||	¡ q|du s/|du r=tj d¡p<tj d¡p<|}t|| jƒ}t|| j	ƒ}t|| j
ƒ}t|| jƒ}||||dœS )z^
        Check the environment and merge it with some settings.

        :rtype: dict
        NÚno_proxy)r  TÚREQUESTS_CA_BUNDLEÚCURL_CA_BUNDLE)rw   rp   rs   ru   )rQ   rK   r'   rB   rè   ÚosÚenvironrF   rw   rp   rs   ru   )
rU   r„   rw   rp   rs   ru   r  Úenv_proxiesr<   r=   r:   r:   r>   râ   ?  s"   
ÿýz"Session.merge_environment_settingsr2   c                 C  s<   | j  ¡ D ]\}}| ¡  | ¡ ¡r|  S qtd|›�ƒ‚)z~
        Returns the appropriate connection adapter for the given URL.

        :rtype: requests.adapters.BaseAdapter
        z&No connection adapters were found for )rÆ   rB   ÚlowerrŽ   r   )rU   r„   Úprefixr  r:   r:   r>   rÿ   f  s
   ÿzSession.get_adapterc                 C  s   | j  ¡ D ]}| ¡  qdS )z+Closes all adapters and as such the sessionN)rÆ   Úvaluesr�   )rU   r=   r:   r:   r>   r�   s  s   
ÿzSession.closer  r  c                   s>   || j ˆ < ‡ fdd„| j D ƒ}|D ]}| j  |¡| j |< qdS )zwRegisters a connection adapter to a prefix.

        Adapters are sorted in descending order by prefix length.
        c                   s    g | ]}t |ƒt ˆ ƒk r|‘qS r:   )rŒ   )r;   r<   ©r  r:   r>   r?   ~  s     z!Session.mount.<locals>.<listcomp>N)rÆ   r—   )rU   r  r  Úkeys_to_moverE   r:   r  r>   rÈ   x  s
   
ÿzSession.mountc                   s   ‡ fdd„ˆ j D ƒ}|S )Nc                   s   i | ]	}|t ˆ |d ƒ“qS r9   )Úgetattr)r;   ÚattrrÉ   r:   r>   Ú
<dictcomp>„  s    z(Session.__getstate__.<locals>.<dictcomp>)rÇ   )rU   Ústater:   rÉ   r>   Ú__getstate__ƒ  s   zSession.__getstate__r  c                 C  s"   |  ¡ D ]
\}}t| ||ƒ qd S r9   )rB   Úsetattr)rU   r  r  Úvaluer:   r:   r>   Ú__setstate__‡  s   ÿzSession.__setstate__)r8   r¨   )r8   r/   )rÌ   r	   r8   r¨   )rS   r    r8   r   )NNNNNNNTNNNNNN)"r¸   ra   r„   rÎ   rÅ   r×   rÐ   rØ   r]   rÙ   rR   rÚ   rÏ   rÛ   rÃ   rÂ   rq   rr   rƒ   rP   rw   rx   rÄ   rÜ   rp   rÝ   rs   rÞ   ru   rv   rÑ   rß   r8   r!   r9   )r„   rÎ   rÅ   r×   rT   ræ   r8   r!   )r„   rÎ   rT   ré   r8   r!   r°   )
r„   rÎ   rÐ   rØ   rÑ   rß   rT   rð   r8   r!   )r„   rÎ   rÐ   rØ   rT   ró   r8   r!   r¼   )r„   ra   rw   rx   rp   rÝ   rs   rÞ   ru   rv   r8   r
  )r„   ra   r8   r2   )r  ra   r  r2   r8   r¨   )r8   r
  )r  r
  r8   r¨   )r½   r¾   r¿   Ú__doc__rÀ   rÇ   rÊ   rË   rÍ   rÖ   rS   rK   rí   rï   rò   r÷   rú   rü   rV   râ   rÿ   r�   rÈ   r  r  r:   r:   r:   r>   rÁ   ‹  sj   
 

?

2ïeý

üÿÿ



O
'


rÁ   c                   C  s   t ƒ S )aZ  
    Returns a :class:`Session` for context-management.

    .. deprecated:: 1.0.0

        This method has been deprecated since version 1.0.0 and is only kept for
        backwards compatibility. New code should use :class:`~requests.sessions.Session`
        to create a session. This may be removed at a future date.

    :rtype: Session
    )rÁ   r:   r:   r:   r>   ÚsessionŒ  s   r  )r4   r	   r5   r	   r6   r7   r8   r	   )rG   rH   rI   rH   r6   r7   r8   rH   )r8   rÁ   )Qr  Ú
__future__r   r  ÚsysÚtimeÚcollectionsr   Úcollections.abcr   r   r   Údatetimer   Útypingr   r	   r
   Ú_internal_utilsr   r1   r   rª   rÆ   r   rÃ   r   Úcompatr   r   r   rR   r   r   r   r   Ú
exceptionsr   r   r   r   rÄ   r   r   Úmodelsr   r   r   r    r!   Ústatus_codesr"   Ú
structuresr#   Úutilsr$   r%   r&   r'   r(   r)   r*   r+   r,   r-   Úhttp.cookiejarr.   Útyping_extensionsr/   r0   r~   Ú_tr2   ÚplatformÚperf_counterr   rF   rL   rM   rÁ   r  r:   r:   r:   r>   Ú<module>   sT    0
ÿ#ý      