zmc
2023-12-22 9fdbf60165db0400c2e8e6be2dc6e88138ac719a
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
U
¸ý°d$¤ã@s¦ddlZddlZddlZddlmZddlmZddlmZddlmZddlm    Z    ddlm
Z
dd    lm Z dd
lm Z dd l mZdd l mZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddl"m#Z#ddl"m$Z$ddlm%Z%dd lm&Z&dd!l'm(Z(dd"l)m*Z*dd#lm+Z+dd$lm,Z,dd%lm-Z-dd&lm.Z.dd'lm/Z/d(\Z0Z1Gd)d*„d*e j2ƒZ3Gd+d,„d,e3ƒZ4Gd-d.„d.e j2ƒZ5Gd/d0„d0e j2ƒZ6d1d2„Z7Gd3d4„d4e,e3ƒZ8Gd5d6„d6e j9ƒZ:Gd7d8„d8e+e j9ƒZ;Gd9d:„d:e j2ƒZ<Gd;d<„d<e j=ƒZ>Gd=d>„d>e j2ƒZ?Gd?d@„d@e j2ƒZ@dAZAdS)BéNé)Úconfig)Úengines)Úeq_)Ú expect_raises)Úexpect_raises_message)Úexpect_warnings)Úfixtures)Úis_)Úget_temp_table_name)Útemp_table_keyword_args©ÚColumn)ÚTableé)Úevent)Ú
ForeignKey)Úfunc)ÚIdentity)Úinspect)ÚInteger)ÚMetaData)ÚString)Útesting)Útypes)Ú    Inspector)Ú
ObjectKind)Ú ObjectScope)ÚNoSuchTableError)ÚUnreflectableTableError)ÚDDL)ÚIndex)Ú quoted_name)Ú BLANK_SCHEMA)ÚComparesIndexes)ÚComparesTables)Úis_false)Úis_true)Úmock)NNc@seZdZedd„ƒZdS)ÚOneConnectionTablesTestcCs6tjjjr,ddlm}tjt|j    dddStj
SdS)Nr)ÚpoolÚclass)Z    poolclassÚscope)Úoptions) rÚ requirementsZindependent_connectionsÚenabledÚ
sqlalchemyr*rÚtesting_engineÚdictZ
StaticPoolÚdb)Úclsr*©r5ú_d:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\sqlalchemy/testing/suite/test_reflection.pyÚ
setup_bind1s 
  ÿz"OneConnectionTablesTest.setup_bindN)Ú__name__Ú
__module__Ú __qualname__Ú classmethodr7r5r5r5r6r)0sr)c@sÈeZdZdZedd„ƒZedd„ƒZedd„ƒZedd    „ƒZd
d „Z    d d „Z
e j j dd„ƒZe j j dd„ƒZe j jdd„ƒZe j jdd„ƒZe j je j je j jdd„ƒƒƒZe j je j j dd„ƒƒZdS)Ú HasTableTestTcCs~td|tdtddtdtdƒƒƒtjjjrTtd|tdtddtdtdƒƒtj    dtjj
rf|  |¡tjj jrz|  |¡dS)    NÚ
test_tableÚidT©Ú primary_keyÚdataé2Ú test_table_s©Úschema)rrrrrÚrequiresÚschemasr/rÚ test_schemaÚview_reflectionÚ define_viewsÚhas_temp_tableÚdefine_temp_tables©r4Úmetadatar5r5r6Ú define_tablesCs$  ü
  û
 
zHasTableTest.define_tablescCspd}t |dt|ƒ¡t |dtdƒ¡tjjjrldtjtjf}t |dt|ƒ¡t |dtdtjƒ¡dS)Nz1CREATE VIEW vv AS SELECT id, data FROM test_tableÚ after_createÚ before_dropz DROP VIEW vvz9CREATE VIEW %s.vv AS SELECT id, data FROM %s.test_table_szDROP VIEW %s.vv)    rÚlistenr rrFrGr/rrH)r4rNÚqueryr5r5r6rJYs 
þÿÿ ýzHasTableTest.define_viewscCstttjdtj›ƒS©NZ    user_tmp_©r rr3Úident©r4r5r5r6Útemp_table_nameos
 
ÿzHasTableTest.temp_table_namec    Cs€tttjƒ}| ¡}t||tdtjddtdt d¡ƒf|Ž}t    j
j j r|t    j
j j r|t |dtdtjƒ¡t |dtd    ƒ¡dS)
Nr>Tr?ÚnamerBrPú=create temporary view user_tmp_v as select * from user_tmp_%srQúdrop view user_tmp_v)r rr3rXrrÚsaÚINTÚVARCHARrrFrIr/Útemporary_viewsrrRr rV©r4rNÚkwÚ
table_nameÚuser_tmpr5r5r6rLus0 üûÿþÿÿýzHasTableTest.define_temp_tablesc    CsVtj ¡B}ttjj |d¡ƒttjj |d¡ƒttjj |d¡ƒW5QRXdS)Nr=rCÚnonexistent_table)rr3Úbeginr'ÚdialectÚ    has_tabler&©ÚselfÚconnr5r5r6Útest_has_tableŽs zHasTableTest.test_has_tablec    Cs€ttjƒ}t| d¡ƒtd|tdtƒƒ}t| d¡ƒ|     tj¡z(t| d¡ƒ|  ¡t| d¡ƒW5| 
tj¡XdS)Nr=Z    new_tableÚcol) rrr3r'rgrrrr&ÚcreateÚdropÚ clear_cache)rirNÚinspÚntr5r5r6Útest_has_table_cache”s
 z!HasTableTest.test_has_table_cachec    Cshtj ¡T}ttjjj|dtjdƒttjjj|dtjdƒttjjj|dtjdƒW5QRXdS)Nr=rDrCrd)rr3rer&rfrgrHr'rhr5r5r6Útest_has_table_schema¡s, ÿÿÿÿÿÿz"HasTableTest.test_has_table_schemac    Cs2tj ¡}ttjjj|dddƒW5QRXdS)Nr=Znonexistent_schemarD)rr3rer&rfrgrhr5r5r6Ú!test_has_table_nonexistent_schema´s ÿÿz.HasTableTest.test_has_table_nonexistent_schemacCst|ƒ}t| d¡ƒdS©NÚvv©rr'rg©riÚ
connectionrpr5r5r6Útest_has_table_view½sz HasTableTest.test_has_table_viewcCs"t|ƒ}| ¡}t| |¡ƒdS©N)rrXr'rg)riryrprXr5r5r6Útest_has_table_temp_tableÂsz&HasTableTest.test_has_table_temp_tablecCst|ƒ}t| d¡ƒdS©NÚ
user_tmp_vrwrxr5r5r6Útest_has_table_temp_viewÈsz%HasTableTest.test_has_table_temp_viewcCst|ƒ}t| dtj¡ƒdSru)rr'rgrrHrxr5r5r6Útest_has_table_view_schemaÏsz'HasTableTest.test_has_table_view_schemaN)r8r9r:Ú __backend__r;rOrJrXrLrkrrrrFrGrsrtÚviewsrzrKr|rIr_rr€r5r5r5r6r<@s4
 
 
 
 
 
 
 
r<c@sTeZdZdZedd„ƒZejddddZdd    „Z    ed
d „ƒZ
ej j ed d „ƒƒZ dS)Ú HasIndexTestTc    Cs€td|tdtddtdtdƒƒtdtdƒƒƒ}td|jjƒtjj    j
r|td|tdtddtdtdƒƒt j d    }td
|jjƒdS) Nr=r>Tr?rArBÚdata2Úmy_idxrDÚmy_idx_s) rrrrr!ÚcrArrFrGr/rrH)r4rNÚttr5r5r6rOÙs"   û
  ûzHasIndexTest.define_tablesrfÚ    inspectorÚkind©Úargnamescs"|dkr‡fdd„StˆƒjSdS)Nrfcstjjjˆf|ž|ŽSr{)rr3rfÚ    has_index)ÚaÚk©rjr5r6Ú<lambda>òóz)HasIndexTest._has_index.<locals>.<lambda>)rr)rirŠrjr5rr6Ú
_has_indexðs zHasIndexTest._has_indexc    Cs| ||¡}|ddƒst‚|ddƒr(t‚|ddƒr6t‚|ddƒrDt‚|ddƒrRt‚|ddƒr`t‚td|jjjjƒ}td|td    t    ƒtdd    ƒƒ}| 
|¡| 
|¡zV|d
krÐ|ddƒr¸t‚|ddƒrÆt‚|j   ¡|ddƒd ksât‚|ddƒd ksôt‚W5|  |¡|  |¡XdS) Nr=r…r†rdZnonexistent_idxZmy_idx_2Z test_table_2Zmy_idx_3Úfoor‰T)r“ÚAssertionErrorr!Útablesr=r‡r„rrrrmrnÚ__self__ro)rirŠryrNÚmethÚidxZtblr5r5r6Útest_has_indexös2 ü
 
 
 
zHasIndexTest.test_has_indexcCs`| ||¡}|ddtjds t‚|ddtjdr4t‚|ddtjdrHt‚|ddtjdr\t‚dS)Nr=r†rDr…rdZnonexistent_idx_s)r“rrHr•)rirŠryr˜r5r5r6Útest_has_index_schemas ÿ
ÿz"HasIndexTest.test_has_index_schemaN)r8r9r:rr;rOrÚ combinationsrŠr“ršrFrGr›r5r5r5r6rƒÖs
 
