Ë
    Eü´jÈ…  ã                  óB  — 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j’                  dk(  rej”                  ZKnej
                  ZKef	 	 	 	 	 	 	 d!d„ZLef	 	 	 	 	 	 	 d"d„ZM G d„ d«      ZN G d„ deN«      ZOd#d „ZPy)$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Úwin32c                ó  — |€| S | €|S t        |t        «      rt        | t        «      s| S  |t        |«      «      }|j                  t        | «      «       |j	                  «       D ��cg c]
  \  }}|�Œ	|‘Œ }}}|D ]  }||= Œ |S c c}}w )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`
    )Ú
isinstancer   r.   ÚupdateÚitems)Úrequest_settingÚsession_settingÚ
dict_classÚmerged_settingÚkÚvÚ	none_keysÚkeys           úO/root/workspace/ytshorts/venv/lib/python3.12/site-packages/requests/sessions.pyÚmerge_settingrB   L   s¤   € ð ÐØÐàÐØÐô 	�?¤GÔ,´¸OÌWÔ1UàÐá¤°Ó @ÓA€NØ×Ñœ/¨/Ó:Ô;ð "0×!5Ñ!5Ó!7×E‘v˜˜1¸1¹9’ÐE€IÑEØò  ˆØ˜3Ñð ð Ðùó	 Fs   Á)
BÁ4Bc                ó|   — |�|j                  d«      g k(  r| S | �| j                  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.
    Úresponse)ÚgetrB   )Úrequest_hooksÚsession_hooksr;   s      rA   Úmerge_hooksrH   l   sO   € ð Ð × 1Ñ 1°*Ó =ÀÒ CØÐàÐ × 1Ñ 1°*Ó =ÀÒ CØÐä˜¨°zÓBÐBó    c                  ó¼   — e Zd ZU ded<   ded<   ded<   dd„Zdd„Zdd	„Z	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dd„Z		 	 	 	 	 	 dd„Z
y
)ÚSessionRedirectMixinÚintÚmax_redirectsÚboolÚ	trust_envr   Úcookiesc                 ó   — y ©N© )ÚselfÚrequestÚkwargss      rA   ÚsendzSessionRedirectMixin.send„   s   � rI   c                ót   — |j                   r,|j                  d   }|j                  d«      }t        |d«      S y)z7Receives a Response. Returns a redirect URI or ``None``ÚlocationÚlatin1Úutf8N)Úis_redirectÚheadersÚencoder   )rT   ÚresprY   s      rA   Úget_redirect_targetz(SessionRedirectMixin.get_redirect_target†   s;   € ð ×ÒØ—|‘| JÑ/ˆHð  —‘ xÓ0ˆHÜ# H¨fÓ5Ð5ØrI   c                óÊ  — t        |«      }t        |«      }|j                  |j                  k7  ry|j                  dk(  r,|j                  dv r|j                  dk(  r|j                  dv ry|j                  |j                  k7  }|j                  |j                  k7  }t	        j
                  |j                  d«      df}|s|j                  |v r|j                  |v ry|xs |S )zFDecide whether Authorization header should be removed when redirectingTÚhttp)éP   NÚhttps)i»  NFN)r   ÚhostnameÚschemeÚportr%   rE   )rT   Úold_urlÚnew_urlÚ
old_parsedÚ
new_parsedÚchanged_portÚchanged_schemeÚdefault_ports           rA   Úshould_strip_authz&SessionRedirectMixin.should_strip_authš   sØ   € ä˜gÓ&ˆ
Ü˜gÓ&ˆ
Ø×Ñ *×"5Ñ"5Ò5Øð ×Ñ Ò'Ø—‘ :Ñ-Ø×!Ñ! WÒ,Ø—‘ ;Ñ.àð "—‘¨*¯/©/Ñ9ˆØ#×*Ñ*¨j×.?Ñ.?Ñ?ˆÜ%×)Ñ)¨*×*;Ñ*;¸TÓBÀDÐIˆáØ—‘ <Ñ/Ø—‘ <Ñ/àð Ò-˜~Ð-rI   Nc	           
   +  óÌ  K  — g }
| j                  |«      }t        |j                  «      j                  }|�rô|j	                  «       }|
dd |_        |
j                  |«       	 |j                   t        |j
                  «      | j                  k\  rt        d| j                  › d�|¬«      ‚|j!                  «        |j#                  d«      r;t        |j                  «      }dj%                  t'        |j(                  «      |g«      }t        |«      }|j                  d	k(  r|r|j+                  |¬
«      }n|j                  r|j                  }|j-                  «       }|j.                  s t1        |j                  t3        |«      «      }nt3        |«      }t'        |«      |_        | j5                  ||«       |j6                  t8        j:                  t8        j<                  fvr,d}|D ]  }|j>                  jA                  |d«       Œ  d|_!        |j>                  }|jA                  dd«       tE        d|jF                  «      }tI        |||j                  «       tK        || jL                  «       |jO                  |«       | jQ                  ||«      }| jS                  ||«       |jT                  duxr
 d|v xs d|v }|rtW        |«       |}|r|–— nP | jX                  |f|||||ddœ|	¤Ž}tI        | jL                  ||j                  «       | j                  |«      }|–— |r�Œóyy# t        t        t        f$ r  |j                  j                  d¬«       Y �Œðw xY w­w)zBReceives a Response. Returns a generator of Responses or Requests.NF)Údecode_contentz	Exceeded z redirects.)rD   z//ú:Ú )Úfragment)úContent-LengthzContent-TypeúTransfer-EncodingÚCookier/   ru   rv   )ÚstreamÚtimeoutÚverifyÚcertÚproxiesÚallow_redirects)-r`   r   Úurlrt   ÚcopyÚhistoryÚappendÚcontentr   r   ÚRuntimeErrorÚrawÚreadÚlenrM   r   ÚcloseÚ
