§
    jŠtjÈ…  ã                  ó  — 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jI        dk    rejJ        ZKnej        ZKefd*d „ZLefd+d$„ZM G d%„ d&¦  «        ZN G d'„ d(eN¦  «        ZOd,d)„ZPdS )-z•
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                ó.  — |€| S | €|S t          |t          ¦  «        rt          | t          ¦  «        s| S  |t          |¦  «        ¦  «        }|                     t          | ¦  «        ¦  «         d„ |                     ¦   «         D ¦   «         }|D ]}||= Œ|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                ó   — g | ]	\  }}|­|‘Œ
S ©N© )Ú.0ÚkÚvs      úO/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/requests/sessions.pyú
<listcomp>z!merge_setting.<locals>.<listcomp>e   s   € ÐEÐEÐE‘v˜˜1¸1¸9�¸9¸9¸9ó    )Ú
isinstancer   r.   ÚupdateÚitems)r5   r6   r7   Úmerged_settingÚ	none_keysÚkeys         rA   Úmerge_settingrJ   L   s¿   € ð ÐØÐàÐØÐõ 	�?¥GÑ,Ô,ðÝ1;¸OÍWÑ1UÔ1Uðð Ðà�Z¥°Ñ @Ô @ÑAÔA€NØ×Ò�/¨/Ñ:Ô:Ñ;Ô;Ð;ð FÐE ×!5Ò!5Ñ!7Ô!7ÐEÑEÔE€IØð  ð  ˆØ˜3ÐÐàÐrC   Úrequest_hooksú_t.HooksTypeÚsession_hooksc                ó˜   — |�|                      d¦  «        g k    r| 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)ÚgetrJ   )rK   rM   r7   s      rA   Úmerge_hooksrQ   l   s^   € ð Ð × 1Ò 1°*Ñ =Ô =ÀÒ CÐ CØÐàÐ × 1Ò 1°*Ñ =Ô =ÀÒ CÐ CØÐå˜¨°zÑBÔBÐBrC   c                  ót   — e Zd ZU ded<   ded<   ded<   d-d„Zd.d„Zd/d„Z	 	 	 	 	 	 d0d1d%„Zd2d)„Zd3d+„Z	d2d,„Z
dS )4ÚSessionRedirectMixinÚintÚmax_redirectsÚboolÚ	trust_envr   ÚcookiesÚrequestr    Úkwargsr
   r9   r"   c                ó   — d S r<   r=   )ÚselfrY   rZ   s      rA   ÚsendzSessionRedirectMixin.send„   s   € € € rC   Úrespú
str | Nonec                óx   — |j         r2|j        d         }|                     d¦  «        }t          |d¦  «        S dS )z7Receives a Response. Returns a redirect URI or ``None``ÚlocationÚlatin1Úutf8N)Úis_redirectÚheadersÚencoder   )r\   r^   ra   s      rA   Úget_redirect_targetz(SessionRedirectMixin.get_redirect_target†   sC   € ð Ôð 		6Ø”| JÔ/ˆHð  —’ xÑ0Ô0ˆHÝ# H¨fÑ5Ô5Ð5ØˆtrC   Úold_urlÚstrÚnew_urlc                ób  — 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        |j        d¦  «        df}|s|j        |v r|j        |v rdS |p|S )zFDecide whether Authorization header should be removed when redirectingTÚhttp)éP   NÚhttps)i»  NFN)r   ÚhostnameÚschemeÚportr%   rP   )r\   rh   rj   Ú
old_parsedÚ
new_parsedÚchanged_portÚchanged_schemeÚdefault_ports           rA   Úshould_strip_authz&SessionRedirectMixin.should_strip_authš   sÝ   € å˜gÑ&Ô&ˆ
Ý˜gÑ&Ô&ˆ
ØÔ *Ô"5Ò5Ð5Ø�4ð Ô Ò'Ð'Ø” :Ð-Ð-ØÔ! WÒ,Ð,Ø” ;Ð.Ð.à�5ð "”¨*¬/Ò9ˆØ#Ô*¨jÔ.?Ò?ˆÝ%Ô)¨*Ô*;¸TÑBÔBÀDÐIˆàð	à” <Ð/Ð/Ø” <Ð/Ð/à�5ð Ð-˜~Ð-rC   FNTÚ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  — g }
|                       |¦  «        }t          |j        ¦  «        j        }|�r-|                     ¦   «         }|
dd…         |_        |
                     |¦  «         	 |j         n8# t          t          t          f$ r |j                             d¬¦  «         Y nw xY wt          |j        ¦  «        | j        k    rt          d| j        › d�|¬¦  «        ‚|                     ¦   «          |                     d¦  «        r=t          |j        ¦  «        }d                     t'          |j        ¦  «        |g¦  «        }t          |¦  «        }|j        d	k    r|r|                     |¬
