zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
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
U
¸ý°dÐÿã@sddlZddlZddlZddlZddlZddlmZddlmZddlmZddlm    Z    ddl
m Z ddl
m Z dd    l
m Z dd
lmZdd lmZdd lmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlm Z d dlm!Z!d dlm"Z"d dlm#Z#d d lm$Z$d d!lm%Z%d d"lm&Z&d d#lm'Z'd d$lm(Z(d d%lm)Z)d d&lm*Z*d d'lm+Z+d d(lm,Z,d d)lm-Z-d d*lm.Z.d d+lm/Z/d d,l0m1Z1d d-l2m3Z3d d.l2m4Z4d d/l5m6Z6d d0l7m8Z8d d1l7m9Z9Gd2d3„d3ƒZ:Gd4d5„d5e:ej;ƒZ<Gd6d7„d7e<ej=ƒZ>Gd8d9„d9e<ej=ƒZ?Gd:d;„d;e:ej=ƒZ@Gd<d=„d=e:ej=ƒZAGd>d?„d?e:ej=ƒZBGd@dA„dAe:ej;ƒZCGdBdC„dCe:ej;ƒZDGdDdE„dEeDej=ƒZEGdFdG„dGeDej=ƒZFGdHdI„dIeDej=ƒZGGdJdK„dKeDej=ƒZHGdLdM„dMeDej=ƒZIGdNdO„dOeDej=ƒZJGdPdQ„dQeDej=ƒZKGdRdS„dSeDej=ƒZLGdTdU„dUeDej=ƒZMGdVdW„dWeDej=ƒZNGdXdY„dYeDej=ƒZOGdZd[„d[e:ej;ƒZPGd\d]„d]e:ej;ƒZQGd^d_„d_ej;ƒZRGd`da„dae:ej;ƒZSGdbdc„dce:ej=ƒZTGddde„dee:ej=ƒZUGdfdg„dge:ej=ƒZVGdhdi„die:ej=ƒZWGdjdk„dkeWƒZXdlZYdS)méNé)Úconfig)Úengines)Úfixtures)Úmock)Úeq_)Úis_)Úne_)Ú requirements)ÚColumn)ÚTableé)Úand_)ÚARRAY©Ú
BigInteger)Ú    bindparam©ÚBoolean)Úcase)Úcast)ÚDate)ÚDateTime)ÚFloat)ÚIdentity©ÚInteger)ÚJSON)Úliteral)Úliteral_column)ÚMetaData)Únull©ÚNumeric)Úselect©ÚString)Útesting©ÚText)ÚTime)Ú    TIMESTAMP)Ú type_coerce©Ú TypeDecorator)ÚUnicode)Ú UnicodeText)ÚUUID)ÚUuid)ÚBYTEA)Údeclarative_base)ÚSession)Úsqltypes)Ú LargeBinary)Ú
PickleTypec@seZdZdZejdd„ƒZdS)Ú_LiteralRoundTripFixtureTcsd‡‡‡fdd„    }|S)ztest literal renderingNTc     stdˆtd|ƒƒ}| ˆ¡|D](}| ¡jt||ddd}ˆ |¡q |rĈjrÄ|r’| ¡     |j
j t||ddk|j
j t|d|ddk¡}    qÌ| ¡     |j
j t|dk    r®|n|d|ddk¡}    n| ¡}    ˆ |    ¡  ¡}
|
sæt dƒ‚|
D]*} | d}|dk    r||ƒ}||ksêt ‚qêdS)NÚtÚxT©Zliteral_execute©r;rzNo rows returned)r r ÚcreateÚinsertÚvaluesrÚexecuteÚsupports_whereclauser$ÚwhereÚcr;ÚallÚAssertionError) Útype_Úinput_ÚoutputÚfilter_ÚcompareÚsupport_whereclauser:ÚvalueZinsÚstmtÚrowsÚrow©Ú
connectionÚmetadataÚself©úZd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\sqlalchemy/testing/suite/test_types.pyÚrunFsT
 ÿ 
ýÿýÿùýÿÿ     
z8_LiteralRoundTripFixture.literal_round_trip.<locals>.run)NNTrU©rTrSrRrWrUrQrVÚliteral_round_trip=s
ú5z+_LiteralRoundTripFixture.literal_round_tripN)Ú__name__Ú
__module__Ú __qualname__rBr'ÚfixturerYrUrUrUrVr9:sr9c@s\eZdZdZdZedd„ƒZedd„ƒZdd„Z    d    d
„Z
d d „Z d d„Z dd„Z dd„ZdS)Ú_UnicodeFixture©Ú unicode_datau³Alors vous imaginez ma ðŸ surprise, au lever du jour, quand une drôle de petite ðŸ voix m’a réveillé. Elle disait: Â« S’il vous plaît… dessine-moi ðŸ un mouton! Â»cCs
tjjjS©N©rr
Z"expressions_against_unbounded_textÚenabled©rTrUrUrVrB‡sz$_UnicodeFixture.supports_whereclausec    Cs&td|tdtdddtd|jƒƒdS)NÚ unicode_tableÚidT©Ú primary_keyZtest_needs_autoincrementr`)r r rÚdatatype©ÚclsrSrUrUrVÚ define_tables‹sÿ
úz_UnicodeFixture.define_tablescCsZ|jj}| | ¡d|jdœ¡| t|jjƒ¡ ¡}t    ||jfƒt
|dt ƒsVt ‚dS)Né©rfr`r) ÚtablesrerAr?Údatar$rDr`ÚfirstrÚ
isinstanceÚstrrF©rTrRrerPrUrUrVÚtest_round_trip–s
ÿz_UnicodeFixture.test_round_tripcs€ˆjj}| | ¡‡fdd„tddƒDƒ¡| t|jjƒ¡ ¡}t    |‡fdd„tddƒDƒƒ|D]}t
|dt ƒsdt ‚qddS)Ncsg|]}|ˆjdœ‘qS)rn©rp©Ú.0ÚirdrUrVÚ
<listcomp>§sz?_UnicodeFixture.test_round_trip_executemany.<locals>.<listcomp>rmécsg|] }ˆjf‘qSrUrvrwrdrUrVrz­sr) rorerAr?Úranger$rDr`ZfetchallrrrrsrF)rTrRrerOrPrUrdrVÚtest_round_trip_executemany¢sþ
ÿz+_UnicodeFixture.test_round_trip_executemanycCsB|jj}| | ¡dddœ¡| t|jjƒ¡ ¡}t|dƒdS)Nrmrnra©    rorerAr?r$rDr`rqrrtrUrUrVÚ_test_null_strings±sÿz"_UnicodeFixture._test_null_stringscCsB|jj}| | ¡dddœ¡| t|jjƒ¡ ¡}t|dƒdS)NrmÚrn©r€r~rtrUrUrVÚ_test_empty_stringsºsÿz#_UnicodeFixture._test_empty_stringscCs||j|jg|jgƒdSra)rirp©rTrYrUrUrVÚ test_literalÃsz_UnicodeFixture.test_literalcCs||jdgdgƒdS©Nõréve🐍 illé)rirƒrUrUrVÚtest_literal_non_asciiÆsz&_UnicodeFixture.test_literal_non_asciiN)rZr[r\Ú __requires__rpÚpropertyrBÚ classmethodrlrur}rr‚r„r‡rUrUrUrVr^~sÿ
 
 
         r^c@s2eZdZdZdZedƒZejdd„ƒZ    dd„Z