startswithÚjoinr   rf   Ú_replaceÚgeturlÚnetlocr   r*   Úrebuild_methodÚstatus_coder#   Útemporary_redirectÚpermanent_redirectr]   ÚpopÚbodyr   Ú_cookiesr   r   rP   Úprepare_cookiesÚrebuild_proxiesÚrebuild_authÚ_body_positionr,   rW   )rT   r_   Úreqrx   ry   rz   r{   r|   Úyield_requestsÚadapter_kwargsÚhistr~   Úprevious_fragmentÚprepared_requestÚparsed_rurlÚparsedÚpurged_headersÚheaderr]   Ú
cookie_jarÚ
rewindables                        rA   Úresolve_redirectsz&SessionRedirectMixin.resolve_redirectsº   s.  è ø€ ð  "ˆà×&Ñ& tÓ,ˆÜ$ S§W¡WÓ-×6Ñ6ÐÚØ"Ÿx™x›zÐð  ¡˜7ˆDŒLØ�K‰K˜Ôð4Ø—’ô �4—<‘<Ó  D×$6Ñ$6Ò6Ü&Ø × 2Ñ 2Ð3°;Ð?È$ôð ð
 �J‰JŒLð �~‰~˜dÔ#Ü& t§x¡xÓ0�Ø—h‘hÔ 0°×1CÑ1CÓ DÀcÐJÓK�ô ˜c“]ˆFØ�‰ "Ò$Ñ):ØŸ™Ð2C˜ÓD‘Ø—’Ø$*§O¡OÐ!Ø—-‘-“/ˆCð
 —=’=Ü˜dŸh™h¬°CÓ(8Ó9‘ä! #Ó&�ä#3°CÓ#8ÐÔ à×ÑÐ 0°$Ô7ð ×ÑÜ×(Ñ(Ü×(Ñ(ð(ñ ð
 "Y�Ø,ò ?�FØ$×,Ñ,×0Ñ0°¸Õ>ð?à(,Ð Ô%à&×.Ñ.ˆGØ�K‰K˜ $Ô'ô
 ˜kÐ+;×+DÑ+DÓEˆJÜ" :¨s°D·H±HÔ=Ü˜* d§l¡lÔ3Ø×,Ñ,¨ZÔ8ð ×*Ñ*Ð+;¸WÓEˆGØ×ÑÐ.°Ô5ð
 *×8Ñ8ÀÐDò Ø  GÐ+ÒMÐ/BÀgÐ/Mð ñ
 ÜÐ,Ô-ð #ˆCáØ“	à �t—y‘yØð	à!Ø#Ø!ØØ#Ø$)ñ	ð %ñ	�ô ' t§|¡|Ð5EÀtÇxÁxÔPð ×.Ñ.¨tÓ4�Ø’
õO øô )Ô*>ÄÐMò 4Ø—‘—‘¨U�×3ð4üs1   ‚A!M$Á$L- Á0J9M$Ì+M$Ì-0M!ÍM$Í M!Í!M$c                ó$  — |j                   }t        |«      sJ ‚t        |«      sJ ‚|j                  }|j                  }|j                  }d|v r| j	                  ||«      r|d= | j
                  rt        |«      nd}|�|j                  |«       yy)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)rU   Ú_is_preparedr]   r~   ro   rO   r)   Úprepare_auth)rT   r�   rD   Úoriginal_requestr]   Úoriginal_urlr~   Únew_auths           rA   r–   z!SessionRedirectMixin.rebuild_auth5  s�   € ð $×+Ñ+ÐÜÐ,Ô-Ð-Ð-ÜÐ,Ô-Ð-Ð-à"×*Ñ*ˆØ'×+Ñ+ˆØ×"Ñ"ˆà˜gÑ%¨$×*@Ñ*@ÀÈsÔ*Sð ˜Ð(ð +/¯.ª.”> #Ô&¸dˆØÐØ×)Ñ)¨(Õ3ð  rI   c                óF  — t        |«      sJ ‚|j                  }t        |j                  «      j                  }t        ||| j                  «      }d|v r|d= 	 t        ||   «      \  }}|j                  d«      s|r|rt        ||«      |d<   |S # t        $ r d\  }}Y Œ6w xY w)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©NNrd   )r§   r]   r   r~   rf   r+   rO   r'   ÚKeyErrorrˆ   r   )rT   r�   r|   r]   rf   Únew_proxiesÚusernameÚpasswords           rA   r•   z$SessionRedirectMixin.rebuild_proxiesN  s¹   € ô  Ð,Ô-Ð-Ð-Ø"×*Ñ*ˆÜÐ*×.Ñ.Ó/×6Ñ6ˆÜ%Ð&6¸ÀÇÁÓPˆà  GÑ+ØÐ-Ð.ð	,Ü!2°;¸vÑ3FÓ!GÑˆH�hð × Ñ  Ô)©h¹8Ü-<¸XÀxÓ-PˆGÐ)Ñ*àÐøô ò 	,Ø!+ÑˆH’hð	,ús   ÁB ÂB ÂB c                ó  — |j                   }|j                  t        j                  k(  r|dk7  rd}|j                  t        j                  k(  r|dk7  rd}|j                  t        j
                  k(  r|dk(  rd}||_         y)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)rT   r�   rD   r¶   s       rA   r�   z#SessionRedirectMixin.rebuild_methodr  sx   € ð "×(Ñ(ˆð ×Ñ¤5§?¡?Ò2°vÀÒ7GØˆFð ×Ñ¤5§;¡;Ò.°6¸VÒ3CØˆFð ×Ñ¤5§;¡;Ò.°6¸VÒ3CØˆFà"(ÐÕrI   ©rU   r    rV   r
   Úreturnr"   )r_   r"   r»   z