rƒc@s´eZdZdZdZedd„ƒZdd„Zedd„ƒZee    j
j d    d
„ƒƒZ ed d „ƒZ ed d„ƒZedd„ƒZedd„ƒZee    j
jdd„ƒƒZee    j
jdd„ƒƒZee    j
jdd„ƒƒZdS)ÚQuotedNameArgumentTestÚonceTcCs´td|tdtƒtdtdƒƒtdtdƒƒtdtƒtjdddt d    d¡tjdd
dtjdgd gd dtj    d ddddd t
j j j rútd|tdtƒtdtdƒƒtdtdƒƒtdtƒtjdddt dd¡tjdddtjdgd gddtj    d ddddd td|tdtddtdtƒddt
j jj r°t
j j j r>ddg}ndg}|D]f}dtjjj d|¡tjjj |¡f}t |dt|ƒ¡t |dtd tjjj d|¡ƒ¡qHdS)!Nú quote ' oner>rYrBrAZ
related_idzpk quote ' one©rYzix quote ' onez uq quote' onez
related.idzfk quote ' onez name != 'foo'zck quote ' onezquote ' one commentT)ÚcommentÚ test_needs_fkú quote " twozpk quote " twozix quote " twoz uq quote" twozfk quote " twozck quote " two zquote " two commentÚrelatedr?©r¢z"CREATE VIEW %s AS SELECT * FROM %súview %srPrQz DROP VIEW %s)rrrrr\ÚPrimaryKeyConstraintr!ÚUniqueConstraintÚForeignKeyConstraintÚCheckConstraintrrFÚsymbol_names_w_double_quoter/Úview_column_reflectionrr3rfZidentifier_preparerÚquoterrRr )r4rNÚnamesrYrSr5r5r6rO&sœ   
þÿ î
 
þÿ î û  þÿ
ÿü
ÿÿÿýz$QuotedNameArgumentTest.define_tablescCst ddtjjf¡|ƒS)N)rŸr£)rrœrFr«)Úfnr5r5r6Úquote_fixtureszs 
þýz%QuotedNameArgumentTest.quote_fixturesc    CsPttjƒ}tjjjr.| |¡}tt    |t
ƒƒnt t ƒ| |¡}W5QRXdSr{) rrr3rrFÚreflect_table_optionsr/Úget_table_optionsr'Ú
isinstancer2rÚNotImplementedError)rirYrpÚresr5r5r6Útest_get_table_options€s 
 
 
 
z-QuotedNameArgumentTest.test_get_table_optionscCs ttjƒ}| d|¡st‚dS)Nr¦)rrr3Úget_view_definitionr•©rirYrpr5r5r6Útest_get_view_definition‹s
z/QuotedNameArgumentTest.test_get_view_definitioncCsttjƒ}| |¡st‚dSr{)rrr3Ú get_columnsr•r¸r5r5r6Útest_get_columns‘s
z'QuotedNameArgumentTest.test_get_columnscCsttjƒ}| |¡st‚dSr{)rrr3Úget_pk_constraintr•r¸r5r5r6Útest_get_pk_constraint–s
z-QuotedNameArgumentTest.test_get_pk_constraintcCsttjƒ}| |¡st‚dSr{)rrr3Úget_foreign_keysr•r¸r5r5r6Útest_get_foreign_keys›s
z,QuotedNameArgumentTest.test_get_foreign_keyscCsttjƒ}| |¡st‚dSr{)rrr3Ú get_indexesr•r¸r5r5r6Útest_get_indexes s
z'QuotedNameArgumentTest.test_get_indexescCsttjƒ}| |¡st‚dSr{)rrr3Úget_unique_constraintsr•r¸r5r5r6Útest_get_unique_constraints¥s
z2QuotedNameArgumentTest.test_get_unique_constraintscCsttjƒ}| |¡st‚dSr{)rrr3Úget_table_commentr•r¸r5r5r6Útest_get_table_comment«s
z-QuotedNameArgumentTest.test_get_table_commentcCsttjƒ}| |¡st‚dSr{)rrr3Úget_check_constraintsr•r¸r5r5r6Útest_get_check_constraints±s
z1QuotedNameArgumentTest.test_get_check_constraintsN)r8r9r:Zrun_create_tablesrr;rOr°r¶rrFr¬r¹r»r½r¿rÁÚunique_constraint_reflectionrÃÚcomment_reflectionrÅÚcheck_constraint_reflectionrÇr5r5r5r6r"s6
S
 
 
 
 
 
  rc
CsŒtjddd„tjjfdd}tjtjtjtjdd}tjtj    tj
tj tjtj tj    tj
Btj    tj Bdd}tjddd    d}|||||ƒƒƒƒS)
NcSstjSr{)rrHr5r5r5r6r‘¼r’z$_multi_combination.<locals>.<lambda>rEr‹r,rŠTFÚ
use_filter) rrœrFrGrÚDEFAULTÚ    TEMPORARYÚANYrÚTABLEÚVIEWÚMATERIALIZED_VIEWZANY_VIEW)r¯rEr,rŠÚ filter_namesr5r5r6Ú_multi_combination¸s2þúü
 
ø
rÓc @s$eZdZdZZdZedd„ƒZedd„ƒZedd„ƒZ    ed    d
„ƒZ
ed d „ƒZ d d„Z dd„Z dd„Zdejejdfdd„Zdejejdfdd„Zdejejdfdd„Zedd„ƒZdejejdfdd„Zedd„ƒZdejejdfdd „Zed!d"„ƒZdejejdfd#d$„Zed%d&„ƒZdejejdd'fd(d)„Zed*d+„ƒZdejejdfd,d-„Zed.d/„ƒZ e!j"j#d0d1„ƒZ$e!j"j#d2d3„ƒZ%e!j"j#d4d5„ƒZ&e!j"j#d6d7„ƒZ'e!j"j#e!j"j(d8d9„ƒƒZ)e!j"j#d:d;„ƒZ*e!j"j#d<d=„ƒZ+e!j,dd>e!j"j-fd?d@e!j,de!j"j.fd'dAd@dBdC„ƒƒZ/e!j,de!j"j.fd'dAd@dDdE„ƒZ0e!j"j1dFdG„ƒZ2e!j"j3e!j"j4dHdI„ƒƒZ5e!j"j6dJdK„ƒZ7e!j"j6e!j"j.dLdM„ƒƒZ8d¦dNdO„Z9e!j,dPd'de!j"j.fdd'e!j"j3fdde!j"j.e!j"j3fdQd@dRdS„ƒZ:e!j"j;dTdU„ƒZ<e!j"j;dVdW„ƒZ=e!j"j;e!j"j>e!j"j4dXdY„ƒƒƒZ?e!j,dZde!j"j.fdAd@e!j"j@d[d\„ƒƒZAe!j,dZde!j"j.fdAd@e!j"j-d]d^„ƒƒZBe!j"jCe!j"j.d_d`„ƒƒZDe!j,dZde!j"j.fdAd@e!j"jEdadb„ƒƒZFe!j,dcddded@e!j"jEe!j"jGe!j"jHdfdg„ƒƒƒƒZIe!j"j;e!j"jJdhdi„ƒƒZKe!j"jLdjdk„ƒZMe!j,de!j"j.fdZdAd@e!j"jJdldm„ƒƒZNe!j"j3e!j,dZde!j"j.fdAd@dndo„ƒƒZOe!j"j3dpdq„ƒZPe!j"jQdrds„ƒZRe!j,de!j"j.fdZdAd@dtdu„ƒZSe! ,de!j"j.fd'¡dvdw„ƒZTe!jUdxdy„ƒZVe!j"jWeXdzd{„ƒƒZYe!j"j6eXd|d}„ƒƒZZd~d„Z[d§d€d„Z\d¨d‚dƒ„Z]eXd„d…„ƒZ^e!j"j@eXd†d‡„ƒƒZ_dˆd‰„Z`e!j"j-eXdŠd‹„ƒƒZae!j"jEeXdŒd„ƒƒZbe!j"jJeXdŽd„ƒƒZce!j"jdeXdd‘„ƒƒZee!j,d’e!j"jWfd“d”e!j"j@fd•e!j"j-fd–e!j"jEfd—e!j"jJfd˜e!j"jdfd™e!j"j6fdšd@    d›dœ„ƒZfddž„Zge!j,dd'dAd@e!j,de!j"jhfd'dŸd@d d¡„ƒƒZie!j"j6d¢d£„ƒZje!j"jkd¤d¥„ƒZldS)©ÚComponentReflectionTestNTcCs*| |d¡tjjjr&| |tjj¡dSr{)Údefine_reflected_tablesrrFrGr/rrHrMr5r5r6rOÛs 
z%ComponentReflectionTest.define_tablescCs |r|d}nd}tjjjr0td|ddf}nd}td|tdtjd    d
td t     d ¡d dtdt 
¡d dtdtj f|žŽtj ddddt  d¡|d    d
}td|tdtj d    d
tdtj td|dddƒtdtj td|ƒƒtdt  d¡d    d tj d!d"dtjddd#d$d|d    d
td%|tdtj ƒtd&tj t|jjƒƒtd't  d(¡d    d)tjdd*d+d|d    dtd,|td-tj d    d.d/tdt  d(¡d0d1td2t  d(¡d3d1td4t  d5¡d6d1|d7d8td9|tdt  d(¡ƒ|d:d8tjjjr¢|dkr4td;|td-tj d    d
tdt  d(¡ƒtd<td=tjjƒƒd    tjjjd>nntd?|td-tj d    d
td@tdAtjjjƒƒtdt  d(¡ƒ|d    dtdB|td-tj d    d
tdt  d(¡ƒ|d    dtjjjrhtdC|jj|jjd    d tdD|jj|jj|jjƒ|shtdE|tdFt  d ¡ƒd    dG}tdH|td-tj d    d
tdFt  d ¡ƒd    dG}tjjjrhtjjjrhtdI|jj ¡ƒtdJ|jj ¡ƒtjj jr€| !||¡|sœtjj"jrœ| #|¡dS)KNÚ.Úz%susers.user_idÚ
user_id_fkr r5ÚusersÚuser_idTr?Útest1éF©ÚnullableÚtest2Úparent_user_idú    test2 > 0Úzz_test2_gt_zeroúusers check constraint©rYr¡ú test2 <= 1000©rEr¢Ú
dingalingsÚ dingaling_idÚ
address_idz%semail_addresses.address_idÚzz_email_add_id_fgú di fk commentÚid_userrAé)Úuniquez$address_id > 0 AND address_id < 1000Úaddress_id_gt_zeroÚzz_dingalings_multipleúdi unique commentÚemail_addressesÚremote_user_idÚ email_addressé)ÚindexÚ email_ad_pkú ea pk commentÚ comment_testr>ú
id comment)r@r¡údata % comment©r¡Úd2ú)Comment types type speedily ' " \ '' Fun!Úd3é*úComment
with escapesúthe test % ' " \ table comment)rEr¡Úno_constraintsú"no
constraints has escaped commentÚ local_tableÚ    remote_idz%s.remote_table_2.id)r¢rEÚ remote_tableÚlocal_idz%s.local_table.idÚremote_table_2Ú users_t_idxÚ users_all_idxÚnoncol_idx_test_nopkÚqr¥Únoncol_idx_test_pkÚnoncol_idx_nopkÚ noncol_idx_pk)$rrFÚself_referential_foreign_keysr/rrrr\r]ÚCHARZFloatrrªrr¨r‡rÚr§Úcross_schema_fk_reflectionrrHr3rfÚdefault_schema_nameÚindex_reflectionr!rÛrßÚindexes_with_ascdescÚreflect_indexes_with_ascdescr Údescr¬rJÚtemp_table_reflectionrL)r4rNrEZ schema_prefixZparent_id_argsrÙr rr5r5r6rÕásJ
 
