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
U
¸ý°dŽCã
@sXddlmZddlZddlZddlZddlZddlmZddlm    Z    ddl
m Z ddl m Z Gdd    „d    ƒZGd
d „d eƒZGd d „d eƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„dƒZGd d!„d!e d!d"d#d$d%g¡ƒZGd&d'„d'ƒZejd(d)„ƒZdS)*é)Ú annotationsNé)Úevent)Úurl)ÚDefaultDialect)ÚBaseDDLElementc@s(eZdZdZdZdZdd„Zdd„ZdS)Ú
AssertRuleFNTcCsdS©N©©ÚselfÚexecute_observedr
r
úSd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\sqlalchemy/testing/assertsql.pyÚprocess_statementszAssertRule.process_statementcCsds tdƒ‚dS)NFz?All statements are complete, but pending assertion rules remain)ÚAssertionError©r r
r
rÚno_more_statements sÿzAssertRule.no_more_statements)Ú__name__Ú
__module__Ú __qualname__Ú is_consumedÚ errormessageÚconsume_statementrrr
r
r
rrs
rc@s eZdZdS)Ú SQLMatchRuleN©rrrr
r
r
rr'src@seZdZddd„Zdd„ZdS)Ú    CursorSQLNTcCs||_||_||_dSr    )Ú    statementÚparamsr)r rrrr
r
rÚ__init__,szCursorSQL.__init__cCsj|jd}|j|jks,|jdk    rH|j|jkrHd|j|j|j|jf|_n|j d¡d|_|jsfd|_dS)Nrz5Testing for exact SQL %s parameters %s received %s %sT)Ú
statementsrrÚ
parametersrÚpoprr)r r Ústmtr
r
rr1s$
 ÿ
ÿüÿÿ
zCursorSQL.process_statement)NT©rrrrrr
r
r
rr+s
rc@sFeZdZddd„Zdd„Zdd    „Zd
d „Zd d „Zdd„Zdd„Z    dS)Ú CompiledSQLNÚdefaultTcCs||_||_||_||_dSr    )rrÚdialectÚenable_returning)r rrr&r'r
r
rrGszCompiledSQL.__init__cCst dd|j¡}||kS©Nú[\n\t]Ú)ÚreÚsubr©r r Úreceived_statementr"r
r
rÚ _compare_sqlOszCompiledSQL._compare_sqlcCsl|jdkrTtƒ}d|_|jrPd|_|_|_d|_d|_d|_    d|_
|j sPt ‚|St j |j¡ ¡ƒSdS)Nr%T)r&rZsupports_default_metavaluer'Zinsert_returningZupdate_returningZdelete_returningZuse_insertmanyvaluesZsupports_multivalues_insertZupdate_returning_multifromZdelete_returning_multifromZinsert_executemany_returningrrÚURLÚcreateÚ get_dialect)r r r&r
r
rÚ_compile_dialectSs
þ
zCompiledSQL._compile_dialectc    s¶|j}| |¡}d}d‰d|jkr.|jd}nd}t|jtƒrP|jj||d‰n|jj|||jj|jj    |d‰t
  ddt ˆƒ¡}|j }|sšˆjˆdg}n‡‡fdd    „|Dƒ}||fS)
zxreconstruct the statement and params in terms
        of a target dialect, which for CompiledSQL is just DefaultDialect.NÚschema_translate_map)r&r4)Ú    cache_keyr&Ú column_keysÚfor_executemanyr4r)r*©Úextracted_parameterscsg|]}ˆj|ˆd‘qS)r8)Úconstruct_params)Ú.0Úm©Úcompiledr9r
rÚ
<listcomp>šs
ýÿz3CompiledSQL._received_statement.<locals>.<listcomp>)Úcontextr3Úexecution_optionsÚ
isinstanceÚ clauseelementrÚcompiler>r6r7r+r,Ústrr r:)    r r r@Zcompare_dialectr5Zmap_Ú_received_statementr Ú_received_parametersr
r=rrFms>
ÿ
  þûÿÿ üzCompiledSQL._received_statementc Csä|j}| |¡\}}| |¡}| ||¡}|r¶|dk    r¶t|ƒ}t|ƒ}|rª|rªt| d¡ƒ}    tt|ƒƒD]8\}
} |    D] } | | ks| | |    | krtqhqt||
=qFqhd}qªqF|s²|r¶d}|rÈd|_d|_    n| 
||¡||dœ|_    dS)NrFT)r.Zreceived_parameters) r@rFÚ _all_paramsr/ÚlistÚdictr!Ú    enumeraterrÚ_failure_message) r r r@rFrGrZ
equivalentÚ
all_paramsZ all_receivedÚparamÚidxZreceivedZ    param_keyr
r
rr£sHÿ
 ÿþÿþþzCompiledSQL.process_statementcCs>|jr6t|jƒr| |¡}n|j}t|tƒs2|g}|SdSdSr    )rÚcallablerBrI)r r@rr