dS)    ÚUnicodeVarcharTestr_TéÿcCs| |¡dSra©r‚©rTrRrUrUrVÚtest_empty_strings_varcharÐsz-UnicodeVarcharTest.test_empty_strings_varcharcCs| |¡dSra©rrŽrUrUrVÚtest_null_strings_varcharÔsz,UnicodeVarcharTest.test_null_strings_varcharN) rZr[r\rˆÚ __backend__r/rir
Zempty_strings_varcharrr‘rUrUrUrVr‹Ês 
r‹c@s0eZdZdZdZeƒZejdd„ƒZ    dd„Z
dS)ÚUnicodeTextTest)r`Ú    text_typeTcCs| |¡dSrarrŽrUrUrVÚtest_empty_strings_textÞsz'UnicodeTextTest.test_empty_strings_textcCs| |¡dSrarrŽrUrUrVÚtest_null_strings_textâsz&UnicodeTextTest.test_null_strings_textN) rZr[r\rˆr’r0rir
Úempty_strings_textr•r–rUrUrUrVr“Øs 
r“c@s<eZdZdZdZdZedd„ƒZdd„Zdd    „Z    d
d „Z
d S) Ú    ArrayTestzPAdd ARRAY test suite, #8138.
 
    This only works on PostgreSQL right now.
 
    )Z
array_typeTc Cs8td|tdtdddtdttƒƒtdttddƒƒdS)    NÚ array_tablerfTrgÚ
single_dimÚ    multi_dimr©Z
dimensions)r r rrr&rjrUrUrVrlðsÿ ùzArrayTest.define_tablescCsr|jj}| | ¡ddddgddgddggdœ¡| t|jj|jjƒ¡ ¡}t    |dddgddgddggfƒdS)    Nrmrr ÚoneÚtwoúthr'eer†)rfršr›)
ror™rAr?r$rDršr›rqr)rTrRr™rPrUrUrVÚtest_array_roundtripüsýþÿzArrayTest.test_array_roundtripcCs(|ttƒdddgfdddgfdddS)Nrmrr F©rL)rrrƒrUrUrVÚtest_literal_simple s 
 
üzArrayTest.test_literal_simplecCs8|ttddddgddggfddgddggfdddS)    NrrœrržrŸr†Fr¡)rr&rƒrUrUrVÚtest_literal_complexs 
üzArrayTest.test_literal_complexN) rZr[r\Ú__doc__rˆr’rŠrlr r¢r£rUrUrUrVr˜æs
r˜c@s˜eZdZdZedd„ƒZejdddddd    „ƒZd
d „Z    eje
ƒdfe
ƒdfe ƒde  d ¡fd de  dddg¡e  dddg¡ejjdd„ƒƒƒƒZdS)Ú
BinaryTestTc    Cs,td|tdtdddtdtƒtdtƒƒdS)NÚ binary_tablerfTrgÚ binary_dataÚ pickle_data)r r rr7r8rjrUrUrVrl sÿùzBinaryTest.define_tablessthis is binarys7çŸrp©ÚargnamescCsD|jj}| | ¡d|dœ¡| t|jjƒ¡ ¡}t||fƒdS)Nrm)rfr§)    ror¦rAr?r$rDr§rqr)rTrRrpr¦rPrUrUrVÚtest_binary_roundtrip,sÿz BinaryTest.test_binary_roundtripcCs\|jj}| | ¡ddddgddœdœ¡| t|jjƒ¡ ¡}t|dddgddœfƒdS)Nrmrr Zbat)ÚfooÚbar)rfr¨)    ror¦rAr?r$rDr¨rqr)rTrRr¦rPrUrUrVÚtest_pickle_roundtrip6sþz BinaryTest.test_pickle_roundtripZ
postgresqlz type_,valueÚsort_by_parameter_orderFÚ multiple_rowsc
    sÊtd|tdttƒddtd|ƒƒ}| |¡| | ¡j|jj    |jj
t |ƒd|rh‡fdd„t d    ƒDƒndˆi¡}|r‚t d
d ƒ}    n
t d
d ƒ}    t t|ƒ‡fd d„|    Dƒƒt t| t|jj
ƒ¡ƒˆhƒdS)zwtest #9739 (similar to #9701).
 
        this tests insertmanyvalues as well as binary
        RETURNING types
 
        r:rfT©rhrM)r¯csg|] }dˆi‘qS©rMrUrwr²rUrVrzjsz1BinaryTest.test_imv_returning.<locals>.<listcomp>é
rmé rcsh|] }|ˆf’qSrUrU)rxÚid_r²rUrVÚ    <setcomp>vsz0BinaryTest.test_imv_returning.<locals>.<setcomp>N)r r rrr>rAr?Ú    returningrDrfrMÚboolr|rÚsetÚscalarsr$)
rTrRrSr¯rGrMr°r:ÚresultZi_rangerUr²rVÚtest_imv_returning@s8ü
ýÿø  
þþzBinaryTest.test_imv_returningN)rZr[r\r’rŠrlr'Ú combinationsr«r®r7r3Zonly_onZ    variationÚrequiresÚinsert_returningr¼rUrUrUrVr¥s$
 
    
þù    r¥c@szeZdZdZdZedd„ƒZedd„ƒZdd„Z    e
j j d    d
„ƒZ d d „Zd d„Zejdd„ƒZdd„Zdd„Zdd„ZdS)ÚTextTest)r”TcCs
tjjjSrarbrdrUrUrVrBƒszTextTest.supports_whereclausec    Cs$td|tdtdddtdtƒƒdS)NÚ
text_tablerfTrgÚ    text_data)r r rr)rjrUrUrVrl‡sÿúzTextTest.define_tablescCsB|jj}| | ¡dddœ¡| t|jjƒ¡ ¡}t|dƒdS)Nrmú    some text©rfrÂ)ré    rorÁrAr?r$rDrÂrqr©rTrRrÁrPrUrUrVÚtest_text_roundtrip’sÿzTextTest.test_text_roundtripcCsB|jj}| | ¡dddœ¡| t|jjƒ¡ ¡}t|dƒdS)Nrmr€rÄrrÅrÆrUrUrVÚtest_text_empty_strings›sz TextTest.test_text_empty_stringscCsB|jj}| | ¡dddœ¡| t|jjƒ¡ ¡}t|dƒdS)NrmrÄrarÅrÆrUrUrVÚtest_text_null_strings£szTextTest.test_text_null_stringscCs|tdgdgƒdS)NrÃr(rƒrUrUrVr„ªszTextTest.test_literalcCs|tdgdgƒdSr…r(rƒrUrUrVr‡­szTextTest.test_literal_non_asciicCsd}|t|g|gƒdS)Nú&some 'text' hey "hi there" that's textr(©rTrYrprUrUrVÚtest_literal_quoting±szTextTest.test_literal_quotingcCsd}|t|g|gƒdS)Nú$backslash one \ backslash two \\ endr(rËrUrUrVÚtest_literal_backslashesµsz!TextTest.test_literal_backslashescCsd}|t|g|gƒdS)Nzpercent % signs %% percentr(rËrUrUrVÚtest_literal_percentsigns¹sz"TextTest.test_literal_percentsignsN)rZr[r\rˆr’r‰rBrŠrlrÇr'r¾r—rÈrÉr„r
Úunicode_data_no_special_typesr‡rÌrÎrÏrUrUrUrVrÀs 
 
 
    
 
rÀc@s€eZdZdZejdd„ƒZdd„Zejdd„ƒZ    e
j dd    d
gfd d gfd gfdddd„ƒZ dd„Z dd„Zdd„Zdd„ZdS)Ú
StringTestTcCs4tƒ}td|tdtƒƒ}| tj¡| tj¡dS)Nr¬r)r r r r&r>rÚdbZdrop)rTrSr¬rUrUrVÚtest_nolength_stringÁs zStringTest.test_nolength_stringcCs|tdƒdgdgƒdS)Né(rÃr%rƒrUrUrVr„ÉszStringTest.test_literalcCs|tdƒdgdgƒdS)NrÔr†r%rƒrUrUrVr‡Îsz!StringTest.test_literal_non_asciiz%B%ÚABÚBCzA%CÚACzA%C%Zzexpr, expectedr©cCsrtd|tdtdƒƒƒ}| |¡| | ¡ddiddiddig¡t| t|j    j
ƒ  |j    j
  |¡¡¡  ¡|ƒdS)Nr:r;rrÕrÖr×)r r r&r>rAr?rrºr$rDr;rCZlikerE)rTrSrRÚexprÚexpectedr:rUrUrVÚtest_dont_truncate_rightsideÒs    
"$þz'StringTest.test_dont_truncate_rightsidecCsd}|tdƒ|g|gƒdS)NrÊrÔr%rËrUrUrVrÌåszStringTest.test_literal_quotingcCsd}|tdƒ|g|gƒdS)NrÍrÔr%rËrUrUrVrÎész#StringTest.test_literal_backslashescCs t| ttdƒdƒ¡dƒdS)áAdialects with special string concatenation operators should
        implement visit_concat_op_binary() and visit_concat_op_clauselist()
        in their compiler.
 
        .. versionchanged:: 2.0  visit_concat_op_clauselist() is also needed
           for dialects to override the string concatenation operator.
 
        ÚaÚbÚabN©rÚscalarr$rrŽrUrUrVÚtest_concatenate_binaryís    z"StringTest.test_concatenate_binarycCs,t| ttdƒddddƒ¡dƒdS)rÛrÜrÝrDÚdÚeZabcdeNrßrŽrUrUrVÚtest_concatenate_clauselistøs     þz&StringTest.test_concatenate_clauselistN)rZr[r\r’r
Zunbounded_varcharrÓr„rÐr‡r'r½rÚrÌrÎrárärUrUrUrVrѾs"
 
 
ü
 rÑc@sTeZdZdZedd„ƒZdd„Zdd„Zdd    „Ze    j
j d
d „ƒZ e    j
j d d „ƒZdS)Ú _DateFixtureNc    sBG‡fdd„dtƒ}td|tdtdddtdˆjƒtd|ƒƒdS)    NcseZdZ”jZdZdS)z-_DateFixture.define_tables.<locals>.DecoratedTN)rZr[r\riÚimplÚcache_okrU©rkrUrVÚ    Decorated sréÚ
date_tablerfTrgÚ    date_dataÚdecorated_date_data)r.r r rri)rkrSrérUrèrVrl
sÿ
ùz_DateFixture.define_tablescCsh|jj}| | ¡d|jdœ¡| t|jjƒ¡ ¡}|j    p@|j}t
||fƒt |dt |ƒƒsdt ‚dS)Nrm©rfrër)rorêrAr?rpr$rDrërqrKrrrÚtyperF©rTrRrêrPrKrUrUrVrus
ÿ  z_DateFixture.test_round_tripcCsh|jj}| | ¡d|jdœ¡| t|jjƒ¡ ¡}|j    p@|j}t
||fƒt |dt |ƒƒsdt ‚dS)Nrm)rfrìr)rorêrAr?rpr$rDrìrqrKrrrrîrFrïrUrUrVÚtest_round_trip_decorated's
ÿ
ÿ  z&_DateFixture.test_round_trip_decoratedcCsB|jj}| | ¡dddœ¡| t|jjƒ¡ ¡}t|dƒdS)Nrmríra)    rorêrAr?r$rDrërqr)rTrRrêrPrUrUrVÚ    test_null6sz_DateFixture.test_nullcCs(|jp
|j}||j|jg|g|ddS)N)rK)rKrpri)rTrYrKrUrUrVr„>s ÿz_DateFixture.test_literalc    Cs¨|jj}tj ¡Œ}| | ¡d|jdœ¡}|jd}t    |j
j ƒ  t td|jddktd|jdf|j
jd|j
jk¡}| |ddi¡ ¡}t|d|ƒW5QRXdS)Nrmrírr¬©rG)Zelse_)rorêrrÒÚbeginrAr?rpZinserted_primary_keyr$rDrfrCrrrirërqr)rTrêÚconnr»rµrNrPrUrUrVÚtest_null_bound_comparisonFs& 
ÿ
  þûùÿ z'_DateFixture.test_null_bound_comparison)rZr[r\rKrŠrlrurðrñr'r¾Zdatetime_literalsr„Z!standalone_null_binds_whereclauserõrUrUrUrVrås
 
råc@s<eZdZdZdZeZe dddddd¡Ze    j
j d    d
„ƒZ d S) Ú DateTimeTest)ÚdatetimeTéÜr³éé é9écCs$| tt|jƒƒ¡}t||jƒdSra©ràr$rrpr©rTrRr»rUrUrVÚtest_select_directfszDateTimeTest.test_select_directN) rZr[r\rˆr’rrir÷rpr'r¾Údatetime_implicit_boundrÿrUrUrUrVrö`s röc    @sJeZdZdZdZeddZejdddddd    ejj    d
Z
e j j d d „ƒZd S)ÚDateTimeTZTest)Zdatetime_timezoneT©Útimezonerør³rùrúrûrü©ÚtzinfocCs$| tt|jƒƒ¡}t||jƒdSrarýrþrUrUrVrÿtsz!DateTimeTZTest.test_select_directN)rZr[r\rˆr’rrir÷rÚutcrpr'r¾rrÿrUrUrUrVrls
ÿrc    @s.eZdZdZdZeZe ddddddd    ¡Zd
S) ÚDateTimeMicrosecondsTest)Zdatetime_microsecondsTrør³rùrúrûrüiښN)    rZr[r\rˆr’rrir÷rprUrUrUrVrzsrc    @s>eZdZdZdZeZe ddddddd    ¡Ze    j
j d
d „ƒZ d S) ÚTimestampMicrosecondsTest)Ztimestamp_microsecondsTrør³rùrúrûrüéŒcCs$| tt|jƒƒ¡}t||jƒdSrarýrþrUrUrVrÿ‡sz,TimestampMicrosecondsTest.test_select_directN) rZr[r\rˆr’r+rir÷rpr'r¾Z%timestamp_microseconds_implicit_boundrÿrUrUrUrVrs rc@s6eZdZdZdZeZe ddd¡Z    e
j j dd„ƒZ dS)    ÚTimeTest)ÚtimeTrúrûrücCs$| tt|jƒƒ¡}t||jƒdSrarýrþrUrUrVrÿ“szTimeTest.test_select_directN©rZr[r\rˆr’r*rir÷r rpr'r¾Útime_implicit_boundrÿrUrUrUrVr
s r
c@sDeZdZdZdZeddZejdddej    j
dZ e j jdd    „ƒZd
S) Ú
TimeTZTest)Z time_timezoneTrrúrûrürcCs$| tt|jƒƒ¡}t||jƒdSrarýrþrUrUrVrÿŸszTimeTZTest.test_select_directN)rZr[r\rˆr’r*rir÷r rrrpr'r¾r rÿrUrUrUrVr™s 
rc@s8eZdZdZdZeZe dddd¡Z    e
j j dd„ƒZ d    S)
ÚTimeMicrosecondsTest)Ztime_microsecondsTrúrûrür    cCs$| tt|jƒƒ¡}t||jƒdSrarýrþrUrUrVrÿ«sz'TimeMicrosecondsTest.test_select_directNr rUrUrUrVr¥s rc@s6eZdZdZdZeZe ddd¡Z    e
j j dd„ƒZ dS)    ÚDateTest)ÚdateTrør³rùcCs$| tt|jƒƒ¡}t||jƒdSrarýrþrUrUrVrÿ·szDateTest.test_select_directN©rZr[r\rˆr’rrir÷rrpr'r¾Údate_implicit_boundrÿrUrUrUrVr±s rc@sNeZdZdZdZdZeZe dddddd    ¡Z    e 
ddd¡Z e j jd
d „ƒZd S) ÚDateTimeCoercedToDateTimeTestz€this particular suite is testing that datetime parameters get
    coerced to dates, which tends to be something DBAPIs do.
 
    )rZdate_coerces_from_datetimeTrør³rùrúrûrücCs$| tt|jƒƒ¡}t||jƒdSrarýrþrUrUrVrÿÉsz0DateTimeCoercedToDateTimeTest.test_select_directN)rZr[r\r¤rˆr’rrir÷rprrKr'r¾rrÿrUrUrUrVr½src@s<eZdZdZdZeZe dddddd¡Ze    j
j dd    „ƒZ d
S) ÚDateTimeHistoricTest)Zdatetime_historicTi:r´r³é4é#cCs$| tt|jƒƒ¡}t||jƒdSrarýrþrUrUrVrÿÕsz'DateTimeHistoricTest.test_select_directN) rZr[r\rˆr’rrir÷rpr'r¾rrÿrUrUrUrVrÏs rc@s6eZdZdZdZeZe ddd¡Z    e
j j dd„ƒZ dS)    ÚDateHistoricTest)Z date_historicTi¿r{rmcCs$| tt|jƒƒ¡}t||jƒdSrarýrþrUrUrVrÿász#DateHistoricTest.test_select_directNrrUrUrUrVrÛs rc@sJeZdZdZdd„Zdd„Zeƒdd„ƒZeƒdd    „ƒZej    d
d „ƒZ
d S) Ú IntegerTestTcCs|tdgdgƒdS©NérrƒrUrUrVr„êszIntegerTest.test_literalcCs"tjddddddddd    d
d d d  S)Nlliÿÿÿiþÿÿlýÿÿÿi€i€i€rlÐ'lüÿÿÿÐ'Úintvaluer©©r'r½rUrUrUrVÚ
_huge_intsísôzIntegerTest._huge_intscCs&t| t|ƒ t|ƒ|k¡¡|ƒdS)z
test #7909N)rràr$rCr)rTrRrrUrUrVÚ test_huge_int_auto_accommodationþs ÿüz,IntegerTest.test_huge_int_auto_accommodationcCs|t|ƒdSrar)rTÚinteger_round_triprrUrUrVÚ test_huge_int    szIntegerTest.test_huge_intcs‡‡fdd„}|S)Nc    sztdˆtdtdddtd|ƒƒ}ˆ tj¡ˆ | ¡d|dœ¡ˆ t|j    j
ƒ¡  ¡}t ||fƒt |dtƒsvt‚dS)    NZ integer_tablerfTrgÚ integer_datarm)rfr"r)r r rZ
create_allrrÒrAr?r$rDr"rqrrrÚintrF)rirpZ    int_tablerP©rRrSrUrVrWs&ü÷ ÿ z+IntegerTest.integer_round_trip.<locals>.runrUrXrUr$rVr  szIntegerTest.integer_round_tripN) rZr[r\r’r„rrr!r'r]r rUrUrUrVrçs
 
 
rc@s&eZdZdZejdd„ƒZdd„ZdS)ÚCastTypeDecoratorTestTcCsGdd„dtƒ}|ƒS)Nc@s(eZdZedƒZdZdd„Zdd„ZdS)z8CastTypeDecoratorTest.string_as_int.<locals>.StringAsInté2TcSs
t|tƒSra)rr©rTÚcolrUrUrVÚcolumn_expression4szJCastTypeDecoratorTest.string_as_int.<locals>.StringAsInt.column_expressioncSstt|tƒtdƒƒS)Nr&)rr,rr&r'rUrUrVÚbind_expression7szHCastTypeDecoratorTest.string_as_int.<locals>.StringAsInt.bind_expressionN)rZr[r\r&rærçr)r*rUrUrUrVÚ StringAsInt0sr+r-)rTr+rUrUrVÚ string_as_int.s
z#CastTypeDecoratorTest.string_as_intcCs˜|}td|td|ƒƒ}| |¡| | ¡dd„dDƒ¡dd„| | ¡¡Dƒ}t|dd    d
hƒd d„| | ¡ |jj    d    k¡¡Dƒ}t|d    hƒdS) Nr:r;cSsg|] }d|i‘qSr=rU©rxr;rUrUrVrzBsz;CastTypeDecoratorTest.test_special_type.<locals>.<listcomp>)rmrr cSsh|] }|d’qS©rrU©rxrPrUrUrVr¶Dsz:CastTypeDecoratorTest.test_special_type.<locals>.<setcomp>rmrr cSsh|] }|d’qSr.rUr/rUrUrVr¶Gs)
r r r>rAr?r$rrCrDr;)rTrSrRr,rGr:r»rUrUrVÚtest_special_type<s
ÿz'CastTypeDecoratorTest.test_special_typeN)rZr[r\r’r'r]r,r0rUrUrUrVr%+s
r%c@s’eZdZdZejdddddd„ƒZejdd    ddd
d „ƒZejd ddd d„ƒZejddddd„ƒZ    ejddddd„ƒZ
dd„Z dd„Z dS)Ú TrueDivTestT)Ú15Ú10çø?)ú-15r3gø¿zleft, right, expectedr©c    Cs0t| tt|tƒdt|tƒdƒ¡|ƒdS©ú
test #4926ròN©rràr$rr©rTrRÚleftÚrightrÙrUrUrVÚtest_truediv_integerPs  ÿÿÿùz TrueDivTest.test_truediv_integer)r2r3rm)r5Ú5éýÿÿÿc    Cs0t| tt|tƒdt|tƒdƒ¡|ƒdSr6r8r9rUrUrVÚtest_floordiv_integerbs  ÿÿÿùz!TrueDivTest.test_floordiv_integer)ú5.52ú2.4z2.3c
Cs>t| tt|tddƒdt|tddƒdƒ¡t |¡ƒdS)r7r³rròN©rràr$rr#ÚdecimalÚDecimalr9rUrUrVÚtest_truediv_numericrsÿÿÿùz TrueDivTest.test_truediv_numeric)r@rAgffffff@c    Cs0t| tt|tƒdt|tƒdƒ¡|ƒdSr6)rràr$rrr9rUrUrVÚtest_truediv_float‚s  ÿÿÿùzTrueDivTest.test_truediv_float)r@rAz2.0c    Cs6t| tt|tƒdt|tƒdƒ¡t |¡ƒdSr6rBr9rUrUrVÚtest_floordiv_numeric’s  ÿÿÿùz!TrueDivTest.test_floordiv_numericcCs$t| ttdƒtdƒƒ¡dƒdS)r7rùr³r4NrßrŽrUrUrVÚtest_truediv_integer_bound¢sþz&TrueDivTest.test_truediv_integer_boundcCs$t| ttdƒtdƒƒ¡dƒdS)r7rùr³rmNrßrŽrUrUrVÚtest_floordiv_integer_boundªsþz'TrueDivTest.test_floordiv_integer_boundN) rZr[r\r’r'r½r<r?rErFrGrHrIrUrUrUrVr1Ms<ý
ÿ
ÿ
ÿ
ÿ
r1c@s:eZdZdZejdd„ƒZdd„Zdd„Zdd    „Z    ej
j d
d „ƒZ d d „Z dd„Zej
jdd„ƒZej
jdd„ƒZej
jdd„ƒZej
jdd„ƒZdd„Zej
jdd„ƒZej
jdd„ƒZdd„Zej
jd d!„ƒZej
jd"d#„ƒZej
jd$d%„ƒZ ej
j!d&d'„ƒZ"ej
j#d(d)„ƒZ$ej%e&j'e&j(d*d+ej
j)d,d-„ƒƒZ*d.S)/Ú NumericTestTcsd‡‡fdd„    }|S)NFc
s*tdˆtd|ƒƒ}| ˆ¡ˆ | ¡dd„|Dƒ¡dd„ˆ | ¡¡Dƒ}t|ƒ}ˆr~‡fdd„|Dƒ}‡fdd„|Dƒ}t||ƒ|rªtd    d„|Dƒd    d„|Dƒƒˆ | ¡¡|j    rÔt
  d