ÿÿýòýý    
ýþüâ 
ÿö ýôû 
 
ÿþôÿÿþóú     ÿüû    ÿþ  z/ComponentReflectionTest.define_reflected_tablescCstttjdtj›ƒSrTrUrWr5r5r6rXs
 
ÿz'ComponentReflectionTest.temp_table_namec Cs¨tttjƒ}| ¡}t||tdtjddtdt d¡ƒtdtjƒtj    ddtj
›dt  d    d¡f|Ž}t j jjr¤t j jjr¤t |d
td tj
ƒ¡t |d td ƒ¡dS)Nr>Tr?rYrBr”Ú user_tmp_uq_r Ú user_tmp_ixrPrZrQr[)r rr3rXrrr\r]r^r¨rVr!rrFrIr/r_rrRr r`r5r5r6rL•s6 
 
óòÿþÿÿýz*ComponentReflectionTest.define_temp_tablesc
Csætjjjrdh}ntƒ}dD]Ä}|}|r6|›d|›}|d}||krJdnd}d|›d|›d    |›}t |d
t|ƒ¡||krÂd }    |ržt d ¡rž|›d|    ›}    d |    ›d|›d}
t |d
t|
ƒ¡t |dtd|›d|›ƒ¡qdS)Nrç)rÙròrçrÖZ_vz MATERIALIZED r×zCREATE zVIEW z AS SELECT * FROM rPÚ    mat_indexÚoraclez CREATE INDEX z ON z(data)rQzDROP )    rrFÚmaterialized_viewsr/ÚsetrrRr Úagainst) r4rNrEÚ materializedrbÚfullnameZ    view_nameÚprefixrSZ
index_namer™r5r5r6rJ·s.
ÿÿz$ComponentReflectionTest.define_viewscCsDi}tj|kr| |¡tj|kr,| |¡tj|kr@| |¡|Sr{)rrÏÚupdaterÐrÑ)rirŠr–r‚r!rµr5r5r6Ú _resolve_kindÒs
 
 
 
 
 
z%ComponentReflectionTest._resolve_kindcCs<tjjjs| ¡| ¡ntjjjs8| |¡| ¡dSr{)rrFr¬r/Úclearrr$)rir‚r!r5r5r6Ú_resolve_viewsÜs 
 
 
 
z&ComponentReflectionTest._resolve_viewsc    südd„‰|tjkrdd„‰|tjkr,dd„‰dddhtjjddd    d
| ¡hi‰tjjj    s|ˆd 
d¡ˆtjj  ddg¡tjj j    s˜ˆd  dd    g¡tjj j    r¬tjjj    sˆd  d
| ¡g¡tjjj    s܈d  d
g¡‡‡‡‡fd d „| ¡Dƒ}|S) NcSsdS)NTr5)Ú_r5r5r6r‘år’z8ComponentReflectionTest._resolve_names.<locals>.<lambda>cSs d|dkS©NÚtmpér5©rr5r5r6r‘çr’cSs d|dkSr)r5r,r5r5r6r‘ér’rr    rr rr~cs>i|]6\}}ˆ|ƒr|dˆˆkrˆr4|dˆkr||“qS)r+r5)Ú.0rÚv©rÒÚremovedrEZ scope_filterr5r6Ú
<dictcomp>s üz:ComponentReflectionTest._resolve_names.<locals>.<dictcomp>)rrÌrÍrrrHrXrFrr/Úaddr$rrÚtemp_table_namesr_Úitems)rirEr,rÒÚvaluesrµr5r/r6Ú_resolve_namesäsF
 
ûþ
 
 ÿ
ÿÿþ
þz&ComponentReflectionTest._resolve_namesc    CsÖ|dftji}|dftj|dftj|dftji}| ||¡|dftj|dftj|dftj|dftj|d    ftj|d
ftj|d ftj|d ftj|d ftj|dftj|| ¡ftji }| ||||¡}| ||||¡}|S)NÚ dingalings_vÚemail_addresses_vÚusers_vr~rÙrçròrùrrrr    r r©r(rÎr'rXr%r6)    rirEr,rŠrÒr!r‚r–rµr5r5r6Ú exp_optionssFý 
õ z#ComponentReflectionTest.exp_optionsc
CsÈddi}|df|i}|df||df||df|i}| ||¡|df||df||df||d    fdd
i|d fdd i|d f||df||df||df||df||| ¡f|i }| ||||¡}    | ||||    ¡}    |    S)NÚtextr7r8r9r~rÙrçròrùrrrrrr    r r)r'rXr%r6)
rirEr,rŠrÒÚemptyr!r‚r–rµr5r5r6Ú exp_comments.sP ý ÿÿ
ñz$ComponentReflectionTest.exp_commentsc
s$dtjddfdd„‰‡fdd„}|dfˆdd    tjd
ˆd ƒˆd ƒˆd ƒgi}|dfˆd d    tjd
ˆdƒˆdƒg|dfˆdd    tjd
ˆdtjdˆdtjdˆdƒg|dfˆdd    tjd
ˆdƒˆdƒgi}| ||¡|df|dƒˆdddˆdddˆdƒg|df|dƒˆd ƒˆd ƒˆd ƒg|df|d ƒˆdƒˆdƒg|df|ddd ˆd d!d ˆd"d#d ˆd$d%d g|d&fˆd ƒg|d'f|dƒˆd ƒˆd(ƒg|d)f|dƒˆd*ƒˆd ƒg|d+f|dƒˆd ƒg|d,fˆd-ƒg|d.f|dƒˆd-ƒg|| ¡f|dƒˆdƒˆdƒgi }| ||||¡}    | ||||    ¡}    |    S)/NFTcSs*||tj|||dœ}|dkr&| d¡|S)N)rYÚ autoincrementÚtypeÚdefaultr¡rÞÚomitr?)r(rÎÚpop)rYÚautorAr¡rÞrµr5r5r6rlYsú
z0ComponentReflectionTest.exp_columns.<locals>.colcsdtjddœ|–}ˆ|f|ŽS)NTF)rDrArÞ©r(rÎ)rYra©rlr5r6Úpkhsz/ComponentReflectionTest.exp_columns.<locals>.pkr7rèrB)rDrÞrérìrAr8rórôr9rÚrÛrÝrßràr~r>rYr”rÙrçròrùrúrürûrýrþrÿrrrrrrr    r r rr:)
rirEr,rŠrÒrGr!r‚r–rµr5rFr6Ú exp_columnsRsœÿ
 üÿ    ý  üýô 
 
üüý
 
þ
ù    
ýß'z#ComponentReflectionTest.exp_columnscCs ddddhS)NrYr@rÞrAr5©rir5r5r6Ú_required_column_keys²sz-ComponentReflectionTest._required_column_keysc CsNtjddœdd„}|dd}tjjjr8|df|dƒi}n |df|i}|df||df||d    f|i}| ||¡|d
f|d ƒ|d f|dƒ|d f|dddd|df|dƒ|df||df|dƒ|df|dƒ|df|dƒ|df||df|dƒ|| ¡f|dƒi }    tjjjs*|         ¡D]}
|
ddk    r
tj|
d<q
||    ||¡} |  |||| ¡} | S)NräcWst|ƒ||dœS)N)Úconstrained_columnsrYr¡)Úlist)rYr¡Úcolsr5r5r6rG½sýz+ComponentReflectionTest.exp_pks.<locals>.pkr r7rèr8r9r~rÙrÚrçròrér÷rørùr>rrrr    r rrY) r(rÎrrFZmaterialized_views_reflect_pkr/r'rXÚreflects_pk_namesr5r%r6) rirEr,rŠrÒrGr=r!r‚r–Úvalrµr5r5r6Úexp_pks¶s^
 
 ý ÿ
ó  zComponentReflectionTest.exp_pkscCsddhS)NrYrKr5rIr5r5r6Ú_required_pk_keysæsz)ComponentReflectionTest._required_pk_keysc s¢Gdd„dƒ‰|tjdf‡fdd„    }|dfgi}|dfg|dfg|dfgi}| ||¡|d    f|d
gd gd    d d g|df|dgd gd    ƒ|dgdgddddg|df|dgd gd    ƒg|dfg|dfg|df|dgdgdtjdg|df|dgdgdddg|dfg|dfg|d fg|| ¡fgi }tjjj    s<||d    f 
¡tjj j    s~|  ¡D],}    |    D] }
|
d!tjk    rXtj|
d!<qXqP|  ||||¡} | |||| ¡} | S)"Nc@seZdZdd„ZdS)z+ComponentReflectionTest.exp_fks.<locals>.ttcSs|dkptjjj|kSr{)rr3rfr©riÚotherr5r5r6Ú__eq__òs þz2ComponentReflectionTest.exp_fks.<locals>.tt.__eq__N©r8r9r:rTr5r5r5r6rˆñsrˆcs$|||tj|dk    r|nˆƒ||dœS)N)rKÚreferred_columnsrYr-Úreferred_schemaÚreferred_tabler¡rE)rMZref_colZ    ref_tableÚ
ref_schemarYr¡©rˆr5r6Úfkøs    ÿ÷z+ComponentReflectionTest.exp_fks.<locals>.fkr7r8r9r~rÙràrÚrØr rçrìréròrêrërärórùrrrr>r    )rYrrr rrY)r(rÎr'rrHrXrrFrr/r&Únamed_constraintsr5r%r6) rirEr,rŠrÒr[r!r‚r–ÚvalsrOrµr5rZr6Úexp_fksês€ ú ý ÿûþ
ÿüÿÿ
ß#   zComponentReflectionTest.exp_fkscCsdddddhS)NrYrKrWrXrVr5rIr5r5r6Ú_required_fk_keysBs ûz)ComponentReflectionTest._required_fk_keysc
Csîdddddœdd„}|dfgi}|dfg|dfg|dfgi}| ||¡|rf||df |d    d
d ¡|d f|d ddd|ddddd |ddddd•|df|d    tjddd|dtjdd|dddddd•|df|dtjd |dtjdd•|d fg|d!fg|d"f|d#tjdd•|d$f|d%tjdd•|d&fg|d'f|d(d)d(d*id+•|d,f|d(d-d(d*id+•|| ¡f|d.d/d |d0d1tj›ddd2•i }tjj    j
rªtjj j
sÊ||d'f  ¡||d,f  ¡|  ||||¡}    | ||||    ¡}    |    S)3NF)rîÚcolumn_sortingÚ
duplicatesr[c stjj}tjj}tjj}|r"|jr,|r0|js0dS|t|ƒ|tjgdœ}    ˆr~ˆ|    d<|jr~|    d|    d<}
‡fdd„|
Dƒ|    d<|rŠ||    d<|    gS)    Nr5)rîÚ column_namesrYÚdialect_optionsÚinclude_columnsr`rbÚ expressionscsg|]}|ˆkrdn|‘qSr{r5©r-r‡©r`r5r6Ú
<listcomp>pszDComponentReflectionTest.exp_indexes.<locals>.idx.<locals>.<listcomp>Zduplicates_constraint)    rrFZforeign_keys_reflect_as_indexZ#unique_constraints_reflect_as_indexZ*reflect_indexes_with_ascdesc_as_expressionr/rLr(rÎ) rYrîr`rar[rMZfk_reqZdup_reqZsorting_expressionrµÚorigr5rgr6r™Ss4ÿ
ÿÿû
ÿ
z0ComponentReflectionTest.exp_indexes.<locals>.idxr7r8r9r~rArr rÙràrØT)rYr[rÚrßrÛr r
)rYrîrç)rYrîrarìrérèrðròrôrórùrrrrrr    r r r)r)rYr`rrr”rrYr)rYrarî)r'Úextendr(rÎrXrrVrrFrr/rr&r%r6)
rirEr,rŠrÒr™r!r‚r–rµr5r5r6Ú exp_indexesLs¦
ú % ý  
ÿ ýûý  þÿÿýÿÿÿ
 
 
üþÖ5ÿþz#ComponentReflectionTest.exp_indexescCs
dddhS)NrYrbrîr5rIr5r5r6Ú_required_index_keysÁsz,ComponentReflectionTest._required_index_keysFc Csddddœdd„}|dfgi}|dfg|dfg|dfgi}| ||¡|d    f|d
d d d d d•|df|dtjtjd|dddddd•|dfg|dfg|dfg|dfg|dfg|dfg|dfg|dfg|| ¡f|dd tj›d!•i }    |rö|||    –S| ||    ||¡}
| ||||
¡}
|
SdS)"NF)Úduplicates_indexÚis_indexr¡cWs8tjj}|r|jsdSt|ƒ||dœ}|r2||d<|gS)Nr5)rbrYr¡rm)rrFZ*unique_index_reflect_as_unique_constraintsr/rL)rYrmrnr¡rMÚreqrµr5r5r6ÚucÍs
ýz+ComponentReflectionTest.exp_ucs.<locals>.ucr7r8r9r~rÙrÛrßr
T)rYrmrnrçrA)rYrmrérèrðrñ)rYrmr¡ròrùrrrr    r rrYrr )r'r(rÎrXrrVr%r6) rirEr,rŠrÒÚall_rpr!r‚r–rµr5r5r6Úexp_ucsÅsr    ÿ  ý ûÿ    ûþ
 
ÿä 
zComponentReflectionTest.exp_ucscCsddhS)NrYrbr5rIr5r5r6Ú_required_unique_cst_keys
sz1ComponentReflectionTest._required_unique_cst_keysc
söGdd„dtƒ‰d‡fdd„    }|dfgi}|dfg|dfg|dfgi}| ||¡|d    f|d
tjƒ|d d d dg|df|dddg|dfg|dfg|dfg|dfg|dfg|dfg|dfg|dfg|| ¡fgi }| ||||¡}    | ||||    ¡}    |    S)Nc@seZdZdd„ZdS)z+ComponentReflectionTest.exp_ccs.<locals>.ttcSs(| ¡ dd¡ dd¡ dd¡}||kS)Nú(r×ú)ú`)ÚlowerÚreplace)rirSrµr5r5r6rTsÿþýÿz2ComponentReflectionTest.exp_ccs.<locals>.tt.__eq__NrUr5r5r5r6rˆsrˆcsˆ|ƒ||dœS)N)ÚsqltextrYr¡r5)r<rYr¡rZr5r6Úccsz+ComponentReflectionTest.exp_ccs.<locals>.ccr7r8r9r~rÙrårárârãrürçz$address_id > 0 and address_id < 1000rïr ròrùrrrr    r r)N)Ústrr'r(rÎrXr%r6)
rirEr,rŠrÒrzr!r‚r–rµr5rZr6Úexp_ccss^
 ý 