r
rrHÖs
 
zCompiledSQL._all_paramscCs"d|j dd¡t|ƒ dd¡fS©NzzTesting for compiled statement
%r partial params %s, received
%%(received_statement)r with params %%(received_parameters)rú%ú%%)rÚreplaceÚrepr©r r Zexpected_paramsr
r
rrLâs  þýÿzCompiledSQL._failure_message)Nr%T)
rrrrr/r3rFrrHrLr
r
r
rr$Fsÿ
63 r$c@s&eZdZd
dd„Zdd„Zdd    „ZdS) ÚRegexSQLNr%FcCs2t |¡t |¡|_||_||_||_||_dSr    )    rrr+rDÚregexÚ
orig_regexrr&r')r rXrr&r'r
r
rrïs 
 zRegexSQL.__init__cCs"d|j dd¡t|ƒ dd¡fS)Nz{Testing for compiled statement ~%r partial params %s, received %%(received_statement)r with params %%(received_parameters)rrRrS)rYrTrUrVr
r
rrLùs  þýÿzRegexSQL._failure_messagecCst|j |¡ƒSr    )ÚboolrXÚmatch)r r r.r
r
rr/szRegexSQL._compare_sql)Nr%F)rrrrrLr/r
r
r
rrWîs ÿ
 
 rWcsDeZdZdd„Zdd„Z‡fdd„Zdd„Zd    d
„Zd d „Z‡Z    S) Ú
DialectSQLcCs|jjSr    )r@r&r r
r
rr3    szDialectSQL._compile_dialectcCst dd|¡}||kSr()r+r,)r Ú    real_stmtÚ received_stmtr"r
r
rÚ_compare_no_space szDialectSQL._compare_no_spacecsFtƒ |¡\}}|jD]}| |j|¡rq:qtd|ƒ‚||jjfS)NzICan't locate compiled statement %r in list of statements actually invoked)ÚsuperrFrr_rrr@Zcompiled_parameters)r r r^Zreceived_paramsr]©Ú    __class__r
rrFsÿ
ÿÿzDialectSQL._received_statementcsª|j}t dd|j¡}| dd¡}|dkr:t dd|¡}n`d}|dkrLd    }n@|d
krZd }n2| d ¡rŒt d ¡‰|dkrzdnd‰‡‡fdd„}t d||¡}| dd¡}|S)Nr)r*z::z!!Zpyformatz    :([\w_]+)z%(\1)sZqmarkú?Úformatz%sÚnumericéZnumeric_dollarú$ú:csˆ›tˆƒ›Sr    )Únext)r<©ÚcounterZnum_identifierr
rÚrepl6sz4DialectSQL._dialect_adjusted_statement.<locals>.repl)Ú
paramstyler+r,rrTÚ
startswithÚ    itertoolsÚcount)r r&rmr"rlr
rjrÚ_dialect_adjusted_statement!s" 
 
 z&DialectSQL._dialect_adjusted_statementcCs| |jj¡}||kSr    )rqr@r&r-r
r
rr/@sÿzDialectSQL._compare_sqlcCs*d| |jj¡ dd¡t|ƒ dd¡fSrQ)rqr@r&rTrUrVr
r
rrLFsÿþüýÿzDialectSQL._failure_message)
rrrr3r_rFrqr/rLÚ __classcell__r
r
rarr\s  r\c@s$eZdZdd„Zdd„Zdd„ZdS)ÚCountStatementscCs||_d|_dS©Nr)rpÚ_statement_count)r rpr
r
rrUszCountStatements.__init__cCs|jd7_dS)Nrf)rur r
r
rrYsz!CountStatements.process_statementcCs(|j|jkr$ds$td|j|jfƒ‚dS)NFz,desired statement count %d does not match %d)rprurrr
r
rr\s
 þz"CountStatements.no_more_statementsN)rrrrrrr
r
r
rrsTsrsc@seZdZdd„Zdd„ZdS)ÚAllOfcGst|ƒ|_dSr    )ÚsetÚrules©r rxr
r
rreszAllOf.__init__cCsjt|jƒD]H}d|_| |¡|jrB|j |¡|js<d|_qfq
|js
d|_qfq
t|jƒdj|_dS©NTr)rIrxrrrÚdiscard©r r Úruler
r
rrhs
 zAllOf.process_statementNr#r
r
r
rrvdsrvcs,eZdZdd„Zdd„Z‡fdd„Z‡ZS)ÚEachOfcGst|ƒ|_dSr    )rIrxryr
r
rrzszEachOf.__init__cCsh|jsd|_d|_|jrX|jd}| |¡|jr@|j d¡n|jrN|j|_|jrqXq|jsdd|_dS)NTFr)rxrrrr!rr|r
r
rr}s
 
zEachOf.process_statementcs6|jr"|jdjs"|jd ¡n|jr2tƒ ¡dSrt)rxrrr`rrar
rrszEachOf.no_more_statements)rrrrrrrrr
r
rarr~ysr~cseZdZ‡fdd„Z‡ZS)Ú Conditionalcs"|rtƒj|Žn tƒj|ŽdSr    )r`r)r Ú    conditionrxZ
else_rulesrar
rr—szConditional.__init__)rrrrrrr
r
rarr–src@seZdZdd„ZdS)ÚOrcCs<|jD]}| |¡|jrd|_q8qt|jƒdj|_dSrz)rxrrrIrr|r
r
rrŸs 
 
