§
    ¸)ýf‹t  ã                   óÖ  — d Z ddlZddlZddl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mZmZ ddlmZmZmZmZ dd	lmZmZmZ dd
lmZ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( ddl)m*Z* ddlm+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 ddl2m3Z3 ddlm4Z4 ej5        dk    r	 ej6        Z7n# e8$ r
 ej9        Z7Y nw xY wej        Z7efd„Z:efd„Z; G d„ de<¦  «        Z= G d„ de=¦  «        Z>d„ Z?dS )z•
requests.sessions
~~~~~~~~~~~~~~~~~

This module provides a Session object to manage and persist settings across
requests (cookies, auth, proxies).
é    N)Ú	timedelta)ÚOrderedDicté   )Ú_basic_auth_str)Ú	cookielibÚis_py3ÚurljoinÚurlparseÚMapping)Úcookiejar_from_dictÚextract_cookies_to_jarÚRequestsCookieJarÚmerge_cookies)ÚRequestÚPreparedRequestÚDEFAULT_REDIRECT_LIMIT)Údefault_hooksÚdispatch_hook)Úto_native_string)Úto_key_val_listÚdefault_headersÚDEFAULT_PORTS)ÚTooManyRedirectsÚInvalidSchemaÚChunkedEncodingErrorÚContentDecodingError)ÚCaseInsensitiveDict)ÚHTTPAdapter)Úrequote_uriÚget_environ_proxiesÚget_netrc_authÚshould_bypass_proxiesÚget_auth_from_urlÚrewind_bodyÚresolve_proxies)Úcodes)ÚREDIRECT_STATIÚwin32c                 ó.  — |€| 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      úk/home/blender/git/blender-v430/install_release/4.3/python/lib/python3.11/site-packages/requests/sessions.pyú
<listcomp>z!merge_setting.<locals>.<listcomp>J   s   € ÐEÐEÐE‘v˜˜1¸1¸9�¸9¸9¸9ó    )Ú
isinstancer   r   ÚupdateÚitems)Úrequest_settingÚsession_settingÚ
dict_classÚmerged_settingÚ	none_keysÚkeys         r0   Úmerge_settingr<   2   s¿   € ð ÐØÐàÐØÐõ �­Ñ0Ô0ðå�­Ñ0Ô0ðð Ðà�Z¥°Ñ @Ô @ÑAÔA€NØ×Ò�/¨/Ñ:Ô:Ñ;Ô;Ð;ð FÐE ×!5Ò!5Ñ!7Ô!7ÐEÑEÔE€IØð  ð  ˆØ˜3ÐÐàÐr2   c                 ó˜   — |�|                      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)Úgetr<   )Úrequest_hooksÚsession_hooksr8   s      r0   Úmerge_hooksrB   Q   s^   € ð Ð × 1Ò 1°*Ñ =Ô =ÀÒ CÐ CØÐàÐ × 1Ò 1°*Ñ =Ô =ÀÒ CÐ CØÐå˜¨°zÑBÔBÐBr2   c                   ó8   — e Zd Zd„ Zd„ Z	 	 d
d„Zd„ Zd„ Zd	„ ZdS )ÚSessionRedirectMixinc                 ó†   — |j         r9|j        d         }t          r|                     d¦  «        }t	          |d¦  «        S dS )z7Receives a Response. Returns a redirect URI or ``None``ÚlocationÚlatin1Úutf8N)Úis_redirectÚheadersr   Úencoder   )ÚselfÚresprF   s      r0   Úget_redirect_targetz(SessionRedirectMixin.get_redirect_targetb   sK   € ð Ôð 
	6Ø”| JÔ/ˆHõ ð 5Ø#Ÿ?š?¨8Ñ4Ô4�Ý# H¨fÑ5Ô5Ð5Øˆtr2   c                 ó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   r?   )rL   Úold_urlÚnew_urlÚ
old_parsedÚ
new_parsedÚchanged_portÚchanged_schemeÚdefault_ports           r0   Úshould_strip_authz&SessionRedirectMixin.should_strip_authw   sÚ   € å˜gÑ&Ô&ˆ
Ý˜gÑ&Ô&ˆ
ØÔ *Ô"5Ò5Ð5Ø�4ð
 Ô Ò'Ð'¨J¬O¸zÐ,IÐ,IØÔ%¨Ò0Ð0°Z´_ÈÐ5SÐ5SØ�5ð "”¨*¬/Ò9ˆØ#Ô*¨jÔ.?Ò?ˆÝ%Ô)¨*Ô*;¸TÑBÔBÀDÐIˆØð 	 :¤?°lÐ#BÐ#BØ”O |Ð3Ð3Ø�5ð Ð-˜~Ð-r2   FNTc	           
   +   óÜ  K  — g }
