hyb
2026-01-09 4cb426cb3ae31e772a09d4ade5b2f0242aaeefa0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
Ë
Wñúh͒ãóv—dZddlmZddlmZgd¢ZddlZddlZddlZddl    Z    ddl
m Z m Z ddl mZmZddlmZdd    lmZdd
lmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(d d l)m*Z*d d l+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3d dl4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=d dl>m?Z?m@Z@d dlAmBZBmCZCmDZDmEZEmFZFd dlGmHZHmIZId dlmJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUd dlVmWZWmXZXddlYmZZZddl[m\Z\m[Z[ddl]m^Z^erddl_m`Z`maZaejÄdk(ZceGd„d««ZdGd„de «ZeGd„de «ZfGd „d!eW«Zgy)"z+Module gathering all abstract base classes.é)Ú annotations)Úread_option_files)ÚMySQLConnectionAbstractÚMySQLCursorAbstractÚ
ServerInfoN)ÚABCÚabstractmethod)Ú    dataclassÚfield)Ú    signature)Ú TracebackType)Ú TYPE_CHECKINGÚAnyÚAsyncGeneratorÚ    AwaitableÚBinaryIOÚCallableÚClassVarÚDequeÚDictÚ    GeneratorÚIteratorÚListÚMappingÚNoReturnÚOptionalÚSequenceÚTupleÚTypeÚUnionÚcasté)Ú
deprecated)ÚDUPLICATED_IN_LIST_ERRORÚKRB_SERVICE_PRINCIPAL_ERRORÚMYSQL_PY_TYPESÚOPENID_TOKEN_FILE_ERRORÚTLS_V1_3_SUPPORTEDÚTLS_VER_NO_SUPPORTEDÚTLS_VERSION_ERRORÚTLS_VERSION_UNACCEPTABLE_ERROR)    Ú CONN_ATTRS_DNÚDEFAULT_CONFIGURATIONÚDEPRECATED_METHOD_WARNINGÚMYSQL_DEFAULT_CHARSET_ID_57ÚMYSQL_DEFAULT_CHARSET_ID_80ÚOPENSSL_CS_NAMESÚTLS_CIPHER_SUITESÚ TLS_VERSIONSÚ
ClientFlag)ÚMySQLConverterÚMySQLConverterBase)ÚErrorÚInterfaceErrorÚ InternalErrorÚNotSupportedErrorÚProgrammingError)ÚUNACCEPTABLE_TLS_CIPHERSUITESÚUNACCEPTABLE_TLS_VERSIONS) ÚBinaryProtocolTypeÚDescriptionTypeÚ EofPacketTypeÚ HandShakeTypeÚMySQLScriptPartitionÚ OkPacketTypeÚParamsSequenceTypeÚ
ResultTypeÚRowTypeÚStatsPacketTypeÚ
StrOrBytesÚ WarningType)ÚGenericWrapperÚ import_objecté)ÚMySQLAuthenticator)ÚCharsetÚcharsets)Ú MySQLProtocol)ÚMySQLTcpSocketÚMySQLUnixSocketÚposixcó”—eZdZUdZded<ded<ed¬«Zded    <ded
<ded <ded <ded <ded<ded<dZded<dd„Zy)rzˆStores the server information retrieved on the handshake.
 
    Also parses and validates the server version, storing it as a tuple.
    ÚintÚprotocolÚstrÚversionF)ÚinitzTuple[int, ...]Ú version_tupleÚ    thread_idÚcharsetÚ status_flagsÚ auth_pluginÚbytesÚ    auth_dataÚ capabilitiesÚboolÚquery_attrs_is_supportedcó—tjd«}|j|j«}|s t    d«‚t d„|j «ddD««}|dkrt    d|j›d«‚||_y    )
zŒParse and validate server version.
 
        Raises:
            InterfaceError: If parsing fails or MySQL version is not supported.
        z$^(\d{1,2})\.(\d{1,2})\.(\d{1,3})(.*)zFailed parsing MySQL versionc3ó2K—|]}t|«–—Œy­w©N)rU)Ú.0Úvs  úPH:\Change_password\venv_build\Lib\site-packages\mysql/connector/aio/abstracts.pyú    <genexpr>z+ServerInfo.__post_init__.<locals>.<genexpr>žsèø€Ò< 1œ˜AŸÑ<ùs‚ré)érLzMySQL Version 'z' is not supportedN)ÚreÚcompileÚmatchrXr8ÚtupleÚgroupsrZ)ÚselfÚ
version_rerorXs    riÚ __post_init__zServerInfo.__post_init__“s|€ô —Z‘ZРGÓHˆ
Ø× Ñ  §¡Ó.ˆÙÜ Ð!?Ó@Ð @äÑ<¨¯ © «°q¸Ð(;Ô<Ó<ˆØ VÒ Ü  ?°4·<±<°.Ð@RÐ!SÓTÐ TØ$ˆÕóN©ÚreturnÚNone)    Ú__name__Ú
__module__Ú __qualname__Ú__doc__Ú__annotations__r rZrcrt©rurirrsT…ñð
ƒMØ ƒLÙ%*°Ô%6€M?Ó6؃NØ ƒLØÓØÓØÓØÓØ%*ИdÓ*ô%rurc0óœ —eZdZUdZddddddddddddddddiddddddddddededdded    ed
ed dd ddddded ddddddœ/                                                                                                                                                                                                                                                                                                                                                                                    d‡d„Zdˆd„Z            d‰                            dŠd„Zd‹d„ZdŒd„Z    d‹d„Z
d‹d„Z e     d                            dŽd„«Z eedd„««Zedd„«Zedd„«Zed‘d„«Zed’d„«Zedd„«Zej,d“d„«Zedd „«Zej,d”d!„«Zedd"„«Zej,d”d#„«Zdd$„Zd“d%„Zed•d&„«Zej,d–d'„«Zed—d(„«Zej,d˜d)„«Zed•d*„«Zed™d+„«Zed•d,„«Zedšd-„«Z ed•d.„«Z!ed•d/„«Z"e"j,d–d0„«Z"d•d1„Z#d–d2„Z$edd3„«Z%e%j,d“d4„«Z%dd5„Z&d“d6„Z'edd7„«Z(e(j,d›d8„«Z(dd9„Z)d›d:„Z*ed•d;„«Z+e+j,d–d<„«Z+ed•d=„«Z,e,j,d–d>„«Z,ed•d?„«Z-e-j,d–d@„«Z-eddA„«Z.eddB„«Z/ed‘dC„«Z0edœdD„«Z1e1j,ddE„«Z1eddF„«Z2ed‹dG„«Z3edždH„«Z4d‹dI„Z5    dŸ                    d dJ„Z6d¡dK„Z7d¢dL„Z8dˆdM„Z9e:e;jxdN¬O««d£dP„«Z=e:e;jxdQ¬O««d’dR„«Z>ed£dS„«Z?ed’dT„«Z@ed•dU„«ZAed•dV„«ZBe    d¤                            d¥dW„«ZCe:e;jxd¬O««d¦dX„«ZDed‘dY„«ZEeEj,d§dZ„«ZEe:e;jxd¬O««d¨d[„«ZFed©d\„«ZGeGj,d¨d]„«ZGed•d^„«ZHeHj,d–d_„«ZHdªd`„ZId«da„ZJd‹db„ZKd‹dc„ZLd‹dd„ZMd¬de„ZNd­df„ZOd­dg„ZPed‹dh„«ZQd®d¯di„ZRd°dj„ZSed‹dk„«ZTeTZUdleVdm<e                            d±                                                            d²dn„«ZWe            d³                                    d´do„«ZXe                    dµ                                                    d¶dp„«ZYed‹dq„«ZZed‹dr„«Z[            d³                            d·ds„Z\e        dŸ                    d¸dt„«Z]ed•du„«Z^ed¹dv„«Z_e            dº                                            d»dw„«Z`                        d¼dx„Zae    d½                            d¾dy„«Zbe                        d¿dz„«Zce            dÀ                                            dÁd{„«Zde                        dÂd|„«ZeedÂd}„«ZfedÃd~„«Zg                                        dÄd„ZhedÅd€„«ZiedÆdÇd„«ZjedÈd‚„«ZkedÉdƒ„«ZledÊd„„«ZmedËd…„«Zne                                        dÌ                                                                                    dÍd†„«Zoy)Îrz'Defines the MySQL connection interface.NÚz    127.0.0.1iê FÚallow_local_infileÚallow_local_infile_in_pathÚconnect_timeoutÚ read_timeoutÚ write_timeoutTÚ ssl_disabled)/ÚuserÚpasswordÚhostÚportÚdatabaseÚ    password1Ú    password2Ú    password3r\Ú    collationr^Ú client_flagsÚcompressÚconsume_resultsÚ
autocommitÚ    time_zoneÚ
conn_attrsÚsql_modeÚ init_commandÚ get_warningsÚraise_on_warningsÚbufferedÚrawÚkerberos_auth_modeÚkrb_service_principalÚopenid_token_fileÚwebauthn_callbackrr‚Úconverter_classÚconverter_str_fallbackÚconnection_timeoutr„r…Ú unix_socketÚ use_unicodeÚssl_caÚssl_certÚssl_keyÚssl_verify_certÚssl_verify_identityr†Ú tls_versionsÚtls_ciphersuitesÚloopÚoci_config_fileÚoci_config_profilerr c/óz—d|_    ||_||_||_||_||_||_||_||_|#|_    | |_
|!|_ |"|_ ||_ | |_||_||_||_||_||_t)«|_d|_|    |_    |
|_    d|_|*|_|%|_|&|_|'|_|(|_|)|_|+|_ |,|_!| |_"d|_#d|_$d|_%|-xstMjN«|_(| xstSjT«|_+d|_,t[j\«|_/i|_0d|_1g|_2tg«|_4|xstj|_6||_7||_8||_9||_:||_;||_<||_=||_>||_?||_@|$|_Ad|_Bd|_Cd|_D|.|_E    |/|_F    ||_Gd|_Hd|_I    d|_J    |j—«y)NF)LÚ!_MySQLConnectionAbstract__charsetÚ_userÚ    _passwordÚ_hostÚ_portÚ    _databaseÚ
_password1Ú
_password2Ú
_password3Ú _unix_socketÚ_connection_timeoutÚ _read_timeoutÚ_write_timeoutÚ_connection_attrsÚ    _compressÚ_consume_resultsÚ _autocommitÚ
_time_zoneÚ    _sql_modeÚ _init_commandrPÚ    _protocolÚ_socketÚ _charset_nameÚ_charset_collationÚ _ssl_activeÚ _ssl_disabledÚ_ssl_caÚ    _ssl_certÚ_ssl_keyÚ_ssl_verify_certÚ_ssl_verify_identityÚ _tls_versionsÚ_tls_ciphersuitesÚ _auth_pluginÚ_auth_plugin_classÚ_pool_config_versionÚ
_handshakeÚasyncioÚget_event_loopÚ_loopr4Ú get_defaultÚ _client_flagsÚ _server_infoÚweakrefÚWeakSetÚ_cursorsÚ _query_attrsÚ_query_attrs_supportedÚ _columns_descrMÚ_authenticatorr5Ú_converter_classÚ_converter_str_fallbackÚ_kerberos_auth_modeÚ_krb_service_principalÚ_openid_token_fileÚ_allow_local_infileÚ_allow_local_infile_in_pathÚ _get_warningsr™Ú    _bufferedÚ_rawÚ _use_unicodeÚ_have_next_resultÚ_unread_resultÚ_in_transactionÚ_oci_config_fileÚ_oci_config_profileÚ_webauthn_callbackÚ    converterÚ_local_infile_filenamesÚ_queryÚ_validate_connection_options)0rrr‡rˆr‰rŠr‹rŒrrŽr\rr^rr‘r’r“r”r•r–r—r˜r™ršr›rœrržrŸrr‚r r¡r¢r„r…r£r¤r¥r¦r§r¨r©r†rªr«r¬r­r®s0                                                riÚ__init__z MySQLConnectionAbstract.__init__§s]€ðl-1ˆŒð     𠈌
Ø&ˆŒØˆŒ
؈Œ
Ø&ˆŒØ(ˆŒØ(ˆŒØ(ˆŒØ!,ˆÔØ(:ˆÔ Ø,8ˆÔØ-:ˆÔØ1;ˆÔØ'ˆŒØ&5ˆÔØ!+ˆÔØ)2ˆŒØ(0ˆŒØ,8ˆÔÜ(5«ˆŒØIMˆŒ Ø,3ˆÔØCØ1:ˆÔØ@Ø!&ˆÔØ#/ˆÔØ&,ˆŒ Ø(0ˆŒØ'.ˆŒ Ø0?ˆÔØ4GˆÔ!Ø2>ˆÔØ6FˆÔØ+6ˆÔØ15ˆÔØ)-ˆÔ!Ø37ˆŒà Ò ,”G×*Ñ*Ó,ð     Œ
ð#/Ò"J´*×2HÑ2HÓ2JˆÔØ26ˆÔÜ)0¯©Ó):ˆŒ Ø;=ˆÔØ+0ˆÔ#Ø46ˆÔÜ2DÓ2FˆÔØ6EÒ6WÌˆÔØ-CˆÔ$Ø2DˆÔ Ø5JˆÔ#Ø1BˆÔØ);ˆÔ Ø:TˆÔ(Ø#/ˆÔØ'8ˆÔØ'ˆŒØˆŒ    Ø"-ˆÔØ',ˆÔØ$)ˆÔØ%*ˆÔØ/>ˆÔØ-Ø2DˆÔ Øà ð     Ôð48ˆŒà=AˆÔ$ð    (ð(,ˆŒ Ø(à ×)Ñ)Õ+rucƒóbK—|j«s|j«ƒd{–—†|S7Œ­wrf)Úis_socket_connectedÚconnect©rrs riÚ
__aenter__z"MySQLConnectionAbstract.__aenter__6s+èø€Ø×'Ñ'Ô)Ø—,‘,“.×  Ð  Øˆ ð !ús ‚$/¦-§/cƒó@K—|j«ƒd{–—†y7Œ­wrf©Úclose©rrÚexc_typeÚ    exc_valueÚ    tracebacks    riÚ    __aexit__z!MySQLConnectionAbstract.__aexit__;óèø€ð j‰j‹l×Òúó ‚–—cóÜ —|jr     |jj«|_|jrtj
g|_|jr“tjj|j«}|r>tjj|«rtjj|«rtjj|«r td«‚|js |jrtjg|_ntj g|_|j dk(rt#d|j ›d«‚|j$rtj&dk(rd|_|j(r4|j d    k(r t#d
«‚|j d k(r t#d «‚t+|j,t.«s t#d «‚t1|j2|j4|j6g«rŒt9|j6|j4g«s td«‚|j6du|j4duk7r td«‚|j:|j=«|j>|jA«t+|jBtD«s t#d«‚|jBjG«D]µ\}}|tHvrŒt+|tJ«st#d|›d|jB›d«‚tM|«dkDrt#d|›d«‚|jOd«r t#d«‚t+|tJ«st#d|›d|›d«‚tM|«dkDsŒ¥t#d|›d|›d«‚|jPtjRzr|jU«|jVr‚t+|jVtJ«s t#d«‚|jVjY«}|dk(r&tj&dk7r t#d «‚d!|_-n|d"k(rd#|_-n t#d$«‚|j\r”t+|j\tJ«st#t_j`d%¬&««‚|j\d'k(rt#t_j`d(¬&««‚d)|j\vrt#t_j`d*¬&««‚|jbr|jed+|jbd,«|jfr©t+|jftJ«st#tij`d%¬&««‚|jfd'k(rt#tij`d-¬&««‚tjj|jf«st#d.|jf›d/«‚|jj4t+|jjt.«r|jjd0kr t#d1«‚|jl5t+|jlt.«r|jld0kr t#d2«‚yy#t$r}td«|‚d}~wwxYw)3zValidate connection options.z'user' must be a stringNz.allow_local_infile_in_path must be a directoryÚauthentication_webauthn_clientú'z5' cannot be used as the default authentication pluginrSTÚmysql_clear_passwordzFClear password authentication is not supported over insecure  channelsÚ$authentication_openid_connect_clientzEOpenID Connect authentication is not supported over insecure channelsz'TCP/IP port number should be an integerz:ssl_key and ssl_cert need to be both specified, or neitherz4ssl_key and ssl_cert need to be both set, or neitherzconn_attrs must be of type dictz+Attribute name should be a string, found: 'z' in 'é zAttribute name 'z"' exceeds 32 characters limit sizeÚ_zNKey names in connection attributes cannot start with '_', found: '{attr_name}'z Attribute 'z
' value: 'z' must be a string typeiz$' exceeds 1024 characters limit sizez('kerberos_auth_mode' must be of type strÚsspiÚntz6'kerberos_auth_mode=SSPI' is only available on WindowsÚMySQLSSPIKerberosAuthPluginÚgssapiÚMySQLKerberosAuthPluginz@Invalid 'kerberos_auth_mode' mode. Please use 'SSPI' or 'GSSAPI'zis not a string)Úerrorr€zcan not be an empty stringú/zis incorrectly formattedÚwebauth_callbackrLzcannot be an empty stringz
The path 'z1' provided via 'openid_token_file' does not existrz.Option read_timeout must be a positive integerz/Option write_timeout must be a positive integer)7r±ÚstripÚAttributeErrorr¾r4ÚCOMPRESSrrèÚosÚpathÚabspathÚexistsÚisdirÚislinkrçÚ LOCAL_FILESrÑr8r¹ÚnamerÉÚ
isinstancer´rUÚanyrÊrËrÌÚallrÏÚ_validate_tls_versionsrÐÚ_validate_tls_ciphersuitesr½ÚdictÚitemsr,rWÚlenÚ
startswithrÙÚ CONNECT_ARGSÚ_add_default_conn_attrsräÚlowerrÒrår%ÚformatròÚ_validate_callablerær'r»r¼)rrÚerrÚinfile_in_pathÚ    attr_nameÚ
attr_valuerœs      riröz4MySQLConnectionAbstract._validate_connection_optionsCsô€à :Š:ð IØ!ŸZ™Z×-Ñ-Ó/”
ð >Š>Ü!+×!4Ñ!4Р5ˆDÔ à × +Ò +ÜŸW™WŸ_™_¨T×-MÑ-MÓNˆNáÜ—G‘G—N‘N >Ô2ÜŸ™Ÿ ™  nÔ5Ü—7‘7—>‘> .Ô1ä$Ð%UÓVÐVØ × #Ò # t×'GÒ'GÜ!+×!7Ñ!7Р8ˆDÕ ä",×"8Ñ"8Ð!8Р9ˆDÔ ð × Ñ Р@Ò @ܠؐD×%Ñ%Ð&ð'ðóð ð × Ò ¤§¡¨GÒ!3Ø!%ˆDÔ à × Ò Ø× Ñ Ð$:Ò:Ü$ð óðð× Ñ Ð$JÒJÜ$Ø[óðô˜$Ÿ*™*¤cÔ*Ü Ð!JÓKÐ Kä — ‘ ˜dŸn™n¨d¯m©mÐ<Ô =䘟 ™  t§~¡~Ð6Ô7Ü$ØPóðð— ‘  Ð%¨4¯>©>¸TÐ+AÒBÜ$ØJóðð×!Ñ!Ð-Ø×+Ñ+Ô-à×%Ñ%Ð1Ø×/Ñ/Ô1ä˜$×0Ñ0´$Ô7Ü Ð!BÓCÐ Cà%)×%;Ñ%;×%AÑ%AÓ%Cò    Ñ !ˆIzØœMÑ)Øä˜i¬Ô-Ü$ðØ!{ &¨×)?Ñ)?Ð(@ÀðCóðô
9‹~ Ò"Ü$Ø& y kÐ1SÐTóðð×#Ñ# CÔ(Ü$ð0óðô
˜j¬#Ô.Ü$Ø! ) ¨J°z°lðC'ð'óðô
:‹ Ó%Ü$Ø! ) ¨J°z°lðC9ð9óðð9    ðB × Ñ ¤
× 7Ñ 7Ò 7Ø × (Ñ (Ô *à × #Ò #ܘd×6Ñ6¼Ô<Ü$Ð%OÓPÐPØ!%×!9Ñ!9×!?Ñ!?Ó!AÐ Ø! VÒ+Ü—7‘7˜d’?Ü(ØPóðð+HÕ'Ø# xÒ/Ø*CÕ'ä$ØVóðð × &Ò &ܘd×9Ñ9¼3Ô?Ü$Ü/×6Ñ6Ð=NÔOóðð×*Ñ*¨bÒ0Ü$Ü/×6Ñ6Ø:ôóðð
˜$×5Ñ5Ñ5Ü$Ü/×6Ñ6Ð=WÔXóðð × "Ò "Ø × #Ñ #Ð$6¸×8OÑ8OÐQRÔ Sà × "Ò "ܘd×5Ñ5´sÔ;Ü$Ü+×2Ñ2Ð9JÔKóðð×&Ñ&¨"Ò,Ü$Ü+×2Ñ2Ð9TÔUóðô—7‘7—>‘> $×"9Ñ"9Ô:Ü$Ø  ×!8Ñ!8Р9ð:%ð%óðð × Ñ Ð )ܘd×0Ñ0´#Ô6¸$×:LÑ:LÈqÒ:PÜ$Ð%UÓVÐVØ × Ñ Ð *ܘd×1Ñ1´3Ô7¸4×;NÑ;NÐQRÒ;RÜ$Ð%VÓWÐWð<Sð +øôu"ò IÜ$Ð%>Ó?ÀSÐHûð IúsŽYÙ    Y+Ù Y&Ù&Y+c ó—|j«}gd¢}|D]\}}    ||vr||||<||=Œtd i|¤Ž}|jdd«|_|jdd«|_|jdt j««|_|jdt«|_
|j«D]0\}}    t|d
|z}    t|||j««Œ2|j!«y    #t$rYŒôwxYw#t$rtd|›d«d    ‚wxYw#t$rt|||«YŒˆwxYw) anInternal utility to set or update the connection options.
 
        Args:
            **kwargs: For a complete list of possible arguments, see [1].
 
        Raises:
            AttributeError: When provided unsupported connection arguments.
 
        References:
            [1]: https://dev.mysql.com/doc/connector-python/en/connector-python-connectargs.html
        ))Údbr‹)Úusernamer‡)Úpasswdrˆ)rƒr¢)Úread_default_fileÚ option_filesr˜Fr™rr zUnsupported argument 'r    Nr r~)ÚcopyÚKeyErrorrÚpopr˜r™r4rØrr5r r'r-rÚsetattrrrö)    rrÚkwargsÚconfigÚ