zOr.process_statementN)rrrrr
r
r
rržsrc@seZdZdd„Zdd„ZdS)ÚSQLExecuteObservedcCs6||_||_|r||_n|r&|g|_ng|_g|_dSr    )r@rCr r)r r@rCÚ multiparamsrr
r
rrªs
zSQLExecuteObserved.__init__cCs
t|jƒSr    )rErrr
r
rÚ__repr__¶szSQLExecuteObserved.__repr__N)rrrrr„r
r
r
rr‚©s r‚c@s eZdZdS)ÚSQLCursorExecuteObservedNrr
r
r
rr…ºsr…rr r@Ú executemanyc@s$eZdZdd„Zdd„Zdd„ZdS)Ú SQLAssertercCs
g|_dSr    )Ú accumulatedrr
r
rrÄszSQLAsserter.__init__cCs|j|_|`dSr    )rˆÚ_finalrr
r
rÚ_closeÇszSQLAsserter._closecGsrt|Ž}t|jƒ}|rJ| d¡}| |¡|jr4qJq|jrdst|jƒ‚q|r`dsntd|ƒ‚n|jsn| ¡dS)NrFz$Additional SQL statements remain:
%s)    r~rIr‰r!rrrrr)r rxr}Zobservedrr
r
rÚassert_Ës
 
 
zSQLAsserter.assert_N)rrrrrŠr‹r
r
r
rr‡Ãsr‡c #srtƒ‰g‰t |d¡‡fdd„ƒ}t |d¡‡‡fdd„ƒ}z
ˆVW5t |d|¡t |d|¡ˆ ¡XdS)NZbefore_executecs|||fˆdd…<dSr    r
)ÚconnrCrƒrrA)Úorigr
rÚconnection_executeâsz)assert_engine.<locals>.connection_executeZafter_cursor_executecsj|sdSˆjr*ˆjdj|kr*ˆjd}n&t|ˆdˆdˆdƒ}ˆj |¡|j t||||ƒ¡dS)Néÿÿÿÿrrfr)rˆr@r‚Úappendrr…)rŒÚcursorrr r@r†Zobs©Zasserterrr
rÚcursor_executeês"ÿþ  ÿÿz%assert_engine.<locals>.cursor_execute)r‡rZ listens_forÚremoverŠ)ÚenginerŽr“r
r’rÚ assert_engineÜs
 
 
r–)Ú
__future__rÚ collectionsÚ
contextlibror+r*rr•rZengine.defaultrZschemarrrrr$rWr\rsrvr~rrr‚Ú
namedtupler…r‡Úcontextmanagerr–r
r
r
rÚ<module>
s<     )L 
 
þÿ