ÿØÿà JFIF    ÿÛ „ !.%+&8&+/1555$;@;4?.451 4,$,44444444444414444444444444444444444444444444444444ÿÀ  á á" ÿÄ     ÿÄ ?    !1AQaq"2‘¡±ÁðBRbrÑá#‚’¢²3S CñÿÄ   ÿÄ !    !1QAa‘2ÿÚ   ? 5˜Z¯V¦cø)›t/? z¨±>Õ5€¶‹Á¤·¼z¼Ü¬+ñ®v¤¨_ˆR­BFn©—˜ý®ç̝P8gýt·ÉSTŦˆìät?þé¼íìN/Þa)ì–í6ô… Ï¿øÃj´¿KÇü]ÿ ªô¹-eKànëÕHTx}ýSÜ›ÿ ”7Ø×&µ<¦  ¥ÑO¶[Ù¯ä¨ÞÃÿ PZ-¬;#õ|•oaÿ ©CìÞz3˜öː/¤­ñTûIØ}š^ mÓ%ªxˆ¥ÉŸu=Z+ISe¿45™¼u;ú&WØ÷€æßQ™®{|íx*TC“#ZŠìZ§²‹ 6pv…³¿¡äª*áZÐ%ÒOáˆo"x«OHk w±æ+¬V(kMúŸ5Vö«$ ÁrÏbàb57/luR ¸ÑÛj Òµì`Мq­û žICÀÊ•©4€Âcà¨Ï€O´<èÐ:›ù(Ë^L8þ‘ÍÌ#¸Ð_Ì©ÙK(Öz 4¬û+¸;ü’V’84‘¬ÃŽ:[â‡ÔÌáõp¢~§ªlæ£ö{®G>J¼"°‡7¯ÆÉèßû ‹É‹§ÁòÃýâßî ^ƾÙõ‹×óH#«LP½ïX=xÑÍ$|W?•~• îëÔ©ª‹ {ÝT…Kÿ ”hûâá)J*ö˜–ÔU;iÇ€/ ÆþjóZ\ýwØ=Ìm ºèËL9 ýèÆð/¨’¥öo=nË.%Îì ŽÕ¯È|{Oj²ƒE6e/ßdÄõ²Ìâ1O®ò×TsəԸhOMýíMˆ¿¼H˜l²,7Â¥#MF/Úf°Ö½± ¸–dr‹NýÊ íjqx{œÉ ä-È ¦ øÄër¨q°ð †nцýÑÄÆ’mä…n<0È™;ÁÝá¯ÁZƒ7FÀmì­ É&9ˆîéi¶ùN§Y• ÃZãAâ?•‡©‰ , ó¾IŸŠc1 4â&y­&pŠ­6;M À 0¹qç»p.á …ŸÅáK@%6·y6ƒ‰3?”úºŽ‰éX5ªPT §µ!=Mž«Ú½‹ÅgÂSâÉaþÓoö–¯ÁÔìR>5éÿ üs¶ÆUcÌ kÇR ]ÿ ù¬¼«VŽ;Â|‡~¢¦”ÏŰæ {L™Õ°Óv¹ò¸írޡעCÃ!íVÕ {¶»sŒNPg/ "uÕbkm²“$ďå¿é¹§°½æz¯6 †s¿!s–wÚÝ“™Œ °.ûj>·+™Òa…©Œ&rÝÎtÛë긪Ît’LAVp%c Úý[ÄzJ¾ÇàXXç@˜ó<êL]·T˜¾¥1Ó©V‡g´æ½¦Ý@¹óø!_@´ÞâSÁ —S3™•& ]@JHÚý©ZŽ €×æÔr»Áf!‡yÞ4Mv*èÓã_{‘åóUuљØ«Oïé*®EvÑ Œ÷‡U \"㪒ÍK+À 4“M¡ï:0¥5í!'<@î´”>Ç»&Z–ïCCV˜Ì5Šo&îhè.žû |ÓK©h$s6KìŒëã)¹hI¦GïOåóI;ììü#É$Š0…Ææ¥TØ.5­¾gn´ “ÂÖ\:hœ89G)J@„}œ:’Ò{/Š"¦_Æ×7Æ3VÇŠÊa]ÚŒÙ€Ä–=®uÁßâACZƒ§§£ Qnâ:«,×{tyø¬iÛcœÜÄ€H½ÄÍCk´÷šß .W'b¤Íåh]÷€=,Žv×cÚEÚHXJX¶îo¨FÒtèöŸ>ªª6[J®Fµ£sGÁeqõfe\íjÒÐïÄÐGˆe1Ø‹.Ø”‘Ëuø Y­ˆÜ ŽG|zùªüMpDnQWÄ”%JŠ™)â*p@Örš«ÕT2Ð%ˆG#ª„ ·¤!°ŸOTÂT¸aÚ%4&h™LµšØüÐ.F¿²ÐÞ_Ç‚¾ÅÃaÜ÷09Æ q€öy˜v‡85õN÷]¬äѼóS{°_MެúÔ#°Ç¸0åÞè2ëôPcvÆw9®ií1Ä8F™˜à‰´+‰Ik1òÝ7“Ñ×ÒsÝ\x‚h`ÞÑ`ó"|µEcý£n˜h`}GÞ !±ù²Ápü²ß6 0ïi󜵩SÈÇ7˜-ÕURO˜¦´f$ªž-Í6(œ}<„ éc øs]ŽŽ„*—¾ ìdŽ„)méª\¿êÎIg¾ØÞ~I#C/¼¼´EÁÈŽi8“©õådô·>euä ƒ'Ê×लR1ÉJE1ÐAát`t;ÇР%Ý<‡¥„ÍÆ`×Oyó)õiI€ñQaŸ4Ûù\áàaÃÔ¹HÃu¹*k€¦<„e S‡&õÏ B!ŽhüÞ`yj}mªf×\¿ Ç~æ­9‡û\՞Ǖg²1Žû5V7 !àöšm° c`ܬøÇìµÒ'P"?…´Ö,"§^•õލsÔ)6˜sæéÍR¼ ò|Sl”‹7 nPW Gòú÷½§O¯‡„l¡kSÞŒr½PÊ@æ¢pŽ-mÿ #Ÿ˜Àº¶Áä¦;ïÔæ$1££`“Õ>„—·ž)ßð³ñ#Ï Ô$¶œ‰ÊE‹À;÷º ¯«P:Ñ”8–IÊtpÞ3ª“>ê“þës4ò2OÏÕ­±zô†Õ§‰.÷ä¸;¿˜“'œ›žª}«Œ{ª±Ì 9ÔóÞÕ‡0 $íWV3Üì¬ —@kÝ4@¿r¼±½¬™›?øØæ´'Áé®CË3-g$˜ö‡×auÚi´Žp/êÛ æF›Ú2v‹ã¿¿,nB1̨ƃqÞa5͝@&Æû“él÷ \C²½UÍc ¯k×¢U ÖéQå™—-r wô ÞÏ<Ò=&=ÿ Ôê Òêˈt,i—;LîÜ á¸*ÚÃ1$êL•LÍ <É)ýÐà’ ;F™{ƒ™˜€&'}‚ãÄK`¡ÞT@I;®žZóè‚s’7®°›+§O­Åq©é»²9<Ô J ¼9O’HL»Ùïì¸rk¼Ž_ý‘TŸu[²ßÚŒ·ü÷B%¯E ŸÔX5êO´ Ç•€’I0 ÉJX` ñ¹õ%;µŸD‘«´€àwÒ™U ûئžÖö\×®×´8 ½‡ºÐÆÓ§?Àkmœ=;d5*@-ì0F Rªýš[Ü6âö̃ڸr*KA9· u*µæ£?U¸Âêí†8@¦X4 e-ò„0s{ HâUpU?¼mñRa°®a%Ð'tÉ×’\¾ÊÉ]t›h>·(Ë@R¼¡Ãt h}’O÷au<+nT…Ö…MӐ??Óe95 q>í/;&JSû °¯ÊéÞ øƒ*Ã2½Ài&:nôUl=¾¿5eˆ3”ñc|Ú2V”>„»&eE;«ÚäC p¢Û úy 9š[ŒÌx¼擼A&DåÒ¯ˆ¤ÀÌ;"˜ ÏQä¸åhÊ}Ûq«Û0WžÒ|»€ø®öCm5•\ÇÀ§Pe3£]0ÃàLDÉ‰1øªxjgwT‚÷¿LΨK‹›ùs—xˆÜ±µ kæ¸f‰‰ÜGk/LÛØ6d9ò¶ùA{ƒA3š/¬D¬khÓk‰`˜"㯒r¿±Óã jx‡°e}<Ñø\3y:'À•/h½Í€Ç4~g ?Û(¼]v‘ªlKÎâ~?O‚W%{Ì:“'©úNq¾›úo(X’¥¯ˆ nFê{Ç€ü?º'ë ø‹ì Þ09ŒÌç9Æ —ËC`j@ÓÄ(+a‹un¸#ÂꟋ{K`‘ÑÍÍ'à´»/Û,KW;Þ4²þð ï Nm|~fGÏ(…³Ã)«1ö­Õ ¥‡¨©ƒÃ™ü-s=à=U66Ï«Ýc蓦W¹íž®›nÔ%êÇìŒ<#Ü×84ån®Ð ÒåOC` ñânÑs‡¢ç 1õ%Îhì½Ã½® e:ݼUZo™`  ÅZŸŒÊ«ê1ÏÄo$q¹Þ€©ˆhÐÉä¯ñ[!…Ú˜àJ:x2$Íß&PåT£6ç— ‡Í*4Ýšçjÿ ‰É nófÐ ó(L5C•åÆ\rMÒ@ò }y-W}™üýVù—ú¢=Ù”c®‘< M ž ´Phr ¦©TD ‘ù.$´÷O‡‘V2Æò.=IUŒ=ž‡â¬i™aþÓåÙ?òUø'ØÖ•.~* šTŒ!•-×áºTâ®ä#õü'´ eýlYÅÓeÕKÂrT"CÚ@u!Óxƒ{š3€}1¿(r}%«nËamjÑ%ÑNEò v ˜à  σöK³,*º.àzù¨™Ó ÚçâU¦*¿ 9{%Ö¹ njûdaXöb) kÛÆ±ûÓ\°M7ˆÂ=û›ç¿Ã‚­V»Cg–8ÙêE- j)k$º`Ã-ùEýeBÆÇ]c¡°ñty&Òd0nõ'¡W+ƒ*|–øµFa\GQªEAÔp5\Ǽ·¼Ç8·õ -â§Ú[ ‡ uZeÖ 3}×d'+¹:ð+K†Û®s!Ï$úe€<Û”x)1»a­¡LC]¸µík…ÚàA»AYº{†ªS[¦5HÒ7ù --,ísòDØ€èk ÞÀîÜ ò@â( ËNˆë›4ô½•/¦o‡€Û7 ê•ÆêòðÜy'Án½µ á˜ݦ ndeo…[ì¶Ê,¥R³Ä=À±—–ß;£™´ñSâ*g§”ïaið‘Jå~™ÓÞ ß³Õ¢»8x埒²52>AÊb&-÷\7´éÄù€T˜,w;3{ï˜k…à¹ÄqÀ«œ{€\ ˆ¾[´¨јr &Úé„Ívˆ±8†¿]|¬ņ4I×pÞS1ÈÖz‰#Ìv‡G!YNògñ:màTz¢Ý1ô©^O=~ë|5Bã™ç•¼µõ•bÆ@úÕS¬ÈŒ#¬zünrŸ û” Z²•èðV"ÁHÚý©wÝ €7¼Ìu1hÑa3Éä û f$o¿É ™Ú›ÝçnpÒ3äÌ3†Í§,Äï]$‰/pê †«À¼¸e9­Æê_C]žƒ·ý·frÁN«, E=›Çq -‰öŒ:aÏ¿±í&£Í:-} 84‘ÿ eƒQÑeëSsuiA ³g㟥ú£?ÿ ʼn*”“÷aühe:ÊWa@ÒÞk±eØ] F Ô—r.åä˜ @ö¥ªZoÐýYL·¥S²G/‡ñ <~*ZÆ´è>JlòàÛÆ½ÿ 窘ìGN¢:I®KšJp/`íIÁÀõ#Ä-€ö­šµŒoF4|ÆQØÆ@Ì|£Ô…¢À{9˜è½Üó›€ôYÒÎYsið;ís¤€à²ˆ‚4qÉVŒI$ ‰"° æµ8cXGjœˏ¡Aâý•ËÜ¢ûï e·çLx']á"oÅÎê3¯Ç—¹”ó0nå‚âg{Œñ> S´˜îè°g238‚ãköÝfÚd´6Ò€;ò÷±¢™¼›º ¢Æ'¥Ðx'e¬ç ]bÈÆV¢ó‹kýBO ðÊâ$Ÿ!×T 3Mýמ žìٍàÌü‘8÷€àæØ8æ©6‰©L´«…oãpð„~Çk‰!ñ;‹”ÛžÍ àž±z Ÿôû øŸÝužÏ;ÿ #|u6™Þ¬ÚˆÐõA4¶â|ôl|Ê2ŽÇ¤ÝÅÇY.<#Aí.k§hóF‚”Y; M½Ö4hŸ4&›­¿tès´%FìL¥£Ãk‰ÇT¤haÁ¤ÚxfÉ`ÑìË›>i 3t‚:,–+^÷´–{Û–Nxi"x‘Ûg î¨>¥Õ܁ùZH,2Û“:8xÊ¢Çí9.É-Ìâã-=çjwµS˜dütžçwýGòú®®ûº_ˆýx$–¡ãøO EÚÛÏ÷R„×w+3£Á£öUMyR²¹âŒ°š›¸Ñãò9§Ó_Dl+Ùßc›úšGÅÌc†Ž!Ko=¶.‘Îÿ c²(2®V mª.ÿ ¹B›¹å ù„öŸSV>™ü¯$y:G¢Z×àøúdî¹û­·ýÇ´:•c LÍõi_‹ö+ÎæGÊè>OŠ•äž´§Þ{X}¨1ÚTc›»Qþ•êô°t¿OP?eæ~É{5]•ÙR£r5†nZ\ã@ &îJõ ¾àC°þV>fé¥/ü5ñÊIº_é5 ;e­h<@ Ä&æÃëE%;X,ÒãÆÞ`Oò¦kŸm#˜!ÀyÄ¢| óLšò¥Ä` ¶R=|ÈCâh5ò3DˆïF†ðÒ#ÅìÛœ?¸yhBãœí ZxßÎÄhºRK„`Þödvײ™ÀÈÑÒgŒuY w³%†ƒÓzõ ÖÏp‚dH®¦A´ù§»ÓÇMæ~)ˆð‡û:ù&Ä •vGD´À n ݇¼Ö8Fö óáà£~Ë¥x`oK|Ä?fxiØü%pìR>éò+Û±éÎ>núlFŤ'tq8LZÏvÃ?„¡ß±È⽆¯³íü@x|PöUäèØã¡ð‚ŒAìÏ"vÍwóŸÍ{ ý0.z È•Ö{,N¡£¡ŸKÕÙž>Ýœþ ÍÀ°<×EA!Å‚D™IúOÍ¡>ôG}Â` ÍßkÜL™Ž Þð™ {IøF²¹òQ3&!ÃÂÞz.d&Ï-sH¸,Ôõ˜ŽP€ 77ˆÝ¼ÊëÜw =cÕ Ú,ØÐ5ÎYÐ)ì´öœgŒ[¤ßv㙑8心>h]§µháYš£²ºÑ.{Ï7Sð•?´~×SÃKýJÛ˜ ™Íäiúu<µX¶1õ^kâçIÑ£sZ4h>j*ÔšD:4­¿_ ÷¸ Õxæÿ ¸?Mù _•­ÊÐ ä ÷ý ÑwL œ­ïnTkÛUÍN©ë:¦fV ¶ÜÔÜMªÅâA½–¿R×TXš-%iTÊT•‡Ù‚JôϐZxWÑè‰f‰òG º ×Õû2aZ7OU3[“×AT–ÞŒ…-‘¤”Ì ì&(ˆ¿­•ƒkï’:ðY¦W‘ Å)“†‘˜³Åtcø˜ñTÂwÚÇ4|üLÇªí–v- qˆèU qPE.†â‘˜µ Æ,ÐÅs]8¾„oúÑ i>ÜxxÈó)ƒ ´æÁâØ$À‰vžŸf$Ž |ãw;ÀÁIJ»b` {¦Ó¤Ú$©YÀ‘n@Óïž«9J¼êG m¤ ܯ¹ÌW4€ÐÒÅÛ‡#褕Ÿn-?í|с¥÷Ú¹¬'´ÞÜ9ÓK `hê£SÄSà?7—Wí_´…óB›»:=Ãïq`<8ñÓŒÑlú2d¬ê³£hÖ[l|$vÝro~'R®‰§°ñmY ͧäP |PUª¹·:3Œ[Û{Xÿ ºâ@‚W–Äé u‚ ¯´*=íή.pûÒdt @G‰¬ s¸ ëÉücr ÞæÑ¨Ê@>¤¢Ö±. Þ'¯°ÌME[YéïĵÂCå½ Ué©Áû'Ê9%eÔðNU”ë‘ÌsD3/®+UI˜9h.WC”빓$#:pz:YÓ ¿xž* ³$Í +$kñAŠ‹†¢ Uê>¸)_š¬÷©ßAÂÔb9ÇU ¯¾á•9¯ÏÏ÷O÷¼¼Fähal1‰3Ì[Ïr•´UCksNÐ] R‘¸¥H+§Šé†c©vÖÞ0iÓ76s†î!§=ß ¼~Ô'°Ãmäoäš³ªøi1úÉ)³yV8 CLÄØÁ‘WYïi€H6ÖÑiámø^ÈY´°Ñ7¥Û*—Ñ©L«Qƒï—Ùrÿ ›£Ð*š¸ˆL©ˆ$ˆ ÷¾D§9È®«qbqC)–ˆïv´çñsÑVT­Ø, <àïºÀO«Jý·õ àfPìð .wFšir´þ’2_Y *Æ€x\« ì€9š@ Ž|F⇥ˆkZ@hÖÄ0t¿-<“‹qµ¾*ZL¤Ú)&BJpÓF5=$„at*Zš$’ÑtdûÝRI1 2މ$€$I$#‰SÞ’Hë¬ï;Á$¡t$’`<(ñÇt)$‡Ð.Êf¢X’Kt=Éé$‚ˆªè¢oÝëòI%Rgcª÷ŠyI%¡‰ÿ !ñ)´õ $¤ Ô’IIGÿÙ  jBdZddlmZddlZddlZddlZddlZddlZddlZddl Z ddl m Z ddl m Z ddlmZmZmZmZmZmZmZmZmZmZmZmZddlmZdd lmZmZdd l m!Z!dd l"m#Z#dd l$m%Z%m&Z&dd l'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-ddl.m/Z/ddl0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8ddl9m:Z:m;Z;mZ>m?Z?m@Z@mAZAmBZBmCZCmDZDddlEmEZEddlFmGZGmHZHmIZIddlJmKZKddlLmMZMddlNmOZOmPZPmQZQmRZRmSZSddlTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]ddl^m_Z_m`Z`maZambZbmcZcmdZderddl"meZeeKrddlfmgZgmhZhGdde#Ziy)z.Implementing communication with MySQL servers.) annotationsN)Decimal)IOBase) TYPE_CHECKINGAnyBinaryIODict GeneratorListMappingOptionalSequenceTupleTypeUnion)version)cmd_refresh_verify_optionshandle_read_write_timeout)get_local_infile_filenames)MySQLConnectionAbstract)MySQLAuthenticatorget_auth_plugin) ClientFlag FieldType RefreshOption ServerCmd ServerFlag flag_is_set)MySQLConverter) MySQLCursorMySQLCursorBufferedMySQLCursorBufferedDictMySQLCursorBufferedRawMySQLCursorDictMySQLCursorPreparedMySQLCursorPreparedDictMySQLCursorRaw) ConnectionTimeoutError DatabaseErrorErrorInterfaceError InternalErrorNotSupportedErrorOperationalErrorProgrammingErrorReadTimeoutErrorWriteTimeoutError get_exception)logger) MySQLSocketMySQLTCPSocketMySQLUnixSocket) OTEL_ENABLED)with_context_propagation) EOF_STATUS ERR_STATUSLOCAL_INFILE_STATUS OK_STATUS MySQLProtocol) BinaryProtocolTypeDescriptionType EofPacketType HandShakeType OkPacketType ResultTypeRowTypeStatsPacketType StrOrBytes) get_platform int1store int4storelc_intwarn_ciphersuites_deprecatedwarn_tls_version_deprecated)CMySQLPrepStmt)end_spanrecord_exception_eventc>eZdZdZd7fd Zd8dZd8dZ d9 d:dZd;dZd8dZ d8dZ d8d Z e Z e d< d=d Ze d> d?d Zd@d ZedAd ZdBdZdCdZe dD dEdZe dD dFdZ dG dHdZe dI dJdZd8dZdKdZee dL dMdZe dNdZedOdZdPdZ dQdRdZ!e dSdZ"dTdZ#dUdZ$dVdZ%e dW dXdZ&edYd Z'e'jPdZd!Z'dAd"Z)d[d#Z*e+jXjPd\d$Z, dD d]d%Z-d^d_d&Z.ed`d'Z/ da dbd(Z0d8d)Z1d8d*Z2dcd+Z3ddd,Z4ded-Z5e dQ dfd.Z6 dg dhd/Z7e did0Z8e dj dkd1Z9 dld2Z: dmd3Z; dld4ZxZ?S)nMySQLConnectionzConnection to a MySQL Serverc d|_d|_d|_t|t |_tj|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_d|_d|_i|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_!d|_"d|_#d|_$g|_%d|_&tO|_(|r |jRdi|yy#tT$r|jWd|_wxYw) NFz 127.0.0.1i rTr), _protocol_socket _handshakesuper__init__r _converter_classr get_default _client_flags _sql_mode _time_zone _autocommit_user _password _database_host_port _unix_socket _client_host _client_port_ssl _force_ipv6 _use_unicode _get_warnings_raise_on_warnings _buffered_unread_result_have_next_result_raw_in_transaction_prepared_statements _ssl_active _auth_plugin_krb_service_principal_pool_config_version_query_attrs_supported _columns_desc _mfa_nfactorr_authenticatorconnect Exceptionclose)selfkwargs __class__s K/opt/nydus/tmp/pip-target-mjwu0ny1/lib/python/mysql/connector/connection.pyrZzMySQLConnection.__init__sg26.2 37 6D","8"8":(,)-!&   %  +/!#!"FH !&"&#((-$$)', %*)-!!&+/59#)-!+0#46!"2D2F   &v&   #   s &D::"Ec t}tjjd}|ddk(rd}nd}t t j |dtjd|djtjdd Dcgc] }t |c}|d d }|jj|y cc}w) z&Add the default connection attributes. rGPLv2zGPL-2.0 Commercialarchzmysql-connector-python.r)_pid _platform _source_host _client_name_client_license_client_version_osN) rHrLICENSEsplitstrosgetpidsocket gethostnamejoinVERSION _conn_attrsupdate)rplatformlicense_chunksclient_licensexdefault_conn_attrss r_add_default_conn_attrsz'MySQLConnection._add_default_conn_attrss> ..s3 !  '&N)N $!&)"..04-"xx19M(N9MAQ9M(NOI&  !35 )Os Cc>t|jj}|dtk(r t |d|_|j j|}|d}|jt|tttfr|nd|_ |jj|j|dtj zs|j"s4|j$dk(r t'd|j$dk(r t'd |j(j+d r t'd d |xj,tj zc_n/|j.s#|xj,tj zc_|dtj0zrtj0g|_|dtj4zrd|_tj4g|_|dtj8zrtj8g|_||_y)z'Get the handshake from the MySQL serverNserver_version_originalUnknown capabilitiesmysql_clear_passwordzEClear password authentication is not supported over insecure channels$authentication_openid_connect_clientzEOpenID Connect authentication is not supported over insecure channels verify_certz1SSL is required but the server doesn't support iti)errnoT)bytesrWrecvr;r3rXrVparse_handshake_check_server_version isinstancer bytearray_server_version_character_setset_mysql_versionrSSL is_securerur,rigetr] _ssl_disabled PLUGIN_AUTH client_flagsCLIENT_QUERY_ATTRIBUTESrxMULTI_FACTOR_AUTHENTICATION)rpacket handshakeserver_versions r _do_handshakezMySQLConnection._do_handshakest||((*+ !9 "' 'NN226: "#<=#99.3y*AB   --d.B.BC(:>>9>>$$(>>(,$$(NN(,yy}}]+$G   :>>/ 1 ##   *.. 0  ^ $z'='= =!+!7!7 8D  ^ $z'I'I I*.D '!+!C!C DD  ^ $z'M'M M!+!G!G HD #c|jjds.|jjdrJtjdk(r7|s5t j }t jd||j|jr||jk7r |j}d|_ |jsX|tjzrE|jj|j|j ||j"|d|_ |jj%|j&|j(|j*|j,|j.d |jj1|j|j2|||j4|j6||j"||j|j8| }|j;||tj<zs|r|j?|y) aeAuthenticate with the MySQL server Authentication happens in two parts. We first send a response to the handshake. The MySQL server will then send either an AuthSwitchRequest or an error packet. Raises NotSupportedError when we get the old, insecure password reply back. Raises any error coming from MySQL. authentication_ociauthentication_kerberosntz4MySQL user is empty, OS user: %s will be used for %sF)charsetrT)krb_service_principaloci_config_fileoci_config_profilewebauthn_callbackopenid_token_fileconfig) sockrusername password1 password2 password3databaserr auth_pluginauth_plugin_class conn_attrs) ru startswithrnamegetpassgetuserr4debug _password1rtrrrr{ setup_sslrW server_host _charset_idupdate_plugin_configrv_oci_config_file_oci_config_profile_webauthn_callback_openid_token_file authenticaterX _password2 _password3_auth_plugin_class _handle_okCONNECT_WITH_DB cmd_init_db)rrpasswordrr ssl_optionsrok_pkts r_do_authzMySQLConnection._do_auths&    ( ()= >!!,,-FGGGtO(H LLF!!  ??x4??:H !!|jnn'D    ) )   (() *  $D  00)-)D)D#'#8#8&*&>&>%)%<%<%)%<%<  1 $$11oooooo$$%))"55!2   z999x   X &rcd}|jr*tjdk(rt|j}n,t |j |j|j}|j|j|S)zGet connection based on configuration This method will return the appropriated connection object using the connection parameters. Returns subclass of MySQLBaseSocket. Nposix) unix_socket)hostport force_ipv6) rfrrr7rr6r server_portrjset_connection_timeout_connection_timeout)rconns r_get_connectionzMySQLConnection._get_connectionUsm   G!3"t/?/?@D!%%%%++D ##D$<$<= rc4|j}|j}dx|_|_|jdk(rA|js5t |j|j }|j |_t|_|j|_ |jj|j|j|j|j|j|j |j"|j$|j&|_|j t*j,zr|jj/|jj1d ||_||_|jBstE|jjFdrjtI|jjFjJr@|jjFjK\}}}tM|tO||yyyy#t2$rY}|jj5t7|t8t:fr"t=|j>|j@||d}~wwxYw#||_||_wxYw)zOpen the connection to the MySQL server This method sets up and opens the connection to the MySQL server. Raises on errors. Nauthentication_kerberos_client)rmsgcipher)( read_timeout write_timeoutrurarrget_user_from_credentialsr>rVrrWopen_connectionrrrbrcr]rirr[converter_classrCOMPRESSswitch_to_compressed_moderr}close_connectionrr1r2r)rrrhasattrrcallablerrMrL)rstored_read_timeoutstored_write_timeoutclserrr tls_version_s r_open_connectionz MySQLConnection._open_connectionjs#//#11155D.    @ @!$"3"3T5L5LMC668DJ&++- # 6 LL ( ( *     MM ""    $(#8#8D !!J$7$77 668 LL / / 5!4D !5D "" ))84**112&*\\%6%6%=%=%? "FK ' 4 ( =35#!  LL ) ) +# 02CDE,))I !4D !5D s&CH"" J+AI??JJJc~|jsy |jjy#ttf$rYywxYw)ahShut down connection to MySQL Server. This method closes the socket. It raises no exceptions. Unlike `disconnect()`, `shutdown()` closes the client connection without attempting to send a QUIT command to the server first. Thus, it will not block if the connection is disrupted for some reason such as network failure. N)rWshutdownAttributeErrorr+rs rrzMySQLConnection.shutdowns:||   LL ! ! #&   s *<<c6|jrE|jjr+t|jtjd|j sy |j  |j j trt|jd|_ yd|_ y#ttf$rYXwxYw#t$r"}trt|j|d}~wwxYw#trt|jwwxYw)Nr)_span is_recordingrPsysexc_inforWcmd_quitrr+rr}r8rOrX)rr s rr~zMySQLConnection.closes ::$**113 "4::s||~a/@ A||   MMO % LL ) ) + $$&     &tzz37   $s6 B71C 7C C  C7C22C77C::Dc L|j |jj|jj ||xs||||xs |j |r)|jj |xs |jSdS#t$r} td| d} ~ wwxYw)a4Send a command to the MySQL server This method sends a command with an optional argument. If packet is not None, it will be sent and the argument will be ignored. The packet_number is optional and should usually not be used. Some commands might not result in the MySQL server returning a response. If a command does not return anything, you should set expect_response to False. The _send_cmd method will then return None instead of a MySQL packet. Returns a MySQL packet or None. NMySQL Connection not available) handle_unread_resultrWsendrV make_command_write_timeoutr _read_timeoutrr/) rcommandargument packet_numberrexpect_responsecompressed_packet_numberrrr s r _send_cmdzMySQLConnection._send_cmds6 !!# N LL  ++GV5GxH(4!4!4  # !!,"D$2D2DE    N"#CD# M NsA4B B B# BB#cD|jt|ds tdd} |j|dz }|rB|jj ||xs |j |j|dz }|rB|r, |jj d|xs |j |jj|xs |jS#t$r}td|d}~wwxYw#t$r}|d}~wt$r}td|d}~wwxYw) a4Send data to the MySQL server This method accepts a file-like object and sends its data as is to the MySQL server. If the send_empty_packet is True, it will send an extra empty package (for example when using LOAD LOCAL DATA INFILE). Returns a MySQL packet. readzexpecting a file-like objectrrNr) rr ValueErrorr'rWrrrr/r2rr)r data_filesend_empty_packetrr chunk_sizebufr s r _send_datazMySQLConnection._send_data s+" !!#y&);< <  N..b1C !!}'K8K8K" nnZ"_5   R !!}'K8K8K"||  !C1C1CDD N"#CD# M N%  ! R&'GHcQ Rs<AC+C7 C4# C//C47 DD D DDcttj||_ttj||_y)aHandle the server flags found in MySQL packets This method handles the server flags send by MySQL OK and EOF packets. It, for example, checks whether there exists more result sets or whether there is an ongoing transaction. N)rrMORE_RESULTS_EXISTSrpSTATUS_IN_TRANSrr)rflagss r_handle_server_statusz%MySQLConnection._handle_server_status6s."-Z-K-KU!S*:+E+EuMrc|jS)z'MySQL session has started a transaction)rrrs rin_transactionzMySQLConnection.in_transaction@s###rc|dtk(r1|jj|}|j|d|S|dtk(r t |t d)aHandle a MySQL OK packet This method handles a MySQL OK packet. When the packet is found to be an Error packet, an error will be raised. If the packet is neither an OK or an Error packet, InterfaceError will be raised. Returns a dict() r status_flagzExpected OK packet)r=rVparse_okr5r;r3r,)rrrs rrzMySQLConnection._handle_okEs_ !9 !^^,,V4F  & &vm'< =M !9 "' '122rc|dtk(r1|jj|}|j|d|S|dtk(r t |t d)aHandle a MySQL EOF packet This method handles a MySQL EOF packet. When the packet is found to be an Error packet, an error will be raised. If the packet is neither and OK or an Error packet, InterfaceError will be raised. Returns a dict() rr9zExpected EOF packet)r:rV parse_eofr5r;r3r,)rreofs r _handle_eofzMySQLConnection._handle_eofVs_ !9 "..**62C  & &s='9 :J !9 "' '233rc|j1t|j|_|js"td|js tdtj j |}tj j |jj}tj j|std|dtj j|std|d tj j||std|d|d  tj j|r td |js|js td |js{|jrotj j |j}d} tj j!||g}||k7rd } t| j%|| t)|d} |j+|j-| d|| | j/S#t$r }t|d}~wwxYw#t"$r-}d } t| j%t'||||d}~wwxYw#t0t2f$rYSwxYw#t0$r[ |j4j7d|xs |j8n#t:$r}td|d}~wwxYwtd|ddwxYw#  j/w#t0t2f$rYwwxYwxYw)z'Handle a LOAD DATA INFILE LOCAL requestNzxNo `LOCAL INFILE` statements found in the client's request. Check your request includes valid `LOCAL INFILE` statements.zGot more `LOCAL INFILE` responses than number of `LOCAL INFILE` statements specified in the client's request. Please, report this issue to the development team.zLocation specified by filename z& from client's request does not exist.z' from server's response does not exist.z Filename z8 from the server's response is not the same as filename z from the client's request.z#Use of symbolic link is not allowedKLOAD DATA LOCAL INFILE file request rejected due to restrictions on access.zL{} while loading file `{}` and path `{}` given in allow_local_infile_in_pathzEThe file `{}` is not found in the given allow_local_infile_in_path {}rbTrr*rzFile 'z' could not be read)_local_infile_filenamesr_queryr,rpathabspathpopleftexistssamefileOSErrorislinkr/_allow_local_infile_allow_local_infile_in_pathr* commonpathr+formatropenrr0r~IOError NameErrorrWrrr) rfilenamerr file_namefile_name_from_requestr  infile_pathc_patherr_msgr,s r_handle_load_data_infilez(MySQLConnection._handle_load_data_infilegsI  ' ' /+Edkk+RD (//$S-- 1  GGOOH- !#1M1M1U1U1W!Xww~~45 12H1IJ88  ww~~i( 1)=++  *77##I/EF$ {+##9":;((G 77>>) $"#HI I''0P0P* ''D,L,L''//$*J*JKKF ++[),DE$4$GNN9k$JKK Y-I?? 4}M !a * c ) *  5%NN3s8Y D  BY'   T R !!}'K8K8K"" R&'GHcQ R 6)4G!HIt S T !Y'  s2I !I(.J6?J! I%I  I%( J1(JJ!J32J36 L+K,+L, L5 LLLLML0/M0M?MMMc6|rt|dkr td|dtk(r|j|S|dtk(r&|ddj }|j |||S|dtk(r|j|S|dtk(r t||jj|}|rt|ts tddg|z|_t!d|D]\}|jj#|j$j'|xs |j(|j*|j|<^|j|j$j'|xs |j(}d|_|j|dS) aHandle a MySQL Result This method handles a MySQL result, for example, after sending the query command. OK and EOF packets will be handled and returned. If the packet is an Error packet, an Error-exception will be raised. The dictionary returned of: - columns: column information - eof: the EOF-packet information Returns a dict() rEmpty responseNzIllegal result setrT)columnsr=)lenr,r=rr<decoderXr:r>r;r3rVparse_column_countrintryrange parse_columnrWrrpython_charset unread_result)rrrrrR column_countir=s r_handle_resultzMySQLConnection._handle_results(Vq !12 2 !9 !??6* * !9+ +abz((*H00<W W !9 "##F+ + !9 "' '~~88@ :lC#@ !56 6  q,'A$(NN$?$? !!,"D$2D2DE##%D  q !( t||001SASASTU!--c::rc r|jdd}|jd||||\}}|r|d|fSd|fS)aTGet the next rows returned by the MySQL server This method gets one row from the result set after sending, for example, the query command. The result is a tuple consisting of the row and the EOF packet. If no row was available in the result set, the row data will be None. Returns a tuple. rNr)countbinaryr\rawrr)rget_rows) rrjr\rk prep_stmtrrrowsr=s rget_rowzMySQLConnection.get_rowsW"zz.$7 mm% $ s GS> !c{rc | |j}|js tdgdf} |jdd}|rK|j} | dk(rd} |j j |j||| |xs |j}n@|j j|j|j||xs |j}|\}} |sR|sP|jD|rBt|dr6|jj} |D cgc]} | | |j}} | $|j!d| vr| dn| d d|_|| fS#t$r} d|_| d} ~ wwxYwcc} w) aGet all rows returned by the MySQL server This method gets all rows returned by the MySQL server after sending, for example, the query command. The result is a tuple consisting of a list of rows and the EOF packet. Returns a tuple() NzNo result set availablerutf8mb4utf8F converterr9 server_status)rqrdr-rrrVread_binary_resultrWrread_text_resultrr+ryrrs row_to_pythonr5)rrirjr\rkrmrrnrrr eof_prwrows rrlzMySQLConnection.get_rowss$ ;))C!! 9: :Dz !::nd;L,,i'$G~~88LL 6D$6$6 ~~66LL(( 6D$6$6  e3"".k* NN88MFJKdsM#t'9'9:dDK    & & E)m$?+  "'D U{- !&D I LsBE E' E$ EE$c>|jr|jyy)zConsume resultsN)rdrlrs rconsume_resultszMySQLConnection.consume_results_s    MMO rc~|j|jtj|j dS)zChange the current database This method changes the current (default) database by sending the INIT_DB command. The result is a dictionary containing the OK packet information. Returns a dict() utf-8)rr%rINIT_DBencode)rrs rrzMySQLConnection.cmd_init_dbds2 NN9,,hoog.F G  rc  t|ts,t|tr|jd}t|}||_d|_|j dk7r |j nd}t}|js'|jrtjdt|jtjzrcg}g} g} dgt|jdzdzz} t!|jj#D]2\} } | d }d}|K| | dzxxd | dzzzcc<| j%t't(j*t'|z[t|t,r2|j.j1|\}}}| j%|n6t|trI|j|}| j%t3t||zt(j4}nt|t6r8| j%t3t||zt(j4}nt|t8rh| j%t3tt|j|t|j|zt(j:}nt|t<r6| j%t?j@d |t(jB}nt|tDjDtDjFfr0|j.jI|\}}| j%|n}t|tDjJtDjLfr0|j.jO|\}}| j%|n#tQd |jRjTd | j%t'|t'|z| dj|}|j%t3t||z5|jWt3t|j|jWt3d | r|jWd jY| Dcgc]}t?j@d|c}t'd zt[| |D]'\}}|jW||jW|)| D]}|jW||jW|t7|} |j]dd}|j]dd}|j_|jatbjd|||||}|Scc}w#tP$r1}|jfdk(rd|jhvrd}tk||d}~wwxYw)Nr}rqrr->-D-D-F#GZ"1 =+qS1W~=+LL9>>!:Yu=M!MNeS) ==eD "MM&)s+!LL1EMM&U"4u"<=!*!1!1Ju-MM&U"4u"<=!*!1!1Jw/MMs3u:#4#4W#=>?e*++G45"+!2!2Ju-MM&++dE":;!*!1!1J(9(98=='IJ??F"MM&)(:(:HMM'JK+/>>+M+Me+T(VZMM&)*!OO445Y@ Yz2Yu5EEF!!}++G4 VCI.56]$Hb MM&T%6%6!78 9 MM&) $ HH{K{fkk#s3{KLl#$'ue#4KE4MM%(MM$'$5$EMM%($  ef  !::nd;L"JJ=M((OO!-"/   F$ EL4  yyD %E%P1$G,#5  s$V AV"" W+,WWc+K|jdd}|jdd}t}t|ts,t|tr|j d}t|}|j t jzr4|jtd|jtd|j|t|}|j|jtj||||||jr[|j!|j|j"j%|xs |j&|||jrZyyw) atSend one or more statements to the MySQL server Similar to the cmd_query method, but instead returns a generator object to iterate through results. It sends the statements to the MySQL server and through the iterator you can get the results. statement = 'SELECT 1; INSERT INTO t1 VALUES (); SELECT 2' for result in cnx.cmd_query(statement, iterate=True): if 'columns' in result: columns = result['columns'] rows = cnx.get_rows() else: # do something useful with INSERT result Returns a generator. rNrrrrrr)r)rrrrrr]rrrrKrrgr%rrrprrWrr)r statementsrrrrrs rcmd_query_iterzMySQLConnection.cmd_query_iters?,zz.$7  ?D9 *i0*c*'..v6 ":.J    B B B MM&) $ MM&) $ j!f !! NN)+      $$  % % '%% !!|/Qt?Q?Q!R $$s E3E86E8c|tjtjztjztjztj ztj zzs tdd}|tjzr|jd}|tjzr|jd}|tjzr|jd}|tjzr|jd}|tj zr|jd}|tj zr"|j|jdkrdnd }|S) NzInvalid command REFRESH optionzFLUSH PRIVILEGESz FLUSH LOGSz FLUSH TABLESz,TRUNCATE TABLE performance_schema.host_cachez FLUSH STATUS)rrz RESET SLAVEz RESET REPLICA) rGRANTLOGTABLESHOSTSTATUSREPLICAr+rr)roptionsress r cmd_refreshzMySQLConnection.cmd_refresh(s5    "" #   !""  # ##  $ => > ](( (..!34C ]&& &...C ])) )..0C ]'' '..!OPC ])) )..0C ]** *..!%!5!5 !B C rc|j|jjtj} |j j |dd|j|S#t$r }Yd}~|Sd}~wwxYw)aClose the current connection with the server This method sends the `QUIT` command to the MySQL server, closing the current connection. Since there is no response from the MySQL server, the packet that was sent is returned. Returns a str() rN) rrVrrQUITrWrrr2)rrr s rrzMySQLConnection.cmd_quitFsl !!#,,Y^^<  LL  faD,?,? @ !    s(A%% A94A9c&|jdy)zShut down the MySQL Server This method sends the SHUTDOWN command to the MySQL server. The `shutdown_type` is not used, and it's kept for backward compatibility. SHUTDOWNN)r)r shutdown_types r cmd_shutdownzMySQLConnection.cmd_shutdownXs z"rc@|j|jjtj}|j j |dd|j|jj|j j|jS)zSend the statistics command to the MySQL Server This method sends the STATISTICS command to the MySQL server. The result is a dictionary with various statistical information. Returns a dict() r) rrVrr STATISTICSrWrrparse_statisticsrrrrs rcmd_statisticszMySQLConnection.cmd_statistics`sr !!#,,Y-A-AB &!Q(;(;<~~..t||/@/@ASAS/TUUrc`t|ts td|jd|S)zKill a MySQL process This method send the PROCESS_KILL command to the server along with the process ID. The result is a dictionary with the OK packet information. zMySQL PID must be intzKILL )rr`r+r)r mysql_pids rcmd_process_killz MySQLConnection.cmd_process_killos0)S)45 5~~i[122rc^|j|jtjS)aFSend the DEBUG command This method sends the DEBUG command to the MySQL server, which requires the MySQL user to have SUPER privilege. The output will go to the MySQL server error log and the result of this method is a dictionary with EOF packet information. Returns a dict() )r>r%rDEBUGrs r cmd_debugzMySQLConnection.cmd_debugzs"y ?@@rc^|j|jtjS)aSend the PING command This method sends the PING command to the MySQL server. It is used to check if the the connection is still valid. The result of this method is dictionary with OK packet information. Returns a dict() )rr%rPINGrs rcmd_pingzMySQLConnection.cmd_pings t~~inn=>>rc  |2t|ts td|dkr td||_d|_||_||_||_||_||_ |jr ||jk7r|j|_|j|jr td|r||_ | r| |_| |_|j j#|j|j|jd|j j%|j&|j(|j |j |j|j||j|j*|j,|j.|j0d|j2|j4 } |j*t6j8zs|r|j;||j=|j?| S) zChange the current logged in user This method allows to change the current logged in user information. The result is a dictionary with OK packet information. Returns a dict() zcharset must be an integerrz2charset should be either zero or a postive integerrz-Change user is not supported with compression)rrrrT)rrrrrrrrrrrris_change_user_requestrr) rr`r+rrzrarbrrrr _compressr.rrrr{rrrWrXr]rurrrrrrr_post_connectionr) rrrrrrrrrrrrs rcmd_change_userzMySQLConnection.cmd_change_users.  gs+ !=>>{ !UVV&D  !### ??x4??:!__DN !!# >>#$ST T $3D ! &7D ##5  00#'#8#8&*&>&>%)%<%< 1 $$11ooZZnnoooo$$++))"55''#'++--2 $""Z%?%??X   X & v&&rc*|jddS)zGet the current databasezSELECT DATABASE()r) info_queryrs rrzMySQLConnection.databases23A66rc&|j|y)zSet the current databaseN)rrrs rrzMySQLConnection.databases rcD |jy#t$rYywxYw)a2Reports whether the connection to MySQL Server is available This method checks whether the connection to MySQL is available. It is similar to ping(), but unlike the ping()-method, either True or False is returned and no exception is raised. Returns True or False. FT)rr+rs r is_connectedzMySQLConnection.is_connecteds)  MMO  s  c||_y)zySet the path that user can upload files. Args: path (str): Path that user can upload files. N)rL)rrDs rset_allow_local_infile_in_pathz.MySQLConnection.set_allow_local_infile_in_paths ,0(rcb||_|jr|jj|yyN)rkrs set_unicoders r use_unicodezMySQLConnection.use_unicodes(! >> NN & &u - rc |js td|js |j|j|j |j |j|j|j|j|j|j|j |j!}|r/|j#D]\}}|j%d|d|f|r/|j#D]\}}|j%d|d|f|j'y#t$r|jYwxYw)aClears the current active session This method resets the session state, if the MySQL server is 5.7.3 or later active session will be reset without re-authenticating. For other server versions session will be reset by re-authenticating. It is possible to provide a sequence of variables and their values to be set after clearing the session. This is possible for both user defined variables and session variables. This method takes two arguments user_variables and session_variables which are dictionaries. Raises OperationalError if not connected, InternalError if there are unread results and InterfaceError on errors. zMySQL Connection not available.zSET @`z` = %sz SET SESSION `N)rr/cmd_reset_connectionrrarbrcrrrrrrrr0 reconnectcursorrexecuter~)ruser_variablessession_variablescurkeyrs r reset_sessionzMySQLConnection.reset_sessions (  ""#DE E((* !$$JJNNNN$$OOOOOO)),,++ kkm ,224 U fSE05(;5 /557 U mC57%B8 $ !  !sA>D..E  E c |jy#t$r,}|r|j||n td|Yd}~yd}~wwxYw)aCheck availability of the MySQL server When reconnect is set to True, one or more attempts are made to try to reconnect to the MySQL server using the reconnect()-method. delay is the number of seconds to wait between each retry. When the connection is not available, an InterfaceError is raised. Use the is_connected()-method if you just want to check the connection without raising an error. Raises InterfaceError on errors. )attemptsdelayz$Connection to MySQL is not availableN)rr+rr,)rrrrr s rpingzMySQLConnection.ping?sJ V MMO V>$%KLRUU? Vs A"AAcR|jr|jjdSy)zMySQL connection IDserver_threadidN)rXrrs r connection_idzMySQLConnection.connection_idUs$ ????&&'89 9rc |j|js td| t|tr|dkr t d| t|tr|dkr t d|%t |ts td||||S||n |j}||n |j}d}|dur|dz}|dur|d z}|dur|d z}|dur|d z}ttttttt t"d } | ||||S#t$$rMd } t'ddj)t+d D cgc]} |d| zzdk7s| | ncc} wc} zdwxYw)aDInstantiates and returns a cursor By default, MySQLCursor is returned. Depending on the options while connecting, a buffered and/or raw cursor is instantiated instead. Also depending upon the cursor options, rows can be returned as a dictionary or a tuple. Dictionary based cursors are available with buffered output but not raw. It is possible to also give a custom cursor through the cursor_class parameter, but it needs to be a subclass of mysql.connector.cursor.MySQLCursor. Raises ProgrammingError when cursor_class is not a subclass of MySQLCursor. Raises ValueError when cursor is not available. Raises InterfaceError when read_timeout or write_timeout is not a positive integer. Returns a cursor-object rNrz.Option read_timeout must be a positive integerz/Option write_timeout must be a positive integerz0Cursor class needs be to subclass of MySQLCursorTrrr))rrrrrr[r))rrk dictionarypreparedz*Cursor not available with given criteria: z, )rrr/rr`r, issubclassr!r0rnrqr"r(r$r%r#r&r'KeyErrorr+rra) rrrkr cursor_classrrr cursor_typerargsrfs rrzMySQLConnection.cursor\s> !!#  ""#CD D  #<-1A !QR R  $=#.-!2C !RS S  #lK8&F!$ mD D'38_c$)) t  1 K $; 1 K   1 K t  2 K"%&#'   &E+&lMJ J @D<))eAhVh+a:PTU:UT!WhVWX  s D)E,?EEE,c&|jdy)zCommit current transactionCOMMITN)_execute_queryrs rcommitzMySQLConnection.commits H%rc^|jr|j|jdy)zRollback current transactionROLLBACKN)rdrlrrs rrollbackzMySQLConnection.rollbacks"    MMO J'rcF|j|j|y)aExecute a query This method simply calls cmd_query() after checking for unread result. If there are still unread result, an InterfaceError is raised. Otherwise whatever cmd_query() returns is returned. Returns a dict() N)rr)rrs rrzMySQLConnection._execute_querys !!# urc|jd|j|j}|j||j S)z%Send a query which only returns 1 rowT)rrr)rrrrfetchone)rrrs rrzMySQLConnection.info_querysE++--  u  rc|dtk(r|jj|S|dtk(r t |t d)a>Handle a MySQL Binary Protocol OK packet This method handles a MySQL Binary Protocol OK packet. When the packet is found to be an Error packet, an error will be raised. If the packet is neither an OK or an Error packet, InterfaceError will be raised. Returns a dict() rzExpected Binary OK packet)r=rVparse_binary_prepare_okr;r3r,rs r_handle_binary_okz!MySQLConnection._handle_binary_oksH !9 !>>99&A A !9 "' '899rc|rt|dkr td|dtk(r|j|S|dtk(r|j |S|dt k(r t||jj|}|rt|ts tddg|z}td|D]R}|jj|jj|xs |j |j"||<T|j |jj|xs |j }|||fS)aHandle a MySQL Result This method handles a MySQL result, for example, after sending the query command. OK and EOF packets will be handled and returned. If the packet is an Error packet, an Error exception will be raised. The tuple returned by this method consist of: - the number of columns in the result, - a list of tuples with information about the columns, - the EOF packet information as a dictionary. Returns tuple() or dict() rrZzIllegal result set.Nr)r]r,r=rr:r>r;r3rVr_rr`rarbrWrrrc)rrrrer\rfr=s r_handle_binary_resultz%MySQLConnection._handle_binary_results."Vq !12 2 !9 !??6* * !9 "##F+ + !9 "' '~~88@ :lC#@ !67 7*.,)>q,'A44 !!,"D$2D2DE##GAJ( t||001SASASTUgs++rc |jdd}|jdd}|jj||}d|_|j t j |d||d|_y)zFetch a MySQL statement Result Set This method will send the FETCH command to MySQL together with the given statement id and the number of rows to fetch. rNrFr#rrT)rrVmake_stmt_fetchrdr%r STMT_FETCH)r statement_idrnrrrrs rcmd_stmt_fetchzMySQLConnection.cmd_stmt_fetchsrzz.$7  ?D9 // dC"   !%'  "rc |jdd}|jdd}|jtj|||}|j |}g|d<g|d<|ddkDrt d|dD]a}|dj |jj|jj|xs |j|jc|j|jj|xs |j|d dkDrt d|d D]a}|dj |jj|jj|xs |j|jc|j|jj|xs |j|S) zPrepare a MySQL statement This method will send the PREPARE command to MySQL together with the given statement. Returns a dict() rNrrr\ parameters num_paramsr num_columns)rr%r STMT_PREPAREr rarrVrbrWrrrcr>)r statementrrrrrr s rcmd_stmt_preparez MySQLConnection.cmd_stmt_prepare szz.$7  ?D9   " " %'    ''/y!| , ! #1f\23|$++NN// )),*L$:L:LM++4   T\\..|/Qt?Q?QR S - 1 $1f]34y!((NN// )),*L$:L:LM++5   T\\..|/Qt?Q?QR S rc \t|}i}|jdd}|jdd}|rZt|D]L\} } t|| tsd} d|| j v} |j|| || ||| f|| <N|js'|jrtjdt|jtjzrJ|j j#||t%||||j&|j(|j*} n?|j j#||t%||||j&|j* } |j-t.j0| || } |j3| |}|S#t $rY=wxYw) z"Execute a prepared MySQL statementrNrTbrrr)converter_str_fallback)rrr)listrrrrmodercmd_stmt_send_long_datarxrrrrr]rrrVmake_stmt_executetupler query_attrs_converter_str_fallbackr%r STMT_EXECUTEr )rrdatarr4rlong_data_usedrrparam_idr rjexecute_packetrrs rcmd_stmt_executez MySQLConnection.cmd_stmt_executeNs*% zz.$7  ?D9 (4 !d8nf5!F!$DN,?,?!?00$ X%1&3 117yN8, 5**t/@/@ MMN      B B B!^^==j!   ,, N"^^==j! '+'C'C>N  " "!%'    ++FLA W*sF F+*F+c |jtjt|d|j dd|j ddy)zDeallocate a prepared MySQL statement This method deallocates the prepared statement using the statement_id. Note that the MySQL server does not return anything. FrNrr)r%r STMT_CLOSErJrrrrs rcmd_stmt_closezMySQLConnection.cmd_stmt_closesE   l #!ND9 **_d;  rc vd}d} |j|}|r|jj|||}|jtj |d|j dd|j dd|t|z }|j|}|r|S#t$r} td| d} ~ wwxYw) a.Send data for a column This methods send data for a column (for example BLOB) for statement identified by statement_id. The param_id indicate which parameter the data belongs too. The data argument should be a file-like object. Since MySQL does not send anything back, no error is raised. When the MySQL server is not reachable, an OperationalError is raised. cmd_stmt_send_long_data should be called before cmd_stmt_execute. The total bytes send is returned. Returns int. r(rFrNr)rr#rrr) r'rVprepare_stmt_send_long_datar%rSTMT_SEND_LONG_DATArr]rr/) rrr(r&rr. total_sentr/rr s rr z'MySQLConnection.cmd_stmt_send_long_datas.   N))J'CCC (C11!$)!'ND!A"(**_d"C c#h& ii +  N"#CD# M NsBB B8' B33B8c |j|jtjt ||j dd|j ddy)zReset data for prepared statement sent as long data The result is a dictionary with OK packet information. Returns a dict() rNrr)rr%r STMT_RESETrJrr-s rcmd_stmt_resetzMySQLConnection.cmd_stmt_resetsN  NN$$,'#ZZ=$jj$?   rc |j|jtj|j y#t t f$rYywxYw)zResets the session state without re-authenticating Reset command only works on MySQL server 5.7.3 or later. The result is True for a successful reset otherwise False. Returns bool TF)rr%rRESET_CONNECTIONrr.r/rs rrz$MySQLConnection.cmd_reset_connectionsI  OODNN9+E+EF G  ! ! #!#34  s>AAAcl|jr|jy|jr tdy)z'Check whether there is an unread resultzUnread result foundN)can_consume_resultsr{rdr-rs rrz$MySQLConnection.handle_unread_results1  # #  "    56 6 r)rrreturnNone)r:r;)NNNrNN)r Optional[str]rr<rr<rr`rz:Optional[Dict[str, Optional[Union[str, bool, List[str]]]]]rzOptional[Dict[str, str]]r:bool)r:r5)NrNTrNN)r r`r!Optional[bytes]r"r`rr>r#r=r$r`r Optional[int]rr?r:zOptional[bytearray])FNN) r,rr-r=rr?rr?r:r)r4r`r:r;)r:r=)rrr:rC)rrr:rA)NN)rRrrr?rr?r:rC)rrrr?rr?r:rD)FNNN) rjr=r\Optional[List[DescriptionType]]rkOptional[bool]rmOptional[CMySQLPrepStmt]rrr:z1Tuple[Optional[RowType], Optional[EofPacketType]])NFNNN)rir?rjr=r\r@rkrArmrBrrr:z-Tuple[List[RowType], Optional[EofPacketType]])rrr:rC)FFF) rrGrkr=rr=rr=rrr:rD)rrGrrr:z!Generator[ResultType, None, None])rr`r:rC)r:rr)rr?r:r;)r:rF)rr`r:rC)r:rA)r:rC) rTrTrTNrTrTrTrTrTrT)rrrrrrrr?rrrrrrrrrrrrr:zOptional[OkPacketType])r:r)rrr:r;)rDrr:r;)rr=r:r;)rOptional[Dict[str, Any]]rrCr:r;)Frr)rr=rr`rr`r:r;)r:r?)NNNNNNN)rrArkrArrArzOptional[Type[MySQLCursor]]rrArr?rr?r:r!)rrr:r;)rrr:zOptional[RowType])rrr:zDict[str, int])rrrr?r:EUnion[OkPacketType, Tuple[int, List[DescriptionType], EofPacketType]])r)rr`rnr`rrr:r;)rrrrr:z/Mapping[str, Union[int, List[DescriptionType]]])rUrUr) rr`r&zSequence[BinaryProtocolType]rrr4r`rrr:rD)rr`rrr:r;) rr`r(r`r&rrrr:r`)@r __module__ __qualname____doc__rZrrrrrrr~ disconnectrr%r0r5propertyr7rr>rXrgrorlr{rr9rrrrrrrrrrrrsetterrrrrrrrrrrrrr r rrr*r.r r5rr __classcell__)rs@rrRrRs?&5n6(1$j#'"&"&RV/3LL L L  L P L-L L\*E>N"2J %)"& $()&*'+)N)N")N )N  )N  )N#&)N$)N%)N )N!)NV #(&*'+ *E*E *E$ *E % *E  *E!*EXN$$3"4" '+'+ aa$a% a  a!aF '+'+ /;/;$/;% /;  /;!/;f37".2 1  ,    ;:  $37".2 BBB1 B  B , BB 7B!BH   # www w  w  w w!wr 999 + 9!9v !":$#  V! V 3 A ? !%!"$!#S'S'S' S'  S'  S'S'S'S' S'S' S'!S'j77__   0((//.0.486:/0/4/  /bV,$("#'48%)&*'+P PP! P 2 P # P$P%P Pd&( !:  ;?&,&,+8&, N&,!&,V""" "  "0 +++ 9 +!+Z.0! ??+? ?  ?  ? O??B      &+++ +  + +Z      ( 7rrR)jrG __future__rrrrrrrrdecimalriortypingrrrr r r r r rrrrrTr _decoratingrr _scriptingr abstractsrauthenticationrr constantsrrrrrr conversionr rr!r"r#r$r%r&r'r(errorsr)r*r+r,r-r.r/r0r1r2r3r4networkr5r6r7opentelemetry.constantsr8!opentelemetry.context_propagationr9protocolr:r;r<r=r>rr?r@rArBrCrDrErFrGutilsrHrIrJrKrLrMrNopentelemetry.instrumentationrOrPrRrUrrr]s>5"     N2.?'       AA1G   )Or7-r7r