compat_mapÚcompatÚ    translateÚkeyÚvalueÚ    attributes             riÚ_set_connection_optionsz/MySQLConnectionAbstract._set_connection_optionsæsh€ð—‘“ˆò
ˆ
ð",ò    Ñ ˆFIð Ø FÑ*Ø(.¨v©F˜9Ñ%ؘ6‘Nð        ô#Ñ, VÑ,ˆð#ŸJ™J ~°uÓ=ˆÔØ!'§¡Ð,?ÀÓ!GˆÔØ"ŸJ™J ~´z×7MÑ7MÓ7OÓPˆÔØ%Ÿz™zÐ*;¼^ÓLˆÔð!Ÿ,™,›.ò        0‰JˆCð PÜ% cÒ*ð˜c™    ˆIð 0ܘ˜i¨¯©«Õ7ð        0ð     ×)Ñ)Õ+øô3ò Ùð ûô ò PÜ$Ð'=¸c¸UÀ!Ð%DÓEÈ4ÐOð Pûô
"ò 0ܘ˜i¨Ö/ð 0ús/žDà   DÃD,Ä    D Ä D ÄD)Ä,EÅEcóÀ—g}|j}t|t«rŒ|jd«r|j    d«st d|›d«‚|ddj d«}|s t d«‚|D]4}|j«j«}|sŒ$|j|«Œ6n8t|ttf«r|Dcgc]}|sŒ|‘Œ    }}nt d    |›d«‚|j€    td
d
n|jd
d
}|jd ¬ «|d }ggg}i}g}    td
tj|«dzD]2}
|j!t"|
«|    j%t&|
«Œ4|D]µ} d| vr9| |    vr5| t&dvr|dj| «Œ+|d j| «Œ@| |vrd|| } | |vr t t)j*d| ¬««‚| t"dvr|dj|| «Œ|d j|| «Œ¨t d| ›d«‚|d s|ds t d«‚|d D]*} | t,dj/«vsŒt1d| ›d«‚|dD]*} | t,dj/«vsŒt1d| ›d«‚dj3|d «dj3|d«g|_y
cc}w)z&Validates the tls_ciphersuites option.ú[ú]z)tls_ciphersuites must be a list, found: 'r    rLéÿÿÿÿú,z6No valid cipher suite found in 'tls_ciphersuites' listzItls_ciphersuites should be a list with one or more ciphersuites. Found: 'NT)Úreverserú-úTLSv1.3r«©ÚlistrCz The value 'z1' in tls_ciphersuites is not a valid cipher suitez:No valid cipher suite found in the 'tls_ciphersuites' listzTLSv1.2zCipher z( when used with TLSv1.2 is unacceptable.z( when used with TLSv1.3 is unacceptable.ú:)rÐr!rWr)ÚendswithrÚsplitrÚupperÚappendrOÚsetrÏr3ÚsortÚindexÚupdater2Úextendr1r$r-r<Úvaluesr:Újoin)rrr«Útls_csÚtls_cssÚ_tls_csrªÚ newer_tls_verÚtranslated_namesÚiani_cipher_suites_namesÚossl_cipher_suites_namesÚtls_verr Útranslated_nameÚcipher_as_ossls              rir%z2MySQLConnectionAbstract._validate_tls_ciphersuitess{€àÐØ×'Ñ'ˆä fœcÔ "Ø×%Ñ% cÔ*¨v¯©¸sÔ/CÜ$Ø?À¸xÀqÐIóðð˜Q˜rl×(Ñ(¨Ó-ˆGÙÜ$ØLóðð#ò 5Ø Ÿ,™,›.×.Ñ.Ó0ÚØ$×+Ñ+¨GÕ4ñ 5ô
˜¤¤s  Ô ,Ø5;ÖF¨6ºv¢ÐFÐ ÑFä ð)Ø)/¨°ð3óð ð  $×1Ñ1Ð9ŒL™‰O¸t×?QÑ?QÑRSÐ?Tð    ð     ×Ñ $ÐÔ'Ø$ Q™ˆ ð.0°¨HÐØ#%РØ.0Рô$Ð$K¤l×&8Ñ&8¸Ó&GÈ!Ñ&KÐLò    GˆGØ $× +Ñ +Ô,=¸gÑ,FÔ GØ $× +Ñ +Ô,<¸WÑ,EÕ Fð    Gð%ò    ˆDؐd‰{˜tÐ'?Ñ?ØÔ+¨IÑ6Ñ6Ø$ QÑ'×.Ñ.¨tÕ4à$ QÑ'×.Ñ.¨tÕ4ØÐ1Ñ1Ø":¸4Ñ"@Ø"Ð&6Ñ6Ü(Ü0×7Ñ7Ø!3¸?ôóðð
Ô,¨YÑ7Ñ7Ø$ QÑ'×.Ñ.Ð/GÈÑ/MÕNà$ QÑ'×.Ñ.Ð/GÈÑ/MÕNä$Ø! $ ð(#ð#óðð'    ð.  Ò"Ð+;¸AÒ+>Ü ØLóð ð
/¨qÑ1ò    ˆNØÔ!>¸yÑ!I×!PÑ!PÓ!RÒRÜ'ؘnÐ-Ð-UÐVóðð    ð
/¨qÑ1ò    ˆNØÔ!>¸yÑ!I×!PÑ!PÓ!RÒRÜ'ؘnÐ-Ð-UÐVóðð    ð H‰HÐ% aÑ(Ó )Ø H‰HÐ% aÑ(Ó )ð"
ˆÕùòG Gs ÃKà KcóÞ—g}|j}t|t«rÆ|jd«r|j    d«st d|›d«‚|ddj d«}|D]M}|j«}|dk(rŒ||vr t tjd    |¬
««‚|j|«ŒO|d gk(rÑtsËt tj|t««‚t|t«rJ|s t d «‚|D]7}||vr t tjd    |¬
««‚|j|«Œ9nNt|t«r|D]}|j|«Œn%t d dj!t«›d|›d«‚|s t d«‚g}g}g}|D]F}|tvr|j|«|t"vr|j|«Œ6|j|«ŒH|r7|d gk(r)ts#t%tj|t««‚||_y|r#t%t'j|t««‚|r#t t)jt««‚y)z"Validates the tls_versions option.rGrHz%tls_versions must be a list, found: 'r    rLrIrJr€rªrNrMzJAt least one TLS protocol version must be specified in 'tls_versions' listz>tls_versions should be a list with one or more of versions in z, z
. found: 'zdAt least one TLS protocol version must be specified in 'tls_versions' list when this option is givenN)rÏr!rWr)rQrrRrr$r-rTr(r)r3rOrUr[r=r:r+r*)rrrªÚ tls_versionÚtls_versrcÚuse_tls_versionsÚunacceptable_tls_versionsÚinvalid_tls_versionss        rir$z.MySQLConnectionAbstract._validate_tls_versionsys«€àˆ Ø×(Ñ(ˆ ä k¤3Ô 'Ø×*Ñ*¨3Ô/°K×4HÑ4HÈÔ4MÜ$Ø;¸K¸=ÈÐJóðð# 1 RÐ(×.Ñ.¨sÓ3ˆHØ#ò
1Ø%Ÿm™m›o Ø "Ò$ØØ ,Ñ.Ü(Ü0×7Ñ7Ø!/°{ôóðð
×#Ñ# KÕ0ð
1ð˜I˜;Ò&Õ/AÜ$Ü(×/Ñ/° ¼\ÓJóðô˜ ¤TÔ *ÙÜ$ð*óðð'ò -Ø˜lÑ*Ü(Ü0×7Ñ7Ø!/°wôóðð
×#Ñ# GÕ,ñ -ô˜ ¤SÔ )Ø&ò -Ø×#Ñ# GÕ,ñ -ô!ðØ—i‘i¤ Ó-Ð.¨j¸¸ÀaðIóð ñ
Ü ðCóð ð
ÐØ$&Ð!Ø!ÐØ#ò    5ˆGØœ,Ñ&Ø ×'Ñ'¨Ô0ØÔ3Ñ3Ø)×0Ñ0°Õ9à$×+Ñ+¨GÕ4ð     5ñ Ø I ;Ò.Õ7IÜ'Ü(×/Ñ/° ¼\ÓJóðð"2ˆDÕ Ù &Ü#Ü.×5Ñ5Ø-¬|óóð ñ
"Ü Ô!2×!9Ñ!9¸'Ä<Ó!PÓQÐ Qð"rucó—t|t«r     t|«}t |«st    d|›d«‚t t|«j«}||k7rt    d|›d|›d|›«‚y#t$r}t    |›«|‚d}~wwxYw)aøValidates if it's a Python callable.
 
         Args:
             option_name (str): Connection option name.
             callback (str or callable): The fully qualified path to the callable or
                                         a callable.
             num_args (int): Number of positional arguments allowed.
 
        Raises:
             ProgrammingError: If `callback` is not valid or wrong number of positional
                               arguments.
 
        .. versionadded:: 8.2.0
        NzExpected a callable for 'r    z ' requires z4 positional argument, but the callback provided has )    r!rWrKÚ
