
    i^                    T   S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKJr  S SK	J
r
  S SKJrJrJrJrJrJr  S SKrSSKJrJr  SSKJrJrJrJrJr  SS	KJr  \R<                  " 5       r\R@                  " S
5      r!\R@                  " S5      r"\(       a
   " S S5      r# " S S\$5      r%S r&Sr'Sr(Sr)Sr*Sr+Sr,Sr-Sr.\R^                  " 5       S"S j5       r0S#S$S jjr1S%S jr2\R^                  " 5       S 5       r3S r4\R^                  " 5       S 5       r5S&S jr6 " S S5      r7 " S  S!5      r8g)'    )annotationsN)SimpleCookie)Path)TYPE_CHECKINGAnyLiteralOptionalUnioncast   )ffilib)	CurlECodeCurlHttpVersionCurlInfoCurlOpt
CurlWsFlag)CurlCffiWarnings   HTTP/\d\.\d [0-9]{3} (.*)s   HTTP/(\d\.\d) ([0-9]{3}) (.*)c                  H    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S'   Srg	)
CurlWsFrame   intageflagsoffset	bytesleftlen N)__name__
__module____qualname____firstlineno____annotations____static_attributes__r       ;/app/mltbenv/lib/python3.13/site-packages/curl_cffi/curl.pyr   r      s    
r%   r   c                  4   ^  \ rS rSrSrSSU 4S jjjrSrU =r$ )	CurlError    z$Base exception for curl_cffi packagec                :   > [         TU ]  " U/UQ70 UD6  X l        g N)super__init__code)selfmsgr.   argskwargs	__class__s        r&   r-   CurlError.__init__#   s    .t.v.26	r%   r.   )r   )r.   zUnion[CurlECode, Literal[0]])r   r    r!   r"   __doc__r-   r$   __classcell__)r3   s   @r&   r(   r(       s    .7 7r%   r(                  i  l    c                r    [         R                  " U5      n[         R                  " X#5      SS nU" X5        g)z ffi callback for curl debug infoNr   )r   from_handlebuffer)curltype_datasizeclientpcallbacktexts          r&   debug_functionrG   4   s0     w'H::d!!$DUr%   c                P   ^ U(       a  SOSmSR                  U4S jU  5       5      $ )u   
Convert a bytes object to a space-separated hex string, e.g. "0a ff 3c".
If uppercase=True, letters will be A–F instead of a–f.
z{:02X}z{:02x} c              3  F   >#    U  H  nTR                  U5      v   M     g 7fr+   )format).0bytefmts     r&   	<genexpr>bytes_to_hex.<locals>.<genexpr>C   s     3CJJt$$s   !)join)b	uppercaserN   s     @r&   bytes_to_hexrT   =   s#    
  (XC883333r%   c                   [         S[        S[        S[        S[        S[
        S[        S0nSnUR                  U S5      nU [
        [        4;   aU  [        US U 5      n[        U5      U::  a  S	OS
n[        R                  R                  U S[        U5       SU U S35        g  UR                  S5      n[        R                  R                  U SU 35        U [         [        [        4;  a   [        R                  R                  S5        g g ! [         aW    [        US U 5      n[        U5      U::  a  S	OS
n[        R                  R                  U S[        U5       SU U S35         g f = f)N*<>z< DATAz> DATAz< SSLz> SSL(    z...z [z	 bytes]: 
zutf-8rI   )CURLINFO_TEXTCURLINFO_HEADER_INCURLINFO_HEADER_OUTCURLINFO_DATA_INCURLINFO_DATA_OUTCURLINFO_SSL_DATA_INCURLINFO_SSL_DATA_OUTgetrT   r   sysstderrwritedecodeUnicodeDecodeError)rA   rB   PREFIXESMAX_SHOW_BYTESprefixhex_strpostfixrF   s           r&   debug_function_defaultrn   F   s_   sCS(8gwH N\\%%F %'<==tO^45D	^3"

F82c$i[	'7)2NO		T;;w'DJJxq/0],>@STT

  & U! 	T"4#89GI7bUGJJxr#d)IgYwirRS		Ts   'A)D AE32E3c                    [         R                  " U5      nUR                  [         R                  " X5      SS 5        X!-  $ )zAffi callback for curl write function, directly writes to a bufferN)r   r>   rf   r?   )ptrrC   nmembuserdatar?   s        r&   buffer_callbackrs   e   s4     __X&F
LLC'*+<r%   c                (    U (       d  g[        U 5      $ Nr   )r   )ss    r&   
ensure_intrw   n   s    q6Mr%   c                    [         R                  " U5      nU" [         R                  " X5      SS 5      n[        U5      nU[        :X  d
  U[
        :X  a  U$ XRU-  :w  a  [        R                  " S[        SS9  X!-  $ )zHffi callback for curl write function, calls the callback python functionNzWrote bytes != received bytes.r8   
stacklevel)	r   r>   r?   rw   CURL_WRITEFUNC_PAUSECURL_WRITEFUNC_ERRORwarningswarnr   )rp   rC   rq   rr   rE   wrotes         r&   write_callbackr   t   sn     x(HSZZ+A./EuE$$1E(E6TUV<r%   c                    / nU nU(       aD  UR                  [        R                  " UR                  5      5        UR                  nU(       a  MD  [
        R                  " U 5        U$ )z%Converts curl slist to a python list.)appendr   stringrB   nextr   curl_slist_free_all)headresultrp   s      r&   slist_to_listr      sM    F
C
cjj*+hh # D!Mr%   c                  P   \ rS rSrSrSrSSS jjrSS jrSS jrSS jr	S S	 jr
S!S
 jrS"S jrS#S jrS$S jrS%S&S jjrSS jrS'S(S jjrS)S jr S'     S(S jjrS*S jrSS jrS+S jr\S,S j5       r\S-S j5       rSS jrS.S jr\R:                  4S/S jjrS0S1S jjrSr g)2Curl   z3
Wrapper for ``curl_easy_*`` functions of libcurl.
i   Nc                   U(       a  UO[         R                  " 5       U l        [        R                  U l        [        R                  U l        [        R                  U l        U=(       d    [        U l	        SU l
        SU l        SU l        SU l        SU l        [        R                  " SS5      U l        X l        U R%                  5         [        R                  " SU R&                  5      U l        [        R                  " S5      U l        [        R                  " S5      U l        [        R                  " S5      U l        g)z
Parameters:
    cacert: CA cert path to use, by default, certs from ``certifi`` are used.
    debug: whether to show curl debug messages.
    handle: a curl handle instance from ``curl_easy_init``.
FNzchar[]   zsize_t *zstruct curl_ws_frame **)r   curl_easy_init_curlr   NULL_headers_proxy_headers_resolveDEFAULT_CACERT_cacert_is_cert_set_write_handle_header_handle_debug_handle_body_handlenew_error_buffer_debug_set_error_buffer_WS_RECV_BUFFER_SIZE_ws_recv_buffer_ws_recv_n_recv_ws_recv_p_frame_ws_send_n_sent)r/   cacertdebughandles       r&   r-   Curl.__init__   s      &V3+=+=+?
!hh/!"&#'"&!% WWXs3   #wwx1J1JK"wwz2 #(A B"wwz2r%   c                    [         R                  " U R                  [        R                  U R
                  5      nUS:w  a  [        R                  " S[        SS9  U R                  (       a  U R                  5         g g )Nr   zFailed to set error bufferr8   ry   )r   _curl_easy_setoptr   r   ERRORBUFFERr   r}   r~   r   r   r   r/   rets     r&   r   Curl._set_error_buffer   sT    ##DJJ0C0CTEWEWX!8MM6TUV;;JJL r%   c                    U R                  [        R                  S5        U R                  [        R                  S5        g)zSet debug to Truer   TN)setoptr   VERBOSEDEBUGFUNCTIONr/   s    r&   r   
Curl.debug   s(    GOOQ'G))40r%   c                $    U R                  5         g r+   closer   s    r&   __del__Curl.__del__       

r%   c                B    US:X  a  g U R                   " U/UQ76 nUb  Ueg ru   )
_get_error)r/   errcoder1   errors       r&   _check_errorCurl._check_error   s/    a</$/K r%   c           	        US:w  az  [         R                  " U R                  5      R                  SS9nSR	                  U Vs/ s H  n[        U5      PM     sn5      n[        SU SU SU S3[        [        U5      S	9$ g s  snf )
Nr   backslashreplaceerrorsrI   z
Failed to z	, curl: (z) zK. See https://curl.se/libcurl/c/libcurl-errors.html first for more details.r5   )	r   r   r   rg   rQ   strr(   r   r   )r/   r   r1   errmsgaactions         r&   r   Curl._get_error   s    a<ZZ 2 23::BT:UFXXt4t!s1vt45FVHIgYb A  )W-	  4s   Bc                   U R                   c  gSSSSSS.nUR                  US-  S-  5      nUS:X  d  US:X  a  [        R                  " XB5      nGOU[        R
                  :X  a\  [        R                  " U5      nXPl        [        R                  " U R                   [        R                  [        R                  5        GOxU[        R                  :X  a\  [        R                  " U5      nXPl        [        R                  " U R                   [        R                  [        R                  5        GOU[        R                  :X  al  [        R                  " U5      nXPl        [        R                  " U R                   [        R                  [        R                  5        [        R
                  nGOU[        R                  :X  al  [        R                  " U5      nXPl        [        R                  " U R                   [        R                  [        R                  5        [        R                  nGOU[        R                   :X  aw  USL a  ["        n[        R                  " U5      nXPl        [        R                  " U R                   [        R                   [        R&                  5        [        R(                  nGO}US:X  Gah  [+        U[,        5      (       Ga5  [        R.                  [        R0                  [        R2                  [        R4                  [        R6                  [        R8                  [        R:                  [        R<                  [        R>                  [        R@                  [        RB                  [        RD                  [        RF                  [        RH                  1n[J        RL                  RO                  S	5      (       a,  X;   a'  [P        RR                  " S
5      nURU                  USS9nOURU                  5       nOUnU[        RV                  :X  a  XPl,        O[[        SU 35      eU[        R\                  :X  a\  U H)  n[        R^                  " U R`                  U5      U l0        M+     [        R                  " U R                   XR`                  5      n	GO$U[        Rb                  :X  a[  U H)  n
[        R^                  " U Rd                  U
5      U l2        M+     [        R                  " U R                   XRd                  5      n	OU[        Rf                  :X  a  U HN  n[+        U[,        5      (       a  URU                  5       n[        R^                  " U Rh                  U5      U l4        MP     [        R                  " U R                   XRh                  5      n	O![        R                  " U R                   X5      n	U Rk                  U	SX5        U[        R.                  :X  a  SU l6        U	$ )zWrapper for ``curl_easy_setopt``.

Args:
    option: option to set, using constants from CurlOpt enum
    value: value to set, strings will be handled automatically

Returns:
    0 if no error, see ``CurlECode``.
r   long*zchar*zvoid*int64_t*)r   '  i N  i0u  i@  r   TwinFstrictr   zOption unsupported: r   )7r   rc   r   r   r   	WRITEDATA
new_handler   r   r   WRITEFUNCTIONrs   
HEADERDATAr   HEADERFUNCTIONr   r   rn   r   rG   	DEBUGDATA
isinstancer   CAINFOCAPATHPROXY_CAINFOPROXY_CAPATHSSLCERTSSLKEYCRLFILE
ISSUERCERTSSH_PUBLIC_KEYFILESSH_PRIVATE_KEYFILE
COOKIEFILE	COOKIEJAR
NETRC_FILEUNIX_SOCKET_PATHrd   platform
startswithlocalegetpreferredencodingencode
POSTFIELDSr   NotImplementedError
HTTPHEADERcurl_slist_appendr   PROXYHEADERr   RESOLVEr   r   r   )r/   optionvalueinput_option
value_typec_valuefilepath_optsencheaderr   proxy_headerresolves               r&   r   Curl.setopt   s;    :: 
 "%%v%&?@
 J*$<ggj0Gw(((nnU+G!(!!

G1133F3F w)))nnU+G")!!

G22C4G4G w,,,nnU+G!(!!$**g.C.CSEWEWX&&Fw---nnU+G")!!

G22C4F4F ''Fw,,,}.nnU+G!(!!$**g.C.CSEWEWX&&F7"%%%
 NNNN((((OONNOO&&..//&&%%&&,,!  <<**511f6M 55e<C#ll3xl@G#llnG+++$+!%(<VH&EFFW''' # 5 5dmmV L  ''

FMMJCw*** %&)&;&;'''# !& ''

F<O<OPCw& gs++%nn.G # 5 5dmmW M ! ''

FMMJC''

FDC#x7W^^# $D
r%   c                   SSSSSSS.n[         R                  [        [        [        [        [        S.nUS-  nU R
                  c  US:X  a  g	X4   " 5       $ [         R                  " X$   5      n[        R                  " U R
                  X5      nU R                  US
U5        US:X  a  [        US   5      $ US   [         R                  :X  a  g	X4   " US   5      $ )zWrapper for ``curl_easy_getinfo``. Gets information in response after
curl.perform.

Parameters:
    option: option to get info of, using constants from ``CurlInfo`` enum

Returns:
    value retrieved from last perform.
zchar**r   zdouble*zstruct curl_slist **r   )   i    i  0   @ i  P i  ` i   r   r%   getinfor   r   )r   r   r   floatlistr   r   r   curl_easy_getinfor   r   r   )r/   r   
ret_optionret_cast_optionoption_typer   r   s          r&   r   Curl.getinfoJ  s     , 

 jj
 x'::h&"/11''*12##DJJ@#y&1(" ,,1:!+GAJ77r%   c                T    [         R                  " [        R                  " 5       5      $ )z#Get the underlying libcurl version.)r   r   r   curl_versionr   s    r&   versionCurl.versionw  s    zz#**,--r%   c                    U R                   c  g[        R                  " U R                   UR                  5       [	        U5      5      $ )zSet the browser type to impersonate.

Parameters:
    target: browser to impersonate.
    default_headers: whether to add default headers, like User-Agent.

Returns:
    0 if no error.
r   )r   r   curl_easy_impersonater   r   )r/   targetdefault_headerss      r&   impersonateCurl.impersonate{  s:     ::((JJ_)=
 	
r%   c                   U R                   (       dy  U R                  [        R                  U R                  5      nU R                  US5        U R                  [        R                  U R                  5      nU R                  US5        g g )Nz
set cacertzset proxy cacert)r   r   r   r   r   r   r   r   s     r&   _ensure_cacertCurl._ensure_cacert  sc      ++gnndll;Cc<0++g22DLLACc#56	 !r%   c                   U R                   c  [        S5      eU R                  5         [        R                  " U R                   5      n U R                  US5        U R                  X5        g! U R                  X5        f = f)zWrapper for ``curl_easy_perform``, performs a curl request.

Parameters:
    clear_headers: clear header slist used in this perform
    clear_resolve: clear resolve slist used in this perform

Raises:
    CurlError: if the perform was not successful.
Nz(Cannot perform request on closed handle.perform)r   r(   r  r   curl_easy_performr   clean_handles_and_buffers)r/   clear_headersclear_resolver   s       r&   r  Curl.perform  ss     ::FGG 	 ##DJJ/	Ic9- **=HD**=Hs   
A. .Bc                ^    U R                   c  g[        R                  " U R                   5      $ ru   )r   r   curl_easy_upkeepr   s    r&   upkeepCurl.upkeep  s$    ::##DJJ//r%   c                L   SU l         SU l        SU l        SU l        U(       aS  U R                  [
        R                  :w  a   [        R                  " U R                  5        [
        R                  U l        U(       a  U R                  [
        R                  :w  a   [        R                  " U R                  5        [
        R                  U l	        U R                  [
        R                  :w  a   [        R                  " U R                  5        [
        R                  U l
        gg)zmClean up handles and buffers after ``perform`` and ``close``,
called at the end of ``perform`` and ``close``.N)r   r   r   r   r   r   r   r   r   r   r   )r/   r  r  s      r&   r  Curl.clean_handles_and_buffers  s    
 ""! }}(''6HHDM}}(''6HHDM""chh.''(;(;<"%((D r%   c                    U R                   c  [        S5      e[        R                  " U R                   5      n[	        U R
                  U R                  US9nU$ )zWrapper for ``curl_easy_duphandle``.

This is not a full copy of entire curl object in python. For example, headers
handle is not copied, you have to set them again.zCannot duplicate closed handle.)r   r   r   )r   r(   r   curl_easy_duphandler   r   r   )r/   r   cs      r&   	duphandleCurl.duphandle  sI    
 ::=>>,,TZZ8
DKK
Kr%   c                    SU l         U R                  b0  [        R                  " U R                  5        U R	                  5         [
        R                  U l        g)z8Reset all curl options, wrapper for ``curl_easy_reset``.FN)r   r   r   curl_easy_resetr   r   r   r   r   s    r&   reset
Curl.reset  s=    !::!

+""$r%   c                    [        5       nU HK  nUR                  5       R                  S5      (       d  M)  UR                  USS R	                  5       5        MM     U$ )zExtract ``cookies.SimpleCookie`` from header lines.

Parameters:
    headers: list of headers in bytes.

Returns:
    A parsed cookies.SimpleCookie instance.
s   set-cookie:    N)r   lowerr   loadrg   )r/   headerscookier   s       r&   parse_cookie_headersCurl.parse_cookie_headers  sN      ,~F||~((99F23K..01  r%   c                `    [         R                  U 5      nU(       a  UR                  S5      $ S$ )zLExtract reason phrase, like ``OK``, ``Not Found`` from response status
line.r   r%   )REASON_PHRASE_REmatchgroup)status_linems     r&   get_reason_phraseCurl.get_reason_phrase  s)     "";/qwwqz'C'r%   c                   [         R                  U 5      nU(       d  [        R                  SS4$ UR	                  S5      S:X  a  [        R
                  nO\UR	                  S5      S:X  a  [        R                  nO6UR	                  S5      S:X  a  [        R                  nO[        R                  n[        UR	                  S5      5      nUR	                  S5      nX#U4$ )	zNParse status line.

Returns:
    http_version, status_code, and reason phrase
r   r%   r   z2.0z1.1z1.0r8   r9   )	STATUS_LINE_REr2  r   V1_0r3  V2_0V1_1NONEr   )r4  r5  http_versionstatus_codereasons        r&   parse_status_lineCurl.parse_status_line  s       -"''C//771:*//LWWQZ5 *//LWWQZ5 *//L*//L!''!*o&00r%   c                >   U R                  5         U R                  (       a'  [        R                  " U R                  5        SU l        [        R
                  " U R                  5        U R                  b(  [        R
                  " U R                  5        SU l        gg)zAClose and cleanup curl handle, wrapper for ``curl_easy_cleanup``.N)r  r   r   curl_easy_cleanupr   releaser   r   r   s    r&   r   
Curl.close  sk    &&(::!!$**-DJD&&'+KK,,-#'D  ,r%   c                p   U R                   c  [        S5      e[        R                  " U R                   U R                  U R
                  U R                  U R                  5      nU R                  US5        U R                  S   n[        R                  " U R                  5      SU R                  S    U4$ )zReceive a frame from a websocket connection.

Returns:
    a tuple of frame content and curl frame meta struct.

Raises:
    CurlError: if failed.
Nz/Cannot receive websocket data on closed handle.WS_RECVr   )r   r(   r   curl_ws_recvr   r   r   r   r   r   r?   )r/   r   frames      r&   ws_recvCurl.ws_recv  s     ::MNNJJ  %%  !!
 	#y) %%a(zz$../0I$2F2Fq2IJEQQr%   c                   U R                   c  [        S5      e[        R                  " U5      n[        R
                  " U R                   U[        U5      U R                  SU5      nU R                  US5        U R                  S   $ )zSend data to a websocket connection.

Args:
    payload: content to send.
    flags: websocket flag to set for the frame, default: binary.

Returns:
    0 if no error.

Raises:
    CurlError: if failed.
z,Cannot send websocket data on closed handle.r   WS_SEND)	r   r(   r   from_bufferr   curl_ws_sendr   r   r   )r/   payloadr   r?   r   s        r&   ws_sendCurl.ws_send-  sv     ::JKK)JJGd.B.BAu
 	#y)##A&&r%   c                r    [         R                  " SU5      U-   nU R                  U[        R                  S9$ )aC  Close a websocket connection. Shorthand for :meth:`ws_send`
with close code and message. Note that to completely close the connection,
you must close the curl handle after this call with :meth:`close`.

Args:
    code: close code.
    message: close message.

Returns:
    0 if no error.

Raises:
    CurlError: if failed.
z!H)r   )structpackrR  r   CLOSE)r/   r.   messagerQ  s       r&   ws_closeCurl.ws_closeD  s2     ++dD)G3||G:+;+;|<<r%   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )rZ   FN)r   r   r   boolreturnNoner\  r]  )r   r   r1   r   r\  r]  )r   r   r1   r   )r   r   r   r   r\  r   )r   r   r\  zUnion[bytes, int, float, list])r\  bytes)T)r  r   r  r[  r\  r   )TT)r  r[  r  r[  r\  r]  )r\  r   )r\  r   )r,  list[bytes]r\  r   )r4  r_  r\  r_  )r4  r_  r\  z"tuple[CurlHttpVersion, int, bytes])r\  ztuple[bytes, CurlWsFrame])rQ  r_  r   r   r\  r   )i  r%   )r.   r   rX  r_  r\  r   )!r   r    r!   r"   r6   r   r-   r   r   r   r   r   r   r   r  r  r  r  r  r  r"  r&  r.  staticmethodr6  rA  r   rK  r   BINARYrR  rY  r$   r   r%   r&   r   r      s     &381
	tl+8Z.
 7I20 AE+!+9=+	+0	! ( ( 1 1,(R0 ;E:K:K '.= =r%   r   c                      \ rS rSrSrSSS jjrSSSSS.           SS jjr\SS j5       rSSS jjr	SS	 jr
SS
 jrSrg)CurlMimeiW  z#Wrapper for the ``curl_mime_`` API.Nc                    U(       a  UO	[        5       U l        [        R                  " U R                  R                  5      U l        g)z'
Args:
    curl: Curl instance to use.
N)r   r   r   curl_mime_init_form)r/   r@   s     r&   r-   CurlMime.__init__Z  s-    
 "Ttv
''

(8(89
r%   )content_typefilename
local_pathrB   c                  [         R                  " U R                  5      n[         R                  " XaR	                  5       5      nUS:w  a  [        S5      eUb5  [         R                  " XbR	                  5       5      nUS:w  a  [        S5      eUb5  [         R                  " XcR	                  5       5      nUS:w  a  [        S5      eU(       a  U(       a  [        S5      eUb  [        U[        5      (       a  [        U5      nO([        U[        5      (       a  UR                  5       nOUn[        U5      R                  5       (       d  [        SU 35      e[         R                  " XhR	                  5       5      nUS:w  a  [        S5      eUbO  [        U[        5      (       d  [        U5      R	                  5       n[         R                   " Xe[#        U5      5      ngg)aM  Add a mime part for a mutlipart html form.

Note: You can only use either local_path or data, not both.

Args:
    name: name of the field.
    content_type: content_type for the field. for example: ``image/png``.
    filename: filename for the server.
    local_path: file to upload on local disk.
    data: file content to upload.
r   zAdd field failed.Nz1Can not use local_path and data at the same time.zFile not found at )r   curl_mime_addpartrg  curl_mime_namer   r(   curl_mime_typecurl_mime_filenamer   r   r   r_  rg   existsFileNotFoundErrorcurl_mime_filedatacurl_mime_datar   )	r/   nameri  rj  rk  rB   partr   local_path_strs	            r&   addpartCurlMime.addpartb  s   ( $$TZZ0  {{}5!8/00 #$$T+>+>+@ACax 344 ((/@ACax 344$OPP !*d++!$ZJ..!+!2!2!4!+'..00'*<^<L(MNN((/D/D/FGCax 344dE**4y'')$$TT;C r%   c                J    U " 5       nU H  nUR                   " S0 UD6  M     U$ )zJCreate a multipart instance from a list of dict, for keys, see ``addpart``r   )rx  )clsfilesformfiles       r&   	from_listCurlMime.from_list  s)     uDLL 4  r%   c                    U(       a  UOU R                   nUR                  [        R                  U R                  5        g)z,Attach the mime instance to a curl instance.N)r   r   r   MIMEPOSTrg  )r/   r@   r!  s      r&   attachCurlMime.attach  s'    Ddjj	!!4::.r%   c                n    [         R                  " U R                  5        [        R                  U l        g)zjClose the mime instance and underlying files. This method must be called
after ``perform`` or ``request``.N)r   curl_mime_freerg  r   r   r   s    r&   r   CurlMime.close  s!     	4::&XX
r%   c                $    U R                  5         g r+   r   r   s    r&   r   CurlMime.__del__  r   r%   )r   rg  r+   )r@   Optional[Curl])ru  r   ri  Optional[str]rj  r  rk  z!Optional[Union[str, bytes, Path]]rB   zOptional[bytes]r\  r]  )r|  z
list[dict])r@   r  r\  r]  r^  )r   r    r!   r"   r6   r-   rx  classmethodr  r  r   r   r$   r   r%   r&   rd  rd  W  s{    -: '+"&8< $;<;< $	;<
  ;< 6;< ;< 
;<z  /
r%   rd  )rA   r   rC   r   r\  r   )F)rR   r_  rS   r[  r\  r   )rA   r   rB   r_  r\  r]  )r\  r`  )9
__future__r   rer   rU  rd   r}   http.cookiesr   pathlibr   typingr   r   r   r	   r
   r   certifi_wrapperr   r   constr   r   r   r   r   utilsr   wherer   compiler1  r9  r   	Exceptionr(   r\   r]   r^   r_   r`   ra   rb   r{   r|   
def_externrG   rT   rn   rs   rw   r   r   r   rd  r   r%   r&   <module>r     s+   " 	   
  %  E E   L L "::;< => 7	 7       ! !   4T>    E= E=P\ \r%   