str | None)rh   Ústrri   r¼   r»   rN   )FNTNNF)r_   r"   r˜   r    rx   rN   ry   ú_t.TimeoutTyperz   ú_t.VerifyTyper{   ú_t.CertTyper|   údict[str, str] | Noner™   rN   rš   r
   r»   zGenerator[Response, None, None])r�   r    rD   r"   r»   ÚNone)r�   r    r|   rÀ   r»   údict[str, str])Ú__name__Ú
__module__Ú__qualname__Ú__annotations__rW   r`   ro   r¤   r–   r•   r�   rS   rI   rA   rK   rK      s  … ØÓØƒOØÓãLóó(.ðH Ø"&Ø $Ø Ø)-Ø$ðyàðyð ðyð ð	yð
  ðyð ðyð ðyð 'ðyð ðyð ðyð 
)óyðv4Ø /ð4Ø;Cð4à	ó4ð2"à)ð"ð 'ð"ð 
ó	"ðH)Ø /ð)Ø;Cð)à	ô)rI   rK   c                  óú  — 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<   d0d„Zd1d„Zd2d„Zd3d„Z		 	 	 	 	 	 	 	 	 	 	 	 	 	 d4	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d5d!„Z
	 d6	 	 	 	 	 	 	 d7d"„Zd8d#„Zd8d$„Z	 	 d9	 	 	 	 	 	 	 	 	 d:d%„Z	 d6	 	 	 	 	 	 	 d;d&„Z	 d6	 	 	 	 	 	 	 d;d'„Zd8d(„Zd<d)„Z	 	 	 	 	 	 	 	 	 	 	 	 d=d*„Zd>d+„Zd0d,„Zd?d-„Zd@d.„ZdAd/„Zy )BÚ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Â   r|   zdict[str, list[_t.HookType]]ÚhookszMutableMapping[str, Any]ÚparamsrN   rx   r¾   rz   r¿   r{   rL   rM   rO   r   rP   z MutableMapping[str, BaseAdapter]Úadapters)r]   rP   rÊ   r|   rË   rÌ   rz   r{   rÍ   rx   rO   rM   z	list[str]Ú	__attrs__c                ó^  — t        «       | _        d | _        i | _        t	        «       | _        i | _        d| _        d| _        d | _	        t        | _        d| _        t        i «      | _        t        «       | _        | j#                  dt%        «       «       | j#                  dt%        «       «       y )NFTzhttps://zhttp://)r&   r]   rÊ   r|   r   rË   rÌ   rx   rz   r{   r   rM   rO   r   rP   r   rÍ   Úmountr   ©rT   s    rA   Ú__init__zSession.__init__º  s›   € ô 'Ó(ˆŒð ˆŒ	ð
 ˆŒô #“_ˆŒ
ð
 ˆŒð ˆŒð ˆŒð ˆŒ	ô 4ˆÔð ˆŒô +¨2Ó.ˆŒô $›ˆŒØ�
‰
�:œ{›}Ô-Ø�
‰
�9œk›mÕ,rI   c                ó   — | S rR   rS   rÑ   s    rA   Ú	__enter__zSession.__enter__ù  s   € ØˆrI   c                ó$   — | j                  «        y rR   )r‡   )rT   Úargss     rA   Ú__exit__zSession.__exit__ü  s   € Ø�
‰
�rI   c                ó  — t        d|j                  «      }t        t        |j                  «      }|j                  xs i }t        |t        j                  «      st        |«      }t        t        t        «       | j                  «      |«      }|j                  }| j                  r|s| j                  st        |«      }t        «       }|j                  |j!                  «       ||j"                  |j$                  |j&                  t)        |j*                  | j*                  t,        ¬«      t)        |j.                  | j.                  «      t)        || j                  «      |t1        |j2                  | j2                  «      ¬«
       |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)r;   )
r¶   r~   ÚfilesÚdataÚjsonr]   rÌ   rÊ   rP   rË   )r   r~   r¼   r¶   rP   r6   r   r/   r   r   r   rÊ   rO   r)   r    ÚprepareÚupperrÚ   rÛ   rÜ   rB   r]   r$   rÌ   rH   rË   )rT   rU   r~   r¶   rP   Úmerged_cookiesrÊ   Úps           rA   Úprepare_requestzSession.prepare_requestÿ  s"  € ô �< §¡Ó-ˆÜ”c˜7Ÿ>™>Ó*ˆà—/‘/Ò' Rˆô ˜'¤9×#6Ñ#6Ô7Ü)¨'Ó2ˆGô 'ÜÔ+Ó-¨t¯|©|Ó<¸gó
ˆð
 �|‰|ˆØ�>Š>¡$¨t¯yªyÜ! #Ó&ˆDäÓˆØ	�	‰	Ø—<‘<“>ØØ—-‘-Ø—‘Ø—‘Ü!Ø—‘ §¡Ô:Môô ! §¡°·±Ó=Ü˜t T§Y¡YÓ/Ø"Ü˜gŸm™m¨T¯Z©ZÓ8ð 	ô 	
ð ˆrI   Nc                óv  — t        |t        «      r|j                  d«      }t        |j	                  «       ||||xs i ||xs i |||¬«
      }| j                  |«      }t        |«      sJ ‚|xs i }| j                  |j                  ||||«      }|	|
dœ}|j                  |«        | 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Ê   rP   rË   )ry   r}   )r6   ÚbytesÚdecoder!   rÞ   rá   r§   Úmerge_environment_settingsr~   r7   rW   )rT   r¶   r~   rÌ   rÛ   r]   rP   rÚ   rÊ   ry   r}   r|   rË   rx   rz   r{   rÜ   r˜   ÚprepÚsettingsÚsend_kwargsr_   s                         rA   rU   zSession.request-  sÖ   € ô| �cœ5Ô!Ø—*‘*˜WÓ%ˆCô Ø—<‘<“>ØØØØ’˜ØØ’<˜RØØØô
ˆð ×#Ñ# CÓ(ˆä˜DÔ!Ð!Ð!à’-˜Rˆà×2Ñ2Ø�H‰H�g˜v v¨tó
ˆð Ø.ñ
ˆð 	×Ñ˜8Ô$Øˆt�y‰y˜Ñ- Ñ-ˆàˆrI   c                óR   — |j                  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Ì   ©Ú
setdefaultrU   )rT   r~   rÌ   rV   s       rA   rE   zSession.get�  s2   € ð 	×ÑÐ+¨TÔ2Øˆt�|‰|˜E 3Ñ@¨vÐ@¸Ñ@Ð@rI   c                óN   — |j                  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ê   ©rT   r~   rV   s      rA   ÚoptionszSession.options¡  s-   € ð 	×ÑÐ+¨TÔ2Øˆt�|‰|˜I sÑ5¨fÑ5Ð5rI   c                óN   — |j                  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¬  s-   € ð 	×ÑÐ+¨UÔ3Øˆt�|‰|˜F CÑ2¨6Ñ2Ð2rI   c                ó0   —  | 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Ü   ©rU   )rT   r~   rÛ   rÜ   rV   s        rA   ÚpostzSession.post·  s#   € ð" ˆt�|‰|˜F CÐH¨d¸ÑHÀÑHÐHrI   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ó   ©rT   r~   rÛ   rV   s       rA   ÚputzSession.putÊ  s!   € ð ˆt�|‰|˜E 3Ñ<¨TÐ<°VÑ<Ð<rI   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Ñ>Ð>rI   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¨VÑ4Ð4rI   c                ó€  — |j                  d| j                  «       |j                  d| j                  «       |j                  d| j                  «       d|vr$t	        || j
                  | j                  «      |d<   t        |t        «      rt        d«      ‚t        |«      sJ ‚|j                  dd«      }|j                  d«      }|j                  }| j                  |j                  ¬«      }t!        «       } |j"                  |fi |¤Ž}t!        «       |z
  }	t%        |	¬	«      |_        t)        d
||fi |¤Ž}|j*                  r<|j*                  D ]-  }
t-        | j.                  |
j0                  |
j2                  «       Œ/ t-        | j.                  ||j2                  «       |r$ | j4                  ||fi |¤Ž}|D �
cg c]  }
|
‘Œ }}
ng }|r)|j7                  d|«       |j                  «       }||_        |s%	 t9         | j4                  ||fddi|¤Ž«      |_        |s|j>                   |S c c}
w # t<        $ r Y Œ w xY w)zISend a given PreparedRequest.

        :rtype: requests.Response
        rx   rz   r{   r|   z#You can only send PreparedRequests.r}   T)r~   )ÚsecondsrD   r   r™   ) rë   rx   rz   r{   r+   r|   rO   r6   r!   Ú
ValueErrorr§   r‘   rE   rË   Úget_adapterr~   Úpreferred_clockrW   r   Úelapsedr   r€   r   rP   rU   r„   r¤   ÚinsertÚnextÚ_nextÚStopIterationr‚   )rT   rU   rV   r}   rx   rË   ÚadapterÚstartÚrr  r_   Úgenr€   s                rA   rW   zSession.sendð  s   € ð 	×Ñ˜( D§K¡KÔ0Ø×Ñ˜( D§K¡KÔ0Ø×Ñ˜& $§)¡)Ô,Ø˜FÑ"Ü /°¸¿¹ÀtÇ~Á~Ó VˆF�9Ñô �gœwÔ'ÜÐBÓCÐCä˜GÔ$Ð$Ð$ð !Ÿ*™*Ð%6¸Ó=ˆØ—‘˜HÓ%ˆØ—‘ˆð ×"Ñ" w§{¡{Ð"Ó3ˆô  Ó!ˆð ˆG�L‰L˜Ñ+ FÑ+ˆô "Ó# eÑ+ˆÜ gÔ.ˆŒ	ô ˜* e¨QÑ9°&Ñ9ˆð �9Š9àŸ	™	ò M�Ü& t§|¡|°T·\±\À4Ç8Á8ÕLðMô 	˜tŸ|™|¨W°a·e±eÔ<ñ à(�$×(Ñ(¨¨GÑ>°vÑ>ˆCØ(+Ö, ’tÐ,ˆGÑ,àˆGñ à�N‰N˜1˜aÔ à—‘“ˆAØˆAŒIñ ðÜØ*�D×*Ñ*¨1¨gÑUÀdÐUÈfÑUó�”ñ Ø�IŠIàˆùò1 -øô$ !ò Ùðús   Æ<	H,Ç8$H1 È1	H=È<H=c                ó  — | j                   r˜|�|j                  d«      nd}t        ||¬«      }|�*|j                  «       D ]  \  }}	|j	                  ||	«       Œ |du s|€Dt
        j                  j                  d«      xs# t
        j                  j                  d«      xs |}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|   rx   rz   r{   )rO   rE   r(   r8   rë   ÚosÚenvironrB   r|   rx   rz   r{   )
rT   r~   r|   rx   rz   r{   r  Úenv_proxiesr=   r>   s
             rA   rå   z"Session.merge_environment_settings?  sñ   € ð �>Š>à29Ð2E�w—{‘{ :Ô.È4ˆHÜ-¨c¸HÔEˆKØÐ"Ø'×-Ñ-Ó/ò -‘D�A�qØ×&Ñ& q¨!Õ,ð-ð
 ˜‰~  ä—J‘J—N‘NÐ#7Ó8ò Ü—z‘z—~‘~Ð&6Ó7òàð ô   ¨¯©Ó6ˆÜ˜v t§{¡{Ó3ˆÜ˜v t§{¡{Ó3ˆÜ˜T 4§9¡9Ó-ˆà"¨fÀÐPTÑUÐUrI   c                óÄ   — | j                   j                  «       D ]6  \  }}|j                  «       j                  |j                  «       «      sŒ4|c S  t	        d|›�«      ‚)z~
        Returns the appropriate connection adapter for the given URL.

        :rtype: requests.adapters.BaseAdapter
        z&No connection adapters were found for )rÍ   r8   Úlowerrˆ   r   )rT   r~   Úprefixr	  s       rA   r  zSession.get_adapterf  sX   € ð  $Ÿ}™}×2Ñ2Ó4ò 	‰OˆF�GØ�y‰y‹{×%Ñ% f§l¡l£nÕ5Ø’ð	ô
 ÐDÀSÀGÐLÓMÐMrI   c                ób   — | j                   j                  «       D ]  }|j                  «        Œ y)z+Closes all adapters and as such the sessionN)rÍ   Úvaluesr‡   )rT   r>   s     rA   r‡   zSession.closes  s'   € à—‘×%Ñ%Ó'ò 	ˆAØ�G‰G�Iñ	rI   c                óì   — || j                   |<   | j                   D �cg c]  }t        |«      t        |«      k  sŒ|‘Œ }}|D ]*  }| j                   j                  |«      | j                   |<   Œ, yc c}w )zwRegisters a connection adapter to a prefix.

        Adapters are sorted in descending order by prefix length.
        N)rÍ   r†   r‘   )rT   r  r	  r=   Úkeys_to_mover@   s         rA   rÐ   zSession.mountx  sj   € ð
 !(ˆ�‰�fÑØ#'§=¡=ÖI˜a´C¸³F¼SÀ»[Ó4HšÐIˆÐIàò 	8ˆCØ!%§¡×!2Ñ!2°3Ó!7ˆD�M‰M˜#Òñ	8ùò Js
   žA1»A1c           	     óZ   — | j                   D �ci c]  }|t        | |d «      “Œ }}|S c c}w rR   )rÎ   Úgetattr)rT   ÚattrÚstates      rA   Ú__getstate__zSession.__getstate__ƒ  s2   € Ø=A¿^¹^ÖL°T�”w˜t T¨4Ó0Ñ0ÐLˆÐLØˆùò Ms   �(c                óN   — |j                  «       D ]  \  }}t        | ||«       Œ y rR   )r8   Úsetattr)rT   r  r  Úvalues       rA   Ú__setstate__zSession.__setstate__‡  s'   € Ø Ÿ;™;›=ò 	'‰KˆD�%Ü�D˜$ Õ&ñ	'rI   )r»   rÁ   )r»   r0   )rÖ   r
   r»   rÁ   )rU   r!   r»   r    )NNNNNNNTNNNNNN)"r¶   r¼   r~   rÙ   rÌ   ú_t.ParamsTyperÛ   ú_t.DataTyper]   z_t.HeadersTyperP   z5RequestsCookieJar | CookieJar | dict[str, str] | NonerÚ   z_t.FilesTyperÊ   rÉ   ry   r½   r}   rN   r|   rÀ   rË   z_t.HooksInputType | Nonerx   úbool | Nonerz   ú_t.VerifyType | Noner{   r¿   rÜ   ú_t.JsonTyper»   r"   rR   )r~   rÙ   rÌ   r$  rV   zUnpack[_t.GetKwargs]r»   r"   )r~   rÙ   rV   zUnpack[_t.RequestKwargs]r»   r"   r­   )
r~   rÙ   rÛ   r%  rÜ   r(  rV   zUnpack[_t.PostKwargs]r»   r"   )r~   rÙ   rÛ   r%  rV   zUnpack[_t.DataKwargs]r»   r"   rº   )r~   r¼   r|   rÀ   rx   r&  rz   r'  r{   r¿   r»   údict[str, Any])r~   r¼   r»   r3   )r  r¼   r	  r3   r»   rÁ   )r»   r)  )r  r)  r»   rÁ   )rÃ   rÄ   rÅ   Ú__doc__rÆ   rÎ   rÒ   rÔ   r×   rá   rU   rE   rï   rñ   rô   rø   rû   rþ   rW   rå   r  r‡   rÐ   r  r#  rS   rI   rA   rÈ   rÈ   ‹  s£  … ñð$ &Ó%Ø
ÓØÓØ'Ó'Ø$Ó$ØƒLØÓØ
ÓØÓØƒOØÓØ.Ó.ò€Iˆyó ó=-ó~óó,ðd !%Ø Ø"&ØIMØ"Ø Ø"&Ø $Ø)-Ø*.Ø"Ø'+Ø Ø ð#`àð`ð ð`ð ð	`ð
 ð`ð  ð`ð Gð`ð ð`ð ð`ð  ð`ð ð`ð 'ð`ð (ð`ð ð`ð %ð`ð  ð!`ð" ð#`ð$ 