ValueErrorr;Úcallabler(r Ú
parameters)Ú option_nameÚcallbackÚnum_argsr/Ú
num_paramss     rir.z*MySQLConnectionAbstract._validate_callableÊsª€ô$ h¤Ô $ð :Ü(¨Ó2ô˜Ô!Ü"Ð%>¸{¸mÈ1Ð#MÓNÐ Nôœ 8Ó,×7Ñ7Ó8ˆ
Ø ˜Ò !Ü"ؐK=  ¨H¨:ð6)Ø)3¨ ð6óð ð "øôò :Ü&¨#¨Ó0°cÐ9ûð :ús’ A/Á/    B
Á8 BÂB
có—y)zMySQL connection ID.Nr~rûs riÚ connection_idz%MySQLConnectionAbstract.connection_idíórucó—|jS)z$User used while connecting to MySQL.)r±rûs rir‡zMySQLConnectionAbstract.useròó€ðz‰zÐrucó—|jS)z MySQL server IP address or name.)r³rûs riÚ server_hostz#MySQLConnectionAbstract.server_host÷rxrucó—|jS)zMySQL server TCP/IP port.)r´rûs riÚ server_portz#MySQLConnectionAbstract.server_portürxrucó—|jS)z MySQL Unix socket file location.)r¹rûs rir£z#MySQLConnectionAbstract.unix_socketó€ðנѠРrucó—td«‚)úGet the current database.zoThe use of async properties are not supported by Python. Use `await get_database()` to get the database instead©r;rûs rir‹z MySQLConnectionAbstract.databases€ôð Eó
ð    
rucó—td«‚)úSet the current database.zsThe use of async properties are not supported by Python. Use `await set_database(name)` to set the database insteadr©rrrCs  rir‹z MySQLConnectionAbstract.databaseó€ôð Ió
ð    
rucó—|jS)a¸
        Gets the connection context's timeout in seconds for each attempt
        to read any data from the server.
 
        `read_timeout` is number of seconds upto which the connector should wait
        for the server to reply back before raising an ReadTimeoutError. We can set
        this option to None, which would signal the connector to wait indefinitely
        till the read operation is completed or stopped abruptly.
        ©r»rûs rir„z$MySQLConnectionAbstract.read_timeoutó€ð×!Ñ!Ð!rucóV—| t|t«r|dkr td«‚||_y)aß
        Sets or updates the connection context's timeout in seconds for each attempt
        to read any data from the server.
 
        `read_timeout` is number of seconds upto which the connector should wait
        for the server to reply back before raising an ReadTimeoutError. We can set
        this option to None, which would signal the connector to wait indefinitely
        till the read operation is completed or stopped abruptly.
 
        Args:
            timeout: Accepts a non-negative integer which is the timeout to be set
                     in seconds or None.
        Raises:
            InterfaceError: If a positive integer or None is not passed via the
                            timeout parameter.
        Examples:
            The following will set the read_timeout of the current session to
            5 seconds:
            ```
            >>> cnx = await mysql.connector.aio.connect(user='scott')
            >>> cnx.read_timeout = 5
            ```
        Nrú6Option read_timeout must be a positive integer or None©r!rUr8r»©rrÚtimeouts  rir„z$MySQLConnectionAbstract.read_timeout#s4€ð2 Рܘg¤sÔ+¨w¸ª{Ü$ØLóðð%ˆÕrucó—|jS)a°
        Gets the connection context's timeout in seconds for each attempt
        to send data to the server.
 
        `write_timeout` is number of seconds upto which the connector should spend to
        write to the server before raising an WriteTimeoutError. We can set this option
        to None, which would signal the connector to wait indefinitely till the write
        operation is completed or stopped abruptly.
        ©r¼rûs rir…z%MySQLConnectionAbstract.write_timeoutCó€ð×"Ñ"Ð"rucóV—| t|t«r|dkr td«‚||_y)aÕ
        Sets or updates the connection context's timeout in seconds for each attempt
        to send data to the server.
 
        `write_timeout` is number of seconds upto which the connector should spend to
        write to the server before raising an WriteTimeoutError. We can set this option
        to None, which would signal the connector to wait indefinitely till the write
        operation is completed or stopped abruptly.
 
        Args:
            timeout: Accepts a non-negative integer which is the timeout to be set in
                     seconds or None.
        Raises:
            InterfaceError: If a positive integer or None is not passed via the
                            timeout parameter.
        Examples:
            The following will set the write_timeout of the current
            session to 5 seconds:
            ```
            >>> cnx = await mysql.connector.connect(user='scott')
            >>> cnx.write_timeout = 5
            ```
        Nrú7Option write_timeout must be a positive integer or None©r!rUr8r¼rŒs  rir…z%MySQLConnectionAbstract.write_timeoutPs4€ð2 Рܘg¤sÔ+¨w¸ª{Ü$ØMóðð&ˆÕrucƒóJK—|jd«ƒd{–—†}|dS7Œ    ­w)r€zSELECT DATABASE()Nr©Ú
info_query)rrÚresults  riÚ get_databasez$MySQLConnectionAbstract.get_databaseps'èø€à—‘Ð':Ó;×;ˆØa‰yÐð<úó ‚#—!˜
#cƒóHK—|jd|›«ƒd{–—†y7Œ­w)rƒzUSE N)Ú    cmd_queryr„s  riÚ set_databasez$MySQLConnectionAbstract.set_databaseusèø€àn‰n˜t E 7˜^Ó,×,Ò,ús ‚"š ›"có—|jS)z"Returns whether to consume results)r¿rûs riÚcan_consume_resultsz+MySQLConnectionAbstract.can_consume_resultsyó€ð×$Ñ$Ð$rucó6—t|t«sJ‚||_y)zSet if can consume results.N)r!rbr¿r„s  riržz+MySQLConnectionAbstract.can_consume_results~s€ô˜%¤Ô&Ð&Ð&Ø %ˆÕrucó—|jS)z'Returns the pool configuration version.©rÓrûs riÚpool_config_versionz+MySQLConnectionAbstract.pool_config_version„s€ð×(Ñ(Ð(rucó—||_y)z#Sets the pool configuration versionNr¢r„s  rir£z+MySQLConnectionAbstract.pool_config_version‰s €ð%*ˆÕ!rucó—|jS)z(MySQL session has started a transaction.)rïrûs riÚin_transactionz&MySQLConnectionAbstract.in_transactionŽs€ð×#Ñ#Ð#rucó—|jS)zReturn the event loop.)r×rûs rir¬zMySQLConnectionAbstract.loop“rxrucóJ—|jxs|jduxrtS)z&Return True if is a secure connection.N)rÈr¹ÚIS_POSIXrûs riÚ    is_securez!MySQLConnectionAbstract.is_secure˜s%€ð×ÑÒO D×$5Ñ$5¸TÐ$AÒ$NÄhÐOrucóH—t|jj««S)zReturns query attributes list.)rOrÞr'rûs riÚ query_attrsz#MySQLConnectionAbstract.query_attrss€ôD×%Ñ%×+Ñ+Ó-Ó.Ð.rucó—|jS)zReturn if have next result.)rírûs riÚhave_next_resultz(MySQLConnectionAbstract.have_next_result¢s€ð×%Ñ%Ð%rucó—td«‚)ú$Get whether autocommit is on or off.zsThe use of async properties are not supported by Python. Use `await get_autocommit()` to get the autocommit insteadrrûs rir“z"MySQLConnectionAbstract.autocommit§r…rucó—td«‚)úToggle autocommit.zxThe use of async properties are not supported by Python. Use `await set_autocommit(value)` to set the autocommit insteadrr„s  rir“z"MySQLConnectionAbstract.autocommit¯ó€ôð Nó
ð    
rucƒóPK—|jd«ƒd{–—†}|ddk(S7Œ ­w)r°zSELECT @@session.autocommitNrrLr•r„s  riÚget_autocommitz&MySQLConnectionAbstract.get_autocommit·s,èø€à—o‘oÐ&CÓD×DˆØQ‰x˜1‰}ÐðEús ‚&—$˜ &cƒóbK—|rdnd}|jd|›«ƒd{–—†||_y7Œ ­w)r²ÚONÚOFFzSET @@session.autocommit = N)r›rÀ)rrrCÚswitchs   riÚset_autocommitz&MySQLConnectionAbstract.set_autocommit¼s7èø€á‘ EˆØn‰nÐ:¸6¸(ÐCÓD×DÐDØ ˆÕð    Eús ‚/ -¡ /có—td«‚)úGets the current time zone.zqThe use of async properties are not supported by Python. Use `await get_time_zone()` to get the time zone insteadrrûs rir”z!MySQLConnectionAbstract.time_zoneÂs€ôð Gó
ð    
rucó—td«‚)úSets the time zone.zxThe use of async properties are not supported by Python. Use `await get_autocommit(value)` to get the autocommit insteadrr„s  rir”z!MySQLConnectionAbstract.time_zoneÊr³rucƒóJK—|jd«ƒd{–—†}|dS7Œ    ­w)r¼zSELECT @@session.time_zoneNrr•r„s  riÚ get_time_zonez%MySQLConnectionAbstract.get_time_zoneÒs'èø€à—o‘oÐ&BÓC×CˆØQ‰xˆðDúr™cƒóXK—|jd|›d«ƒd{–—†||_y7Œ ­w)r¾zSET @@session.time_zone = 'r    N)r›rÁr„s  riÚ set_time_zonez%MySQLConnectionAbstract.set_time_zone×s/èø€àn‰nÐ:¸5¸'ÀÐCÓD×DÐD؈ð    Eús ‚*›(œ *cƒó K—td«‚­w)úGets the SQL mode.zoThe use of async properties are not supported by Python. Use `await get_sql_mode()` to get the SQL mode insteadrrûs rir–z MySQLConnectionAbstract.sql_modeÜsèø€ôð Eó
ð    
ùó‚ cƒó K—td«‚­w)á³Sets the SQL mode.
 
        This method sets the SQL Mode for the current connection. The value
        argument can be either a string with comma separate mode names, or
        a sequence of mode names.
 
        It is good practice to use the constants class `SQLMode`:
        ```
        >>> from mysql.connector.constants import SQLMode
        >>> cnx.sql_mode = [SQLMode.NO_ZERO_DATE, SQLMode.REAL_AS_FLOAT]
        ```
        ztThe use of async properties are not supported by Python. Use `await set_sql_mode(value)` to set the SQL mode insteadrr„s  rir–z MySQLConnectionAbstract.sql_modeäsèø€ôð Jó