¦  «        }n|j        r|j        }|                     ¦   «         }|j        s#t1          |j        t3          |¦  «        ¦  «        }nt3          |¦  «        }t'          |¦  «        |_        |                      ||¦  «         |j        t8          j        t8          j        fvr)d}|D ]}|j                              |d¦  «         Œd|_!        |j        }|                      dd¦  «         tE          d|j#        ¦  «        }tI          |||j        ¦  «         tK          || j&        ¦  «         | '                    |¦  «         |  (                    ||¦  «        }|  )                    ||¦  «         |j*        duod|v pd|v }|rtW          |¦  «         |}|r|V — nI | j,        |f|||||ddœ|	¤Ž}tI          | j&        ||j        ¦  «         |                       |¦  «        }|V — |�°+dS dS )zBReceives a Response. Returns a generator of Responses or Requests.NF)Údecode_contentz	Exceeded z redirects.)rO   z//ú:Ú )Úfragment)úContent-LengthzContent-TypeúTransfer-EncodingÚCookier/   rŠ   r‹   )ry   rz   r|   r~   r€   Úallow_redirects)-rg   r   Úurlr‰   ÚcopyÚhistoryÚappendÚcontentr   r   ÚRuntimeErrorÚrawÚreadÚlenrU   r   ÚcloseÚ
startswithÚjoinr   rp   Ú_replaceÚgeturlÚnetlocr   r*   Úrebuild_methodÚstatus_coder#   Útemporary_redirectÚpermanent_redirectre   ÚpopÚbodyr   Ú_cookiesr   r   rX   Úprepare_cookiesÚrebuild_proxiesÚrebuild_authÚ_body_positionr,   r]   )r\   r^   rx   ry   rz   r|   r~   r€   r‚   rƒ   ÚhistrŽ   Úprevious_fragmentÚprepared_requestÚparsed_rurlÚparsedÚpurged_headersÚheaderre   Ú
cookie_jarÚ
rewindables                        rA   Úresolve_redirectsz&SessionRedirectMixin.resolve_redirectsº   só  è è € ð  "ˆà×&Ò& tÑ,Ô,ˆÝ$ S¤WÑ-Ô-Ô6ÐØñ g	Ø"Ÿxšx™zœzÐð     œ7ˆDŒLØ�KŠK˜ÑÔÐð4Ø”��øÝ(Õ*>ÅÐMð 4ð 4ð 4Ø”—’¨U�Ñ3Ô3Ð3Ð3Ð3ð4øøøõ �4”<Ñ Ô  DÔ$6Ò6Ð6Ý&Ø? Ô 2Ð?Ð?Ð?È$ðñ ô ð ð
 �JŠJ‰LŒLˆLð �~Š~˜dÑ#Ô#ð LÝ& t¤xÑ0Ô0�Ø—h’hÕ 0°Ô1CÑ DÔ DÀcÐJÑKÔK�õ ˜c‘]”]ˆFØŒ "Ò$Ð$Ð):Ð$ØŸšÐ2C˜ÑDÔD��Ø”ð 4Ø$*¤OÐ!Ø—-’-‘/”/ˆCð
 ”=ð 'Ý˜dœh­°CÑ(8Ô(8Ñ9Ô9��å! #Ñ&Ô&�å#3°CÑ#8Ô#8ÐÔ à×ÒÐ 0°$Ñ7Ô7Ð7ð ÔÝÔ(ÝÔ(ð(ð ð ð
 "Y�Ø,ð ?ð ?�FØ$Ô,×0Ò0°¸Ñ>Ô>Ð>Ð>Ø(,Ð Ô%à&Ô.ˆGØ�KŠK˜ $Ñ'Ô'Ð'õ
 ˜kÐ+;Ô+DÑEÔEˆJÝ" :¨s°D´HÑ=Ô=Ð=Ý˜* d¤lÑ3Ô3Ð3Ø×,Ò,¨ZÑ8Ô8Ð8ð ×*Ò*Ð+;¸WÑEÔEˆGØ×ÒÐ.°Ñ5Ô5Ð5ð
 *Ô8ÀÐDð Ø  GÐ+ÐMÐ/BÀgÐ/Mð ð
 ð .ÝÐ,Ñ-Ô-Ð-ð #ˆCàð Ø�	�	�	�	à �t”yØð	à!Ø#Ø!ØØ#Ø$)ð	ð 	ð %ð	ð 	�õ ' t¤|Ð5EÀtÄxÑPÔPÐPð ×.Ò.¨tÑ4Ô4�Ø�
�
�
ðO ñ g	ð g	ð g	ð g	ð g	s   Á/A7 Á72B,Â+B,rª   rO   ÚNonec                ó  — |j         }t          |¦  «        sJ ‚t          |¦  «        sJ ‚|j        }|j        }|j        }d|v r|                      ||¦  «        r|d= | j        rt          |¦  «        nd}|�|                     |¦  «         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)rY   Ú_is_preparedre   rŽ   rw   rW   r)   Úprepare_auth)r\   rª   rO   Úoriginal_requestre   Úoriginal_urlrŽ   Únew_auths           rA   r¦   z!SessionRedirectMixin.rebuild_auth5  s¼   € ð $Ô+ÐÝÐ,Ñ-Ô-Ð-Ð-Ð-ÝÐ,Ñ-Ô-Ð-Ð-Ð-à"Ô*ˆØ'Ô+ˆØÔ"ˆà˜gÐ%Ð%¨$×*@Ò*@ÀÈsÑ*SÔ*SÐ%ð ˜Ð(ð +/¬.ÐB•> #Ñ&Ô&Ð&¸dˆØÐØ×)Ò)¨(Ñ3Ô3Ð3Ð3Ð3ð  ÐrC   údict[str, str]c                óX  — t          |¦  «        sJ ‚|j        }t          |j        ¦  «        j        }t          ||| j        ¦  «        }d|v r|d= 	 t          ||         ¦  «        \  }}n# t          $ r d\  }}Y nw xY w| 	                    d¦  «        s|r|rt          ||¦  «        |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©NNrn   )rµ   re   r   rŽ   rp   r+   rW   r'   ÚKeyErrorr˜   r   )r\   rª   r€   re   rp   Únew_proxiesÚusernameÚpasswords           rA   r¥   z$SessionRedirectMixin.rebuild_proxiesN  sè   € õ  Ð,Ñ-Ô-Ð-Ð-Ð-Ø"Ô*ˆÝÐ*Ô.Ñ/Ô/Ô6ˆÝ%Ð&6¸ÀÄÑPÔPˆà  GÐ+Ð+ØÐ-Ð.ð	,Ý!2°;¸vÔ3FÑ!GÔ!GÑˆH�h�høÝð 	,ð 	,ð 	,Ø!+ÑˆH�h�h�hð	,øøøð
 × Ò  Ñ)Ô)ð 	Q¨hð 	Q¸8ð 	QÝ-<¸XÀxÑ-PÔ-PˆGÐ)Ñ*àÐs   ÁA) Á)A;Á:A;c                óÐ   — |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)r\   rª   rO   rÅ   s       rA   r�   z#SessionRedirectMixin.rebuild_methodr  s~   € ð "Ô(ˆð Ô¥5¤?Ò2Ð2°vÀÒ7GÐ7GØˆFð Ô¥5¤;Ò.Ð.°6¸VÒ3CÐ3CØˆFð Ô¥5¤;Ò.Ð.°6¸VÒ3CÐ3CØˆFà"(ÐÔÐÐrC   ©rY   r    rZ   r
   r9   r"   )r^   r"   r9   r_   )rh   ri   rj   ri   r9   rV   )FNTNNF)r^   r"   rx   r    ry   rV   rz   r{   r|   r}   r~   r   r€   r�   r‚   rV   rƒ   r
   r9   r„   )rª   r    rO   r"   r9   r²   )rª   r    r€   r�   r9   rº   )Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r]   rg   rw   r±   r¦   r¥   r�   r=   rC   rA   rS   rS      sÜ   € € € € € € ØÐÐÑØ€O€O�OØÐÐÑàLÐLÐLÐLðð ð ð ð(.ð .ð .ð .ðH Ø"&Ø $Ø Ø)-Ø$ðyð yð yð yð yðv4ð 4ð 4ð 4ð2"ð "ð "ð "ðH)ð )ð )ð )ð )ð )rC   rS   c                  óf  — 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<   dXd„ZdYd „ZdZd#„Zd[d'„Z		 	 	 	 	 	 	 	 	 	 	 	 	 	 d\d]d?„Z
	 d^d_dB„Zd`dD„Zd`dE„Z	 	 dadbdG„Z	 d^dcdI„Z	 d^dcdJ„Zd`dK„ZdddL„ZdedN„ZdfdP„ZdXdQ„ZdgdT„ZdhdU„ZdidW„Zd(S )jÚ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]re   ú_t.AuthTypeÚauthrº   r€   zdict[str, list[_t.HookType]]ÚhookszMutableMapping[str, Any]ÚparamsrV   ry   r}   r|   r   r~   rT   rU   rW   r   rX   z MutableMapping[str, BaseAdapter]Úadapters)re   rX   rÑ   r€   rÒ   rÓ   r|   r~   rÔ   ry   rW   rU   z	list[str]Ú	__attrs__r9   r²   c                ó¢  — t          ¦   «         | _        d | _        i | _        t	          ¦   «         | _        i | _        d| _        d| _        d | _	        t          | _        d| _        t          i ¦  «        | _        t          ¦   «         | _        |                      dt%          ¦   «         ¦  «         |                      dt%          ¦   «         ¦  «         d S )NFTzhttps://zhttp://)r&   re   rÑ   r€   r   rÒ   rÓ   ry   r|   r~   r   rU   rW   r   rX   r   rÔ   Úmountr   ©r\   s    rA   Ú__init__zSession.__init__º  s»   € õ 'Ñ(Ô(ˆŒð ˆŒ	ð
 ˆŒõ #‘_”_ˆŒ
ð
 ˆŒð ˆŒð ˆŒð ˆŒ	õ 4ˆÔð ˆŒõ +¨2Ñ.Ô.ˆŒõ $™œˆŒØ�
Š
�:�{™}œ}Ñ-Ô-Ð-Ø�
Š
�9�k™mœmÑ,Ô,Ð,Ð,Ð,rC   r0   c                ó   — | S r<   r=   rØ   s    rA   Ú	__enter__zSession.__enter__ù  s   € ØˆrC   Úargsr
   c                ó.   — |                       ¦   «          d S r<   )r—   )r\   rÜ   s     rA   Ú__exit__zSession.__exit__ü  s   € Ø�
Š
‰ŒˆˆˆrC   rY   r!   r    c                óÒ  — t          d|j        ¦  «        }t          t          |j        ¦  «        }|j        pi }t          |t          j        ¦  «        st          |¦  «        }t          t          t          ¦   «         | j        ¦  «        |¦  «        }|j        }| j        r|s| j        st          |¦  «        }t          ¦   «         }|                     |                     ¦   «         ||j        |j        |j        t)          |j        | j        t,          ¬¦  «        t)          |j        | j        ¦  «        t)          || j        ¦  «        |t1          |j        | j        ¦  «        ¬¦
  «
         |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)r7   )
rÅ   rŽ   ÚfilesÚdataÚjsonre   rÓ   rÑ   rX   rÒ   )r   rŽ   ri   rÅ   rX   rD   r   r/   r   r   r   rÑ   rW   r)   r    ÚprepareÚupperrá   râ   rã   rJ   re   r$   rÓ   rQ   rÒ   )r\   rY   rŽ   rÅ   rX   Úmerged_cookiesrÑ   Úps           rA   Úprepare_requestzSession.prepare_requestÿ  sM  € õ �< ¤Ñ-Ô-ˆÝ•c˜7œ>Ñ*Ô*ˆà”/Ð' Rˆõ ˜'¥9Ô#6Ñ7Ô7ð 	3Ý)¨'Ñ2Ô2ˆGõ 'ÝÕ+Ñ-Ô-¨t¬|Ñ<Ô<¸gñ
ô 
ˆð
 Œ|ˆØŒ>ð 	' $ð 	'¨t¬yð 	'Ý! #Ñ&Ô&ˆDåÑÔˆØ	�	Š	Ø—<’<‘>”>ØØ”-Ø”Ø”Ý!Ø” ¤Õ:Mðñ ô õ ! ¤°´Ñ=Ô=Ý˜t T¤YÑ/Ô/Ø"Ý˜gœm¨T¬ZÑ8Ô8ð 	ñ 	
ô 	
ð 	
ð ˆrC   NTrÅ   ri   rŽ   rà   ú_t.ParamsTyperâ   ú_t.DataTypeú_t.HeadersTypeú5RequestsCookieJar | CookieJar | dict[str, str] | Nonerá   ú_t.FilesTyperz   r{   r�   r�   ú_t.HooksInputType | Noneúbool | Noneú_t.VerifyType | Nonerã   ú_t.JsonTyper"   c                ó˜  — t          |t          ¦  «        r|                     d¦  «        }t          |                     ¦   «         ||||pi ||pi |||¬¦
  «
        }|                      |¦  «        }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Ž   re   rá   râ   rã   rÓ   rÑ   rX   rÒ   )rz   r�   )rD   ÚbytesÚdecoder!   rå   rè   rµ   Úmerge_environment_settingsrŽ   rE   r]   )r\   rÅ   rŽ   rÓ   râ   re   rX   rá   rÑ   rz   r�   r€   rÒ   ry   r|   r~   rã   rx   ÚprepÚsettingsÚsend_kwargsr^   s                         rA   rY   zSession.request-  s  € õ| �c�5Ñ!Ô!ð 	&Ø—*’*˜WÑ%Ô%ˆCõ Ø—<’<‘>”>ØØØØ�˜ØØ�<˜RØØØð
ñ 
ô 
ˆð ×#Ò# CÑ(Ô(ˆå˜DÑ!Ô!Ð!Ð!Ð!à�-˜Rˆà×2Ò2ØŒH�g˜v v¨tñ
ô 
ˆð Ø.ð
ð 
ˆð 	×Ò˜8Ñ$Ô$Ð$ØˆtŒy˜Ð-Ð- Ð-Ð-ˆàˆrC   rZ   úUnpack[_t.GetKwargs]c                óP   — |                      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Ó   ©Ú
setdefaultrY   )r\   rŽ   rÓ   rZ   s       rA   rP   zSession.get�  s<   € ð 	×ÒÐ+¨TÑ2Ô2Ð2ØˆtŒ|˜E 3Ð@Ð@¨vÐ@¸Ð@Ð@Ð@rC   úUnpack[_t.RequestKwargs]c                óL   — |                      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û   ©r\   rŽ   rZ   s      rA   ÚoptionszSession.options¡  s7   € ð 	×ÒÐ+¨TÑ2Ô2Ð2ØˆtŒ|˜I sÐ5Ð5¨fÐ5Ð5Ð5rC   c                óL   — |                      dd¦  «          | j        d|fi |¤ŽS )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   s      rA   ÚheadzSession.head¬  s7   € ð 	×ÒÐ+¨UÑ3Ô3Ð3ØˆtŒ|˜F CÐ2Ð2¨6Ð2Ð2Ð2rC   úUnpack[_t.PostKwargs]c                ó&   —  | 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ã   ©rY   )r\   rŽ   râ   rã   rZ   s        rA   ÚpostzSession.post·  s'   € ð" ˆtŒ|˜F CÐH¨d¸ÐHÐHÀÐHÐHÐHrC   úUnpack[_t.DataKwargs]c                ó$   —  | 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  ©r\   rŽ   râ   rZ   s       rA   ÚputzSession.putÊ  s%   € ð ˆtŒ|˜E 3Ð<Ð<¨TÐ<°VÐ<Ð<Ð<rC   c                ó$   —  | j         d|fd|i|¤ŽS )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  s       rA   ÚpatchzSession.patchØ  s%   € ð ˆtŒ|˜G SÐ>Ð>¨tÐ>°vÐ>Ð>Ð>rC   c                ó    —  | 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   s      rA   ÚdeletezSession.deleteæ  s    € ð ˆtŒ|˜H cÐ4Ð4¨VÐ4Ð4Ð4rC   c                óP  — |                      d| j        ¦  «         |                      d| j        ¦  «         |                      d| j        ¦  «         d|vrt	          || j        | j        ¦  «        |d<   t          |t          ¦  «        rt          d¦  «        ‚t          |¦  «        sJ ‚|                     dd¦  «        }|                     d¦  «        }|j        }|                      |j        ¬¦  «        }t!          ¦   «         } |j        |fi |¤Ž}t!          ¦   «         |z
  }	t%          |	¬	¦  «        |_        t)          d
||fi |¤Ž}|j        r*|j        D ]"}
t-          | j        |
j        |
j        ¦  «         Œ#t-          | j        ||j        ¦  «         |r | j        ||fi |¤Ž}d„ |D ¦   «         }ng }|r1|                     d|¦  «         |                     ¦   «         }||_        |s5	 t9           | j        ||fddi|¤Ž¦  «        |_        n# t<          $ r Y nw xY w|s|j         |S )zISend a given PreparedRequest.

        :rtype: requests.Response
        ry   r|   r~   r€   z#You can only send PreparedRequests.r�   T)rŽ   )ÚsecondsrO   c                ó   — g | ]}|‘ŒS r=   r=   )r>   r^   s     rA   rB   z Session.send.<locals>.<listcomp>%  s   € Ð,Ð,Ð, �tÐ,Ð,Ð,rC   r   r‚   ) rü   ry   r|   r~   r+   r€   rW   rD   r!   Ú
ValueErrorrµ   r¡   rP   rÒ   Úget_adapterrŽ   Úpreferred_clockr]   r   Úelapsedr   r�   r   rX   rY   r”   r±   ÚinsertÚnextÚ_nextÚStopIterationr’   )r\   rY   rZ   r�   ry   rÒ   ÚadapterÚstartÚrr  r^   Úgenr�   s                rA   r]   zSession.sendð  s”  € ð 	×Ò˜( D¤KÑ0Ô0Ð0Ø×Ò˜( D¤KÑ0Ô0Ð0Ø×Ò˜& $¤)Ñ,Ô,Ð,Ø˜FÐ"Ð"Ý /°¸¼ÀtÄ~Ñ VÔ VˆF�9Ñõ �g�wÑ'Ô'ð 	DÝÐBÑCÔCÐCå˜GÑ$Ô$Ð$Ð$Ð$ð !Ÿ*š*Ð%6¸Ñ=Ô=ˆØ—’˜HÑ%Ô%ˆØ”ˆð ×"Ò" w¤{Ð"Ñ3Ô3ˆõ  Ñ!Ô!ˆð ˆGŒL˜Ð+Ð+ FÐ+Ð+ˆõ "Ñ#Ô# eÑ+ˆÝ gÐ.Ñ.Ô.ˆŒ	õ ˜* e¨QÐ9Ð9°&Ð9Ð9ˆð Œ9ð 	Màœ	ð Mð M�Ý& t¤|°T´\À4Ä8ÑLÔLÐLÐLå˜tœ|¨W°a´eÑ<Ô<Ð<ð ð 	à(�$Ô(¨¨GÐ>Ð>°vÐ>Ð>ˆCØ,Ð,¨Ð,Ñ,Ô,ˆGˆGàˆGð ð 	 à�NŠN˜1˜aÑ Ô Ð à—’‘”ˆAØˆAŒIð ð 	ðÝØ*�DÔ*¨1¨gÐUÐUÀdÐUÈfÐUÐUñô �”�øõ !ð ð ð Ø�ðøøøð ð 	ØŒIˆIàˆs   Ç)#H È
HÈHúdict[str, Any]c                ó
  — | j         r¢|�|                     d¦  «        nd}t          ||¬¦  «        }|�0|                     ¦   «         D ]\  }}	|                     ||	¦  «         Œ|du s|€@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)r€   ry   r|   r~   )rW   rP   r(   rF   rü   ÚosÚenvironrJ   r€   ry   r|   r~   )
r\   rŽ   r€   ry   r|   r~   r$  Úenv_proxiesr?   r@   s
             rA   rõ   z"Session.merge_environment_settings?  s  € ð Œ>ð 	à29Ð2E�w—{’{ :Ñ.Ô.Ð.È4ˆHÝ-¨c¸HÐEÑEÔEˆKØÐ"Ø'×-Ò-Ñ/Ô/ð -ð -‘D�A�qØ×&Ò& q¨!Ñ,Ô,Ð,Ð,ð ˜ˆ~ˆ~  å”J—N’NÐ#7Ñ8Ô8ð Ý”z—~’~Ð&6Ñ7Ô7ðàð õ   ¨¬Ñ6Ô6ˆÝ˜v t¤{Ñ3Ô3ˆÝ˜v t¤{Ñ3Ô3ˆÝ˜T 4¤9Ñ-Ô-ˆà"¨fÀÐPTÐUÐUÐUrC   r3   c                óÞ   — | j                              ¦   «         D ]B\  }}|                     ¦   «                              |                     ¦   «         ¦  «        r|c S ŒCt	          d|›�¦  «        ‚)z~
        Returns the appropriate connection adapter for the given URL.

        :rtype: requests.adapters.BaseAdapter
        z&No connection adapters were found for )rÔ   rF   Úlowerr˜   r   )r\   rŽ   Úprefixr  s       rA   r  zSession.get_adapterf  sr   € ð  $œ}×2Ò2Ñ4Ô4ð 	ð 	‰OˆF�GØ�yŠy‰{Œ{×%Ò% f§l¢l¡n¤nÑ5Ô5ð Ø���ðõ ÐLÀSÐLÐLÑMÔMÐMrC   c                óf   — | j                              ¦   «         D ]}|                     ¦   «          ŒdS )z+Closes all adapters and as such the sessionN)rÔ   Úvaluesr—   )r\   r@   s     rA   r—   zSession.closes  s8   € à”×%Ò%Ñ'Ô'ð 	ð 	ˆAØ�GŠG‰IŒIˆIˆIð	ð 	rC   r,  r  c                ó�   ‡— || j         ‰<   ˆfd„| j         D ¦   «         }|D ]$}| j                              |¦  «        | j         |<   Œ%dS )zwRegisters a connection adapter to a prefix.

        Adapters are sorted in descending order by prefix length.
        c                óT   •— g | ]$}t          |¦  «        t          ‰¦  «        k     ¯"|‘Œ%S r=   )r–   )r>   r?   r,  s     €rA   rB   z!Session.mount.<locals>.<listcomp>~  s/   ø€ ÐIÐIÐI˜aµC¸±F´F½SÀ¹[¼[Ò4HÐ4H˜Ð4HÐ4HÐ4HrC   N)rÔ   r¡   )r\   r,  r  Úkeys_to_moverI   s    `   rA   r×   zSession.mountx  sd   ø€ ð
 !(ˆŒ�fÑØIÐIÐIÐI 4¤=ÐIÑIÔIˆàð 	8ð 	8ˆCØ!%¤×!2Ò!2°3Ñ!7Ô!7ˆDŒM˜#ÑÐð	8ð 	8rC   c                ó.   ‡ — ˆ fd„‰ j         D ¦   «         }|S )Nc                ó4   •— i | ]}|t          ‰|d ¦  «        “ŒS r<   )Úgetattr)r>   Úattrr\   s     €rA   ú
<dictcomp>z(Session.__getstate__.<locals>.<dictcomp>„  s'   ø€ ÐLÐLÐL°T�•w˜t T¨4Ñ0Ô0ÐLÐLÐLrC   )rÕ   )r\   Ústates   ` rA   Ú__getstate__zSession.__getstate__ƒ  s#   ø€ ØLÐLÐLÐL¸T¼^ÐLÑLÔLˆØˆrC   r7  c                ó\   — |                      ¦   «         D ]\  }}t          | ||¦  «         Œd S r<   )rF   Úsetattr)r\   r7  r5  Úvalues       rA   Ú__setstate__zSession.__setstate__‡  s<   € Ø Ÿ;š;™=œ=ð 	'ð 	'‰KˆD�%Ý�D˜$ Ñ&Ô&Ð&Ð&ð	'ð 	'rC   )r9   r²   )r9   r0   )rÜ   r
   r9   r²   )rY   r!   r9   r    )NNNNNNNTNNNNNN)"rÅ   ri   rŽ   rà   rÓ   ré   râ   rê   re   rë   rX   rì   rá   rí   rÑ   rÐ   rz   r{   r�   rV   r€   r�   rÒ   rî   ry   rï   r|   rð   r~   r   rã   rñ   r9   r"   r<   )rŽ   rà   rÓ   ré   rZ   rù   r9   r"   )rŽ   rà   rZ   rý   r9   r"   r¼   )