¡}t
  d ¡}nd }d }ˆ | ¡d|i¡ˆ  tt |jj||ƒƒ¡}    tt|    dƒt||dƒƒdS)Nr:r;cSsg|] }d|i‘qSr=rUr-rUrUrVrz»sz<NumericTest.do_numeric_test.<locals>.run.<locals>.<listcomp>cSsh|] }|d’qSr.rUr/rUrUrVr¶½sz;NumericTest.do_numeric_test.<locals>.run.<locals>.<setcomp>csh|] }ˆ|ƒ’qSrUrUr-©rJrUrVr¶Àscsh|] }ˆ|ƒ’qSrUrUr-rKrUrVr¶ÁscSsg|] }t|ƒ‘qSrU)rsr-rUrUrVrzÄsz2.9z37.12g333333@gÂõ(\B@r )r r r>rAr?r$r¹rÚdeleteÚ    asdecimalrCrDràr,rDr;Úround)
rGrHrIrJÚ check_scaler:r»Z
test_valueZ    add_valueZassert_we_are_a_numberr$rKrVrW¸s2
 
 
 ÿ þz(NumericTest.do_numeric_test.<locals>.run)NFrUrXrUr$rVÚdo_numeric_test¶s$zNumericTest.do_numeric_testcCs*|tddddt d¡gt d¡gƒdS©Nér{©Ú    precisionÚscaleçúíëÀ9ƒ/@ú15.7563©r#rCrDrƒrUrUrVÚtest_render_literal_numericÞs
 
 
ýz'NumericTest.test_render_literal_numericcCs&|tdddddt d¡gdgƒdS©NrRr{F©rTrUrMrVrWrXrƒrUrUrVÚ#test_render_literal_numeric_asfloatås
  ýz/NumericTest.test_render_literal_numeric_asfloatcCs(|tƒdt d¡gdgdd„dddS)NrVrWcSs|dk    rt|dƒpdSr©rN©ÚnrUrUrVÚ<lambda>ñóz7NumericTest.test_render_literal_float.<locals>.<lambda>F)rJrL©rrCrDrƒrUrUrVÚtest_render_literal_floatìs ûz%NumericTest.test_render_literal_floatcCs0|tdddddt d¡gt d¡gdddS)NéT)Zdecimal_return_scalerMg6…ß—Dƒ/@z