ð    
ùrÅcƒó€K—|j€!|jd«ƒd{–—†d|_|jS7Œ­w)rÄNzSELECT @@session.sql_moder)rÂr–rûs riÚ get_sql_modez$MySQLConnectionAbstract.get_sql_mode÷s:èø€à >‰>Ð !Ø$(§O¡OÐ4OÓ$P×PÐRSÑTˆDŒN؏~‰~ÐðQús ‚!>£<¤>cƒó¦K—t|ttf«rdj|«}|j    d|›d«ƒd{–—†||_y7Œ ­w)rÇrJzSET @@session.sql_mode = 'r    N)r!rOrpr[r›rÂr„s  riÚ set_sql_modez$MySQLConnectionAbstract.set_sql_modeýsLèø€ô eœd¤E˜]Ô +Ø—H‘H˜U“OˆE؏n‰nÐ9¸%¸ÀÐBÓC×CÐC؈ð    Dús‚AAÁAÁ Acó—|jS)zGet whether this connection retrieves warnings automatically.
 
        This method returns whether this connection retrieves warnings automatically.
        )rérûs rir˜z$MySQLConnectionAbstract.get_warningss€ð ×!Ñ!Ð!rucóH—t|t«s td«‚||_y)aSet whether warnings should be automatically retrieved.
 
        The toggle-argument must be a boolean. When True, cursors for this connection
        will retrieve information about warnings (if any).
 
        Raises:
            ValueError: When the value is not a bool type.
        úExpected a boolean typeN)r!rbrmrér„s  rir˜z$MySQLConnectionAbstract.get_warningss"€ô˜%¤Ô&ÜÐ6Ó7Ð 7Ø"ˆÕrucó—|jS)z­Get whether this connection raises an error on warnings.
 
        This method returns whether this connection will raise errors when MySQL
        reports warnings.
        )Ú_raise_on_warningsrûs rir™z)MySQLConnectionAbstract.raise_on_warnings%s€ð×&Ñ&Ð&rucó\—t|t«s td«‚||_|r||_yy)aÄSet whether warnings raise an error.
 
        The toggle-argument must be a boolean. When True, cursors for this connection
        will raise an error when MySQL reports warnings.
 
        Raising on warnings implies retrieving warnings automatically.
        In other words: warnings will be set to True. If set to False, warnings will
        be also set to False.
 
        Raises:
            ValueError: When the value is not a bool type.
        rÎN)r!rbrmrÐrér„s  rir™z)MySQLConnectionAbstract.raise_on_warnings.s2€ô˜%¤Ô&ÜÐ6Ó7Ð 7Ø"'ˆÔá Ø!&ˆDÕ ð rucó—|jS)z§Get whether there is an unread result.
 
        This method is used by cursors to check whether another cursor still needs to
        retrieve its result set.
        )rîrûs riÚ unread_resultz%MySQLConnectionAbstract.unread_resultCó€ð×"Ñ"Ð"rucóH—t|t«s td«‚||_y)zýSet whether there is an unread result.
 
        This method is used by cursors to let other cursors know there is still a
        result set that needs to be retrieved.
 
        Raises:
            ValueError: When the value is not a bool type.
        rÎN)r!rbrmrîr„s  rirÓz%MySQLConnectionAbstract.unread_resultLs"€ô˜%¤Ô&ÜÐ6Ó7Ð 7Ø#ˆÕrucó.—|jjS)a Returns the collation for current connection.
 
        This property returns the collation name of the current connection.
        The server is queried when the connection is active. If not connected,
        the configured collation name is returned.
 
        Returns a string.
        )Ú_charsetrrûs rirz!MySQLConnectionAbstract.collationZs€ð}‰}×&Ñ&Ð&rucó.—|jjS)aReturn the character set for current connection.
 
        This property returns the character set name of the current connection.
        The server is queried when the connection is active.
        If not connected, the configured character set name is returned.
        ©r×r rûs rir\zMySQLConnectionAbstract.charsetfs€ð}‰}×!Ñ!Ð!rucó.—|jjS)zThe charset ID utilized during the connection phase.
 
        If the charset ID hasn't been set, the default charset ID is returned.
        )r×Ú
charset_idrûs rirÛz"MySQLConnectionAbstract.charset_idps€ð }‰}×'Ñ'Ð'rucóö—|j€b|j€tjt«Stj|jj
dkrtnt «|_|jS)úBThe charset object encapsulates charset and collation information.)ér)r°rÚrOÚ    get_by_idr/rZr0rûs rir×z MySQLConnectionAbstract._charsetxsj€ð >‰>Ð !Ø× Ñ Ð(ô
 ×)Ñ)Ô*EÓFÐFä%×/Ñ/ð×(Ñ(×6Ñ6¸Ò?õ0ä4ó    ˆDŒNð~‰~Ðrucó—||_y)rÝN)r°r„s  rir×z MySQLConnectionAbstract._charsetŒs €ðˆrucóx—|j|jjdvry|jjS)a^Return the Python character set for current connection.
 
        This property returns the character set name of the current connection.
        Note that, unlike property charset, this checks if the previously set
        character set is supported by Python and if not, it returns the equivalent
        character set that Python supports.
        )Úutf8mb4Úutf8mb3ÚbinaryÚutf8rÙrûs riÚpython_charsetz&MySQLConnectionAbstract.python_charset‘s9€ð =‰=Ð   D§M¡M×$6Ñ$6ð;
ñ%
ð
؏}‰}×!Ñ!Ð!rucó—y)z&Add the default connection attributes.Nr~rûs rir+z/MySQLConnectionAbstract._add_default_conn_attrs¢rvrucƒó K—y­w)zìExecute 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.
        Nr~)rrÚquerys  riÚ_execute_queryz&MySQLConnectionAbstract._execute_query¦óèøùó‚cƒóÞK—|j|jj¬«ƒd{–—†|j|j«ƒd{–—†|j
r#|j |j
«ƒd{–—†|jr#|j|j«ƒd{–—†|jr$|j|j«ƒd{–—†yy7Œ¶7Œ•7Œh7Œ;7Œ­w)zøExecutes commands after connection has been established.
 
        This method executes commands after the connection has been established.
        Some setting like autocommit, character set, and SQL mode are set using this
        method.
        )r\N) Úset_charset_collationr×rÛrºrÀrÁrÂrÂrËrÃrêrûs riÚ_post_connectionz(MySQLConnectionAbstract._post_connection¯s¿èø€ð×(Ñ(°·±×1IÑ1IÐ(ÓJ×JÐJØ×!Ñ! $×"2Ñ"2Ó3×3Ð3Ø ?Š?Ø×$Ñ$ T§_¡_Ó5× 5Ð 5Ø >Š>Ø×#Ñ# D§N¡NÓ3× 3Ð 3Ø × Ò Ø×%Ñ% d×&8Ñ&8Ó9× 9Ñ 9ð ð     KøØ3øà 5øà 3øà 9úsW‚*C-¬C#­"C-ÁC%Á.C-Á>C'Á?.C-Â-C)Â..C-ÃC+ÃC-Ã%C-Ã'C-Ã)C-Ã+C-cƒóÀK—d}t|ttf«s|t|j    d««‚t|t«s | td«‚|rO|rMt|t«rt j |«jn|}t j||«|_    n²|rpt|t«rt j |«|_    n…t|t«rt j|«|_    nZt|j    d««‚|rt j|«|_    n#td}t j|«|_    |jd|jj›d|jj›d«ƒd{–—†|jr0|jj!|jj«yy7ŒA­w)aèSet the character set and collation for the current connection.
 
        This method sets the character set and collation to be used for the current
        connection. The charset argument can be either the name of a character set as
        a string, or the numerical equivalent as defined in constants.CharacterSet.
 
        When the collation is not given, the default will be looked up and used.
 
        Args:
            charset: Can be either the name of a character set, or the numerical
                     equivalent as defined in `constants.CharacterSet`.
            collation: When collation is `None`, the default collation for the
                       character set is used.
 
        Examples:
            The following will set the collation for the latin1 character set to
            `latin1_general_ci`:
            ```
            >>> cnx = mysql.connector.connect(user='scott')
            >>> cnx.set_charset_collation('latin1', 'latin1_general_ci')
            ```
        z+{} should be either integer, string or NoneNr\z)collation should be either string or Nonez SET NAMES 'z ' COLLATE 'r    )r!rUrWrmr-rOrßr Úget_by_name_and_collationr×Ú get_by_nameÚget_by_collationr-r›rróÚ set_charset)rrr\rÚerr_msgÚ charset_strs     rirîz-MySQLConnectionAbstract.set_charset_collation¿sƒèø€ð2@ˆÜ˜'¤C¬ :Ô.°7Ð3FܘWŸ^™^¨IÓ6Ó7Ð 7ܘ)¤SÔ)¨iÐ.CÜÐHÓIÐ Iá ‘yô˜g¤sÔ+ô×"Ñ" 7Ó+×0Ò0àð ô
%×>Ñ>¸{ÈIÓVˆDM٠ܘ'¤3Ô'Ü (× 2Ñ 2°7Ó ;• ܘG¤SÔ)Ü (× 4Ñ 4°WÓ =• ä  §¡°    Ó!:Ó;Ð;Ù Ü$×5Ñ5°iÓ@ˆDMä+¨IÑ6ˆGÜ$×0Ñ0°Ó9ˆDŒMàn‰nؘ$Ÿ-™-×,Ñ,Ð-¨[¸¿¹×9PÑ9PÐ8QÐQRÐ Só
÷    
ð    
ð >Š>Ø N‰N× &Ñ & t§}¡}×'9Ñ'9Õ :ð ð        
ús‚FGÆGÆAGcó&—|j|zdkDS)z|Checks if a client flag is set.
 
        Returns:
            `True` if the client flag was set, `False` otherwise.
        r©rÙ)rrÚflags  riÚisset_client_flagz)MySQLConnectionAbstract.isset_client_flagùs€ð ×"Ñ" TÑ)¨QÑ.Ð.rucó—||_y)zySet the path that user can upload files.
 
        Args:
            path (str): Path that user can upload files.
        N)rè)rrrs  riÚset_allow_local_infile_in_pathz6MySQLConnectionAbstract.set_allow_local_infile_in_paths €ð,0ˆÕ(rucó—|S)z‰Return self for weakref.proxy.
 
        This method is used when the original object is needed when using
        weakref.proxy.
        r~rûs riÚget_selfz MySQLConnectionAbstract.get_self
s    €ð ˆ ruÚserver_version©Ú property_namecó—|jS)ú£Gets the MySQL version.
 
        Returns:
            The MySQL server version as a tuple. If not previously connected, it will
            return `None`.
        )rÿrûs riÚget_server_versionz*MySQLConnectionAbstract.get_server_versions€ð×"Ñ"Ð"ruÚ server_infocó—|jS)ú¶Gets the original MySQL version information.
 
        Returns:
            The original MySQL server as text. If not previously connected, it will
            return `None`.
        )rrûs riÚget_server_infoz'MySQLConnectionAbstract.get_server_infos€ð×ÑÐrucóH—|j|jjSy)rN)rÚrZrûs rirÿz&MySQLConnectionAbstract.server_version&s%€ð × Ñ Ð (Ø×$Ñ$×2Ñ2Ð 2ØrucóL—    |jdS#ttf$rYywxYw)rÚserver_version_originalN)rÔÚ    TypeErrorr:rûs rirz#MySQLConnectionAbstract.server_info2s.€ð    Ø—?‘?Ð#<Ñ=Ð =øÜœ8Ð$ò    Ùð    ús ‚‘#¢#có—y)z«Reports whether the socket is connected.
 
        Instead of ping the server like ``is_connected()``, it only checks if the
        socket connection flag is set.
        Nr~rûs rirùz+MySQLConnectionAbstract.is_socket_connected?rvrucƒó K—y­w)aReports 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.
        Nr~rûs riÚ is_connectedz$MySQLConnectionAbstract.is_connectedGrërìcƒó K—y­w)a Check 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.
        Nr~)rrÚ    reconnectÚattemptsÚdelays    riÚpingzMySQLConnectionAbstract.pingPrërìcó(—||_|jS)aíSet the client flags.
 
        The flags-argument can be either an int or a list (or tuple) of ClientFlag
        values. If it is an integer, it will set client_flags to flags as is.
        If flags is a list or tuple, each flag will be set or unset when it's negative.
 
        client_flags = [ClientFlag.FOUND_ROWS,-ClientFlag.LONG_FLAG]
 
        Raises:
            ProgrammingError: When the flags argument is not a set or an integer bigger
                              than 0.
        )r)rrÚflagss  riÚset_client_flagsz(MySQLConnectionAbstract.set_client_flagscs€ð"ˆÔØ× Ñ Ð rucó—|jS)z-Gets the client flags of the current session.rørûs rirz$MySQLConnectionAbstract.client_flagsts€ð×!Ñ!Ð!rucó—t|t«r |dkDr||_yt|ttf«rB|D]<}|dkr |xjt |«zc_Œ(|xj|zc_Œ>yt d«‚)aîSets the client flags.
 
        The flags-argument can be either an int or a list (or tuple) of ClientFlag
        values. If it is an integer, it will set client_flags to flags as is.
        If flags is a list or tuple, each flag will be set or unset when it's negative.
 
        client_flags = [ClientFlag.FOUND_ROWS,-ClientFlag.LONG_FLAG]
 
        Raises:
            ProgrammingError: When the flags argument is not a set or an integer bigger
                              than 0.
        rz.client_flags setter expect integer (>0) or setN)r!rUrÙrprOÚabsr;)rrrrùs   rirz$MySQLConnectionAbstract.client_flagsysv€ô eœSÔ ! e¨a¢iØ!&ˆDÕ Ü ˜¤¤t˜}Ô -Øò /Ø˜!’8Ø×&Ò&¬3¨t«9¨*Ñ4Ö&à×&Ò&¨$Ñ.Ö&ñ     /ô #Ð#SÓTÐ Trucó—||_y)zûSet the converter class to be used.
 
        This should be a class overloading methods and members of
        conversion.MySQLConverter.
 
        Raises:
            TypeError: When the class is not a subclass of `conversion.MySQLConverter`.
        N)r ©rrÚ    convclasss  riÚset_converter_classz+MySQLConnectionAbstract.set_converter_class’s €ð )ˆÕrucó—|jS)z5Gets the converter class set for the current session.)rârûs rir z'MySQLConnectionAbstract.converter_classžrŸrucóڗ|r_t|t«rO||_||jj|j