ýþþÿ
ézComponentReflectionTest.exp_ccscCsddhS)NrYryr5rIr5r5r6Ú_required_cc_keysHsz)ComponentReflectionTest._required_cc_keyscCs t|ƒ}ttjj| ¡kƒdSr{)rr'rrrHÚget_schema_namesrxr5r5r6Útest_get_schema_namesLsz-ComponentReflectionTest.test_get_schema_namescCs,t|ƒ}t| tjj¡ƒt| d¡ƒdS)NÚsa_fake_schema_foo)rr'Ú
has_schemarrrHr&rxr5r5r6Útest_has_schemaRsz'ComponentReflectionTest.test_has_schemacCs8|jddttjjid}t|ƒ}ttjj| ¡kƒdS)z
test #7300r”Úbar©Zschema_translate_mapN)Úexecution_optionsr#rrrHrr'r~rxr5r5r6Ú%test_get_schema_names_w_translate_mapYsþÿz=ComponentReflectionTest.test_get_schema_names_w_translate_mapcCsD|jddttjjid}t|ƒ}t| tjj¡ƒt| d¡ƒdS)Nr”rƒr„r€)    r…r#rrrHrr'rr&rxr5r5r6Útest_has_schema_w_translate_mapgsþÿz7ComponentReflectionTest.test_has_schema_w_translate_mapc
Cs’t|ƒ}td| ¡kƒt| d¡ƒ| tdƒ¡zHtd| ¡kƒt| d¡ƒ| ¡td| ¡kƒt| d¡ƒW5| tdƒ¡XdS)NZfoo_barzCREATE SCHEMA foo_barzDROP SCHEMA foo_bar)rr&r~rÚexecuter ror'rxr5r5r6Útest_schema_cachetsz)ComponentReflectionTest.test_schema_cachecCs$t ¡}t|ƒt|jdƒs t‚dS)Nr)rr1rÚhasattrrfr•)riÚenginer5r5r6Útest_dialect_initialize…sz/ComponentReflectionTest.test_dialect_initializecCst|ƒ}t|j|jjƒdSr{)rrrrfrxr5r5r6Útest_get_default_schema_name‹sz4ComponentReflectionTest.test_get_default_schema_nameÚ foreign_keyÚorder_byr‹Ú
use_schemac    sš|r tj}nd}dddddddh‰t|ƒ}|rDdd    „| |¡Dƒ}n
| |¡}‡fd
d    „|Dƒ}|d kr~d d dg}t||ƒndd d g}tt|ƒ|ƒdS)Nrùrr rrr    rcSsg|]}|dr|d‘qS)rr5)r-Zrecr5r5r6rh¬sþz@ComponentReflectionTest.test_get_table_names.<locals>.<listcomp>csg|]}|ˆkr|‘qSr5r5©r-Út©Z_ignore_tablesr5r6rh³srŽrÙròrç)rrHrZget_sorted_table_and_fkc_namesÚget_table_namesrÚsorted)    riryrrrErpr–Ú table_namesÚanswerr5r“r6Útest_get_table_namess.
ù
þ
 
 
z,ComponentReflectionTest.test_get_table_namescCsnt|ƒ}|rtj}nd}| |¡}tjjjrRtt    |ƒddgƒt| 
|¡dgƒndddg}tt    |ƒ|ƒdS)Nr8r9r7) rrrHÚget_view_namesrrFrr/rr•Úget_materialized_view_names)riryrrprEr–r—r5r5r6Útest_get_view_names¼s
 
 
z+ComponentReflectionTest.test_get_view_namescCs,t|ƒ}| ¡}tt|ƒdtj›gƒdSrT)rZget_temp_table_namesrr•rrV©riryrpr3r5r5r6Útest_get_temp_table_namesÍsz1ComponentReflectionTest.test_get_temp_table_namescCs$t|ƒ}| ¡}tt|ƒdgƒdSr})rZget_temp_view_namesrr•rœr5r5r6Útest_get_temp_view_namesÓsz0ComponentReflectionTest.test_get_temp_view_namescCs| |¡dSr{)Ú_test_get_comments©riryr5r5r6Útest_get_commentsÚsz)ComponentReflectionTest.test_get_commentscCs| |tjj¡dSr{)rŸrrrHr r5r5r6Útest_get_comments_with_schemaÞsz5ComponentReflectionTest.test_get_comments_with_schemacCs’t|ƒ}|j|d}t|jd|d||dfƒt|jd|d||dfƒt|jd|d||dfƒ|jjj}t|j||d|||fƒdS)NrDrùrÙ)rr>rrÄr–rrY)riryrErpÚexpÚno_cstr5r5r6rŸãs&  
þ 
þ 
þ
 