15.7563827©rOrb©rTrPrUrUrVÚtest_float_custom_scaleõs   
üz#NumericTest.test_float_custom_scalecCs*|tddddt d¡gt d¡gƒdSrQrXrfrUrUrVÚtest_numeric_as_decimalþs
 
 
ýz#NumericTest.test_numeric_as_decimalcCs&|tdddddt d¡gdgƒdSrZrXrfrUrUrVÚtest_numeric_as_floats
  ýz!NumericTest.test_numeric_as_floatcCs |tdƒtdƒgtdƒgƒdS)ztest for #977, #7283NÚinf)rÚfloatrfrUrUrVÚtest_infinity_floats s
ýz NumericTest.test_infinity_floatscCs|tddddgdgƒdS)NrRr{rSr"rfrUrUrVÚtest_numeric_null_as_decimalsz(NumericTest.test_numeric_null_as_decimalcCs|tdddddgdgƒdS)NrRr{Fr[r"rfrUrUrVÚtest_numeric_null_as_floats
 ÿz&NumericTest.test_numeric_null_as_floatcCs4|tdddt d¡dgt d¡dgdd„ddS)NT)rMçP—nƒ/@ú15.756cSs|dk    rt|dƒpdS)Nr{r]r^rUrUrVr`&raz3NumericTest.test_float_as_decimal.<locals>.<lambda>rKrbrfrUrUrVÚtest_float_as_decimal s  üz!NumericTest.test_float_as_decimalcCs&|tƒdt d¡gdgdd„ddS)NrorpcSs|dk    rt|dƒpdSrr]r^rUrUrVr`.raz1NumericTest.test_float_as_float.<locals>.<lambda>rKrbrfrUrUrVÚtest_float_as_float)s  üzNumericTest.test_float_as_floatcCs$d}| tt|ƒƒ¡}t||ƒdS)NrV)ràr$rr©rTrRrØÚvalrUrUrVÚtest_float_coerce_round_trip1sz(NumericTest.test_float_coerce_round_tripcCs*t d¡}| tt|ƒƒ¡}t||ƒdS)NrW)rCrDràr$rrrsrUrUrVÚtest_decimal_coerce_round_trip;s