ó%`ðJ !%ðAàðAð ðAð 'ð	Að
 
óAó$	6ó	3ð !Ø ð	IàðIð ðIð ð	Ið
 (ðIð 
óIð( 48ð=Øð=Ø%0ð=ØCXð=à	ó=ð 48ð?Øð?Ø%0ð?ØCXð?à	ó?ó5óMð^%Vàð%Vð 'ð%Vð ð	%Vð
 %ð%Vð ð%Vð 
ó%VóNNóó
	8óô'rI   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È   rS   rI   rA   Úsessionr,  Œ  s   € ô ‹9ÐrI   )r9   r
   r:   r
   r;   Útyper»   r
   )rF   ú_t.HooksTyperG   r.  r;   r-  r»   r.  )r»   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   rP   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   rs   Ú_tr3   ÚplatformÚperf_counterr  rB   rH   rK   rÈ   r,  rS   rI   rA   ú<module>rB     s+  ðñõ #ã 	Û 
Û Ý #ß >Ñ >Ý ß +Ñ +å -Ý /Ý !Ý !ß 0Ñ 0÷ó ÷ó ÷ 0÷õ õ  Ý +÷÷ ÷ ñ Ý(ç.åÝ%ð ‡<�<�7ÒØ×'Ñ'�Oà—i‘i€Oð DOðØðØ+.ðØ<@ðàóðF #ðCØðCàðCð ðCð ó	C÷&I)ñ I)ôX~'Ð"ô ~'ôBrI   