«|_|j|j _ytd«‚)züSets the converter class to be used.
 
        This should be a class overloading methods and members of
        conversion.MySQLConverter.
 
        Raises:
            TypeError: When the class is not a subclass of `conversion.MySQLConverter`.
        zAConverter class should be a subclass of conversion.MySQLConverterN)
Ú
issubclassr6râr×r r¤rórãÚ str_fallbackr rs  rir z'MySQLConnectionAbstract.converter_class£sY€ñ œ IÔ/AÔBØ$-ˆDÔ !Ù& t§}¡}×'9Ñ'9¸4×;KÑ;KÓLˆDŒNØ*.×*FÑ*FˆDN‰NÕ 'äØSóð rucó—|jS)z7Gets whether we return string fields as unicode or not.)rìrûs rir¤z#MySQLConnectionAbstract.use_unicode¶r~rucób—||_|jr|jj|«yy)zSets whether we return string fields as unicode or not.
 
        Args:
            value: A boolean - default is `True`.
        N)rìróÚ set_unicoder„s  rir¤z#MySQLConnectionAbstract.use_unicode»s*€ð"ˆÔØ >Š>Ø N‰N× &Ñ & uÕ -ð rucóJ—|\}}||jvr||j|<yy)aAdd element to the query attributes list on the connector's side.
 
        If an element in the query attributes list already matches
        the attribute name provided, the new element will NOT be added.
 
        Args:
            value: key-value as a 2-tuple.
        N©rÞ)rrrCr1r2s    riÚquery_attrs_appendz*MySQLConnectionAbstract.query_attrs_appendÆs1€ð!&ш    :Ø ˜D×-Ñ-Ñ -Ø+5ˆD× Ñ ˜iÒ (ð .rucó:—|jj|d«S)z¾Remove element by name from the query attributes list.
 
        If no match, `None` is returned, else the corresponding value is returned.
 
        Args:
            name: key name.
        N)rÞr;©rrr s  riÚquery_attrs_removez*MySQLConnectionAbstract.query_attrs_removeÓs€ð× Ñ ×$Ñ$ T¨4Ó0Ð0rucó—i|_y)z5Clears query attributes list on the connector's side.Nr'rûs riÚquery_attrs_clearz)MySQLConnectionAbstract.query_attrs_clearÝs
€àˆÕrucƒóˆK—|jr|j«ƒd{–—†y|jr td«‚y7Œ­w)z¿Handle unread result.
 
        Consume pending results if is configured for it.
 
        Raises:
            InternalError: When there are pending results and they were not consumed.
        NzUnread result found)r¿r’rÓr9rûs riÚhandle_unread_resultz,MySQLConnectionAbstract.handle_unread_resultásBèø€ð ×  Ò  Ø×&Ñ&Ó(× (Ñ (Ø × Ò ÜР5Ó6Ð 6ð ð )ús‚ A¢A£AcƒóZK—|jr|j«ƒd{–—†yy7Œ­w)zConsume pending results.N)rÓÚget_rowsrûs rir’z'MySQLConnectionAbstract.consume_resultsîs&èø€à × Ò Ø—-‘-“/× !Ñ !ð Ø !ús ‚ +¢)£+cƒó.K—|jd¬«ƒd{–—†4ƒd{–—†}|jtt|««ƒd{–—†|j    «ƒd{–—†cddd«ƒd{–—†S7Œ]7ŒV7Œ17Œ7Œ #1ƒd{–—†7swYyxYw­w)z&Send a query which only returns 1 row.T)ršN)ÚcursorÚexecuter!rWÚfetchone)rrrér3s   rir–z"MySQLConnectionAbstract.info_queryósèø€àŸ™¨d˜Ó3×3÷    +ð    +°vØ—.‘.¤¤c¨5Ó!1Ó2× 2Ð 2ØŸ™Ó*×*÷    +÷    +ñ    +Ð3øð    +øØ 2øØ*øð    +ø÷    +÷    +ñ    +üsx‚B˜A6™B¡A8¢B¥#BÁA:Á    BÁ A<Á!BÁ$ BÁ0A>Á1BÁ8BÁ:BÁ<BÁ>BÂBÂB     ÂBÂBcó:—|jj|«y)zAdd cursor to the weakref set.N)rÝÚadd©rrr3s  riÚ
add_cursorz"MySQLConnectionAbstract.add_cursorùs€à  ‰ ×ј&Õ!rucó:—|jj|«y)z#Remove cursor from the weakref set.N)rÝÚremover8s  riÚ remove_cursorz%MySQLConnectionAbstract.remove_cursorýs€à  ‰ ×јVÕ$rucƒó K—y­w)zConnect to the MySQL server.Nr~rûs rirúzMySQLConnectionAbstract.connectrërìcƒó†K—d}||k7ry|dz}    |j«ƒd{–—†|j«ƒd{–—†|j«ƒd{–—†ry    |dkDrt j|«ƒd{–—†||k7rŒxyy7Œ`7ŒJ7Œ4#ttf$r#}||k(rd|›d|›}t |«|‚Yd}~Œ]d}~wwxYw7ŒG­w)a›Attempts to reconnect to the MySQL server.
 
        The argument `attempts` should be the number of times a reconnect is tried.
        The `delay` argument is the number of seconds to wait between each retry.
 
        You may want to set the number of attempts higher and use delay when you expect
        the MySQL server to be down for maintenance or when you expect the network to
        be temporary unavailable.
 
        Args:
            attempts: Number of attempts to make when reconnecting.
            delay: Use it (defined in seconds) if you want to wait between each retry.
 
        Raises:
            InterfaceError: When reconnection fails.
        rrLNz!Can not reconnect to MySQL after z  attempt(s): )Ú
disconnectrúrr7ÚIOErrorr8rÕÚsleep)rrrrÚcounterr/Úmsgs      rirz!MySQLConnectionAbstract.reconnectsàèø€ð"ˆØ˜Ò!Ø ‘kˆGð 7Ø—o‘oÓ'×'Ð'Ø—l‘l“n×$Ð$Ø×*Ñ*Ó,×,Ð,Øð-ðqŠyÜ—m‘m EÓ*×*Ð*ð˜Õ!ð(øØ$øØ,ùäœ7Ð#ò 7ؘhÒ&à;¸H¸:ðF'Ø'* eð-ðô)¨Ó-°3Ð6ô 'ûð 7úð+úsr‚ CB
£B¤B
»B¼B
ÁBÁB
ÁCÁ7B?Á8    CÂCÂB
ÂB
ÂB
Â
B<ÂB7Â2CÂ7B<Â<CcƒóK—t‚­w)akShuts 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.
        )ÚNotImplementedErrorrûs riÚshutdownz MySQLConnectionAbstract.shutdown(sèø€ô"Ð!ùs‚    cƒó K—y­w)aƒClose the connection.
 
        It closes any opened cursor associated to this connection, and closes the
        underling socket connection.
 
        `MySQLConnection.close()` is a synonymous for `MySQLConnection.disconnect()`
        method name and more commonly used.
 
        This method tries to send a `QUIT` command and close the socket. It raises
        no exceptions.
        Nr~rûs rirÿzMySQLConnectionAbstract.close3rërìz@ClassVar[Callable[['MySQLConnectionAbstract'], Awaitable[None]]]r?cƒó K—y­w)aInstantiate and return 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.
 
        It is possible to also give a custom cursor through the cursor_class
        parameter, but it needs to be a subclass of
        mysql.connector.aio.abstracts.MySQLCursorAbstract.
 
        Raises:
            ProgrammingError: When cursor_class is not a subclass of
                              MySQLCursor.
            ValueError: When cursor is not available.
        Nr~)rrršr›ÚpreparedÚ cursor_classÚ
dictionaryr„r…s        rir3zMySQLConnectionAbstract.cursorCrërìc‹ó K—y­w)a3Get 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.
        Nr~)rrräÚcolumnsr›r=s     riÚget_rowzMySQLConnectionAbstract.get_row_rërìc‹ó K—y­w)zùGet 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.
        Nr~)rrÚcounträrMr›Ú    prep_stmtr=s       rir1z MySQLConnectionAbstract.get_rowsnrërìcƒó K—y­w)zCommit current transaction.Nr~rûs riÚcommitzMySQLConnectionAbstract.commitrërìcƒó K—y­w)zRollback current transaction.Nr~rûs riÚrollbackz MySQLConnectionAbstract.rollbackƒrërìcƒóêK—|jr td«‚|ra|j«jdd«j    «}gd¢}||vrt d|›d«‚|j d|›«ƒd{–—†|K|jd    krt d
|j›d «‚|rd }nd }|j d|›«ƒd{–—†d}|r|dz }|j|«ƒd{–—†y7Œt7Œ)7Œ    ­w)atStarts a transaction.
        This method explicitly starts a transaction sending the
        START TRANSACTION statement to the MySQL server. You can optionally
        set whether there should be a consistent snapshot, which
        isolation level you need or which access mode i.e. READ ONLY or
        READ WRITE.
        Args:
            consistent_snapshot: If `True`, Connector/Python sends WITH CONSISTENT
                                 SNAPSHOT with the statement. MySQL ignores this for
                                 isolation levels for which that option does not apply.
            isolation_level: Permitted values are 'READ UNCOMMITTED', 'READ COMMITTED',
                             'REPEATABLE READ', and 'SERIALIZABLE'. If the value is
                             `None`, no isolation level is sent, so the default level
                             applies.
            readonly: Can be `True` to start the transaction in READ ONLY mode or
                      `False` to start it in READ WRITE mode. If readonly is omitted,
                      the server's default access mode is used.
        Raises:
            ProgrammingError: When a transaction is already in progress
                              and when `ValueError` when `isolation_level`
                              specifies an Unknown level.
        Examples:
            For example, to start a transaction with isolation level `SERIALIZABLE`,
            you would do the following:
            ```
            >>> cnx = mysql.connector.aio.connect(...)
            >>> await cnx.start_transaction(isolation_level='SERIALIZABLE')
            ```
        zTransaction already in progressrLú )zREAD UNCOMMITTEDzREAD COMMITTEDzREPEATABLE READÚ SERIALIZABLEzUnknown isolation level "ú"z SET TRANSACTION ISOLATION LEVEL N)éérZzMySQL server version z does not support this featurez    READ ONLYz