þz*ComponentReflectionTest._test_get_comments)FFzuse_views,use_schemac Csl|r tj}nd}|jj|jj}}|r2dddg}nddg}t|ƒ}t|||fƒD]\}    }
|} |j|    | d} tt    | ƒdkt    | ƒƒt
|
j ƒD]Ø\} }t |j | | dƒ| | d    j}|j}t|tjjƒrÐ|j}t d
¡rð|tjtjfkrðtj}tt    t|jƒ |j¡ tjtjtjtjtjtjtj g¡ƒdkd |j |j| | d|fƒ|j!sŒ| | d dksŒt"‚qŒqPdS) Nr9r8r7rÙròrDrrYr@rz%s(%s), %s(%s)rA)#rrHr–rÙròrÚziprºr'ÚlenÚ    enumerateÚcolumnsrrYÚ    __class__r@r³r\rZ
TypeEnginerr Ú    sql_typesÚDateÚDateTimerÚ__mro__Ú intersectionrÚNumericZTimerZ_Binaryr@r•)riryZ    use_viewsrrErÙÚ    addressesr–rprbÚtableZ schema_namerMÚirlÚctypeZ    ctype_defr5r5r6r»ûs\   þ
ÿùýÿñÿïz(ComponentReflectionTest.test_get_columnscCs6| ¡}|j|}t|tƒ|d}|j||dddS)N©Ú autoload_withF)Zstrict_constraints)rXr–rrZassert_tables_equal)riryrbrcZreflected_user_tmpr5r5r6Útest_reflect_table_temp_tableHs
ÿÿz5ComponentReflectionTest.test_reflect_table_temp_tablecCsf| ¡}|j|}t|ƒ}| |¡}tt|ƒdkt|ƒƒt|jƒD]\}}t|j    ||dƒqDdS)NrrY)
rXr–rrºr'r¦r§r¨rrY)riryrbrcrprMr²rlr5r5r6Útest_get_temp_table_columnsUs
 
z3ComponentReflectionTest.test_get_temp_table_columnscCs0t|ƒ}| d¡}tdd„|DƒdddgƒdS)Nr~cSsg|] }|d‘qSr r5©r-rlr5r5r6rhfszFComponentReflectionTest.test_get_temp_view_columns.<locals>.<listcomp>r>rYr”)rrºr)riryrprMr5r5r6Útest_get_temp_view_columns`s
z2ComponentReflectionTest.test_get_temp_view_columns©Fc     Csð|rtjj}nd}|jj|jj}}t|ƒ}|j|d}|j|j    |d}| 
|g|||j    fg|j ¡|j|j    |d}    |||j    fd}
t |    d|
ƒtj j ¡t |    ddƒW5QRX|jjj    } | 
|j| |dg||| fg|j ¡dS)NrDrKrYr÷)rrrHr–rÙròrrPr¼rYÚ _check_listrQrrFrNÚfail_ifr) riryrrErÙr°rpr£Z
users_consZ    addr_consZexp_colsr¤r5r5r6r½hs.
 ÿ
 ýz.ComponentReflectionTest.test_get_pk_constraintc     CsT|r tj}nd}|jj|jj}}t|ƒ}|}tjjj    r´|j
|j |d}|d}    tjj   ¡t|    ddƒW5QRXt|    d|ƒt|    d|j ƒt|    ddgƒt|    d    d
gƒ|j
|j |d}
|
d}    tjj  ¡t|    ddk    ƒW5QRXt|    d|ƒt|    d|j ƒt|    ddgƒt|    d    d gƒ|jjj } t|j
| |dgƒdS) NrDrrYrØrWrXrVrÚrKràró)rrHr–rÙròrrrFrr/r¾rYr\r¼rÚimplicitly_named_constraintsr'r) riryrrErÙr°rpZexpected_schemaZ users_fkeysÚfkey1Z
addr_fkeysr¤r5r5r6r¿‰s2
 
z-ComponentReflectionTest.test_get_foreign_keysc
Cs| d|jjdtjjdtjj¡\}}}t|ƒ}| |j¡}t    t
|ƒdƒ|d}t    |dtjjƒt    |d|jƒt    |dd    gƒt    |d
d gƒ|j|jtjjd }t    t
|ƒdƒ|d}    t |    dd|jjfkƒt    |    d|jƒt    |    dd    gƒt    |    d
d gƒdS)Nz%s.local_tablez%s.remote_tablez%s.remote_table_2r+rrWrXrVr>rKrrDr) r–rfrrrrHrr¾rYrr¦r')
riryrrr    rpZ local_fkeysr¾Z remote_fkeysZfkey2r5r5r6Ú"test_get_inter_schema_foreign_keys³s:
 
 
ý
 ÿþÿÿz:ComponentReflectionTest.test_get_inter_schema_foreign_keyscCsz|r tj}nd}t|ƒ}|jd|d}|j|d}| |||df|j¡|jjj    }| |j||d|||f|j¡dS)NrÙrD)
rrHrrÀrkr»rlr–rrY)riryrrErpÚindexesr£r¤r5r5r6rÁÙs" 
ÿ
 
ýz(ComponentReflectionTest.test_get_indexes)r r)rrz tname,ixnamecCs‚t|ƒ}| |¡}| ¡d|f}| |||j¡t|tƒ|d}tt|j    ƒdƒt
t |j    ƒdj |ƒtt |j    ƒdj |ƒdS)Nr´r+r)rrÀrkr»rlrrrr¦rÀr
rLr±rY)riryÚtnameZixnamerprÀZexpected_indexesr’r5r5r6Útest_get_noncol_indexôs    
z-ComponentReflectionTest.test_get_noncol_indexcCsBt|ƒ}| ¡}| |¡}|jddd|f}| |||j¡dS)NT)rq)rrXrÂrrr»rl)riryrprYÚ    reflectedr£r5r5r6Ú&test_get_temp_table_unique_constraints
s
 
z>ComponentReflectionTest.test_get_temp_table_unique_constraintscCsnt|ƒ}| ¡}| |¡}|D]}| dd¡qddgddœg}tjjjrVg|dd<tdd    „|Dƒ|ƒdS)
NrcFr”r)rîrbrYrrdcSsg|]}|ddkr|‘qS)rYrr5©r-r™r5r5r6rh s zGComponentReflectionTest.test_get_temp_table_indexes.<locals>.<listcomp>)    rrXrÀrCrrFÚindex_reflects_included_columnsr/r)riryrprbrÀÚindÚexpectedr5r5r6Útest_get_temp_table_indexess
 ÿ
  þz3ComponentReflectionTest.test_get_temp_table_indexesc Cs|r tj}nd}tddgdœddddgdœddddgdœdd    d
gdœd dgdœd dgdœgt d ¡d}td|tdt d¡ƒtdt d¡ƒtdtj    ƒtd    t d¡ƒtd
t d¡ƒ|d}|D]"}| 
tj |dd |d iŽ¡q¼|  |¡t |ƒ}t|jd|dt d ¡d}    tƒ}
tt|ƒt|    ƒƒt||    ƒD]B\} } |  dd¡} | rT|
 | ¡t|  dd¡dƒt| | ƒq0tƒ}td|||d}    dd„|    jDƒ}dd„|    jDƒ dg¡}| |¡rÂt‚|
rÞt|
|ƒt|tƒƒ|jjj}t|j||dgƒdS)NZunique_arŽ)rYrbZ unique_a_b_cÚbr‡Z unique_c_a_bZunique_asc_keyZascÚkeyz i.have.dotsz i have spacesrY©rËZtesttblrõrírDrbrmr¡)rµrEcSsh|]
}|j’qSr5r rÅr5r5r6Ú    <setcomp>oszFComponentReflectionTest.test_get_unique_constraints.<locals>.<setcomp>cSsh|]}t|tjƒr|j’qSr5)r³r\r¨rY)r-Zuqr5r5r6rÍps þ)rrHr•ÚoperatorÚ
itemgetterrrr\rrZappend_constraintr¨rmrrÂrrr¦r¥rCr2rrÀÚ constraintsÚ
differencer®r•r–rrY)rirNryrrEZuniquesr±rprprÃZnames_that_duplicate_indexriZreflZdupeZreflected_metadataZ    idx_namesZuq_namesr¤r5r5r6rÃ$sx 
 
 
ú÷ 
÷ ÿ
 þ 
ü þü
 
z3ComponentReflectionTest.test_get_unique_constraintscCs@|r tj}nd}t|ƒ}dD]}|j||d}tt|ƒƒqdS)N)r9r8r7rD)rrHrr·r'Úbool)riryrrErpÚviewr.r5r5r6r¹~sz0ComponentReflectionTest.test_get_view_definitionc    CsHt|ƒ}ttƒ| d¡W5QRXttƒ| d¡W5QRXdS)NZview_does_not_existrÙ)rrrr·rxr5r5r6Ú'test_get_view_definition_does_not_existŒs
 
 
z?ComponentReflectionTest.test_get_view_definition_does_not_existcCsFt|ƒ}dD]4\}}| |¡}dd„|Dƒ|}| dd¡s t‚q dS)aˆtest that 'autoincrement' is reflected according to sqla's policy.
 
        Don't mark this test as unsupported for any backend !
 
        (technically it fails with MySQL InnoDB since "id" comes before "id2")
 
        A backend is better off not returning "autoincrement" at all,
        instead of potentially returning "False" for an auto-incrementing
        primary key column.
 
        ))rÙrÚ)ròré)rçrècSsi|]}|d|“qSr r5rfr5r5r6r1ªszBComponentReflectionTest.test_autoincrement_col.<locals>.<dictcomp>r?TN)rrºÚgetr•)riryrprÁÚcnamerMZid_r5r5r6Útest_autoincrement_col”s
 
z.ComponentReflectionTest.test_autoincrement_colc    Cs‚ttjƒ}|rtjnd}tjjjr\|jd|d}t    t
|t ƒƒ|jd|d}t    t
|t ƒƒn"t t ƒ|jd|d}W5QRXdS)NrÙrDr)rrr3rHrrFr±r/r²r'r³r2rr´)rirrprErµr5r5r6r¶­s
 
 
z.ComponentReflectionTest.test_get_table_optionsc    svttjƒ‰tjjjrV|rtjnd‰ˆjˆd}‡‡fdd„ˆj    ˆdDƒ}t
||ƒnt t ƒˆ ¡}W5QRXdS)NrDcs i|]}ˆ|fˆj|ˆd“qS)rD)r²)r-r±©rprEr5r6r1ÅsÿzHComponentReflectionTest.test_multi_get_table_options.<locals>.<dictcomp>) rrr3rrFr±r/rHÚget_multi_table_optionsr”rrr´)rirrµr£r5rØr6Útest_multi_get_table_options¾s
 
 
þ 
z4ComponentReflectionTest.test_multi_get_table_optionscs‡fdd„}|S)Nc stˆƒ}||dƒ||dœ}|r&|ƒ}g}tj|krD| dddg¡tj|kr\| ddg¡tj|krt| ddg¡|r€||d<|rŒ||d    <||||| d    ¡d
}    |g}
|tjkrÎ|     ¡} |  
d ¡|
  | ¡|tjkrô|     ¡} |  
d ¡|
  | ¡tˆƒ|
|    fS) Nrò)r,rŠrùrÙzdoes-not-existr8r7rErÒ)rEr,rŠrÒr,rŠ) rrrÏrjrÐrÑrÕrrÌÚcopyrCÚappend) rEr,rŠrËZsingle_reflect_fnZ
exp_methodrprarÒr£ÚkwsZnkw©ryr5r6Úprovide_fixtureÐsD
 
 
ÿ
 
ü
 
 
 
 
 
z>ComponentReflectionTest.get_multi_exp.<locals>.provide_fixturer5)riryrßr5rÞr6Ú get_multi_expÎs .z%ComponentReflectionTest.get_multi_expc CsH|||||tj|jƒ\}}}|D]"}    | ¡|jf|    Ž}
t|
|ƒq dSr{)rr²r;rorÙr© riràrEr,rŠrËrprÝr£raÚresultr5r5r6Ú#test_multi_get_table_options_tablessú
 z;ComponentReflectionTest.test_multi_get_table_options_tablesc
CsD|||||tj|jƒ\}}}|D]}    | ¡t|jf|    Ž|ƒq dSr{)rrÄr>rorZget_multi_table_comment)
riràrEr,rŠrËrprÝr£rar5r5r6Útest_get_multi_table_commentsú
z4ComponentReflectionTest.test_get_multi_table_commentcsVtdœdd„‰t|tƒr8t‡fdd„| ¡Dƒ||ƒnt‡fdd„|Dƒ||ƒdS)N©r<cSst dd|¡ ¡S)Nz['\" ]r×)ÚreÚsubrwrår5r5r6Ú_clean$sz:ComponentReflectionTest._check_expressions.<locals>._cleancsi|]\}}ˆ|ƒ|“qSr5r5)r-Úer.©rèr5r6r1(sz>ComponentReflectionTest._check_expressions.<locals>.<dictcomp>csg|] }ˆ|ƒ‘qSr5r5)r-rérêr5r6rh*sz>ComponentReflectionTest._check_expressions.<locals>.<listcomp>)r{r³r2rr4)rirâr£Úerr_msgr5rêr6Ú_check_expressions#s
 z*ComponentReflectionTest._check_expressionsc    Cs¸|dkrt|||ƒnžtt|ƒt|ƒ|ƒt||ƒD]~\}}t|ƒt|ƒBD]d}||ksh||krL||krL|›d|›d|›}|dkrœ| |||||¡qLt|||||ƒqLq4dS)Nz - )rer`)rr¦r¥rrì)    rirâr£Úreq_keysÚmsgÚrrérrër5r5r6r»,sz#ComponentReflectionTest._check_listcCs\tt| ¡ƒt| ¡ƒƒ|D]8}||||}}|rF|g|g}}| ||||¡qdSr{)rrÚkeysr»)rirâr£ríÚ