|                       |¦  «        }t          |j        ¦  «        j        }|�r6|                     ¦   «         }|
                     |¦  «         |
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¦  «        r=t          |j        ¦  «        }d                     t)          |j        ¦  «        |g¦  «        }t          |¦  «        }|j        d	k    r|r|                     |¬
¦  «        }n|j        r|j        }|                     ¦   «         }|j        s#t3          |j        t5          |¦  «        ¦  «        }nt5          |¦  «        }t)          |¦  «        |_        |                      ||¦  «         |j        t:          j        t:          j        fvr)d}|D ]}|j          !                    |d¦  «         Œd|_"        |j         }| !                    dd¦  «         tG          |j$        ||j        ¦  «         tK          |j$        | j&        ¦  «         | '                    |j$        ¦  «         |  (                    ||¦  «        }|  )                    ||¦  «         |j*        duod|v pd|v }|rtW          |¦  «         |}|r|V — nI | j,        |f|||||ddœ|	¤Ž}tG          | j&        ||j        ¦  «         |                       |¦  «        }|V — |�°4dS dS )zBReceives a Response. Returns a generator of Responses or Requests.r   NF)Údecode_contentzExceeded {} redirects.)r>   z//ú:Ú )Úfragment)úContent-LengthzContent-TypeúTransfer-EncodingÚCookierc   rd   )ÚstreamÚtimeoutÚverifyÚcertÚproxiesÚallow_redirects)-rN   r
   Úurlrb   ÚcopyÚappendÚhistoryÚcontentr   r   ÚRuntimeErrorÚrawÚreadÚlenÚmax_redirectsr   ÚformatÚcloseÚ
startswithÚjoinr   rT   Ú_replaceÚgeturlÚnetlocr	   r   Úrebuild_methodÚstatus_coder&   Útemporary_redirectÚpermanent_redirectrJ   ÚpopÚbodyr   Ú_cookiesr   ÚcookiesÚprepare_cookiesÚrebuild_proxiesÚrebuild_authÚ_body_positionr$   Úsend)rL   rM   Úreqrf   rg   rh   ri   rj   Úyield_requestsÚadapter_kwargsÚhistrl   Úprevious_fragmentÚprepared_requestÚparsed_rurlÚparsedÚpurged_headersÚheaderrJ   Ú
rewindables                       r0   Úresolve_redirectsz&SessionRedirectMixin.resolve_redirects�   sà  è è € ð ˆà×&Ò& tÑ,Ô,ˆÝ$ S¤WÑ-Ô-Ô6ÐØñ d	Ø"Ÿxšx™zœzÐð �KŠK˜ÑÔÐØ   œ8ˆDŒLð4Ø”��øÝ(Õ*>ÅÐMð 4ð 4ð 4Ø”—’¨U�Ñ3Ô3Ð3Ð3Ð3ð4øøøõ �4”<Ñ Ô  DÔ$6Ò6Ð6Ý&Ð'?×'FÒ'FÀtÔGYÑ'ZÔ'ZÐeiÐjÑjÔjÐjð �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ð Ô­Ô(@Å%ÔBZÐ'[Ð[Ð[à!X�Ø,ð ?ð ?�FØ$Ô,×0Ò0°¸Ñ>Ô>Ð>Ð>Ø(,Ð Ô%à&Ô.ˆGØ�KŠK˜ $Ñ'Ô'Ð'õ
 #Ð#3Ô#<¸cÀ4Ä8ÑLÔLÐLÝÐ*Ô3°T´\ÑBÔBÐBØ×,Ò,Ð-=Ô-FÑGÔGÐGð ×*Ò*Ð+;¸WÑEÔEˆGØ×ÒÐ.°Ñ5Ô5Ð5ð !Ô/°tÐ;ð PØ! WÐ,ÐNÐ0CÀwÐ0Nð ð ð .ÝÐ,Ñ-Ô-Ð-ð #ˆCàð Ø�	�	�	�	ð !�t”yØð	à!Ø#Ø!ØØ#Ø$)ð	ð 	ð %ð	ð 	�õ ' t¤|Ð5EÀtÄxÑPÔPÐPð ×.Ò.¨tÑ4Ô4�Ø�
�
�
ðI ñ d	ð d	ð d	ð d	ð d	s   Á/A7 Á72B,Â+B,c                 óÒ   — |j         }|j        }d|v r#|                      |j        j        |¦  «        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)rJ   rl   r]   ÚrequestÚ	trust_envr!   Úprepare_auth)rL   r�   r>   rJ   rl   Únew_auths         r0   r‡   z!SessionRedirectMixin.rebuild_authþ   sˆ   € ð
 #Ô*ˆØÔ"ˆà˜gÐ%Ð%¨$×*@Ò*@ÀÔAQÔAUÐWZÑ*[Ô*[Ð%ð ˜Ð(ð +/¬.ÐB•> #Ñ&Ô&Ð&¸dˆØÐØ×)Ò)¨(Ñ3Ô3Ð3Ð3Ð3ð  Ðr2   c                 ó  — |j         }t          |j        ¦  «        j        }t	          ||| j        ¦  «        }d|v r|d= 	 t          ||         ¦  «        \  }}n# t          $ r d\  }}Y nw xY w|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©NN)	rJ   r
   rl   rT   r%   r™   r#   ÚKeyErrorr   )rL   r�   rj   rJ   rT   Únew_proxiesÚusernameÚpasswords           r0   r†   z$SessionRedirectMixin.rebuild_proxies  s½   € ð #Ô*ˆÝÐ*Ô.Ñ/Ô/Ô6ˆÝ%Ð&6¸ÀÄÑPÔPˆà  GÐ+Ð+ØÐ-Ð.ð	,Ý!2°;¸vÔ3FÑ!GÔ!GÑˆH�h�høÝð 	,ð 	,ð 	,Ø!+ÑˆH�h�h�hð	,øøøð ð 	Q˜ð 	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)rL   r�   r>   r¦   s       r0   r}   z#SessionRedirectMixin.rebuild_method-  s~   € ð "Ô(ˆð Ô¥5¤?Ò2Ð2°vÀÒ7GÐ7GØˆFð Ô¥5¤;Ò.Ð.°6¸VÒ3CÐ3CØˆFð Ô¥5¤;Ò.Ð.°6¸VÒ3CÐ3CØˆFà"(ÐÔÐÐr2   )FNTNNF)	Ú__name__Ú
__module__Ú__qualname__rN   r]   r•   r‡   r†   r}   r,   r2   r0   rD   rD   `   s‚   € € € € € ðð ð ð*.ð .ð .ð2 BFØOTðlð lð lð lð\4ð 4ð 4ð$ð ð ð:)ð )ð )ð )ð )r2   rD   c                   óš   — e Zd ZdZg d¢Zd„ Zd„ Zd„ Zd„ Z	 	 	 dd	„Z	d
„ Z
d„ Zd„ Zdd„Zdd„Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ 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]>
    )rJ   r„   Úauthrj   ÚhooksÚparamsrh   ri   Úadaptersrf   r™   ru   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   rJ   r¯   rj   r   r°   r±   rf   rh   ri   r   ru   r™   r   r„   r   r²   Úmountr   ©rL   s    r0   Ú__init__zSession.__init__]  s»   € õ
 'Ñ(Ô(ˆŒð ˆŒ	ð
 ˆŒõ #‘_”_ˆŒ
ð
 ˆŒð ˆŒð ˆŒð ˆŒ	õ 4ˆÔð ˆŒõ +¨2Ñ.Ô.ˆŒõ $™œˆŒØ�
Š
�:�{™}œ}Ñ-Ô-Ð-Ø�
Š
�9�k™mœmÑ,Ô,Ð,Ð,Ð,r2   c                 ó   — | S r+   r,   rµ   s    r0   Ú	__enter__zSession.__enter__›  s   € Øˆr2   c                 ó.   — |                       ¦   «          d S r+   )rw   )rL   Úargss     r0   Ú__exit__zSession.__exit__ž  s   € Ø�
Š
‰Œˆˆˆr2   c                 ó’  — |j         pi }t          |t          j        ¦  «        st	          |¦  «        }t          t          t          ¦   «         | j         ¦  «        |¦  «        }|j        }| j        r|s| j        st          |j
        ¦  «        }t          ¦   «         }|                     |j                             ¦   «         |j
        |j        |j        |j        t%          |j        | j        t(          ¬¦  «        t%          |j        | j        ¦  «        t%          || j        ¦  «        |t-          |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
        )r8   )
r¦   rl   ÚfilesÚdataÚjsonrJ   r±   r¯   r„   r°   )r„   r3   r   Ú	CookieJarr   r   r   r¯   r™   r!   rl   r   Úpreparer¦   Úupperr½   r¾   r¿   r<   rJ   r   r±   rB   r°   )rL   r˜   r„   Úmerged_cookiesr¯   Úps         r0   Úprepare_requestzSession.prepare_request¡  s.  € ð ”/Ð' Rˆõ ˜'¥9Ô#6Ñ7Ô7ð 	3Ý)¨'Ñ2Ô2ˆGõ 'ÝÕ+Ñ-Ô-¨t¬|Ñ<Ô<¸gñGô Gˆð Œ|ˆØŒ>ð 	/ $ð 	/¨t¬yð 	/Ý! '¤+Ñ.Ô.ˆDåÑÔˆØ	�	Š	Ø”>×'Ò'Ñ)Ô)Ø”Ø”-Ø”Ø”Ý! '¤/°4´<ÕL_Ð`Ñ`Ô`Ý  ¤°´Ñ=Ô=Ý˜t T¤YÑ/Ô/Ø"Ý˜gœm¨T¬ZÑ8Ô8ð 	ñ 	
ô 	
ð 	
ð ˆr2   NTc                 ó"  — t          |                     ¦   «         ||||pi ||pi |||¬¦
  «
        }|                      |¦  «        }|pi }|                      |j        ||||¦  «        }|	|