READ WRITEzSET TRANSACTION zSTART TRANSACTIONz WITH CONSISTENT SNAPSHOT)    r¦r;rÚreplacerSrmrêrÿr›)rrÚconsistent_snapshotÚisolation_levelÚreadonlyÚlevelÚlevelsÚ access_moderés        riÚstart_transactionz)MySQLConnectionAbstract.start_transaction‡s%èø€ðF × Ò Ü"Ð#DÓEÐ Eá Ø#×)Ñ)Ó+×3Ñ3°C¸Ó=×CÑCÓEˆEòˆFð˜FÑ"Ü Ð#<¸_Ð<MÈQÐ!OÓPÐPà×%Ñ%Ð(HÈÈÐ&PÓQ× QÐ Qà Ð Ø×"Ñ" YÒ.Ü Ø+¨D×,?Ñ,?Ð+@ðA+ð+óðñ
Ø)‘ à* Ø×%Ñ%Ð(8¸¸ Ð&FÓG× GÐ Gà#ˆÙ Ø Ð0Ñ 0ˆE؏n‰n˜UÓ#×#Ñ#ð% Røð Høð
    $ús7‚A6C3Á8C-Á9A C3ÃC/Ã!C3Ã'C1Ã(C3Ã/C3Ã1C3cƒó K—y­w)aõClears 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.
 
        Args:
            user_variables: User variables map.
            session_variables: System variables map.
 
        Raises:
            OperationalError: If not connected.
            InternalError: If there are unread results and InterfaceError on errors.
 
        Examples:
            ```
            >>> user_variables = {'var1': '1', 'var2': '10'}
            >>> session_variables = {'wait_timeout': 100000, 'sql_mode': 'TRADITIONAL'}
            >>> await cnx.reset_session(user_variables, session_variables)
            ```
        Nr~)rrÚuser_variablesÚsession_variabless   riÚ reset_sessionz%MySQLConnectionAbstract.reset_sessionÍrërìcƒó K—y­w)zÁResets 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.
        Nr~rûs riÚcmd_reset_connectionz,MySQLConnectionAbstract.cmd_reset_connectionírërìcƒó K—y­w)zÏChange 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 infawaitormation.
        Nr~)rrr‹s  riÚ cmd_init_dbz#MySQLConnectionAbstract.cmd_init_dbõrërìc‹ó K—y­w)aãSend a query to the MySQL server.
 
        This method send the query to the MySQL server and returns the result.
 
        If there was a text result, a tuple will be returned consisting of the number
        of columns and a list containing information about these columns.
 
        When the query doesn't return a text result, the OK or EOF packet information
        as dictionary will be returned. In case the result was an error, exception
        Error will be raised.
        Nr~)rrrér›ršÚ raw_as_stringr=s      rir›z!MySQLConnectionAbstract.cmd_queryýrërìc‹ó K—y­w)acSend 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 await cnx.cmd_query(statement, iterate=True):
            if 'columns' in result:
                columns = result['columns']
                rows = await cnx.get_rows()
            else:
                # do something useful with INSERT result
        Nr~)rrÚ
statementsr=s   riÚcmd_query_iterz&MySQLConnectionAbstract.cmd_query_iterrërìc‹ó K—y­w)z´Fetch 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.
        Nr~)rrÚ statement_idÚrowsr=s    riÚcmd_stmt_fetchz&MySQLConnectionAbstract.cmd_stmt_fetch&rërìc‹ó K—y­w)zŠPrepare a MySQL statement.
 
        This method will send the PREPARE command to MySQL together with the given
        statement.
        Nr~)rrÚ    statementr=s   riÚcmd_stmt_preparez(MySQLConnectionAbstract.cmd_stmt_prepare0rërìc‹ó K—y­w)z#Execute a prepared MySQL statement.Nr~)rrrrÚdatarorr=s      riÚcmd_stmt_executez(MySQLConnectionAbstract.cmd_stmt_execute<rërìc‹ó K—y­w)z}Reset data for prepared statement sent as long data.
 
        The result is a dictionary with OK packet information.
        Nr~©rrrrr=s   riÚcmd_stmt_resetz&MySQLConnectionAbstract.cmd_stmt_resetGrërìc‹ó K—y­w)z¼Deallocate a prepared MySQL statement.
 
        This method deallocates the prepared statement using the statement_id.
        Note that the MySQL server does not return anything.
        Nr~r|s   riÚcmd_stmt_closez&MySQLConnectionAbstract.cmd_stmt_closeRrërìcƒó K—y­w)a¡Send the Refresh command to the MySQL server.
 
        This method sends the Refresh command to the MySQL server. The options
        argument should be a bitwise value using constants.RefreshOption.
 
        Typical usage example:
            ```
           RefreshOption = mysql.connector.RefreshOption
           refresh = RefreshOption.LOG | RefreshOption.INFO
           await cnx.cmd_refresh(refresh)
           ```
 
        Args:
            options: Bitmask value constructed using constants from
                     the `constants.RefreshOption` class.
 
        Returns:
            A dictionary representing the OK packet got as response when executing
            the command.
 
        Raises:
            ValueError: If an invalid command `refresh options` is provided.
            DeprecationWarning: If one of the options is deprecated for the server you
                                are connecting to.
        Nr~)rrÚoptionss  riÚ cmd_refreshz#MySQLConnectionAbstract.cmd_refreshZrërìc‹ó K—y­w)aSend 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.
        Nr~)rrrrÚparam_idryr=s     riÚcmd_stmt_send_long_dataz/MySQLConnectionAbstract.cmd_stmt_send_long_datavrërìcƒó K—y­w)zŠClose the current connection with the server.
 
        Send the QUIT command to the MySQL server, closing the current connection.
        Nr~rûs riÚcmd_quitz MySQLConnectionAbstract.cmd_quit‹rërìcƒó K—y­w)z¼Shut 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.
        Nr~)rrÚ shutdown_types  riÚ cmd_shutdownz$MySQLConnectionAbstract.cmd_shutdown’rërìcƒó K—y­w)zÉSend 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.
        Nr~rûs riÚcmd_statisticsz&MySQLConnectionAbstract.cmd_statisticsšrërìcƒó K—y­w)z½Kill 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.
        Nr~)rrÚ    mysql_pids  riÚcmd_process_killz(MySQLConnectionAbstract.cmd_process_kill¢rërìcƒó K—y­w)a-Send 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.
        Nr~rûs riÚ    cmd_debugz!MySQLConnectionAbstract.cmd_debugªrërìcƒó K—y­w)zîSend 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.
        Nr~rûs riÚcmd_pingz MySQLConnectionAbstract.cmd_ping´rërìc ƒó K—y­w)aØChanges the current logged in user.
 
        It also causes the specified database to become the default (current)
        database. It is also possible to change the character set using the
        charset argument. The character set passed during initial connection
        is reused if no value of charset is passed via this method.
 
        Args:
            username: New account's username.
            password: New account's password.
            database: Database to become the default (current) database.
            charset: Client charset (see [1]), only the lower 8-bits.
            password1: New account's password factor 1 - it's used instead
                       of `password` if set (higher precedence).
            password2: New account's password factor 2.
            password3: New account's password factor 3.
            oci_config_file: OCI configuration file location (path-like string).
            oci_config_profile: OCI configuration profile location (path-like string).
            openid_token_file: OpenID Connect token file location (path-like string).
 
        Returns:
            ok_packet: Dictionary containing the OK packet information.
 
        Examples:
            ```
            >>> cnx.cmd_change_user(username='', password='', database='', charset=33)
            ```
 
        References:
            [1]: https://dev.mysql.com/doc/dev/mysql-server/latest/                page_protocol_basic_character_set.html#a_protocol_character_set
        Nr~) rrr5rˆr‹r\rŒrrŽr­r®ržs            riÚcmd_change_userz'MySQLConnectionAbstract.cmd_change_user½rërì)^r‡ú Optional[str]rˆrWr‰rWrŠrUr‹r–rŒrWrrWrŽrWr\rWrrWr^r–rú Optional[int]r‘rbr’rbr“rbr”r–r•zDict[str, str]r–r–r—r–r˜rbr™rbršrbr›rbrœr–rr–ržr–rŸz+Optional[Union[str, Callable[[str], None]]]rrbr‚r–r zOptional[MySQLConverter]r¡rbr¢rUr„r—r…r—r£r–r¤úOptional[bool]r¥r–r¦r–r§r–r¨r˜r©r˜r†r˜rªúOptional[List[str]]r«r™r¬z#Optional[asyncio.AbstractEventLoop]r­r–r®r–)rwr©NNN©rzOptional[Type[BaseException]]rzOptional[BaseException]rzOptional[TracebackType]rwrxrv)r=rrwrx)r)rprWrqzUnion[str, Callable]rrrUrwrx©rwr—)rwrW©rwrU©rwr–)rCrWrwrx©rr—rwrx©rwrb)rCrbrwrx)rwr)rCrrwrx)rwzasyncio.AbstractEventLoop)rwz$List[Tuple[str, BinaryProtocolType]])rCzUnion[str, Sequence[int]]rwrx)rwrN)rCrNrwrx)rérWrwrE©NN)r\zOptional[Union[int, str]]rr–rwrx)rùrUrwrb)rrWrwrx)rwzOptional[Tuple[int, ...]])FrLr)rrbrrUrrUrwrb)rúUnion[int, Sequence[int]]rwrU)rr¢rwrx)rzOptional[Type[MySQLConverter]]rwrx)rwzType[MySQLConverter])rCzTuple[str, BinaryProtocolType]rwrx©r rWrwr>)rérHrwúOptional[RowType])r3rrwrx)rLr)rrUrrUrwrx)rwr)NNNNNNN)ršr˜r›r˜rIr˜rJz#Optional[Type[MySQLCursorAbstract]]rKr˜r„r—r…r—rwr)FNN)
rärbrMúOptional[List[DescriptionType]]r›r˜r=rrwz1Tuple[Optional[RowType], Optional[EofPacketType]])NFNNN)rPr—rärbrMr¥r›r˜rQrr=rrwz-Tuple[List[RowType], Optional[EofPacketType]])r]rbr^r–r_r˜rwrx)reúOptional[Dict[str, Any]]rfr¦rwrx)r‹rWrwrC)FFF) rérHr›rbršrbrmrbr=rrwrE)rorHr=rrwz!Generator[ResultType, None, None]©rL)rrrUrsrUr=rrwrx)rvr_r=rrwz/Mapping[str, Union[int, List[DescriptionType]]])r~r~r) rrzUnion[int, CMySQLPrepStmt]ryzSequence[BinaryProtocolType]rorrrUr=rrwz&Optional[Union[Dict[str, Any], Tuple]])rrrUr=rrwrx)rrUrwrC)
rrrUr„rUryrr=rrwrU)rwr_rf)r‰r—rwrx)rwrG)rŽrUrwrC)rwr@)rwrC)
r€r€r€Nr€r€r€r€r€r€)r5rWrˆrWr‹rWr\r—rŒrWrrWrŽrWr­rWr®rWržrWrwzOptional[OkPacketType])pryrzr{r|r-r÷rürrörEr%r$Ú staticmethodr.Úpropertyr    rur‡rzr|r£r‹Úsetterr„r…r˜rœržr£r¦r¬rªr¬r®r“rµrºr”rÀrÂr–rÉrËr˜r™rÓrr\rÛr×rær+rêrïrîrúrürþr#r.r-rrrÿrrùrrrrrr r¤r(r+r-r/r’r–r9r<rúrrFrÿr?r}r3rNr1rSrUrcrgrirkr›rprtrwrzr}rr‚r…r‡rŠrŒrr‘r“r•r~rurirr¤s=…Ù1ð
#ØØØØ"&ØØØØØØ%)Ø&*ØØ %Ø Ø#'Ø%'Ø"&Ø&*Ø"Ø"'ØØØ,0Ø/3Ø+/ØIMØ#8Ð9MÑ#NØ4IØ (ñ5
ð59Ø',Ø"7Ð8IÑ"JØ&;¸NÑ&KØ'<¸_Ñ'MØ%)Ø&*Ø $Ø"&Ø!%Ø*/Ø.3Ø'<¸^Ñ'LØ,0Ø04Ø48Ø)-Ø,0ñgM,ððM,ðð    M,ð
ð M,ð ð M,ð ðM,ððM,ððM,ððM,ððM,ððM,ð#ðM,ð$ðM,ððM,ð ð!M,ð"ð#M,ð$!ð%M,ð&#ð'M,ð( ð)M,ð*$ð+M,ð,ð-M,ð. ð/M,ð0ð1M,ð2ð3M,ð4*ð5M,ð6 -ð7M,ð8)ð9M,ð:Gð;M,ð<!ð=M,ð>%2ð?M,ðD2ðEM,ðF!%ðGM,ðH ðIM,ðJ$ðKM,ðL%ðMM,ðN#ðOM,ðP$ðQM,ðRðSM,ðT ðUM,ðVðWM,ðX(ðYM,ðZ,ð[M,ð\%ð]M,ð^*ð_M,ð`.ðaM,ðb2ðcM,ðd'ðeM,ðf*ógM,ó^ð37Ø-1Ø-1ð    à/ðð+ðð+ð    ð
 
ó óaXóF4,ól[
ózORðbàJKð Øð Ø$8ð ØDGð à     ò óð ðDØò#óóð#ðòóððòóððòóððò!óð!ðò
óð
ð‡__ò
óð
ðò
"óð
"ð×Ñò%óð%ð>ò
#óð
#ð×Ñò&óð&ó>ó
-ðò%óð%ð×Ñò&ó ð&ð
ò)óð)ð×Ñò*ó ð*ðò$óð$ðòóððòPóðPðò/óð/ðò&óð&ðò
óð
ð×Ñò
óð
óó
!ð ò
óð
ð×Ñò
óð
óó
 ð
ò
óð
ð‡__ò
óð
ó$ó ð$ò"óð"ð×Ñò #óð #ðò'óð'ð×Ñò'óð'ð(ò#óð#ð×Ñò $óð $ðò    'óð    'ðò"óð"ðò(óð(ðòóðð&‡__òóððò"óð"ð ò5óð5ðò óð ó:ð"UYð8;Ø0ð8;ØDQð8;à     ó8;ót/ó0óñÐ0Ð)×0Ñ0Ð?OÔPÓQò#óRð#ñÐ0Ð)×0Ñ0¸}ÔMÓNò óOð ðò    óð    ðò
óð
ðò óð ðò óð ðàGHð Øð Ø14ð ØADð à     ò óð ñ$Ð0Ð)×0Ñ0¸~ÔNÓOò!óPð!ð ò"óð"ð×ÑòUóðUñ0Ð0Ð)×0Ñ0Ð?PÔQÓRò    )óSð    )ðò%óð%ð×Ñòóðð$ò!óð!ð×Ñò.óð.ó 6ó1óó 7ó"ó
+ó "ó%ðò+óð+ô!+óF    "ðò  óð  ðTY€JÐPÓXàð$(Ø"Ø#'Ø<@Ø%)Ø&*Ø'+ð à ð ðð ð!ð     ð
:ð  ð #ð  ð$ð ð%ð ð
ò óð ð6ðØ37Ø"ð      àð  ð1ð  ðð      ð
ð  ð
;ò  óð  ðð $ØØ37Ø"Øð  àð ðð ð1ð     ð
ð  ð ð  ðð ð
7ò óð ð ò*óð*ðò,óð,ð
%*Ø)-Ø#'ð    D$à!ðD$ð'ðD$ð!ð    D$ð
 