z*NumericTest.test_decimal_coerce_round_tripcCs2t d¡}| tt|tddƒƒƒ¡}t||ƒdS)NrWr³r{)rCrDràr$rr#rrsrUrUrVÚ%test_decimal_coerce_round_trip_w_castBs
z1NumericTest.test_decimal_coerce_round_trip_w_castcCs4t d¡t d¡t d¡h}|tddd||ƒdS)Nz54.234246451650z0.004354z900.0rürúrS©rCrDr#©rTrPZnumbersrUrUrVÚtest_precision_decimalHs
ýz"NumericTest.test_precision_decimalcCs|t d¡t d¡t d¡t d¡t d¡t d¡t d¡t d¡t d    ¡t d
¡t d ¡t d ¡h }|td dd||ƒdS)z‡test exceedingly small decimals.
 
        Decimal reports values with E notation when the exponent
        is greater than 6.
 
        z1E-2z1E-3z1E-4z1E-5z1E-6z1E-7z1E-8z0.01000005940696z0.00000005940696z0.00000000000696z0.70000000000696z696E-12rüérSNrxryrUrUrVÚtest_enotation_decimalRs
ôz"NumericTest.test_enotation_decimalcCs<t d¡t d¡t d¡t d¡h}|tddd||ƒdS)    z test exceedingly large decimals.z4E+8z5748E+15z    1.521E+15z00000000000000.1E+12érrSNrxryrUrUrVÚtest_enotation_decimal_largeks üz(NumericTest.test_enotation_decimal_largecCs4t d¡t d¡t d¡h}|tddd||ƒdS)Nz31943874831932418390.01z319438950232418390.273596z87673.594069654243é&rúrSrxryrUrUrVÚtest_many_significant_digitsws
ýz(NumericTest.test_many_significant_digitscCs(t d¡h}|tddd||dddS)Nz1.000rr rSTrerxryrUrUrVÚtest_numeric_no_decimal€s 
ÿz#NumericTest.test_numeric_no_decimalÚcls_r©cCs>|ƒ |j¡}t ¡ |j¡}t|j|jƒt|j|jƒdSra)Z dialect_implÚdialectr6r#r    Z__visit_name__Ú    __class__)rTrRr‚Z target_typeZ numeric_typerUrUrVÚtest_float_is_not_numeric‡sz%NumericTest.test_float_is_not_numericN)+rZr[r\r’r'r]rPrYr\rcr¾Zprecision_generic_float_typergrhriZinfinity_floatsrlZfetch_null_from_numericrmrnZfloats_to_four_decimalsrqrrÚliteral_float_coercionruZimplicit_decimal_bindsrvrwZprecision_numerics_generalrzZ"precision_numerics_enotation_larger|r~Z*precision_numerics_many_significant_digitsr€Z-precision_numerics_retains_significant_digitsrr½r6rÚDoubleZfloat_is_numericr…rUrUrUrVrJ³sJ
'    
 
    
 
 
 
    
 
    
 
 
 