dœ}|                     |¦  «          | j        |fi |¤Ž}|S )ax	  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 long 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 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
        )
r¦   rl   rJ   r½   r¾   r¿   r±   r¯   r„   r°   )rg   rk   )r   rÂ   rÅ   Úmerge_environment_settingsrl   r4   r‰   )rL   r¦   rl   r±   r¾   rJ   r„   r½   r¯   rg   rk   rj   r°   rf   rh   ri   r¿   rŠ   ÚprepÚsettingsÚsend_kwargsrM   s                         r0   r˜   zSession.requestÉ  sÏ   € õ\ Ø—<’<‘>”>ØØØØ�˜ØØ�<˜RØØØð
ñ 
ô 
ˆð ×#Ò# CÑ(Ô(ˆà�-˜Rˆà×2Ò2ØŒH�g˜v v¨tñ
ô 
ˆð Ø.ð
ð 
ˆð 	×Ò˜8Ñ$Ô$Ð$ØˆtŒy˜Ð-Ð- Ð-Ð-ˆàˆr2   c                 óL   — |                      dd¦  «          | j        d|fi |¤ŽS )zåSends a GET request. Returns :class:`Response` object.

        :param url: URL for the new :class:`Request` object.
        :param \*\*kwargs: Optional arguments that ``request`` takes.
        :rtype: requests.Response
        rk   Tr¤   ©Ú
setdefaultr˜   ©rL   rl   Úkwargss      r0   r?   zSession.get  s7   € ð 	×ÒÐ+¨TÑ2Ô2Ð2ØˆtŒ|˜E 3Ð1Ð1¨&Ð1Ð1Ð1r2   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
        rk   TÚOPTIONSrÌ   rÎ   s      r0   ÚoptionszSession.options   s7   € ð 	×ÒÐ+¨TÑ2Ô2Ð2ØˆtŒ|˜I sÐ5Ð5¨fÐ5Ð5Ð5r2   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
        rk   Fr£   rÌ   rÎ   s      r0   ÚheadzSession.head+  s7   € ð 	×ÒÐ+¨UÑ3Ô3Ð3ØˆtŒ|˜F CÐ2Ð2¨6Ð2Ð2Ð2r2   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¿   ©r˜   )rL   rl   r¾   r¿   rÏ   s        r0   ÚpostzSession.post6  s'   € ð ˆtŒ|˜F CÐH¨d¸ÐHÐHÀÐHÐHÐHr2   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Ö   ©rL   rl   r¾   rÏ   s       r0   ÚputzSession.putC  s%   € ð ˆtŒ|˜E 3Ð<Ð<¨TÐ<°VÐ<Ð<Ð<r2   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       r0   ÚpatchzSession.patchO  s%   € ð ˆtŒ|˜G SÐ>Ð>¨tÐ>°vÐ>Ð>Ð>r2   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      r0   ÚdeletezSession.delete[  s    € ð ˆtŒ|˜H cÐ4Ð4¨VÐ4Ð4Ð4r2   c                 ó.  — |                      d| j        ¦  «         |                      d| j        ¦  «         |                      d| j        ¦  «         d|vrt	          || j        | j        ¦  «        |d<   t          |t          ¦  «        rt          d¦  «        ‚| 
                    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	 t7           | j        ||fddi|¤Ž¦  «        |_        n# t:          $ r Y nw xY w|s|j         |S )zISend a given PreparedRequest.

        :rtype: requests.Response
        rf   rh   ri   rj   z#You can only send PreparedRequests.rk   T)rl   )Úsecondsr>   c                 ó   — g | ]}|‘ŒS r,   r,   )r-   rM   s     r0   r1   z Session.send.<locals>.<listcomp>›  s   € Ð,Ð,Ð, �tÐ,Ð,Ð,r2   r   r‹   )rÍ   rf   rh   ri   r%   rj   r™   r3   r   Ú