make_listsrrïrér5r5r6Ú_check_table_dict:s z)ComponentReflectionTest._check_table_dictc CsN|||||tj|jƒ\}}}|D](}    | ¡|jf|    Ž}
| |
||j¡q dSr{)rrºrHroÚget_multi_columnsròrJrár5r5r6Útest_get_multi_columnsBsú
     z.ComponentReflectionTest.test_get_multi_columnsc CsR|||||tj|jƒ\}}}|D],}    | ¡|jf|    Ž}
|j|
||jddq dS)NT)rñ)rr¼rProZget_multi_pk_constraintròrQrár5r5r6Útest_get_multi_pk_constraintTs"ú
 ÿz4ComponentReflectionTest.test_get_multi_pk_constraintcCsTtjjjsP||fD]<}| ¡D].}t|ƒdkrtdd„|Dƒƒr|j|dqqdS)Nr+css"|]}| d¡dtjfkVqdS)rYN)rÕr(rÎ)r-r.r5r5r6Ú    <genexpr>lsz7ComponentReflectionTest._adjust_sort.<locals>.<genexpr>rÌ)rrFr½r/r5r¦ÚanyÚsort)rirârÈrËÚobjrOr5r5r6Ú _adjust_sorths
  ÿz$ComponentReflectionTest._adjust_sortc Cs`|||||tj|jƒ\}}}|D]:}    | ¡|jf|    Ž}
| |
|dd„¡| |
||j¡q dS)NcSs t|dƒS)NrK©Útuple©Údr5r5r6r‘‚r’zEComponentReflectionTest.test_get_multi_foreign_keys.<locals>.<lambda>)rr¾r^roZget_multi_foreign_keysrúròr_rár5r5r6Útest_get_multi_foreign_keysqs"ú
 ÿz3ComponentReflectionTest.test_get_multi_foreign_keysc CsN|||||tj|jƒ\}}}|D](}    | ¡|jf|    Ž}
| |
||j¡q dSr{)rrÀrkroZget_multi_indexesròrlrár5r5r6Útest_get_multi_indexes†sú
 z.ComponentReflectionTest.test_get_multi_indexesc Cs`|||||tj|jƒ\}}}|D]:}    | ¡|jf|    Ž}
| |
|dd„¡| |
||j¡q dS)NcSs t|dƒS)Nrbrûrýr5r5r6r‘¨r’zKComponentReflectionTest.test_get_multi_unique_constraints.<locals>.<lambda>)rrÂrrroZget_multi_unique_constraintsrúròrsrár5r5r6Ú!test_get_multi_unique_constraints˜sú
 z9ComponentReflectionTest.test_get_multi_unique_constraintsc Cs`|||||tj|jƒ\}}}|D]:}    | ¡|jf|    Ž}
| |
|dd„¡| |
||j¡q dS)NcSs t|dƒS)Nryrûrýr5r5r6r‘»r’zJComponentReflectionTest.test_get_multi_check_constraints.<locals>.<lambda>)rrÆr|roZget_multi_check_constraintsrúròr}rár5r5r6Ú test_get_multi_check_constraints«sú
 z8ComponentReflectionTest.test_get_multi_check_constraintsr²rºr¼r¾rÀrÂrÆrÄÚmethodc    Cs2t|ƒ}t||ƒ}ttƒ|dƒW5QRXdS)NZtable_does_not_exists)rÚgetattrrr)rirryrpr˜r5r5r6Útest_not_existing_table¾s
 
z/ComponentReflectionTest.test_not_existing_tablec
s`tj‰‡fdd„}tj td|¡4ttdƒt|ƒ t    dt
ƒƒd¡W5QRXW5QRXdS)Ncs"| di¡}tdƒ|d<ˆ||ŽS)NZ unreflectableÚerr)NÚ
some_table)Ú
setdefaultr)rŽrÚur©Zmcr5r6ÚpatchedÞs  z;ComponentReflectionTest.test_unreflectable.<locals>.patchedrórr) rrór(ÚpatchÚobjectrrrZ reflect_tablerr)riryr r5r
r6Útest_unreflectableÛs  
ÿz*ComponentReflectionTest.test_unreflectabler‚cs tƒ}|rtjnd‰|j|ˆ|ddt|ƒ}| ˆ¡}|rr|| ˆ¡7}z|| ˆ¡7}Wntk
rpYnXˆrˆ‡fdd„|Dƒ}t    t
|j ƒt
|ƒƒdS)NF)rEr‚Z resolve_fkscsg|]}ˆ›d|›‘qS)rÖr5r‘rDr5r6rhûsz9ComponentReflectionTest.test_metadata.<locals>.<listcomp>) rrrHÚreflectrr”r™ršr´rr•r–)riryrr‚Úmrpr–r5rDr6Ú test_metadataés
z%ComponentReflectionTest.test_metadatac    Cs€td|tdtddtdtdddd| |¡t|ƒ}| d¡}t|ddiƒ| d¡}d    d
„|Dƒ}ddd œ}t||ƒdS) NÚunicode_commentsÚunicodeu é試蛇ẟΩrüÚemojiu    â˜ï¸âœ¨u試蛇ẟΩ✨r<cSsi|]}|d|d“qSrär5rfr5r5r6r1    szAComponentReflectionTest.test_comments_unicode.<locals>.<dictcomp>)rr©rrrÚ
create_allrrÄrrº)riryrNrpÚtcrMÚvaluer£r5r5r6Útest_comments_unicodeþs  û
 
 
 
z-ComponentReflectionTest.test_comments_unicodecCsptd|tdtdddd| |¡t|ƒ}| d¡}t|ddiƒ| d¡d}t|d|d    iddiƒdS)
Nrru&🐍🧙🝝🧙‍♂️🧙‍♀️rüu&🎩🁰🝑🤷‍♀️🤷‍♂️r<rrYr¡r)riryrNrprr‡r5r5r6Útest_comments_unicode_full    s ü
 
z2ComponentReflectionTest.test_comments_unicode_full)N)NN)NF)mr8r9r:Ú run_insertsÚ run_deletesrr;rOrÕrXrLrJr%r'r6rrÎrr;r>rHÚpropertyrJrPrQr^r_rkrlrrrsr|r}rrFZschema_reflectionrr‚r†r‡Zschema_create_deleter‰rŒrrœÚ!foreign_key_constraint_reflectionrGr˜r›r3rrIr_ržrÉr¡r¢rŸr»rr¶r·r¬r¹Ú!primary_key_constraint_reflectionr½r¿rr¿rrÁrrrÂrÈrÄZtemp_table_reflect_indexesrÉrÃr¹rÔÚtable_reflectionr×r¶rÚÚfixtureràr±rÓrãrärìr»ròrôrõrúrÿrrrÊrrrr‚rrZcomment_reflection_full_unicoderr5r5r5r6rÔÖs
 