rJc@sDeZdZdZedd„ƒZdd„Zdd„Zej    j
dd    „ƒZ d
d „Z d S) Ú BooleanTestTc
Cs2td|tdtdddtdtƒtdtddƒƒdS)    NÚ boolean_tablerfTF)rhZ autoincrementrMÚunconstrained_value)Zcreate_constraint)r r rrrjrUrUrVrl”sûzBooleanTest.define_tablescCs|tƒddgddgƒdS)NTFrrƒrUrUrVÚtest_render_literal_boolžsz$BooleanTest.test_render_literal_boolcCs\|jj}| | ¡ddddœ¡| t|jj|jjƒ¡ ¡}t    |dƒt
|dt ƒsXt ‚dS)NrmTF©rfrMrŠ)TFr) ror‰rAr?r$rDrMrŠrqrrrr¸rF©rTrRr‰rPrUrUrVru¡s
þÿ
zBooleanTest.test_round_tripcCsJ|jj}| | ¡ddddœ¡| t|jj|jjƒ¡ ¡}t    |dƒdS)NrmrŒ)NN)
ror‰rAr?r$rDrMrŠrqrrrUrUrVrñ°s
þÿzBooleanTest.test_nullc    CsÒ|jj}tj ¡¶}| | ¡ddddœddddœg¡t| t    |j
j ƒ  |j
j ¡¡dƒt| t    |j
j ƒ  |j
j¡¡dƒt| t    |j
j ƒ  |j
j ¡¡dƒt| t    |j
j ƒ  |j
j¡¡dƒW5QRXdS)NrmTrŒrF)ror‰rrÒrórAr?rràr$rDrfrCrMrŠ)rTr‰rôrUrUrVÚtest_whereclause¿sH 
 
þþÿü ÿÿúÿü ÿÿúzBooleanTest.test_whereclauseN) rZr[r\r’rŠrlr‹rur'r¾Znullable_booleansrñrŽrUrUrUrVrˆ‘s
    
rˆc @s"eZdZdZdZeZedd„ƒZdd„Z    e
j ddd    d
d e
j d d dddddddd„ƒƒZ dd„Z dd„Zdd„Zedƒdd„ƒZedƒdd „ƒZedƒd!d"„ƒZe
  d#d$d%d&d'd(d)d*d+d,d-¡ d.d/„ƒZd0d1„Ze
j d2d3d4d5d6dd7d8„ƒZd9d:„Ze
j d2d3d4d6dd;d<„ƒZd=d>„Zd?d@„ZdAS)BÚJSONTest)Ú    json_typeTc CsHtd|tdtddtdtdƒddtd    |jddtd
|jdd ƒƒdS© NÚ
data_tablerfTr±ÚnameéF)ZnullablerpÚnulldata)Z none_as_null©r r rr&rirjrUrUrVrlðs úzJSONTest.define_tablescCs| dddœ|¡dS)NÚvalue1Úvalue2©Úkey1Úkey2©Ú_test_round_triprŽrUrUrVÚtest_round_trip_data1ûszJSONTest.test_round_trip_data1)ÚunicodeT)ÚasciiFÚunicode_Úia)rªrµédiÏi¸ i iˆi(#Úlengthr©cCsX|r&d|dd}|d|d…}nd|dd}|d|…}| ||dœ|¡dS)    Nuréve🐍illé頠  rmrrZabcdefgrdr™rœ)rTrRr¡r¤rprUrUrVÚ!test_round_trip_pretty_large_dataþs  z*JSONTest.test_round_trip_pretty_large_datacCsF|jj}| | ¡dd|dœ¡| t|jjƒ¡ ¡}t||fƒdS)NrmÚrow1)rfr“rp)    ror’rAr?r$rDrprqr)rTÚ data_elementrRr’rPrUrUrVr s
þzJSONTest._test_round_tripcs°|r
g}n0dddifddddgfdddifddddgfg}ddd    d
d d d dtjjfddddddddtjjfddddt d¡fdt d¡tjfdt d¡fg|‰‡fdd„}|S) NÚjsonr¬r­rržÚthree)ÚbooleanT)r«F)r«N)Ústringz some string)r¬N)r¬õ réve illér¬r†)Úintegerrù)r®rm)r®r)r®N)rkg€<@)rkNrkç=
×ã‡Ö2A)Únumericr¯)r°gÿBÄ´¼ÖB)r°g¨[¼?fø@Ú_decimalz
1234567.89z99998969694839.983485848z99939.983485848cstjˆddiŽ|ƒ}|S)NrµÚsar)Úfn©ÚelementsrUrVÚdecorateOsz*JSONTest._index_fixtures.<locals>.decorate)r'r¾Z(json_index_supplementary_unicode_elementr†rCrDr
Z/cast_precision_numerics_many_significant_digits)Zinclude_comparisonZ json_elementsr¶rUr´rVÚ_index_fixturessP
 
 üý  üþÞ&Ú( zJSONTest._index_fixturesc
Cs
|jj}|dkr~Gdd„dtjƒ}tj||d}t dt|ƒt|ƒ|¡}d}| |     ¡j
dt d|dd    t d|dd    d
¡n| |     ¡d||d
œ¡d}|rü|dkröt|ƒ  d ¡\}    }
t |
ƒ} t |    ƒ| } t|tjƒrÞ|} nt t|ƒ¡} | | f}n|} n|} || |fS) Nr±cseZdZ‡fdd„Z‡ZS)z3JSONTest._json_value_insert.<locals>.DecimalEncodercs t|tjƒrt|ƒStƒ |¡Sra)rrrCrDrsÚsuperÚdefault)rTÚo©r„rUrVr¹fs z;JSONTest._json_value_insert.<locals>.DecimalEncoder.default)rZr[r\r¹Ú __classcell__rUrUr»rVÚDecimalEncoderesr½rèz"(%s)"r°r§Tr<©r“rpr•Ú.)ror’r©Ú JSONEncoderÚdumpsÚreÚsubrsrAr?r@rÚsplitÚlenrrrCrD)rTrRrirMr¨r’r½Z    json_dataÚp_srÜrÝÚsÚpÚ compare_valuerUrUrVÚ_json_value_insertVsB   öÿýþ      
zJSONTest._json_value_insertFc
    Cs¢|jj}d|i}tj ¡~}| ||||¡\}}}|jjd}|rj|dkrZ|rZ|j|Ž}nt    |d|ƒƒ}| 