ó D$ðLð48Ø6:ð à0ð ð4ð ð
ò     óð ð>ò óð ðò óð ððØØ#ð  àð ðð ðð     ð
ð  ð ð  ð
ò óð ð( àð ðð ð
+ó     ð(à-.ð Øð Ø'*ð Ø:=ð à     ò óð ðð     àð     ðð     ð
9ò         óð     ðð.0Ø!Øð 2à0ð2ð+ð2ðð    2ð
ð 2ð ð 2ð
0ò2óð2ðð àð ðð ð
ò     óð ðò óð ðò óð ð6 àð ðð ðð     ð
ð  ð
ó  ð*ò óð ð ó óð ðò óð ðò óð ðò óð ðò óð ððØØØ!%ØØØØ!Ø"$Ø!#ð, àð, ðð, ðð    , ð
ð , ð ð , ðð, ðð, ðð, ð ð, ðð, ð
 ò, óñ, rurcóì—eZdZdZ        d(                    d)d„Zd*d„Z            d+                            d,d„Zd-d„Zd.d„Ze    d/d„«Z
e
jd0d    „«Z
e    d/d
„«Z e jd0d „«Z e    d1d „«Z e    d2d „«Ze    d/d„«Ze    d3d„«Zeej&d¬««d3d„«Ze    d2d„«Ze    d4d„«Ze    d5d„«Ze    d6d„«Zed7d„«Ze        d8                            d9d„«Ze        d8                            d9d„«Ze                        d:d„«Zed;d„«Zed<d„«Zed=d>d„«Z         d?d„Z!ed@d„«Z"ed6d „«Z#eej&d!¬««d/d"„«Z$dAdBd#„Z%dCd$„Z&dDd%„Z'dEd&„Z(dFd'„Z)y)Grz#Defines the MySQL cursor interface.NcóX—||_|j|_d|_d|_d|_d|_d|_g|_g|_    d|_
d|_ d|_ d|_ d|_d|_d|_d|_||_||_|jj)|«y)NrFrIr¡rL)Ú _connectionr¬r×Ú _descriptionÚ_last_insert_idÚ    _warningsÚ_warning_countÚ    _executedÚ_executed_listÚ_stored_resultsÚ_binaryrëÚ    _rowcountÚ_nextrowÚ    arraysizeÚ_stmt_partitionsÚ_stmt_partitionÚ_stmt_map_resultsr»r¼r9)rrÚ
connectionr„r…s    rir÷zMySQLCursorAbstract.__init__ðsº€ð 5?ˆÔØ0:·±ˆŒ
Ø=AˆÔØ.2ˆÔØ6:ˆŒØ#$ˆÔØ*.ˆŒØ+-ˆÔØ*,ˆÔØ"ˆŒ ؈Œ    Ø ˆŒðL
ˆŒ 𠈌ð ð     Ôð@DˆÔØ',ˆÔà,8ˆÔØ-:ˆÔØ ×Ñ×#Ñ# DÕ)rucƒóK—|S­wrfr~rûs rirüzMySQLCursorAbstract.__aenter__s èø€Øˆ ùó‚cƒó@K—|j«ƒd{–—†y7Œ­wrfrþrs    rirzMySQLCursorAbstract.__aexit__rrcƒóK—|S­w)z†Iterate over result set.
 
        Iteration over the result set which calls self.fetchone()
        and returns the next row.
        r~rûs riÚ    __aiter__zMySQLCursorAbstract.__aiter__s èø€ð ˆ ùr¾cƒó|K—    |j«ƒd{–—†}|st‚|S7Œ#t$rtd‚wxYw­w)zl
        Used for iterating over the result set. Calls self.fetchone()
        to get the next row.
        N)r5r8ÚStopAsyncIteration)rrÚrows  riÚ    __anext__zMySQLCursorAbstract.__anext__&sDèø€ð
    /ØŸ ™ ›×'ˆCñÜ$Ð $؈
ð (ùÜò    /Ü$¨$Ð .ð    /üs ‚<„(—&˜(œ
<¦(¨9¹<có—|jS)a´
        Gets the cursor context's timeout in seconds for each attempt
        to read any data from the server.
 
        `read_timeout` is number of seconds upto which the connector should wait
        for the server to reply back before raising an ReadTimeoutError. We can set
        this option to None, which would signal the connector to wait indefinitely
        till the read operation is completed or stopped abruptly.
        r‡rûs rir„z MySQLCursorAbstract.read_timeout3rˆrucóV—| t|t«r|dkr td«‚||_y)a
        Sets or updates the cursor context's timeout in seconds for each attempt
        to read any data from the server.
 
        `read_timeout` is number of seconds upto which the connector should wait
        for the server to reply back before raising an ReadTimeoutError. We can set
        this option to None, which would signal the connector to wait indefinitely
        till the read operation is completed or stopped abruptly.
 
        Args:
            timeout: Accepts a non-negative integer which is the timeout to be set
                     in seconds or None.
        Raises:
            InterfaceError: If a positive integer or None is not passed via the
                            timeout parameter.
        Examples:
            The following will set the read_timeout of the current session's cursor
            context to 5 seconds:
            ```
            >>> cnx = await mysql.connector.connect(user='scott')
            >>> cur = await cnx.cursor()
            >>> cur.read_timeout = 5
            ```
        NrrŠr‹rŒs  rir„z MySQLCursorAbstract.read_timeout@s4€ð4 Рܘg¤sÔ+¨w¸ª{Ü$ØLóðð%ˆÕrucó—|jS)a¬
        Gets the cursor context's timeout in seconds for each attempt
        to send data to the server.
 
        `write_timeout` is number of seconds upto which the connector should spend to
        write to the server before raising an WriteTimeoutError. We can set this option
        to None, which would signal the connector to wait indefinitely till the write
        operation is completed or stopped abruptly.
        rrûs rir…z!MySQLCursorAbstract.write_timeoutarrucóV—| t|t«r|dkr td«‚||_y)a 
        Sets or updates the cursor context's timeout in seconds for each attempt
        to send data to the server.
 
        `write_timeout` is number of seconds upto which the connector should spend to
        write to the server before raising an WriteTimeoutError. We can set this option
        to None, which would signal the connector to wait indefinitely till the write
        operation is completed or stopped abruptly.
 
        Args:
            timeout: Accepts a non-negative integer which is the timeout to be set in
                     seconds or None.
        Raises:
            InterfaceError: If a positive integer or None is not passed via the
                            timeout parameter.
        Examples:
            The following will set the write_timeout of the current session's cursor
            context to 5 seconds:
            ```
            >>> cnx = await mysql.connector.connect(user='scott')
            >>> cur = await cnx.cursor()
            >>> cur.write_timeout = 5
            ```
        Nrr’r“rŒs  rir…z!MySQLCursorAbstract.write_timeoutns4€ð4 Рܘg¤sÔ+¨w¸ª{Ü$ØMóðð&ˆÕrucó—|jS)aÂReturn description of columns in a result.
 
        This property returns a list of tuples describing the columns in in a result
        set. A tuple is described as follows:
 
                (column_name,
                 type,
                 None,
                 None,
                 None,
                 None,
                 null_ok,
                 column_flags)  # Addition to PEP-249 specs
 
        Returns a list of tuples.
        )r®rûs riÚ descriptionzMySQLCursorAbstract.descriptions€ð$נѠРrucó—|jS)aÓReturn the number of rows produced or affected.
 
        This property returns the number of rows produced by queries such as a
        SELECT, or affected rows when executing DML statements like INSERT or UPDATE.
 
        Note that for non-buffered cursors it is impossible to know the number of rows
        produced before having fetched them all. For those, the number of rows will
        be -1 right after execution, and incremented when fetching rows.
        )r¶rûs riÚrowcountzMySQLCursorAbstract.rowcount£s€ð~‰~Ðrucó—|jS)z Gets the value generated for an AUTO_INCREMENT column by the previous
        INSERT or UPDATE statement or None when there is no such value available.
        ©r¯rûs riÚ    lastrowidzMySQLCursorAbstract.lastrowid°s€ð
×#Ñ#Ð#rucó—|jS)zGets warnings.©r°rûs riÚwarningszMySQLCursorAbstract.warnings·ó€ð~‰~ÐrurÓrcó—|jS)zReturns Warnings.rÒrûs riÚ fetchwarningsz!MySQLCursorAbstract.fetchwarnings¼rÔrucó—|jS)z•Return the number of warnings.
 
        This property returns the number of warnings generated by the previously
        executed operation.
        )r±rûs riÚ warning_countz!MySQLCursorAbstract.warning_countÁrÔrucóf—|js
t«Std„|jD««S)z[Returns column names.
 
        This property returns the columns names as a tuple.
        c3ó&K—|]    }|d–—Œ y­w)rNr~)rgÚds  rirjz3MySQLCursorAbstract.column_names.<locals>.<genexpr>Òsèø€Ò4˜aQq•TÑ4ùs‚)rËrprûs riÚ column_namesz MySQLCursorAbstract.column_namesÊs+€ð ×ÒÜ“7ˆNÜÑ4 4×#3Ñ#3Ô4Ó4Ð4rucóê—|j€y    |jj«jd«S#ttf$r+t t |jj««cYSwxYw)aŸReturns the latest executed statement.
 
        When a multiple statement is executed, the value of `statement`
        corresponds to the one that caused the current result set, provided
        the statement-result mapping was enabled. Otherwise, the value of
        `statement` matches the statement just as provided when calling
        `execute()` and it does not change as result sets are traversed.
        Nzutf-8)r²rÚdecoderÚUnicodeDecodeErrorr!rWrûs rirvzMySQLCursorAbstract.statementÔsc€ð >‰>Ð !Øð    5Ø—>‘>×'Ñ'Ó)×0Ñ0°Ó9Ð 9øÜÔ 2Ð3ò    5Üœ˜TŸ^™^×1Ñ1Ó3Ó4Ò 4ð    5ús(8¸7A2Á1A2có,—t|j«S)zÇReturns whether the cursor could have rows returned.
 
        This property returns True when column descriptions are available and possibly
        also rows, which will need to be fetched.
        )rbr®rûs riÚ    with_rowszMySQLCursorAbstract.with_rowsås€ôD×%Ñ%Ó&Ð&rucó—y)zÓReturns an iterator for stored results.
 
        This method returns an iterator over results which are stored when callproc()
        is called. The iterator will provide MySQLCursorBuffered instances.
        Nr~rûs riÚstored_resultsz"MySQLCursorAbstract.stored_resultsîrvrucƒó K—y­w)a¢Executes the given operation (a MySQL script) substituting any markers
        with the given parameters.
 
        For example, getting all rows where id is 5:
        ```
        cursor.execute("SELECT * FROM t1 WHERE id = %s", (5,))
        ```
 
        If you want each single statement in the script to be related
        to its corresponding result set, you should enable the `map_results`
        switch - see workflow example below.
 
        If the given script uses `DELIMITER` statements (which are not recognized
        by MySQL Server), the connector will parse such statements to remove them
        from the script and substitute delimiters as needed. This pre-processing
        may cause a performance hit when using long scripts. Note that when enabling
        `map_results`, the script is expected to use `DELIMITER` statements in order
        to split the script into multiple query strings.
 
        The following characters are currently not supported by the connector in
        `DELIMITER` statements: `"`, `'`, #`, `/*` and `*/`.
 
        If warnings were generated, and `connection.get_warnings` is
        `True`, then `self.warnings` will be a list containing these
        warnings.
 
        Args:
            operation: Operation to be executed - it can be a single or a
                       multi statement.
            params: The parameters found in the tuple or dictionary params are bound
                    to the variables in the operation. Specify variables using `%s` or
                    `%(name)s` parameter style (that is, using format or pyformat style).
            map_results: It is `False` by default. If `True`, it allows you to know what
                        statement caused what result set - see workflow example below.
                        Only relevant when working with multi statements.
 
        Returns:
            `None`.
 
        Example (basic usage):
            The following example runs many single statements in a
            single go and loads the corresponding result sets
            sequentially:
 
            ```
            sql_operation = '''
            SET @a=1, @b='2024-02-01';
            SELECT @a, LENGTH('hello'), @b;
            SELECT @@version;
            '''
            async with await cnx.cursor() as cur:
                await cur.execute(sql_operation)
 
                result_set = await cur.fetchall()
                # do something with result set
                ...
 
                while (await cur.nextset()):
                    result_set = await cur.fetchall()
                    # do something with result set
                    ...
            ```
 
            In case the operation is a single statement, you may skip the
            looping section as no more result sets are to be expected.
 
        Example (statement-result mapping):
            The following example runs many single statements in a
            single go and loads the corresponding result sets
            sequentially. Additionally, each result set gets related
            to the statement that caused it:
 
            ```
            sql_operation = '''
            SET @a=1, @b='2024-02-01';
            SELECT @a, LENGTH('hello'), @b;
            SELECT @@version;
            '''
            async with await cnx.cursor() as cur:
                await cur.execute(sql_operation, map_results=True)
 
                # statement 1 is `SET @a=1, @b='2024-02-01'`,
                # result set from statement 1 is `[]` - aka, an empty set.
                result_set, statement = await cur.fetchall(), cur.statement
                # do something with result set
                ...
 
                # 1st call to `nextset()` will laod the result set from statement 2,
                # statement 2 is `SELECT @a, LENGTH('hello'), @b`,
                # result set from statement 2 is `[(1, 5, '2024-02-01')]`.
                #
                # 2nd call to `nextset()` will laod the result set from statement 3,
                # statement 3 is `SELECT @@version`,
                # result set from statement 3 is `[('9.0.0-labs-mrs-8',)]`.
                #
                # 3rd call to `nextset()` will return `None` as there are no more sets,
                # leading to the end of the consumption process of result sets.
                while (await cur.nextset()):
                    result_set, statement = await cur.fetchall(), cur.statement
                    # do something with result set
                    ...
            ```
 
            In case the mapping is disabled (`map_results=False`), all result
            sets get related to the same statement, which is the one provided
            when calling `execute()`. In other words, the property `statement`
            will not change as result sets are consumed, which contrasts with
            the case in which the mapping is enabled. Note that we offer a
            new fetch-related API command which can be leveraged as a shortcut
            for consuming result sets - it is equivalent to the previous
            workflow.
 
            ```
            sql_operation = '''
            SET @a=1, @b='2024-02-01';
            SELECT @a, LENGTH('hello'), @b;
            SELECT @@version;
            '''
            async with await cnx.cursor() as cur:
                await cur.execute(sql_operation, map_results=True)
                async for statement, result_set in cur.fetchsets():
                    # do something with result set
            ```
        Nr~©rrÚ    operationÚparamsÚ map_resultss    rir4zMySQLCursorAbstract.executeörërìcƒó K—y­w)aÈExecutes the given operation (it can be a multi statement
        or a MySQL script) substituting any markers with the given parameters.
 
        **NOTE: `executemulti()` is deprecated and will be removed in a
        future release. Use `execute()` instead.**
 
        If you want each single statement in the script to be related
        to its corresponding result set, you should enable the `map_results`
        switch - see workflow example below. This capability reduces performance.
 
        **Unexpected behavior might happen if your script includes the following
        symbols as delimiters `"`, `'`, `#`, `/*` and `*/`. The use of these should
        be avoided for now**.
 
        Refer to the documentation of `execute()` to see the multi statement execution
        workflow.
 
        Args:
            operation: Operation to be executed - it can be a single or a
                       multi statement.
            params: The parameters found in the tuple or dictionary params are bound
                    to the variables in the operation. Specify variables using `%s` or
                    `%(name)s` parameter style (that is, using format or pyformat style).
            map_results: It is `False` by default. If `True`, it allows you to know what
                        statement caused what result set - see workflow example below.
                        Only relevant when working with multi statements.
 
        Returns:
            `None`.
        Nr~rås    riÚ executemultiz MySQLCursorAbstract.executemultiz    rërìcƒó K—y­w)a=Prepare and execute a MySQL Prepared Statement many times.
 
        This method will prepare the given operation and execute with each tuple found
        the list seq_params.
 
        If the cursor instance already had a prepared statement, it is first closed.
 
        executemany() simply calls execute().
        Nr~)rrræÚ