.
 
!
 
-û
!û
&û
`
û
0
û
X
û
u
ú
E
û
:
 
 
 
 
 
 
 
ý
ÿ $
ÿ
 
 
 
  ý÷
B
 
 
 
ÿ 
ÿ & $
ÿ ý 
 
ÿ V
ÿ
 
 
 
ÿ
 
 
1      
 
 
         
þþ
þþ
ë
 
ÿ 
rÔc@sheZdZdZdZejdd„ƒZejdd„ƒZdd„Z    d    d
„Z
d d „Z ej j d d„ƒZej j dd„ƒZdS)ÚTableNoColumnsTest)Zreflect_tables_no_columnsTcCstd|ƒ| |¡dS©Nr=)rr©riryrNr5r5r6Útable_no_columns*    s
z#TableNoColumnsTest.table_no_columnscCs<td|ƒt |dtdƒ¡t |dtdƒ¡| |¡dS)Nr=rPz*CREATE VIEW empty_v AS SELECT * FROM emptyrQzDROP VIEW IF EXISTS empty_v)rrrRr rr$r5r5r6Úview_no_columns/    s
ýÿz"TableNoColumnsTest.view_no_columnscCs$tdtƒ|d}tt|jƒgƒdS)Nr=r´©rrrrLr‡)riryr%Út2r5r5r6Útest_reflect_table_no_columns?    sz0TableNoColumnsTest.test_reflect_table_no_columnscCs2t|ƒ}t| d¡gƒ| ¡}t|dgiƒdS)Nr=r#)rrrºró)riryr%rpÚmultir5r5r6Ú!test_get_columns_table_no_columnsC    sz4TableNoColumnsTest.test_get_columns_table_no_columnscCs*tƒ}| |¡t|jƒ dg¡s&t‚dSr#)rrrr–r®r•)riryr%rr5r5r6Ú"test_reflect_incl_table_no_columnsI    s
z5TableNoColumnsTest.test_reflect_incl_table_no_columnscCs$tdtƒ|d}tt|jƒgƒdS)NÚempty_vr´r')riryr&r(r5r5r6Útest_reflect_view_no_columnsN    sz/TableNoColumnsTest.test_reflect_view_no_columnscCs8t|ƒ}t| d¡gƒ|jtjd}t|dgiƒdS)Nr-)rŠ)Nr-)rrrºrórrÐ)riryr&rpr*r5r5r6Ú test_get_columns_view_no_columnsS    sz3TableNoColumnsTest.test_get_columns_view_no_columnsN)r8r9r:Ú __requires__rrr!r%r&r)r+r,rFr‚r.r/r5r5r5r6r"&    s
 
 
r"c
@søeZdZdZejdejjfdddejjdd„ƒƒZ    ejj
dd„ƒZ ejj d    d
„ƒZ d d „Zejjd d„ƒZejjdd„ƒZejjdd„ƒZejdddejjfdddejjfiddejjfiddejjfdddejjfdddejjfdddd„ƒZdS)ÚComponentReflectionTestExtraTrºrr‹c    sÚ|r tj}nd}td|tdtƒƒtjdddtjddd|dtd    |td
t d ¡ƒ|d| |¡t    |ƒ}t
|j d|dt   d ¡d }dd„‰‡fdd„|Dƒ}t|dddœdddœgƒd    }t|j ||dgƒdS)NZsa_ccrŽza > 1 AND a < 5Zcc1r za = 1 OR (a > 2 AND a < 5)Z
UsesCasingrDrrArõrYrÌcSsd t d| ¡tj¡¡S)Nú zand|\d|=|a|or|<|>)ÚjoinræÚfindallrwÚI)ryr5r5r6Ú    normalize…    sÿzJComponentReflectionTestExtra.test_get_check_constraints.<locals>.normalizecs"g|]}|dˆ|dƒdœ‘qS)rYry©rYryr5)r-Úitem©r6r5r6rhŠ    sÿzKComponentReflectionTestExtra.test_get_check_constraints.<locals>.<listcomp>za = 1 or a > 2 and a < 5r7za > 1 and a < 5)rrHrrrr\rªrrrr•rÆrÎrÏr)rirNryrrErprÃr¤r5r9r6rÇ_    sL
 ÿø
ü
 þ
þþþz7ComponentReflectionTestExtra.test_get_check_constraintsc     sÂtd|tdtdƒƒtdtdƒƒtdtdƒƒƒ}tdt |jj¡|jjt |jj    ¡ƒd‰tdt 
|jjˆ¡ƒtd    |jjƒ|  ˆ¡t ˆƒ}d    dgd
id œg}‡fd d „}||dƒGdd„dt ƒ}G‡fdd„dt ƒ}tjjjrtddddg|dƒd|dƒgd
dœ}    ||    ƒ| d|    ¡ddg|dˆ›dƒgd
dœ}
||
ƒ| |
¡t| d¡|ƒtƒ} td| ˆd} n8tdƒ*t| d¡|ƒtƒ} td| ˆd} W5QRX| | |ˆjj¡dS)Nr’ÚxríÚyÚzÚt_idxa°long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string Z
t_idx_longZt_idx_2F)rYrbrîrccs:tjjjr*g|d<ˆjj›dgi|d<n | di¡dS)NrdZ_includerc)rrFrÆr/r‹rYr)ÚentryrÞr5r6Ú completeIndex´    s 
 ÿ
zYComponentReflectionTestExtra.test_reflect_expression_based_indexes.<locals>.completeIndexrc@seZdZdd„ZdS)z[ComponentReflectionTestExtra.test_reflect_expression_based_indexes.<locals>.lower_index_strcSs | ¡}d|kod|kpd|kS)Nrwr:r;©rw)rirSÚolr5r5r6rTÀ    szbComponentReflectionTestExtra.test_reflect_expression_based_indexes.<locals>.lower_index_str.__eq__NrUr5r5r5r6Úlower_index_str¿    srBcseZdZ‡fdd„ZdS)z^ComponentReflectionTestExtra.test_reflect_expression_based_indexes.<locals>.coalesce_index_strcsd| ¡koˆ|kS)NÚcoalescer@rR©Úlong_strr5r6rTÆ    szeComponentReflectionTestExtra.test_reflect_expression_based_indexes.<locals>.coalesce_index_str.__eq__NrUr5rDr5r6Úcoalesce_index_strÅ    srFzlower(x)zlower(y))rYrbrerîz coalesce(x, 'z')r´z>Skipped unsupported reflection of expression-based index t_idx)rrrr!rrwr‡r:r<r;rCrrr{rrFZ reflect_indexes_with_expressionsr/ÚinsertrÜrrÀrrZ!compare_table_index_with_expectedr‹rY) rirNryr’rprÈr?rBrFZ
expr_indexZexpr_index_longÚm2r(r5)ryrEr6Ú%test_reflect_expression_based_indexes˜    sp   û&
üÿ           ýø
 ÿú
ÿÿzBComponentReflectionTestExtra.test_reflect_expression_based_indexescCsÖtd|tdtdƒƒtdtdƒƒƒ}td|jjƒ}dg|j|jjd<|     |¡t
|ƒ}|  d¡}t |ddgdgdt jdœgƒt |d    d
d |jjdgƒtdtƒ|d }t t|jƒd    j|jjddgƒdS) Nr’r:rír;r=ÚincludeF)rYrbrdrîrcrrcz
%s_includer´)rrrr!r‡r:rcr‹rYrrrÀrr(rÎrrLrÀ)rirNryr’r™rprÀr(r5r5r6Útest_reflect_covering_indexó    sD  ü
 
ûÿþ 
 
ÿüÿüz8ComponentReflectionTestExtra.test_reflect_covering_indexcGs@td|fdd„t|ƒDƒžŽ}| |¡dd„t|ƒ d¡DƒS)Nr’cSsg|]\}}td||ƒ‘qS)zt%dr )r-r²Útype_r5r5r6rh"
szAComponentReflectionTestExtra._type_round_trip.<locals>.<listcomp>cSsg|] }|d‘qS)r@r5rfr5r5r6rh&
s)rr§rmrrº)riryrNrr’r5r5r6Ú_type_round_trip
sþý
z-ComponentReflectionTestExtra._type_round_tripcCsH| ||t dd¡¡D],}t|tjƒs*t‚t|jdƒt|jdƒqdS)NérÜ)rMrªr¯r³r•rZ    precisionZscale©riryrNÚtypr5r5r6Útest_numeric_reflection(
s
ÿ z4ComponentReflectionTestExtra.test_numeric_reflectioncCs8| ||t d¡¡d}t|tjƒs(t‚t|jdƒdS)Né4r)rMrªrr³r•rÚlengthrOr5r5r6Útest_varchar_reflection1
sÿþz4ComponentReflectionTestExtra.test_varchar_reflectionc    CsTtd|tdtddtdtddƒ}| |¡tdd„t|ƒ d¡Dƒddd    œƒdS)
Nr’rŽTrÝrÊFcSsi|]}|d|d“qS)rYrÞr5r¸r5r5r6r1C
sÿzIComponentReflectionTestExtra.test_nullable_reflection.<locals>.<dictcomp>)rŽrÊ)rrrrmrrrº)riryrNr’r5r5r6Útest_nullable_reflection9
s  ü
 þûz5ComponentReflectionTestExtra.test_nullable_reflectionNZCASCADEzSET NULLz    NO ACTIONZRESTRICTzexpected,ondelete,onupdatec s"i}|r||d<|r||d<|dkr(|}td|tdtddddtd|tdtddtd    ttd
d d ƒtd tdƒƒddtd|tdtddtdtdƒddtdtƒtjdgdgfddi|—Ždd| |¡t|ƒ}|     d¡dd‰t
‡fdd„ˆDƒiƒ|     d¡dd‰t
ˆ|ƒdS)NÚondeleteÚonupdater:r>Tr?r¥r±Zx_idzx.idÚxidr Útesté
ÚuserrYrBFrÝÚtidztable.idZmyfkrr-csi|]}ˆ|r|ˆ|“qSr5r5)r-r©Úoptsr5r6r1¡
szMComponentReflectionTestExtra.test_get_foreign_key_options.<locals>.<dictcomp>) rrrrrr\r©rrr¾r)riryrNrÈrVrWr-rpr5r]r6Útest_get_foreign_key_optionsJ
sV* ü  ú     ÿÿÿ÷
z9ComponentReflectionTestExtra.test_get_foreign_key_options)r8r9r:rrrœrFrGrÊrÇZindexes_with_expressionsrIrÆrKrMr rQrTrUZ1foreign_key_constraint_option_reflection_ondeleteZ1foreign_key_constraint_option_reflection_onupdateZ1fk_constraint_option_reflection_ondelete_noactionZ1fk_constraint_option_reflection_onupdate_restrictZ1fk_constraint_option_reflection_ondelete_restrictr_r5r5r5r6r1[    sj
ÿ 5
Z
*
 
 
 
üüüüüüÛ'r1c@s0eZdZdZdZedd„ƒZdd„Zdd„Zd    S)
ÚNormalizedNameTest)Zdenormalized_namesTcCsLttddd|tdtddƒttddd|tdtddtdtdƒƒƒdS)    NÚt1T©r­r>r?r(Út1idzt1.id)rr"rrrrMr5r5r6rO¬
s
 ý
  üz NormalizedNameTest.define_tablescCs~tƒ}ttddd|tjd}|jd}|jj |jj    ¡s>t
‚tƒ}|j tjdd„d|jdjj |jdjj    ¡szt
‚dS)    Nr(Trbr´racSs | ¡dkS)N©rar(r@)rYrr5r5r6r‘Å
r’zINormalizedNameTest.test_reflect_lowercase_forced_tables.<locals>.<lambda>)Úonly) rrr"rr3r–r‡rcZ
referencesr>r•r)rirHZt2_refZt1_refZm3r5r5r6Ú$test_reflect_lowercase_forced_tablesº
s
ÿ
ÿz7NormalizedNameTest.test_reflect_lowercase_forced_tablescCsPdd„ttjƒ ¡Dƒ}t|d ¡|d ¡ƒt|d ¡|d ¡ƒdS)NcSsg|]}| ¡dkr|‘qS)rdr@r‘r5r5r6rhÊ
s þz;NormalizedNameTest.test_get_table_names.<locals>.<listcomp>rr+)rrr3r”rÚupperrw)riZ
tablenamesr5r5r6r˜É
s
 þz'NormalizedNameTest.test_get_table_namesN)    r8r9r:r0rr;rOrfr˜r5r5r5r6r`¨
