
    9?h                         % S r SSK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JrJr  SSKJr  SSKJr  SSKJrJrJrJrJr  SS	KJrJrJrJr  SS
KJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(  Sr)\*\+S'    " S S5      r,g)z,Implements the MySQL Client/Server protocol.    N)DecimalDecimalException)AnyDictListOptionalSequenceTupleUnion   )utils)get_auth_plugin)PARAMETER_COUNT_AVAILABLE
ClientFlag	FieldFlag	FieldType	ServerCmd)DatabaseErrorInterfaceErrorProgrammingErrorget_exception)ConnAttrsTypeDescriptionTypeEofPacketTypeHandShakeTypeOkPacketType%ParseValueFromBinaryResultPacketTypesQueryAttrType
SocketTypeStatsPacketType
StrOrBytes!SupportedMysqlBinaryProtocolTypes
   PROTOCOL_VERSIONc                      \ rS rSrSr\S\S\\   S\	4S j5       r
\S\S\\   S\\   S\\   S	\S
\S\\	   S\S\	4S j5       r          SIS\\   S\\   S\\   S\\   S\S\S\S\S
\\   S\\   S	\\   S\	4S jjr\S\S\	4S j5       r\ SJS\S\S\S\4S jj5       r\SKS\S\\	   S\4S jj5       r\SLS\S\S\4S jj5       r         SMS\S\\   S\\   S\\   S\S\S\S
\\   S\\   S	\\   S\	4S jjr\S\	S\4S j5       r\S\	S\\	\4   4S j5       r\S\	S\4S  j5       r\S\	S\\   4S! j5       r\SNS\	S"\S\4S# jj5       rS\	S\4S$ jr \SOS\	S%\S\!4S& jj5       r" SLS'\#S(\\S)4   S*\S\\$\\\	   S)4      \\   4   4S+ jjr%\S\	S,\S\\	\4   4S- j5       r&\S\	S,\S\\	\'4   4S. j5       r(\ SPS\	S\S\\	\)4   4S/ jj5       r*\S\	S0\S\\	\\+\,RZ                  \,RX                  4      4   4S1 j5       r.\S\	S\\	\,R^                  4   4S2 j5       r0 SNS3\$\   S\	S\S\\1S)4   4S4 jjr2  SQS'\#S5\$\   S*\S\S\\$\\1S)4      \\   4   4
S6 jjr3\S\	S\4\\4   4S7 j5       r5\S8\S\\	\\4   4S9 j5       r6\S8\+\,RZ                  \,RX                  4   S\\\4   4S: j5       r7\S8\+\,R^                  \,Rp                  4   S\\\4   4S; j5       r9\S<\S=\S>\	S\4S? j5       r:       SRS\S>\;\<   SA\;\=   SB\SC\\4\\\   4      S\SD\\>   SE\S\4SF jjr?\S\	S\\\	4   4SG j5       r@\S\	S\	4SH j5       rAS@rBg)SMySQLProtocolB   zJImplements MySQL client/server protocol