t |ƒ¡}    t |    |ƒt t|    ƒt|ƒƒW5QRXdS©Nršr°úas_%s)ror’rrÒrórÊrDrpÚ
as_numericÚgetattrràr$rrrî)
rTrirMr’r¨rôrÉrÆrØZ    roundtriprUrUrVÚtest_index_typed_access¡s" ÿ
 
z JSONTest.test_index_typed_accessc
    Cs |jj}d|i}tj ¡|}| ||||¡\}}}|jjd}|rj|dkrZ|rZ|j|Ž}nt    |d|ƒƒ}| 
t |ƒ  ||k¡¡  ¡}    t|    |fƒW5QRXdSrË©ror’rrÒrórÊrDrprÍrÎrAr$rCrqr©
rTrirMr’r¨rôrÉrÆrØrPrUrUrVÚtest_index_typed_comparison·s$ ÿ
   ÿz$JSONTest.test_index_typed_comparisonc
    Cs¤|jj}dd|ii}tj ¡|}| ||||¡\}}}|jjd}|rn|dkr^|r^|j|Ž}nt    |d|ƒƒ}| 
t |ƒ  ||k¡¡  ¡}    t|    |fƒW5QRXdS)NršÚsubkey1)ršrÓr°rÌrÐrÑrUrUrVÚtest_path_typed_comparisonÏs$  ÿ
   ÿz#JSONTest.test_path_typed_comparison)T)Fra)rùr.)éÿÿÿÿ)gð¿)g´Èv¾Ÿ.@)za string)r­)r†c    Csh|jj}|}tj ¡H}| | ¡d||dœ¡| t|jj    |jj
ƒ¡  ¡}t |||fƒW5QRXdS)Nr§r¾) ror’rrÒrórAr?r$rDrpr•rqr)rTÚelementr’r¨rôrPrUrUrVÚtest_single_element_round_tripès ýþ    ÿz'JSONTest.test_single_element_round_tripc    Csö|jj}ddi}tjtjd}tjtjd}tjt    ||dd}|j
|dd|  ¡–}|  |  ¡d|d    œ¡|  t|jjƒ¡ ¡}t||fƒt|jt |¡gƒtjjjrÎt|jt t |¡ ¡¡gƒnt|jt t |¡¡gƒW5QRXdS)
NršÚdata1)Z side_effect)Zjson_serializerZjson_deserializer)ÚoptionsT)Z
checkfirstr§©r“rp)ror’rZMockr©rÁÚloadsrZtesting_engineÚdictr>rórAr?r$rDrprqrZ
mock_callsÚcallr'r¾Zjson_deserializer_binaryrcÚencode)rTr’r¨ZjsZjdZenginerôrPrUrUrVÚtest_round_trip_custom_jsons,
ÿ
ÿ 
þz$JSONTest.test_round_trip_custom_json)Ú
parameters)Úmultiparameters)r@)ÚomitÚ insert_typecCsü|jjjd}|}|dkr6|jj ¡ddddœ}}nx|dkr\|jj ¡ddddœg}}nR|dkr„|jj ¡jddddi}}n*|dkr¦|jj ¡dddœ}}nd    s®t‚| ||¡t| t    |jjjj
ƒ  |  t ƒ¡¡¡dƒt| t    |ƒ¡dƒdS)
Nr•ràÚr1)r“r•rprár@rârÚF)ror’rDr?r@rFrArràr$r“rCrr!)rTrRrãr(rôrNÚparamsrUrUrVÚ test_round_trip_none_as_sql_null$sB
ý 
 
ÿ
 ýú
þ ÿüz)JSONTest.test_round_trip_none_as_sql_nullcCsr|jjjd}|}| |jj ¡dtjdœ¡t| t    |jjjj
ƒ  t |t ƒdk¡¡dƒt| t    |ƒ¡dƒdS)NrprärÚr!)ror’rDrAr?rÚNULLrràr$r“rCrr&)rTrRr(rôrUrUrVÚ&test_round_trip_json_null_as_json_nullWs
 
þ ÿÿú    z/JSONTest.test_round_trip_json_null_as_json_nullcCsÖ|jjjd}|dkr0|jj ¡dddœ}}nR|dkrT|jj ¡dddœg}}n.|dkrz|jj ¡jdddi}}nds‚t‚|}| ||¡t| t    |jjjj
ƒ  t |t ƒdk¡¡dƒt| t    |ƒ¡dƒdS)    NrpràrärÚrár@Fr!)ror’rDr?r@rFrArràr$r“rCrr&)rTrRrãr(rNrårôrUrUrVÚ!test_round_trip_none_as_json_nullks4
þ 
ÿ
þ  ÿÿú    z*JSONTest.test_round_trip_none_as_json_nullc    Csdtj ¡P}| |jj ¡ddddidœdœ¡t| t    |jjj
j ƒ¡dddidœƒW5QRXdS)Nrär†Zk1u
drôl🐍e)r†rprÚ) rrÒrórAror’r?rràr$rDrp©rTrôrUrUrVÚtest_unicode_round_trip“s 
þþþ þþz JSONTest.test_unicode_round_tripc    sôtƒ}G‡fdd„d|ƒ}t|ƒÈ}|dddd}| |¡| ¡| |ddddœg¡t| tˆjj    j
j t ƒƒtˆjj    j
j t ƒ¡ ˆjj    j
jdk¡ ¡dƒt| tˆjj    j
j t ƒƒtˆjj    j
j t ƒ¡ ˆjj    j
jdk¡ ¡dƒW5QRXdS)NcseZdZ”jjZdS)z.JSONTest.test_eval_none_flag_orm.<locals>.DataN)rZr[r\ror’Z    __table__rUrdrUrVÚData­srìÚd1r¾Zd2)r!N)r4r5ÚaddÚcommitZbulk_insert_mappingsrÚqueryrror’rDrpr&r•Úfilterr“rq)rTrRZBaserìrÇrírUrdrVÚtest_eval_none_flag_orm©s8
 
 ÿþüù    þüùz JSONTest.test_eval_none_flag_ormN)rZr[r\rˆr’rrirŠrlržr'r½r¦rr·rÊrÏrÒrÔr×rßrærèrérëròrUrUrUrVrêsp
 
ÿ  =K
 
 
õ
û
,ü
"rc@säeZdZdZdZdZeZdddœZddddœZ    d    d
d gd d dgddiddigdœZ
d d dgZ ddddœdddœgdddiidœiZ dd d!d"id#œZ ed$d%„ƒZd&d'„Zd5d(d)„Zd*d+„Zejjd,d-„ƒZd.d/„Zd0d1„Zd2d3„Zd4S)6ÚJSONLegacyStringCastIndexTestzétest JSON index access with "cast to string", which we have documented
    for a long time as how to compare JSON values, but is ultimately not
    reliable in all cases.   The "as_XYZ()" comparators should be used
    instead.
 
    )rZ!legacy_unconditional_json_extractTr—r˜r™zvalue ' three ')z    Key 'One'úkey twoz    key threermrr rržrªZfourZfiveÚsixZseven)ršr›Úkey3ÚnestedrÝrâ)rÜrDÚfÚh)rãÚgÚelem3Úelem4Zelem5)Zelem1Úelem2rz