s 
r`c@s<eZdZdd„Zdd„Zdd„Zdd„Zejj    d    d
„ƒZ
d S) ÚComputedReflectionTestcCs^ttjƒ}| d¡}dd„|Dƒ}td|ddkƒt|dddƒt|dddƒdS)    NÚcomputed_default_tablecSsi|]}|d|“qSr r5rfr5r5r6r1Ù
szLComputedReflectionTest.test_computed_col_default_not_set.<locals>.<dictcomp>Z42Ú with_defaultrAÚnormalÚ computed_col)rrr3rºr'r
)rirprMZcol_datar5r5r6Ú!test_computed_col_default_not_setÕ
s 
 
z8ComputedReflectionTest.test_computed_col_default_not_setcCs¶ttjƒ}| d¡}dd„|Dƒ}dD]}td||kƒq&|d}td|kƒtd|dkƒt| |dd¡dƒtd    |dktjj    j
ƒtjj    j
r²t|dd    tjj j
ƒdS)
NricSsi|]}|d|“qSr r5rfr5r5r6r1â
szKComputedReflectionTest.test_get_column_returns_computed.<locals>.<dictcomp>)r>rkrjÚcomputedrlryú    normal+42Ú    persisted) rrr3rºr'rr6rrFÚ"computed_columns_reflect_persistedr/Ú"computed_columns_default_persisted)rirprMrArËÚcompDatar5r5r6Ú test_get_column_returns_computedÞ
s$
 
 
þ
 
þz7ComputedReflectionTest.test_get_column_returns_computedcCsXtd||kƒ||d}t| |d¡|ƒtjjjrTtd|kƒt|d|ƒdS)Nrnryrp)r'rr6rrFrqr/r
)rirAÚcolumnryrprsr5r5r6Ú check_columnó
s  
 z#ComputedReflectionTest.check_columncCspttjƒ}| d¡}dd„|Dƒ}| |ddtjjj¡tjj    jrR| |ddd¡tjj
jrl| |d    d
d ¡dS) NÚcomputed_column_tablecSsi|]}|d|“qSr r5rfr5r5r6r1ÿ
szLComputedReflectionTest.test_get_column_returns_persisted.<locals>.<dictcomp>Úcomputed_no_flagroÚcomputed_virtualznormal+2FÚcomputed_storedz    normal-42T) rrr3rºrvrrFrrr/Úcomputed_columns_virtualÚcomputed_columns_stored©rirprMrAr5r5r6Ú!test_get_column_returns_persistedû
s.
 
ü
ü
üz8ComputedReflectionTest.test_get_column_returns_persistedcCsvttjƒ}|jdtjd}dd„|Dƒ}| |ddtjjj    ¡tjj
j    rX| |ddd    ¡tjj j    rr| |d
d d ¡dS) NrwrDcSsi|]}|d|“qSr r5rfr5r5r6r1 szXComputedReflectionTest.test_get_column_returns_persisted_with_schema.<locals>.<dictcomp>rxz    normal/42ryznormal/2Frzz    normal*42T) rrr3rºrHrvrrFrrr/r{r|r}r5r5r6Ú-test_get_column_returns_persisted_with_schema s4
ÿü
ü
üzDComputedReflectionTest.test_get_column_returns_persisted_with_schemaN) r8r9r:rmrtrvr~rrFrGrr5r5r5r6rhÔ
s     rhc@sHeZdZdZZdZdZedd„ƒZdd„Z    dd    „Z
e j j d
d „ƒZdS) ÚIdentityReflectionTestNT)Zidentity_columnsr cCs|td|tdtƒtdttƒƒƒtd|tdttdddd    d
dd d ƒƒtjjjrxtd|tdtƒtdttdd dƒtj    ddS)NrarkÚid1r(Úid2Trréþÿÿÿré©ÚalwaysÚstartÚ    incrementÚminvalueÚmaxvalueÚcycleÚcacherõ)r†r‡rD)
rrrrrrFrGr/rrHrMr5r5r6rO; s> üùýý
ûz$IdentityReflectionTest.define_tablescCsÔtjjjr¬d}t|ƒD]}||kr| |¡q|r tt|ƒt|ƒƒ|D]T}|dkrjt||||kƒqH|dkrˆt||||kƒqHt|||||ƒqHqÐt||ƒn$t|d|dƒt|d|dƒdS)Nr…r‰>rŒrŠr‡rˆ)    rrFZidentity_columns_standardr/rLrCrr¦r')rirr£ÚapproxZ common_keysrr5r5r6Úcheck] s 
       zIdentityReflectionTest.checkc Csttjƒ}| d¡| d¡}|D]à}|ddkr@td|kƒq"|ddkr¢d|kr`t|dƒt|ddƒtd|kƒ|j|dtd    d
d
d
d d    d
d d dq"|ddkr"d|krÂt|dƒt|ddƒtd|kƒ|j|dtd ddddd dd d    dq"dS)Nrar(rYrkÚidentityrr?rAFr+éÿÿÿr…T©rr‚rrrƒrr„)    rrr3rºr&r'rrŽr2©rirprMrlr5r5r6Útest_reflect_identityz sR
    ù    õ   ù    õz,IdentityReflectionTest.test_reflect_identityc Cs¢ttjƒ}|jdtjd}|D]~}|ddkr<td|kƒq|ddkrd|kr\t|dƒt|ddƒtd|kƒ|j|dt    d    d
d d d d d dd    dqdS)NrarDrYrkrrr?rATrõr+rFr…r‘)
rrr3rºrHr&r'rrŽr2r’r5r5r6Útest_reflect_identity_schema¦ s.
    ù    õz3IdentityReflectionTest.test_reflect_identity_schema)r8r9r:rrrr0r;rOrŽr“rrFrGr”r5r5r5r6r€5 s
!,r€c@s<eZdZdZedd„ƒZejjdd„ƒZ    ejj
dd„ƒZ dS)    ÚCompositeKeyReflectionTestTc Cs¢td|tdtƒtdtƒtdt d¡ƒtjdddddddd    }td
|tdtdd td tƒtd tƒtdt d¡ƒtjdd d g|jj    |jj
|jj gddddd        dS)NÚtb1r>ÚattrrYrõZpk_tb1r TræÚtb2r?ÚpidÚpattrÚpnameZfk_tb1_name_id_attr) rrrrªr^r\r§r©r‡rYr>r—)r4rNr–r5r5r6rOÅ s2ø
 ýóz(CompositeKeyReflectionTest.define_tablescCs2t|ƒ}| |jjj¡}t| d¡dddgƒdS)NrKrYr>r—)rr¼r–r–rYrrÕ)riryrpr@r5r5r6Útest_pk_column_orderá sz/CompositeKeyReflectionTest.test_pk_column_ordercCs^t|ƒ}| |jjj¡}tt|ƒdƒ|d}t| d¡dddgƒt| d¡dd    d
gƒdS) Nr+rrVrYr>r—rKr›r™rš)rr¾r–r˜rYrr¦rÕ)riryrpZ foreign_keysr¾r5r5r6Útest_fk_column_orderè s z/CompositeKeyReflectionTest.test_fk_column_orderN) r8r9r:rr;rOrrFrrœrrr5r5r5r6r• s
 
r•)
rÔr1r"rr<rƒr`rhr€r•)BrÎrær0r\r×rrrrrrr    r
Z    provisionr r rErrrrrrrrrrrrrªr‹rrrÚexcrrr r!Z sql.elementsr"Z
sql.schemar#r$r%r&r'r(rNrÙZ
TablesTestr)r<rƒrrÓrÔZTestBaser"r1r`ZComputedReflectionFixtureTestrhr€r•Ú__all__r5r5r5r6Ú<module>sŽ                                    L^5O,a1