rŽ   rà   râ   rê   rã   rñ   rZ   r  r9   r"   )rŽ   rà   râ   rê   rZ   r  r9   r"   rÉ   )rŽ   ri   r€   r�   ry   rï   r|   rð   r~   r   r9   r"  )rŽ   ri   r9   r3   )r,  ri   r  r3   r9   r²   )r9   r"  )r7  r"  r9   r²   )rÊ   rË   rÌ   Ú__doc__rÍ   rÕ   rÙ   rÛ   rÞ   rè   rY   rP   r  r  r  r  r  r  r]   rõ   r  r—   r×   r8  r<  r=   rC   rA   rÏ   rÏ   ‹  sÉ  € € € € € € ðð ð$ &Ð%Ð%Ñ%ØÐÐÑØÐÐÑØ'Ð'Ð'Ñ'Ø$Ð$Ð$Ñ$Ø€L€L�LØÐÐÑØÐÐÑØÐÐÑØ€O€O�OØÐÐÑØ.Ð.Ð.Ñ.ðð ð €Ið ð ð ñ ð=-ð =-ð =-ð =-ð~ð ð ð ðð ð ð ð,ð ,ð ,ð ,ðd !%Ø Ø"&ØIMØ"Ø Ø"&Ø $Ø)-Ø*.Ø"Ø'+Ø Ø ð#`ð `ð `ð `ð `ðJ !%ðAð Að Að Að Að$	6ð 	6ð 	6ð 	6ð	3ð 	3ð 	3ð 	3ð !Ø ð	Ið Ið Ið Ið Ið( 48ð=ð =ð =ð =ð =ð 48ð?ð ?ð ?ð ?ð ?ð5ð 5ð 5ð 5ðMð Mð Mð Mð^%Vð %Vð %Vð %VðNNð Nð Nð Nðð ð ð ð
	8ð 	8ð 	8ð 	8ðð ð ð ð'ð 'ð 'ð 'ð 'ð 'rC   rÏ   c                 ó   — 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=   rC   rA   Úsessionr?  Œ  s   € õ ‰9Œ9ÐrC   )r5   r
   r6   r
   r7   r8   r9   r
   )rK   rL   rM   rL   r7   r8   r9   rL   )r9   rÏ   )Qr=  Ú