Create and parses MySQL packets.
client_flagsdatabasereturnc                 j    U [         R                  -  (       a  U(       a  UR                  S5      S-   $ g)z.Prepare database string for handshake responseutf8    )r   CONNECT_WITH_DBencode)r(   r)   s     `/var/www/ev-aguas/ev-aguas-proceso/venv/lib/python3.13/site-packages/mysql/connector/protocol.py_connect_with_dbMySQLProtocol._connect_with_dbH   s+     *444??6*W44    usernamepasswordauth_plugin_classauth_plugin	auth_datassl_enabledc                 4   U(       d  g [        XT5      " UUUUUS9nUR                  5       n	U [        R
                  -  (       a'  [        U	5      n[        R                  " SU5      U	-   nU$ U	S-   nU$ ! [        [        4 a  n
[        SU
 35      U
eSn
A
ff = f)z#Prepare the authentication responser-   )r4   r5   r)   r9   zFailed authentication: N<B)	r   auth_response	TypeErrorr   r   SECURE_CONNECTIONlenstructpack)r(   r4   r5   r)   r6   r7   r8   r9   authplugin_auth_responseerrresplenr<   s                r0   _auth_responseMySQLProtocol._auth_responseO   s     	K";B!!!'D $(#5#5#7  *666./G"KKg69MMM  17:M >* 	K #:3%!@AsJ	Ks   #A3 3BBBN	handshakecharsetmax_allowed_packet
conn_attrsc                 V   Uc  0 n US   nU	=(       d    US   n	U(       d  Sn UR                  S5      nSn[        U5      n[        R                  " S	U U S
3UUUU5      nUU R                  UUUUUU	UU5      -  nUU R                  Xd5      -  nU[        R                  -  (       a  UU	R                  S5      S-   -  nU[        R                  -  (       a  U
b  UU R                  U
5      -  nU$ ! [         [        4 a  n[        SU S35      SeSnAff = f! [         a    Un Nf = f)z"Make a MySQL Authentication packetNr8   r7   &Handshake misses authentication info ()r3   r,   xxxxxxxxxxxxxxxxxxxxxxz<IIHsxr-   )r=   KeyErrorr   r/   AttributeErrorr?   r@   rA   rF   r1   r   PLUGIN_AUTHCONNECT_ARGSmake_conn_attrs)selfrH   r4   r5   r)   rI   r(   rJ   r9   r7   rK   r6   r8   rD   username_bytesfillerusername_lenpackets                     r0   	make_authMySQLProtocol.make_autht   sk    I	)2;)?I%A=)AK H	&%__V4N
 >*6(<.+
 	$%%	
 		
 	$''??*000k((07::F:222
8Nd**:66FW 8$ 	"8Q?	  	&%N	&s(   C1 D 1DDDD('D(c           	        ^  T  H  nT U   b  M  ST U'   M     [        U 4S jT  5       5      [        T R                  5       5      -   [        T R                  5       5      -   n[        R
                  " SU5      nT  Hv  nU[        R
                  " S[        U5      5      -  nX1R                  S5      -  nU[        R
                  " S[        T U   5      5      -  nUT U   R                  S5      -  nMx     U$ )z Encode the connection attributes c              3   V   >#    U H  n[        U5      [        TU   5      -   v   M!     g 7fN)r?   ).0xrK   s     r0   	<genexpr>0MySQLProtocol.make_conn_attrs.<locals>.<genexpr>   s#     @ZAZ]++Zs   &)r;   r,   )sumr?   keysvaluesr@   rA   r/   )rK   	attr_nameconn_attrs_lenconn_attrs_packets   `   r0   rU   MySQLProtocol.make_conn_attrs   s     $I)$,(*
9% $ @Z@@*//#$%*##%&' 	 #KKn=#IT3y>!BB!1!1&!99T3z)7L3M!NNI!6!=!=f!EE	 $
 ! r3   c                     [         R                  " U5      [         R                  " U5      -   [         R                  " U 5      -   S-   $ )z Make a SSL authentication packets                         r   	int4store	int2store)rI   r(   rJ   s      r0   make_auth_sslMySQLProtocol.make_auth_ssl   sB     OOL)oo012oog&' 	
r3   commandargumentc                 @    [         R                  " U 5      nUb  X!-  nU$ )z(Make a MySQL packet containing a command)r   	int1store)rr   rs   datas      r0   make_commandMySQLProtocol.make_command   s%     w'Dr3   statement_idrowsc                 \    [         R                  " U 5      [         R                  " U5      -   $ )z0Make a MySQL packet with Fetch Statement command)r   rn   )ry   rz   s     r0   make_stmt_fetchMySQLProtocol.make_stmt_fetch   s!     |,ut/DDDr3   c                     US   nU=(       d    US   nU(       d  Sn UR                  S5      n[        U5      n[        R                  " SU S	3[        R                  U5      nXR                  UUUUU
UUU5      -  nXR                  Xd5      -  nU[        R                  " S
U5      -  nU[        R                  -  (       a  XR                  S5      S-   -  nU[        R                  -  (       a  U	b  XR                  U	5      -  nU$ ! [         [        4 a  n[        SU S35      SeSnAff = f! [         a    Un GNf = f)z0Make a MySQL packet with the Change User commandr8   r7   rM   rN   Nr3   r,   r;   rP   <Hr-   )r=   rQ   r   r/   rR   r?   r@   rA   r   CHANGE_USERrF   r1   r   rS   rT   rU   )rV   rH   r4   r5   r)   rI   r(   r9   r7   rK   r6   r8   rD   rW   rY   rZ   s                   r0   make_change_userMySQLProtocol.make_change_user   sb   	)2;)?I%A=)AK H	&%__V4N
 >*b!!!
 	%%	
 		
 	''??&++dG,,*000((07::F:222
8N**:66FS 8$ 	"8Q?	  	&%N	&s(   D
 D2 
D/D**D/2EErZ   c           	         0 n[         R                  " SU SS 5      S   US'   US   [        :w  a  [        SUS    S[         35      e[        R
                  " U SS SS	9u  oS
'   [         R                  " SU SS 5      u  US'   nnUS'   US'   nnUS
   R                  5       US
'   U SS n [        R                  " X4-   5      nSnU[        R                  -  (       a/  U(       a  [        SUS-
  5      OSnU SU nXS n US   S:X  a  USS nU[        R                  -  (       aY  SU ;  a!  US
   R                  S5      (       a  SU soS'   O[        R
                  " U SS	9u  oS'   US   R                  S5      US'   OSUS'   X'-   US'   XaS'   U$ )zParse a MySQL Handshake-packet<xxxxBr      protocolz$Protocol mismatch; server version = z, client version = Nr-   endserver_version_originalz<I8sx2sBH2sBxxxxxxxxxx   server_threadidrI   server_statusr3         z5.5.8r7   utf-8mysql_native_passwordr8   capabilities)r@   unpackr$   r   r   read_stringdecodeintreadr   r>   minrS   
startswith)	rZ   res
auth_data1capabilities1capabilities2auth_data_lengthr   
auth_data2sizes	            r0   parse_handshakeMySQLProtocol.parse_handshake  s     --&1+>qAJz?..6s:6G H$$4#57  271B1B12JG2
.-. MM2F1RLA	
!"	N ),-F)G)N)N)P%&}}]%BC
*6664D3r+a/0"D$JE]F"~"'_
*000f$-F)G)R)R* * 14V,]+/4/@/@W/U,]+!$]!3!:!:7!CC!8C%2K*N
r3   c                     [         R                  " U S5      u  pUS:w  a  [        S5      e[         R                  " U SS9u  pXR	                  S5      4$ )z$Parse a MySQL AuthNextFactor packet.r      z.Failed parsing AuthNextFactor packet (invalid)r-   r   r   )r   read_intr   r   r   )rZ   statusr7   s      r0   parse_auth_next_factor$MySQLProtocol.parse_auth_next_factorS  sR     2Q; !QRR#//GD))'222r3   c                    U S   S:X  d  [        S5      e0 n [        R                  " SU SS 5      S   US'   [        R                  " U SS 5      u  oS'   [        R                  " U 5      u  oS	'   [        R                  " S
U SS 5      u  US'   US'   U SS n U (       a2  [        R
                  " U 5      u  oS'   US   R                  S5      US'   U$ ! [         a  n[        S5      UeSnAff = f)zParse a MySQL OK-packet   r   z#Failed parsing OK packet (invalid).r   r   field_countNaffected_rows	insert_idz<HHstatus_flagwarning_countinfo_msgr   zFailed parsing OK packet.)r   r@   r   r   read_lc_intread_lc_stringr   
ValueError)rZ   	ok_packetrD   s      r0   parse_okMySQLProtocol.parse_ok\  s    ayA~ !FGG		G'-}}Xva{'KA'NIm$161B1B6!":1N.Fo.-2->->v-F*Fk* eVAa[1-(/*ABZF050D0DV0L-*-(1*(=(D(DW(M	*%   	G !<=3F	Gs   B:C 
C/C**C/c                      [         R                  " U SS 5      S   nU$ ! [        R                  [        4 a  n[        S5      UeSnAff = f)z=Parse a MySQL packet with the number of columns in result setr   Nr   zFailed parsing column count)r   r   r@   errorr   r   )rZ   countrD   s      r0   parse_column_count MySQLProtocol.parse_column_counts  sQ    	I%%fQRj1!4ELj) 	I !>?SH	Is     AAAencodingc           	         [         R                  " U SS 5      u  p[         R                  " U 5      u  p[         R                  " U 5      u  p[         R                  " U 5      u  p[         R                  " U 5      u  p[         R                  " U 5      u  p [        R                  " SU 5      u  nnnnnUR                  U5      USSSSU) [        R                  -  UU4	$ ! [        R                   a    [        S5      Sef = f)zParse a MySQL column-packetr   Nz	<xHIBHBxxz!Failed parsing column information)	r   r   r@   r   r   r   r   r   NOT_NULL)rZ   r   _namerI   column_typeflagss          r0   parse_columnMySQLProtocol.parse_column|  s    ((4	((0	((0	((0	++F3((0			P k62 KK!FY'''

 
	
 || 	P !DE4O	Ps   C !C?c                 (   US   S:X  a  U R                  U5      $ Sn0 n [        R                  " SU5      nUS   S:X  a  [        U5      S::  d  [	        U5      eUS	   US
'   US   US'   U$ ! [        R                   a  n[	        U5      UeSnAff = f)zParse a MySQL EOF-packetr   r   zFailed parsing EOF packet.z<xxxBBHHNr      	   r   r      r   )r   r@   r   r   r   r?   )rV   rZ   err_msgr   unpackedrD   s         r0   	parse_eofMySQLProtocol.parse_eof  s    !9>==((.	3}}Z8H s"s6{a'7 ))'{O%a[M
 || 	3 )s2	3s   A, ,B BBwith_headerc                 4   Sn0 nS/nSnU(       a  U SS R                  S5      nOU R                  S5      nU HT  n UR                  SS5       Vs/ sH  owR                  5       PM     snu  pXUR	                  S5      n [        U5      X5'   MV     U$ s  snf ! [         a  n	[        U5      U	eSn	A	ff = f! [        [        4 aQ     [        UR	                  S5      5      X5'    M  ! [         a#  n	[        U S	U S
[        U5       S35      U	eSn	A	ff = ff = f)zParse the statistics packetz)Failed getting COM_STATISTICS informationr3   r   Ns        :r   r   z (:rN   )
splitstripr   r   r   intrQ   r   r   repr)
rZ   r   errmsgr   pairslblpairvvalrD   s
             r0   parse_statisticsMySQLProtocol.parse_statistics  s*    =.0!U12J$$[1ELL-ED6/3zz$/BC/B!GGI/BC
 **W%CSs8  
 D 6$V,#56 j) SS&szz'':;CH' S(F82cU!DI;a)HIsRSSsS   BB)B B6B
B3"B..B36DC&&
D0DDDsockversion.r   c                    Un/ nSnSnSn U(       d  X:X  a   XV4$ UR                  5       n	U	R                  S5      (       a  U	SS /n
UR                  5       n	U	R                  S5      (       a<  U
R                  U	SS 5        UR                  5       n	U	R                  S5      (       a  M<  U
R                  U	SS 5        [        R                  " [        S5      R                  U
5      5      nOAU	S   S:X  a  U	S   S:  a  U R                  U	5      nSnOSn[        R                  " U	SS 5      nUc  Ub  UR                  U5        OUc  Uc  [        U	5      eUS-  nGMS  )	zRead MySQL text result

Reads all or given number of rows from the socket.

Returns a tuple with 2 elements: a list with all rows and
the EOF packet.
Nr   s   r   r3   r      r   )	recvr   appendr   read_lc_string_list	bytearrayjoinr   r   )rV   r   r   r   r   rz   eofrowdatairZ   datass              r0   read_text_resultMySQLProtocol.read_text_result  sZ    aj* y) YY[F  11''88LL,!YY[F ''88 VABZ(33IcN4G4G4NOc!fQi!mnnV,33F12J?{w2G$#F++FA- r3   fieldc                    US   [         R                  :X  a  SnSnOcUS   [         R                  :X  a  SnSnOGUS   [         R                  [         R                  4;   a  SnSnOUS   [         R
                  :X  a  SnSnUS	   [        R                  -  (       a  WR                  5       nU WS
 [        R                  " WU SU 5      S   4$ )z%Parse an integer from a binary packetr   <b<hr   <ir   <qr   r   Nr   )r   TINYSHORTINT24LONGLONGLONGr   UNSIGNEDupperr@   r   )rZ   r   format_lengths       r0   _parse_binary_integer#MySQLProtocol._parse_binary_integer  s    
 8y~~%GF1X(GF1X)//9>>::GF1X+++GF8i(((mmoGvwwq8H!I!!LMMr3   c                     US   [         R                  :X  a  SnSnOSnSnXS [        R                  " X0SU 5      S   4$ )z)Parse a float/double from a binary packetr   r   <dr   z<fNr   )r   DOUBLEr@   r   )rZ   r   r   r   s       r0   _parse_binary_float!MySQLProtocol._parse_binary_float  sN    
 8y'''FGFGwwq8H!I!!LMMr3   c                 j    [         R                  " U 5      u  pU [        UR                  U5      5      4$ )z(Parse a New Decimal from a binary packet)r   r   r   r   )rZ   rI   values      r0   _parse_binary_new_decimal'MySQLProtocol._parse_binary_new_decimal  s/    
  ..v6W 5677r3   
field_typec           
          U S   nSnUS:X  aw  [         R                  " SU SS 5      S   nU S   nU S   nU[        R                  [        R                  4;   a  [
        R
                  " XEUS9nO[
        R                  " XEUS9nOrUS:  al  SnUS	:X  a   [         R                  " S
U SUS-    5      S   n[
        R
                  " [         R                  " SU SS 5      S   U S   U S   U S   U S   U S   US9nXS-   S U4$ )z&Parse a timestamp from a binary packetr   Nr   r   r   r   )yearmonthdayr      <Ir   r      )r  r  r	  hourminutesecondmicrosecond)r@   r   r   DATETIME	TIMESTAMPdatetimedate)rZ   r  r   r  r  r  r	  mcss           r0   _parse_binary_timestamp%MySQLProtocol._parse_binary_timestamp$  s    Q;==va{3A6D1IE)Ci00)2E2EFF ))tcJ 4#Fq[C|mmD&VaZ*@A!D%%]]4!5a8Qi1IAYayayE z|$e,,r3   c                 R   U S   nU(       d  U SS [         R                  " 5       4$ U SUS-    nSnUS:  a  [        R                  " SUSS 5      S   n[        R                  " SUSS 5      S   nUS   S:X  a  US-  n[         R                  " UUS   UUS	   US   S
9nXS-   S U4$ )z'Parse a time value from a binary packetr   r   Nr   r  r   r   r   r  )dayssecondsmicrosecondsminuteshours)r  	timedeltar@   r   )rZ   r   rv   r  r  tmps         r0   _parse_binary_time MySQLProtocol._parse_binary_timeD  s     12J 2 2 455a&1*%A:--d12h/2C}}T4!9-a07a<BJD  GGq'
 z|$c**r3   fieldsc                 P   [        U5      S-   S-   S-  nUSU  Vs/ sH  n[        U5      PM     nnX$S n/ nSn[        U5       GH+  u  pU[        U	S-   S-  5         SU	S-   S-  -  -  (       a  UR                  S5        M>  U
S   [        R
                  [        R                  [        R                  [        R                  [        R                  4;   a&  U R                  X*5      u  p(UR                  U5        M  U
S   [        R                  [        R                  4;   a'  U R                  X*5      u  p(UR                  U5        GM  U
S   [        R                  [        R                  4;   a'  U R!                  X#5      u  p(UR                  U5        GMT  U
S   [        R"                  [        R$                  [        R&                  4;   a*  U R)                  X*S   5      u  p(UR                  U5        GM  U
S   [        R*                  :X  a'  U R-                  U5      u  p(UR                  U5        GM  [.        R0                  " U5      u  p( UR                  UR3                  U5      5        GM.     [7        U5      $ s  snf ! [4         a    UR                  U5         GM_  f = f)z(Parse values from a binary result packetr   r   r   r   Nr   )r?   r   	enumerater   r   r   r   r   r   r   r   r   FLOATr   DECIMAL
NEWDECIMALr  r  DATEr  r  TIMEr   r   r   r   UnicodeDecodeErrortuple)rV   r"  rZ   rI   null_bitmap_lengthr   null_bitmaprg   r  posr   s              r0   _parse_binary_values"MySQLProtocol._parse_binary_values[  sB    "&kAo1a7'-a0B'CD'C!s1v'CD+,#F+JC3a1}-.!a1}2DEd#Qx""  !% : :6 Ie$qi..	@@ $ 8 8 Ge$qi//1E1EFF $ > >v Oe$q""## 
 #'">">vQx"Pe$qY^^+"&"9"9&"Ae$"'"6"6v">)MM%,,w"78A ,H V}S EL * )MM%(()s   J  JJ%$J%columnsc                 .   / nSnSnSn Ub   XV4$ X:X  a   XV4$ UR                  5       n	U	S   S:X  a  U R                  U	5      nSnO U	S   S:X  a  SnU R                  X)SS U5      nUc  Ub  UR                  U5        OUc  Uc  [	        U	5      eUS-  nM  )zgRead MySQL binary protocol result

Reads all or given number of binary resultset rows from the socket.
Nr   r   r   r   r   )r   r   r/  r   r   )
rV   r   r1  r   rI   rz   r   rg   r   rZ   s
             r0   read_binary_result MySQLProtocol.read_binary_result  s      { z { YY[FayCnnV,a22712JP{v1F##F++FA! r3   c                 `   U S   S:X  d  [        S5      e0 n [        R                  " U SS S5      u  oS'   [        R                  " U S5      u  oS'   [        R                  " U S5      u  oS	'   U S
S n [        R                  " U S5      u  oS'   U$ ! [         a  n[        S5      UeSnAff = f)z'Parse a MySQL Binary Protocol OK packetr   r   zFailed parsing Binary OK packetr   Nry   r   num_columns
num_paramsr   r   )r   r   r   r   )rZ   ok_pktrD   s      r0   parse_binary_prepare_ok%MySQLProtocol.parse_binary_prepare_ok  s     ayA~ !BCC	M-2^^F12J-J*F>*,1NN61,E)F=)+0>>&!+D(F<(ABZF.3nnVQ.G+F?+   	M !BCL	Ms   A8B 
B-B((B-r  c                    SnSnU S:  a^  U S:  a  Sn[         R                  nOU S:  a  Sn[         R                  nOU S:  a  Sn[         R                  nOrS	n[         R                  nO_S
nU S::  a  Sn[         R                  nODU S::  a  Sn[         R                  nO+U S::  a  Sn[         R                  nO[         R                  nSn[
        R                  " X05      X4$ )z0Prepare an integer for the MySQL binary protocolNr   ir   i r   i   r   r         r;   i  r   l    r  z<Q)r   r   r   r   r   r@   rA   )r  r  r   r   s       r0   prepare_binary_integer$MySQLProtocol.prepare_binary_integer  s     
19}&^^
&&__
+%&^^
&//
E|&^^
%&__
*$&^^
&//
G+Z??r3   c                 T   [        U [        R                  5      (       a  [        R                  nO;[        U [        R                  5      (       a  [        R
                  nO[        S5      e[        R                  " U R                  5      [        R                  " U R                  5      -   [        R                  " U R                  5      -   n[        U [        R                  5      (       a  U[        R                  " U R                  5      -   [        R                  " U R                  5      -   [        R                  " U R                  5      -   nU R                   S:  a#  U[        R"                  " U R                   5      -  n[        R                  " [%        U5      5      U-   nX!4$ )aK  Prepare a timestamp object for the MySQL binary protocol

This method prepares a timestamp of type datetime.datetime or
datetime.date for sending over the MySQL binary protocol.
A tuple is returned with the prepared value and field type
as elements.

Raises ValueError when the argument value is of invalid type.

Returns a tuple.
z2Argument must a datetime.datetime or datetime.dater   )
isinstancer  r   r  r  r(  r   r   ro   r  ru   r  r	  r  r  r  r  rn   r?   )r  r  packeds      r0   prepare_binary_timestamp&MySQLProtocol.prepare_binary_timestamp  s0    eX..//"++Jx}}--"JQRR OOEJJ'ooekk*+ooeii() 	 eX..////%**-.//%,,/0 //%,,/0    1$%//%*;*;<<V-6##r3   c                    [        U [        R                  [        R                  45      (       d  [	        S5      e[
        R                  nSnSnSn[        U [        R                  5      (       a  U R                  S:  a  Sn[        U R                  S5      u  pV[        US5      u  pxU[        R                  " [        U R                  5      5      [        R                  " U5      -   [        R                  " U5      -   [        R                  " U5      -   -  nU R                  nOU[        R                  " S5      [        R                  " U R                  5      -   [        R                  " U R                   5      -   [        R                  " U R"                  5      -   -  nU R$                  nU(       a  U[        R                  " U5      -  n[        R                  " U5      U-   n[        R                  " ['        U5      5      U-   nXA4$ )aI  Prepare a time object for the MySQL binary protocol

This method prepares a time object of type datetime.timedelta or
datetime.time for sending over the MySQL binary protocol.
A tuple is returned with the prepared value and field type
as elements.

Raises ValueError when the argument value is of invalid type.

Returns a tuple.
z3Argument must a datetime.timedelta or datetime.timer   Nr3   r   i  <   )rA  r  r  timer   r   r)  r  divmodr  r   rn   absru   r  r  r  r  r  r?   )	r  r  negativer  rB  r  	remainderminssecss	            r0   prepare_binary_time!MySQLProtocol.prepare_binary_time  s    %("4"4hmm!DEERSS^^
eX//00zzA~!'t!<U!)R0LTEJJ0//%()//$'( //$'(F $$C"//%**-.//%,,/0 //%,,/0F ##Ceooc**F*V3V-6##r3   	statementparamrv   c                 f    [         R                  " U 5      [         R                  " U5      -   U-   nU$ )z=Prepare long data for prepared statements

Returns a string.
rm   )rP  rQ  rv   rZ   s       r0   prepare_stmt_send_long_data)MySQLProtocol.prepare_stmt_send_long_dataC  s+     "OOI69OORVVr3    
parametersr   long_data_usedquery_attrsconverter_str_fallbackc	           
      <   Sn	S/[        U5      S-   S-  -  n
/ n/ nSn[        U5      n/ nU(       d  UOU[        -   nUS:X  a  SnUc  0 nU(       a=  [        U5      nU H  u  nnUR                  U5        M     S/[        U5      S-   S-  -  n
U(       d  U(       Gao  U[        U5      :w  a  [	        S5      e[        U5       GHE  u  nnSnUcb  U
US-  ==   SUS-  -  -  ss'   UR                  [        R                  " [        R                  5      [        R                  " U5      -   5        Mn  UU;   a1  UU   S   (       a  [        R                  nGO[        R                  nGO[        U[        5      (       a(  U R                  U5      u  nnnUR                  U5        GO[        U[        5      (       aT  UR!                  U5      nUR                  [        R"                  " [        U5      5      U-   5        [        R$                  nGO][        U[&        5      (       aC  UR                  [        R"                  " [        U5      5      U-   5        [        R                  nGO[        U[(        5      (       as  UR                  [        R"                  " [        [        U5      R!                  U5      5      5      [        U5      R!                  U5      -   5        [        R*                  nGO}[        U[,        5      (       a8  UR                  [.        R0                  " S	U5      5        [        R2                  nGO0[        U[4        R4                  [4        R6                  45      (       a&  U R9                  U5      u  nnUR                  U5        O[        U[4        R:                  [4        R<                  45      (       a&  U R?                  U5      u  nnUR                  U5        OU(       a\  [        U5      R!                  U5      nUR                  [        R"                  " [        U5      5      U-   5        [        R                  nO#[A        S
URB                  RD                   S35      eUR                  [        R                  " U5      [        R                  " U5      -   5        U(       d  GM  US-   U:  d  GM  UUU-
     S   R!                  U5      nUR                  [        R"                  " [        U5      5      U-   5        GMH     [        RF                  " U5      [        R                  " U5      -   [        RF                  " U	5      -   nUb  U[        U5      -   nOUnU(       a  Ub  U[        R"                  " U5      -  nUSRI                  U
 Vs/ sH  n[.        R0                  " SU5      PM     sn5      [        R                  " S5      -   -  nSnU H*  nUU-  nUb  US-   U:  a  UUUU-
     -  nOUS-  nUS-  nM,     U H  nUU-  nM
     U$ s  snf )z6Make a MySQL packet with the Statement Execute commandr   r   r   r   r3   utf8mb4r,   zTFailed executing prepared statement: data values does not match number of parametersr   z&MySQL binary protocol can not handle 'z	' objectsBr-   )%r?   r   listr   r   r$  r   ru   r   NULLBLOBSTRINGrA  r   r>  strr/   lc_intVARCHARbytesr   r&  floatr@   rA   r   r  r  rC  r  rG  rN  r   	__class____name__rn   r   )rV   ry   rv   rV  r   rW  rI   rX  rY  iteration_countr-  rg   typesrB  data_lenquery_attr_namesr   attr_valr.  r  _flagsr  r   rZ   parameter_countbitr   a_typea_values                                r0   make_stmt_executeMySQLProtocol.make_stmt_executeN  s    cc$i!m12t9(e6O.OiG!N:D*8H%  +##d)a-A!56K3z?*$2  (o
U=+qS1W~=+LL	7%//&:QQ .(%c*1-%.^^
 &/%5%5
s++
 33E:	"MM&)s++!LL1EMM%,,s5z":U"BC!*!2!2Ju--MM%,,s5z":U"BC!*Jw//MMSU):):7)C%DEe*++G45 "+!2!2Ju--MM&++dE":;!*!1!1J(9(98=='IJJ+/+H+H+O(VZMM&)(:(:HMM'JKK+/+C+CE+J(VZMM&)+J--g6EMM%,,s5z":U"BC!*!1!1J*!OO445Y@  U__Z85??6;RRS;37X#5&sX~6q9@@ID$++ELLT,Cd,JKq .t OOL)ooe$%ooo./ 	 "&[)99O&O&%,,77chh2=>+3S#&+>"# #F E& 
 *qy8+"2583C"DD')
   "'! " ' ?s    X
c                     U S   S:X  d  [        S5      e[        R                  " U SS SS9u  pU (       a  U S   S	:X  a  U SS n UR                  S
5      U 4$ )z&Parse a MySQL AuthSwitchRequest-packetr   r   z'Failed parsing AuthSwitchRequest packetr   Nr-   r   r   r   r,   )r   r   r   r   )rZ   plugin_names     r0   parse_auth_switch_request'MySQLProtocol.parse_auth_switch_request  se     ayC !JKK#//qr
HfRjAoCR[F!!&)611r3   c                 4    U S   S:X  d  [        S5      eU SS $ )z!Parse a MySQL AuthMoreData-packetr   r   z"Failed parsing AuthMoreData packetr   N)r   )rZ   s    r0   parse_auth_more_data"MySQLProtocol.parse_auth_more_data  s'     ayA~ !EFFabzr3   )
NNN-   r      @FNNN)r{  r   r|  r`   )r   )	NNNr{  r   FNNN)r   )T)r,   )r   r   )rU  rU  r   Nr,   NF)Crg  
__module____qualname____firstlineno____doc__staticmethodr   r   ra  rd  r1   r!   boolrF   r   r   r[   rU   r   rp   rw   r|   r   r   r
   r   r   r   r   r   r   r   r   r    r   r   r   r   r   re  r   r   r  r   r  r  r  r  r   r   r/  r3  r   r9  r>  rC  rG  rN  rS  r	   r"   r   r   rr  rv  ry  __static_attributes__rU  r3   r0   r&   r&   B   s   
 s hsm    "":&" 3-" 3-	"
 " " E?" " 
" "N *."&"&",!%).2+/?M*? :&? 3-	?
 3-? ? ?  ? ? c]? ]+? $C=? 
?B !M !e ! !& LV	
	
),	
FI	
		
 	
 c Xe_ 	   Ec E EY E E *."&"&!%).2+/; ; :&; 3-	;
 3-; ; ; ; c]; ]+; $C=; 
;z 1 1- 1 1f 3u 3ucz1B 3 3  <  , I5 IXc] I I 
U 
c 
 
 
@ - (  T _  : HI'').sCx'AD'	tE(5/3./0(=2IJ	K'R NN-N	ucz	N N, NN-N	ue|	N N &,88 #8	ug~	8 8 --- 
uhuX]]H4E4E%EFGG	H- -> +5 +U5(:L:L3L-M + +4 	1_%1 1 	1
 
4c9	:1n ## o&# 	#
 # 
U8#=>?	!
#J  $sCx.  " @c @eE3O.D @ @B &$X]]H$5$556&$	y#~	&$ &$P 0$X''670$	y#~	0$ 0$d "*/	  =?$&;?/3',AA 89A SM	A
 A !c5;&6!78A A m,A !%A 
AF 	2% 	2E#u*4E 	2 	2 U u  r3   r&   )-r  r  r@   decimalr   r   typingr   r   r   r   r	   r
   r   r^   r   authenticationr   	constantsr   r   r   r   r   errorsr   r   r   r   ri  r   r   r   r   r   r   r   r   r    r!   r"   r$   r   __annotations__r&   rU  r3   r0   <module>r     sb   > 3   - D D D  +  S R     # a ar3   