ValueErrorr�   r?   r°   Úget_adapterrl   Úpreferred_clockr‰   r   Úelapsedr   ro   r   r„   r˜   rr   r•   ÚinsertÚnextÚ_nextÚStopIterationrp   )rL   r˜   rÏ   rk   rf   r°   ÚadapterÚstartÚrrè   rM   Úgenro   s                r0   r‰   zSession.sende  sƒ  € ð 	×Ò˜( D¤KÑ0Ô0Ð0Ø×Ò˜( D¤KÑ0Ô0Ð0Ø×Ò˜& $¤)Ñ,Ô,Ð,Ø˜FÐ"Ð"Ý /Ø˜œ t¤~ñ!ô !ˆF�9Ñõ �g�wÑ'Ô'ð 	DÝÐBÑCÔCÐCð !Ÿ*š*Ð%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ð ð 	ðÝÐ5˜tÔ5°a¸Ð`Ð`ÐQUÐ`ÐY_Ð`Ð`ÑaÔa�”�øÝ ð ð ð Ø�ðøøøð ð 	ØŒIˆIàˆs   Ç#G< Ç<
H	ÈH	c                 ó  — | j         rž|�|                     d¦  «        nd}t          ||¬¦  «        }|                     ¦   «         D ]\  }}	|                     ||	¦  «         Œ|du s|€>t
          j                             d¦  «        pt
          j                             d¦  «        }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)rh   rj   rf   ri   )r™   r?   r    r5   rÍ   ÚosÚenvironr<   rj   rf   rh   ri   )
rL   rl   rj   rf   rh   ri   rò   Úenv_proxiesr.   r/   s
             r0   rÇ   z"Session.merge_environment_settings³  s  € ð Œ>ð 	<à29Ð2E�w—{’{ :Ñ.Ô.Ð.È4ˆHÝ-¨c¸HÐEÑEÔEˆKØ%×+Ò+Ñ-Ô-ð )ð )‘��AØ×"Ò" 1 aÑ(Ô(Ð(Ð(ð ˜ˆ~ˆ~  Ýœ*Ÿ.š.Ð)=Ñ>Ô>ð ;Ýœ*Ÿ.š.Ð)9Ñ:Ô:ð õ   ¨¬Ñ6Ô6ˆÝ˜v t¤{Ñ3Ô3ˆÝ˜v t¤{Ñ3Ô3ˆÝ˜T 4¤9Ñ-Ô-ˆà ¨WÀØðð ð 	r2   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})r²   r5   Úlowerrx   r   rv   )rL   rl   Úprefixrí   s       r0   ræ   zSession.get_adapterÐ  sz   € ð "&¤×!4Ò!4Ñ!6Ô!6ð 	ð 	ÑˆV�Wà�yŠy‰{Œ{×%Ò% f§l¢l¡n¤nÑ5Ô5ð Ø���ðõ ÐH×OÒOÐPSÑTÔTÑUÔUÐUr2   c                 óf   — | j                              ¦   «         D ]}|                     ¦   «          ŒdS )z+Closes all adapters and as such the sessionN)r²   Úvaluesrw   )rL   r/   s     r0   rw   zSession.closeÞ  s8   € à”×%Ò%Ñ'Ô'ð 	ð 	ˆAØ�GŠG‰IŒIˆIˆIð	ð 	r2   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,   )rt   )r-   r.   rú   s     €r0   r1   z!Session.mount.<locals>.<listcomp>é  s/   ø€ ÐIÐIÐI˜aµC¸±F´F½SÀ¹[¼[Ò4HÐ4H˜Ð4HÐ4HÐ4Hr2   N)r²   r�   )rL   rú   rí   Úkeys_to_mover;   s    `   r0   r´   zSession.mountã  sd   ø€ ð
 !(ˆŒ�fÑØIÐIÐIÐI 4¤=ÐIÑIÔIˆàð 	8ð 	8ˆCØ!%¤×!2Ò!2°3Ñ!7Ô!7ˆDŒM˜#ÑÐð	8ð 	8r2   c                 ó.   ‡ — ˆ fd„‰ j         D ¦   «         }|S )Nc                 ó4   •— i | ]}|t          ‰|d ¦  «        “ŒS r+   )Úgetattr)r-   ÚattrrL   s     €r0   ú
<dictcomp>z(Session.__getstate__.<locals>.<dictcomp>ï  s'   ø€ ÐLÐLÐL°T�•w˜t T¨4Ñ0Ô0ÐLÐLÐLr2   )Ú	__attrs__)rL   Ústates   ` r0   Ú__getstate__zSession.__getstate__î  s#   ø€ ØLÐLÐLÐL¸T¼^ÐLÑLÔLˆØˆr2   c                 ó\   — |                      ¦   «         D ]\  }}t          | ||¦  «         Œd S r+   )r5   Úsetattr)rL   r  r  Úvalues       r0   Ú__setstate__zSession.__setstate__ò  s<   € Ø Ÿ;š;™=œ=ð 	'ð 	'‰KˆD�%Ý�D˜$ Ñ&Ô&Ð&Ð&ð	'ð 	'r2   )NNNNNNNTNNNNNNr�   r+   )rª   r«   r¬   Ú__doc__r  r¶   r¸   r»   rÅ   r˜   r?   rÒ   rÔ   r×   rÛ   rÞ   rá   r‰   rÇ   ræ   rw   r´   r  r  r,   r2   r0   r®   r®   D  s  € € € € € ðð ð$ð ð €Ið<-ð <-ð <-ð|ð ð ðð ð ð&ð &ð &ðR GKØCGØBFðJð Jð Jð JðX	2ð 	2ð 	2ð	6ð 	6ð 	6ð	3ð 	3ð 	3ðIð Ið Ið Ið
=ð 
=ð 
=ð 
=ð
?ð 
?ð 
?ð 
?ð5ð 5ð 5ðLð Lð Lð\ð ð ð:Vð Vð Vðð ð ð
	8ð 	8ð 	8ðð ð ð'ð 'ð 'ð 'ð 'r2   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,   r2   r0   Úsessionr  ÷  s   € õ ‰9Œ9Ðr2   )@r  rõ   ÚsysÚtimeÚdatetimer   Úcollectionsr   r¯   r   Úcompatr   r   r	   r
   r   r„   r   r   r   r   Úmodelsr   r   r   r°   r   r   Ú_internal_utilsr   Úutilsr   r   r   Ú
exceptionsr   r   r   r   Ú
structuresr   r²   r   r   r    r!   r"   r#   r$   r%   Ústatus_codesr&   r'   ÚplatformÚperf_counterrç   ÚAttributeErrorÚclockr<   rB   ÚobjectrD   r®   r  r,   r2   r0   ú<module>r     s0  ððð ð 
€	€	€	Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #à !Ð !Ð !Ð !Ð !Ð !Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AðSð Sð Sð Sð Sð Sð Sð Sð Sð Sð Sð Sà DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø -Ð -Ð -Ð -Ð -Ð -Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BðQð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð ,Ð +Ð +Ð +Ð +Ð +Ø !Ð !Ð !Ð !Ð !Ð !ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð
  Ð Ð Ð Ð Ð ð #Ð "Ð "Ð "Ð "Ð "ð „<�7ÒÐð%ØÔ+ˆˆøØð %ð %ð %Øœ*ˆˆˆð%øøøð ”i€Oð @Kð ð ð ð ð> :Eð Cð Cð Cð Cða)ð a)ð a)ð a)ð a)˜6ñ a)ô a)ð a)ðHp'ð p'ð p'ð p'ð p'Ð"ñ p'ô p'ð p'ðfð ð ð ð s   ÂB' Â'B6Â5B6