__future__r   r'  ÚsysÚtimeÚcollectionsr   Úcollections.abcr   r   r   Údatetimer   Útypingr	   r
   r   Ú_internal_utilsr   r2   r   rµ   rÔ   r   rÑ   r   Úcompatr   r   r   rX   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_extensionsr0   r1   rˆ   Ú_tr3   ÚplatformÚperf_counterr  rJ   rQ   rS   rÏ   r?  r=   rC   rA   ú<module>rS     s¹  ððð ð #Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø 
€
€
€
Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +à -Ð -Ð -Ð -Ð -Ð -Ø /Ð /Ð /Ð /Ð /Ð /Ø !Ð !Ð !Ð !Ð !Ð !Ø !Ð !Ð !Ð !Ð !Ð !Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð 0Ð /Ð /Ð /Ð /Ð /Ð /Ð /ðð ð ð ð ð ð ð ð ð ð ð ð ð ð  Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð &Ø(Ð(Ð(Ð(Ð(Ð(à.Ð.Ð.Ð.Ð.Ð.Ð.Ð.àÐÐÐÐÐØ%Ð%Ð%Ð%Ð%Ð%ð „<�7ÒÐØÔ'€O€Oà”i€Oð DOðð ð ð ð ðF #ðCð Cð Cð Cð Cð&I)ð I)ð I)ð I)ð I)ñ I)ô I)ð I)ðX~'ð ~'ð ~'ð ~'ð ~'Ð"ñ ~'ô ~'ð ~'ðBð ð ð ð ð rC   