some valuer¬r­)rÜrÝrDc CsDtd|tdtddtdtdƒddtd    |jƒtd
|jdd ƒƒdSr‘r–rjrUrUrVrlôs 
úz+JSONLegacyStringCastIndexTest.define_tablesc Csjtj ¡V}| |jj ¡d|jdœd|jdœd|j    dœd|j
dœd|j dœd|j dœg¡W5QRXdS)NrärÚÚr2Úr3Úr4Úr5Úr6) rrÒrórAror’r?rØÚdata2Údata3Údata4Údata5Údata6rêrUrUrVÚ_criteria_fixtureÿs 
 
 
 
 
 
 
úþz/JSONLegacyStringCastIndexTest._criteria_fixturec    Csx| ¡tj ¡\}t|jjjjƒ     |¡}t
|  |¡|ƒ|rjt |j tjddidƒ}t
| |¡  ¡|ƒW5QRXdS)NZ literal_bindsT)Úcompile_kwargs)rrrÒÚconnectr$ror’rDr“rCrràrsÚcompileZexec_driver_sql)rTÚcritrÙr„rôrNZ literal_sqlrUrUrVÚ_test_index_criteria s ÿÿz2JSONLegacyStringCastIndexTest._test_index_criteriacCsJ|jjjj}|jjjd}| t| dddg¡t|dtƒdkƒd¡dS)Nrprärþrÿrôz"value2")    ror’rDr“r rZin_rr&©rTr“r(rUrUrVÚ#test_string_cast_crit_spaces_in_keys þûzAJSONLegacyStringCastIndexTest.test_string_cast_crit_spaces_in_keycCsB|jjjj}|jjjd}| t|dkt|dtƒdkƒd¡dS)Nrprrmz"two"©ror’rDr“r rrr&rrUrUrVÚ test_string_cast_crit_simple_int,s þûz>JSONLegacyStringCastIndexTest.test_string_cast_crit_simple_intcCs,|jjjd}| t|dtƒdkd¡dS)Nrp)rörmrõz"seven"rÿ©ror’rDr rr&r'rUrUrVÚ test_string_cast_crit_mixed_path<s
þz>JSONLegacyStringCastIndexTest.test_string_cast_crit_mixed_pathcCs,|jjjd}| t|dtƒdkd¡dS)Nrp)r÷rýrûrüz"elem5"rrr'rUrUrVÚ!test_string_cast_crit_string_pathCs ÿýz?JSONLegacyStringCastIndexTest.test_string_cast_crit_string_pathcCsB|jjjj}|jjjd}| t|dkt|dtƒdkƒd¡dS)NrprrÝz "some value"rrrUrUrVÚ*test_string_cast_crit_against_string_basicKs þûzHJSONLegacyStringCastIndexTest.test_string_cast_crit_against_string_basicN)T)rZr[r\r¤rˆr’rrirØrrrrrrŠrlrr rrr
Zjson_array_indexesrrrrrUrUrUrVróÌs<
ýý
 
þÿ
 
 
 
róc@s`eZdZdZeZedd„ƒZdd„Zdd„Z    dd    „Z
d
d „Z d d „Z dd„Z ejjdd„ƒZdS)ÚUuidTestTc CsTtd|tdtdddtd|jƒtd|jddƒtd    tdd
ƒtd tddd ƒƒdS) NÚ
uuid_tablerfTrgÚ    uuid_dataÚuuid_text_dataF©Úas_uuidÚuuid_data_nonnative©Ú native_uuidÚuuid_text_data_nonnative©rr)r r rrir2rjrUrUrVrl]s"ÿ
 
þ÷zUuidTest.define_tablescCsnt ¡}|jj}| | ¡d||dœ¡| t|jj|jj    ƒ 
|jj|k|jj    |k¡¡  ¡}t |||fƒdS)Nrm)rfrr) ÚuuidÚuuid4rorrAr?r$rDrrrCrqr©rTrRrprrPrUrUrVÚtest_uuid_round_tripns 
þÿ
 
üÿzUuidTest.test_uuid_round_tripcCs†tt ¡ƒ}|jj}| | ¡d||dœ¡| t|jj    |jj
ƒ  |jj    |k|jj
|k¡¡  ¡}t |d ¡|d ¡f||fƒdS)Nrm)rfrrr)rsr!r"rorrAr?r$rDrrrCrqrÚlowerr#rUrUrVÚtest_uuid_text_round_trip€s& ýþþ
 
ûÿ    z"UuidTest.test_uuid_text_round_tripcCst ¡}||j|g|gƒdSra)r!r"rirËrUrUrVÚtest_literal_uuid—szUuidTest.test_literal_uuidcCs0tt ¡ƒ}||jdd|g|gdd„ddS)NFrcSs| ¡Sra©r%r=rUrUrVr`¡raz,UuidTest.test_literal_text.<locals>.<lambda>rK)rsr!r"rirËrUrUrVÚtest_literal_text›s 
üzUuidTest.test_literal_textcCs"t ¡}|tdd|g|gƒdS)NFr)r!r"r2rËrUrUrVÚtest_literal_nonnative_uuid¤sz$UuidTest.test_literal_nonnative_uuidcCs0tt ¡ƒ}|tddd|g|gdd„ddS)NFr cSs| ¡Srar(r=rUrUrVr`®raz6UuidTest.test_literal_nonnative_text.<locals>.<lambda>rK)rsr!r"r2rËrUrUrVÚtest_literal_nonnative_text¨s 
üz$UuidTest.test_literal_nonnative_textc    Csnt ¡}t|ƒ}|jj}| | ¡ |jj    |jj
|jj |jj ¡d||||dœ¡}|  ¡}t|||||fƒdS)Nrm)rfrrrr)r!r"rsrorrAr?r·rDrrrrrqr)rTrRrpZstr_datarr»rPrUrUrVÚtest_uuid_returning±s&üûùzUuidTest.test_uuid_returningN)rZr[r\r’r2rirŠrlr$r&r'r)r*r+r'r¾r¿r,rUrUrUrVrXs
        rc@seZdZdZeZdS)ÚNativeUUIDTest)Zuuid_data_typeN)rZr[r\rˆr1rirUrUrUrVr-Ësr-)r˜r¥r‹r“rrórrörrÀrJrr%rrrrr
rr1rrrÑrˆrr-)Zr÷rCr©rÂr!r€rrrrZ
assertionsrrr    r
Zschemar r rrrrrrrrrrrrrrrr r!r#r$r&r'r)r*r+r,r.r/r0r1r2Zdialects.postgresqlr3Zormr4r5Zsqlr6Z sql.sqltypesr7r8r9ZTestBaser^Z
TablesTestr‹r“r˜r¥rÀrÑrårörrrr
rrrrrrrr%r1rJrˆrrórr-Ú__all__rUrUrUrVÚ<module>s°                                              DL7b?IY        D"f_Ye
ÿ s