seq_paramss   riÚ executemanyzMySQLCursorAbstract.executemany     rërìcƒó K—y­w)zÆReturn next row of a query result set.
 
        Raises:
            InterfaceError: If there is no result to fetch.
 
        Returns:
            tuple or None: A row from query result set.
        Nr~rûs rir5zMySQLCursorAbstract.fetchone°    rërìcƒó K—y­w)zÖReturn all rows of a query result set.
 
        Raises:
            InterfaceError: If there is no result to fetch.
 
        Returns:
            list: A list of tuples with all rows of a query result set.
        Nr~rûs riÚfetchallzMySQLCursorAbstract.fetchall»    rërìcƒó K—y­w)a<Return the next set of rows of a query result set.
 
        When no more rows are available, it returns an empty list.
        The number of rows returned can be specified using the size argument, which
        defaults to one.
 
        Returns:
            list: The next set of rows of a query result set.
        Nr~)rrÚsizes  riÚ    fetchmanyzMySQLCursorAbstract.fetchmanyÆ    rërìcóØK—d}|js |j}    |j«ƒd{–—†}|jr |jn||f­–—|j    «ƒd{–—†rR    |j«ƒd{–—†}|jr |jn||f­–—|j    «ƒd{–—†rŒQyy7ŒŽ#t$rg}YŒ™wxYw7Œj7ŒS#t$rg}YŒ^wxYw7Œ/­w)aÙGenerates the result sets stream caused by the last `execute*()`.
 
        Returns:
            A 2-tuple; the first element is the statement that caused the
            result set, and the second is the result set itself.
 
        Example:
            Consider the following example where multiple statements are executed in one
            go:
 
            ```
                sql_operation = '''
                SET @a=1, @b='2024-02-01';
                SELECT @a, LENGTH('hello'), @b;
                SELECT @@version;
                '''
                async with await cnx.cursor() as cur:
                    await cur.execute(sql_operation, map_results=True)
 
                    result_set, statement = await cur.fetchall(), cur.statement
                    # do something with result set
                    ...
 
                    while (await cur.nextset()):
                        result_set, statement = await cur.fetchall(), cur.statement
                        # do something with result set
                        ...
            ```
 
            In this case, as an alternative to loading the result sets with `nextset()`
            in combination with a `while` loop, you can use `fetchsets()` which is
            equivalent to the previous approach:
 
            ```
                sql_operation = '''
                SET @a=1, @b='2024-02-01';
                SELECT @a, LENGTH('hello'), @b;
                SELECT @@version;
                '''
                async with await cnx.cursor() as cur:
                    await cur.execute(sql_operation, map_results=True)
                    async for statement, result_set in cur.fetchsets():
                        # do something with result set
            ```
        N)r»rvrðr8Únextset)rrÚstatement_cachedÚ
result_sets   riÚ    fetchsetszMySQLCursorAbstract.fetchsetsÒ    sçèø€ðh ÐØ×%Ò%Ø#Ÿ~™~Ð ð    Ø#Ÿ}™}›×.ˆJð#×4Ò4ˆDNŠNÐ:JØ ðó    ð—L‘L“N×"Ð"ð  Ø#'§=¡=£?×2
ð#'×"8Ò"8—’Ð>NØðó ð —L‘L“N×"Ó"ð /ùÜò    ØŠJð    úð
#øà2ùÜ!ò  Ø’
ð  úð#ús‹‚C*žC±C²C¶2C*Á(CÁ)C*Á.CÂCÂCÂ2C*Â8C(Â9C*Â>C*ÃCÃ Cà C*ÃCÃC*ÃCÃ C%Ã"C*Ã$C%Ã%C*cƒó K—y­w)aKMakes the cursor skip to the next available set, discarding
        any remaining rows from the current set.
 
        This method should be used as part of the multi statement
        execution workflow - see example below.
 
        Returns:
            It returns `None` if there are no more sets. Otherwise, it returns
            `True` and subsequent calls to the `fetch*()` methods will return
            rows from the next result set.
 
        Example:
            The following example runs many single statements in a
            single go and loads the corresponding result sets
            sequentially:
 
            ```
            sql_operation = '''
            SET @a=1, @b='2024-02-01';
            SELECT @a, LENGTH('hello'), @b;
            SELECT @@version;
            '''
            async with await cnx.cursor() as cur:
                await cur.execute(sql_operation)
 
                result_set = await cur.fetchall()
                # do something with result set
                ...
 
                while (await cur.nextset()):
                    result_set = await cur.fetchall()
                    # do something with result set
                    ...
            ```
 
            In case the operation is a single statement, you may skip the
            looping section as no more result sets are to be expected.
        Nr~rûs rirõzMySQLCursorAbstract.nextset
rërìcƒó K—y­w)zClose the cursor.Nr~rûs rirÿzMySQLCursorAbstract.closeC
rërìrÐcó—|jS)z·Return the value generated for an AUTO_INCREMENT column.
 
        Returns the value generated for an AUTO_INCREMENT column by the previous
        INSERT or UPDATE statement.
        rÏrûs riÚ getlastrowidz MySQLCursorAbstract.getlastrowidG
s€ð×#Ñ#Ð#rucƒó K—y­w)zReset the cursor to default.Nr~)rrÚfrees  riÚresetzMySQLCursorAbstract.resetP
rërìcóH—t|d«r|jjSy)z„Gets a list of query attributes from the connector's side.
 
        Returns:
            List of existing query attributes.
        r­N)Úhasattrr­r¬rûs riÚget_attributesz"MySQLCursorAbstract.get_attributesS
s#€ô 4˜Ô 'Ø×#Ñ#×/Ñ/Ð /Ørucó¶—t|t«s td«‚|t|t«std|›d«‚|jj ||f«y)aþAdd a query attribute and its value into the connector's query attributes.
 
        Query attributes must be enabled on the server - they are disabled by default. A
        warning is logged when setting query attributes for a server connection
        that does not support them.
 
        Args:
            name: Key name used to identify the attribute.
            value: A value converted to the MySQL Binary Protocol.
 
        Raises:
            ProgrammingError: If the value's conversion fails.
        ú&Parameter `name` must be a string typeNzObject z$ cannot be converted to a MySQL type)r!rWr;r&r­r()rrr rCs   riÚ add_attributez!MySQLCursorAbstract.add_attribute]
s]€ô˜$¤Ô$Ü"Ð#KÓLÐ LØ Ð ¤Z°´~Ô%FÜ"ؘ%˜РDÐEóð ð     ×Ñ×+Ñ+¨T°5¨MÕ:rucón—t|t«s td«‚|jj    |«S)a'Removes a query attribute by name from the connector's query attributes.
 
        If no match, `None` is returned, else the corresponding value is returned.
 
        Args:
            name: Key name used to identify the attribute.
 
        Returns:
            value: Attribute's value.
        r)r!rWr;r­r+r*s  riÚremove_attributez$MySQLCursorAbstract.remove_attributes
s1€ô˜$¤Ô$Ü"Ð#KÓLÐ LØ×Ñ×2Ñ2°4Ó8Ð8rucó8—|jj«y)z<Clears the list of query attributes on the connector's side.N)r­r-rûs riÚclear_attributesz$MySQLCursorAbstract.clear_attributes‚
s€à ×Ñ×*Ñ*Õ,rur¡)r¼rr„r—r…r—)rwrršr›)rwzIterator[RowType])rwrFrœrŸ)rwr¥r)rwzOptional[List[WarningType]])rwzTuple[str, ...]ržr )rwzIterator[MySQLCursorAbstract])r~F)rærWrçz$Union[Sequence[Any], Dict[str, Any]]rèrbrwrx)rærWrìzSequence[ParamsSequenceType]rwrx)rwr¤)rwz List[RowType]r§)ròrUrwzList[Sequence[Any]])rwz9AsyncGenerator[tuple[Optional[str], list[RowType]], None])rwr˜)T)rþrbrwr)rwz.Optional[List[Tuple[str, BinaryProtocolType]]])r rWrCr>rwrxr£rv)*ryrzr{r|r÷rürrÁrÅr©r„rªr…rËrÍrÐrÓr#r.r-rÖrØrÜrvrár    rãr4rêrír5rðrórørõrÿrürÿrrrr    r~rurirrís"„Ù-ð
'+Ø'+ð    !*à+ð!*ð$ð!*ð%ó    !*óFð
37Ø-1Ø-1ð    à/ðð+ðð+ð    ð
 
ó óó ðò
"óð
"ð×Ñò%óð%ð@ò
#óð
#ð×Ñò&óð&ð@ò!óð!ð&ò
óð
ðò$óð$ð òóðñÐ0Ð)×0Ñ0¸zÔJÓKòóLððò#óð#ðò5óð5ðò5óð5ð ò'óð'ðò óð ðð8:Ø!ð    A àðA ð5ðA ðð    A ð
 
ò A óðA ðFð8:Ø!ð    # àð# ð5ð# ðð    # ð
 
ò # óð# ðJð  àð  ð1ð  ð
ò      óð  ðò óð ðò óð ðó     óð     ðFà    BóFðPò& óð& ðPò óð ñÐ0Ð)×0Ñ0¸{ÔKÓLò$óMð$ô+óó;ó, 9ô-rurcó—eZdZdZy)ÚCMySQLPrepStmtaPStructure to represent a result from `CMySQLConnection.cmd_stmt_prepare`.
    It can be used consistently as a type hint.
 
    `_mysql_connector.MySQLPrepStmt` isn't available when the C-ext isn't built.
 
    In this regard, `CmdStmtPrepareResult` acts as a proxy/wrapper entity for a
    `_mysql_connector.MySQLPrepStmt` instance.
    N)ryrzr{r|r~rurir r ‡
s„òrur )hr|Ú
__future__rÚmysql.connector.optionfilesrÚ__all__rÕrrmrÛÚabcrr    Ú dataclassesr
r Úinspectr Útypesr Útypingrrrrrrrrrrrrrrrrrrr r!Ú _decoratingr#Ú    abstractsr$r%r&r'r(r)r*r+Ú    constantsr,r-r.r/r0r1r2r3r4Ú
conversionr5r6Úerrorsr7r8r9r:r;Ú tls_ciphersr<r=r>r?r@rArBrCrDrErFrGrHrIÚutilsrJrKÚauthenticationrMrOrNrVrPÚnetworkrQrRr r©rrrr r~ruriú<module>rsðñ@2å"å9â
J€ãÛ    Û    Ûç#ß(ÝÝ÷÷÷÷÷óõ.%÷    ÷    ó    ÷
÷
õ
÷<÷õ÷S÷ ÷ ÷ ó ÷2Ý.ß'Ý#áß8ð 7‰7gÑ €ð ÷%ð%ó ð%ôDF ˜côF ôR:W
-˜#ôW
-ôt^õru