
    h@                    :   d dl mZ d dlZd dlZd dlZd dlZd dlZddlm	Z	 ddl
mZ ddl
mZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddl
mZ ddl
mZ ddlmZ ddlmZ ddlmZ  G d de	      Z G d d      Z G d d      Z G d de      Z G d d      Z	 ddZy)    )annotationsN   )TestBase   )config)mock)eq_)ne_)adict)drop_all_tables_from_metadata   )event)util)sort_tables_and_constraints)visitors)ClauseElementc                  n   e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZdZ ej                  dd      d        Z ej                  dd      d	        Zed
        Zed        Zed        Zed        Zd Zd Zd Zed        Zed        Zed        Zed        Zed        Zed        Z d Z!d Z"ed        Z#y)
TablesTestonceeachNTclassautousescopec              #     K   | j                   }|j                          |j                          |j                          d  |j	                          y wN)	__class___init_class_setup_once_tables_setup_once_inserts_teardown_once_metadata_bind)selfclss     HD:\EasyAligner\venv\Lib\site-packages\sqlalchemy/testing/fixtures/sql.py_setup_tables_test_classz#TablesTest._setup_tables_test_class7   s@     nn !((*s   AAfunctionc              #  t   K   | j                          | j                          d  | j                          y wr   )_setup_each_tables_setup_each_inserts_teardown_each_tablesr"   s    r$   _setup_tables_test_instancez&TablesTest._setup_tables_test_instanceD   s-     !  """$s   68c                    | j                   S r   )_tables_metadatar+   s    r$   tables_test_metadatazTablesTest.tables_test_metadataM   s    $$$    c                $   | j                   dk(  r&| j                  dk(  rd| _        | j                  dv sJ t               | _        t               | _        t               | _        | j                         | _        t        j                         | _        y )Nr   r   )r   N)run_define_tablesrun_create_tablesrun_insertsr   othertables	sequences
setup_bindbindsaMetaDatar.   r#   s    r$   r   zTablesTest._init_classQ   so      F*$$.(.%??n444G	W
>>#!{{}r0   c                    | j                   dk(  rE| j                          | j                  j                         5 }| j	                  |       d d d        y y # 1 sw Y   y xY wNr   r4   _load_fixturesr9   begininsert_data)r#   conns     r$   r    zTablesTest._setup_once_inserts_   sJ    ??f$ !T% "! %!!   AAc                ~   | j                   dk(  r| j                  | j                         | j                  dk(  r%| j                  j	                  | j
                         | j                  j                  | j                  j                         | j                  j                  | j                  j                         y y r>   
r2   define_tablesr.   r3   
create_allr9   r6   updater7   
_sequencesr<   s    r$   r   zTablesTest._setup_once_tablesf   s      F*c223$$.$$//9JJc2299:MM  !5!5!@!@A +r0   c                   | j                   dk(  r| j                  | j                         | j                  dk(  r%| j                  j	                  | j
                         | j                  j                  | j                  j                         | j                  j                  | j                  j                         y | j                  dk(  r&| j                  j	                  | j
                         y y Nr   rF   r+   s    r$   r(   zTablesTest._setup_each_tableso   s    !!V+t445%%/%%00;KKt44;;<NN!!$"7"7"B"BC##v-!!,,TYY7 .r0   c                    | j                   dk(  rE| j                          | j                  j                         5 }| j	                  |       d d d        y y # 1 sw Y   y xY wrL   r?   )r"   rC   s     r$   r)   zTablesTest._setup_each_insertsy   sN    v%!"d  & #" &""rD   c           	     j   | j                   dk(  rd| j                  j                          | j                  dk(  r t	        | j
                  | j                         | j
                  j                          n/| j                  dk(  r t	        | j
                  | j                         t        t        j                  dd      }|r|j                  }| j                   dk7  r| j                  dk7  r| j                  dk(  r| j                  j                         5 }t        t        | j
                  j                  j                               D cg c]	  \  }}|| c}}      D ]]  }	 |r9|j!                         5  |j#                  |j%                                d d d        n|j#                  |j%                                _ 	 d d d        y y y y c c}}w # 1 sw Y   xY w# t&        j(                  j*                  $ r+}t-        d|d|t.        j0                         Y d }~d }~ww xY w# 1 sw Y   y xY w)Nr   
savepointsFzError emptying table z: )file)r2   r6   clearr3   r   r.   r9   getattrr   requirementsenabledrun_deletesrA   reversedr   valuesbegin_nestedexecutedeleter:   exc
DBAPIErrorprintsysstderr)r"   rO   rC   tfkstableexs          r$   r*   z TablesTest._teardown_each_tables   s   !!V+KK%%/-d.C.CTYYO!!'')##v-)$*?*?KV00,F
#++J ""f,&&&0  F*"d% )D 1188??A))HQ =	 )E
%!%!2!2!4 $U\\^ < "5!4 !LL8 #" + 1 - "5!4 66,, >CRH!$ ! #"s`   6H)	GH)#G5 G(G=H)H)GGH&;!H!H)!H&&H))H2c                    | j                   r t        | j                  | j                         | j                  dk(  r| j                  | j                         d | j                  _        | j                  d | _        y y r>   )r3   r   r.   r9   run_dispose_binddispose_bindrun_setup_bindr<   s    r$   r!   z'TablesTest._teardown_once_metadata_bind   se      )#*>*>I6)SXX&$(!)CH *r0   c                "    t         j                  S r   )r   dbr<   s    r$   r8   zTablesTest.setup_bind   s    yyr0   c                x    t        |d      r|j                          y t        |d      r|j                          y y )Ndisposeclose)hasattrrk   rl   )r#   r9   s     r$   rf   zTablesTest.dispose_bind   s-    4#LLNT7#JJL $r0   c                     y r    )r#   metadatas     r$   rG   zTablesTest.define_tables       r0   c                    i S r   ro   r<   s    r$   fixtureszTablesTest.fixtures   s    	r0   c                     y r   ro   )r#   
connections     r$   rB   zTablesTest.insert_data   rq   r0   c                >    | j                  | j                  ||       y r   )assert_sql_countr9   )r"   countfns      r$   
sql_count_zTablesTest.sql_count_   s    diiU3r0   c                >    | j                  | j                  ||       y r   )
assert_sqlr9   )r"   	callable_
statementss      r$   sql_eq_zTablesTest.sql_eq_   s    		9j9r0   c                D   i i }}| j                         j                         D ]C  \  }}t        |      dk  rt        |t              r| j
                  |   }|d   ||<   |dd ||<   E t        | j                  j
                  j                               D ]w  \  }}|	||vr| j                  j                         5 }|j                  |j                         ||   D cg c]  }t        t        ||   |             c}       ddd       y yc c}w # 1 sw Y   xY w)z4Insert rows as represented by the fixtures() method.r   r   r   N)rs   itemslen
isinstancestrr6   r   r.   rW   r9   rA   rY   insertdictzip)r#   headersrowsrb   datara   rC   column_valuess           r$   r@   zTablesTest._load_fixtures   s    B<<>//1KE44y1}%%

5)!!WGENqr(DK 2 6  ''..0
JE3 }G#!TLLN .2%[-8M S?@-8 "!
 "!s   >"D D?DDD	)$__name__
__module____qualname__rg   r2   r3   r4   rU   re   r9   r.   r6   r5   r7   r   fixturer%   r,   propertyr/   classmethodr   r    r   r(   r)   r*   r!   r8   rf   rG   rs   rB   rz   r   r@   ro   r0   r$   r   r      s   N   K K DFEIV^^D0
+ 1
+ V^^D
3% 4% % % - - & & B B8''R 
 
          4:  r0   r   c                  @    e Zd Z ej                  dd      d        Zy)NoCacheTr&   r   c              #     K   t         j                  j                  }d t         j                  _        d  |t         j                  _        y wr   )r   ri   _compiled_cache)r"   _caches     r$   _disable_cachezNoCache._disable_cache   s0     **$(		!$*		!s   A
AN)r   r   r   r   r   r   ro   r0   r$   r   r      s!    V^^D
3+ 4+r0   r   c                  j    e Zd Zej                  d        Zd Z ej                  dd      d        Z	y)RemovesEventsc                    t               S r   )setr+   s    r$   
_event_fnszRemovesEvents._event_fns   s	    ur0   c                p    | j                   j                  |||f       t        j                  |||fi | y r   )r   addr   listen)r"   targetnamery   kws        r$   event_listenzRemovesEvents.event_listen   s0    VT2./VT2,,r0   Tr&   r   c              #  Z   K   d  | j                   D ]  }t        j                  |   y wr   )r   r   remove)r"   keys     r$   _remove_eventszRemovesEvents._remove_events   s#     ??CLL# #s   )+N)
r   r   r   r   memoized_propertyr   r   r   r   r   ro   r0   r$   r   r      s@    	 - V^^D
3 4r0   r   c                  V    e Zd ZdxZZdZdZ ej                  d      Z	d Z
ed        Zy)ComputedReflectionFixtureTestNT)computed_columnstable_reflectionz[\[\]\(\)\s`'\"]*c                V    | j                   j                  d|      j                         S )N )regexpsublower)r"   texts     r$   	normalizez'ComputedReflectionFixtureTest.normalize  s     {{r4(..00r0   c                   ddl m} ddl m} ddlm} ddlm} ddlm}  |d| |d|d	
       |d|       |d| |d             |d|d              |d| |d|d	
       |d|       |d| |d                  }|j                  j                  j                  r: |d| |d|d	
       |d|       |d| |d            t        j                        }|j                  j                  j                  rb|j                   |d| |dd                   |j                  j                  j                  r!j                   |d| |dd                   |j                  j                  j                  rd|j                   |d| |dd	                   |j                  j                  j                  r"j                   |d| |dd	                   y y y )Nr   )Integer)testing)Column)Computed)Tablecomputed_default_tableidT)primary_keynormalcomputed_colznormal + 42with_default42)server_defaultcomputed_column_tablecomputed_no_flagznormal / 42)schemacomputed_virtualz
normal + 2F)	persistedz
normal / 2computed_storedznormal - 42znormal * 42)r   r   r   r   r   r   r   requiresschemasrT   r   test_schemacomputed_columns_virtualappend_columncomputed_columns_stored)	r#   rp   r   r   r   r   r   r`   t2s	            r$   rG   z+ComputedReflectionFixtureTest.define_tables  s   $&#$4d38W%>7H],CD>74@	
 #4d38W%%w0GH
 ##++'tW$7x))7H]4KL))B 44<<OO&\U; ''//  * ? 33;;OO%]d; ''//  ) $? 0 <r0   )r   r   r   r4   rU   __backend____requires__recompiler   r   r   rG   ro   r0   r$   r   r     sB     $$K+K;LRZZ,-F1 A Ar0   r   c                      e Zd Zd Zd Zd Zy)CacheKeyFixturec                   |j                         }|j                         }|%|j                  j                  d      sJ |J ||fS t        |j                  |j                         t        t        |j                        t        |j                               t        |j                  |j                        D ]  \  }}|j                  ||      rJ  ||fS )Nnocachecompare_values)	_generate_cache_key_annotationsgetr	   r   hashr   
bindparamscompare)r"   abr   a_keyb_keya_paramb_params           r$   _compare_equalzCacheKeyFixture._compare_equalX  s    %%'%%'=>>%%i000= = e| 		599%UYYeii1$'(8(8%:J:J$K w~NNN %Le|r0   c           	     2    |       } |       }t        j                  t        t        |            d      D ]]  \  }}||k(  r | j	                  ||   ||   |      \  }}|,||   j                         }||   j                         }||E| ||   j                  j                  d      sJ | ||   j                  j                  d      sJ |j                  |j                  k(  r^t        |j                  |j                        D ]  \  }	}
|	j                  |
|      r nB t        |j                  |j                         n t        |j                  |j                         t        ||   t              sGt        ||   t              s\g }g }t        j                   ||         D ]#  }|j"                  dk(  s|j%                  |       % t        j                   ||         D ]#  }|j"                  dk(  s|j%                  |       % t'        t)        |j                  d       t)        t+        j,                  |      d              t'        t)        |j                  d       t)        t+        j,                  |      d	              ` y )
Nr   r   r   	bindparamc                    | j                   S r   r   r   s    r$   <lambda>z8CacheKeyFixture._run_cache_key_fixture.<locals>.<lambda>      155r0   r   c                    | j                   S r   r   r   s    r$   r   z8CacheKeyFixture._run_cache_key_fixture.<locals>.<lambda>      r0   c                    | j                   S r   r   r   s    r$   r   z8CacheKeyFixture._run_cache_key_fixture.<locals>.<lambda>  r   r0   c                    | j                   S r   r   r   s    r$   r   z8CacheKeyFixture._run_cache_key_fixture.<locals>.<lambda>  r   r0   )	itertoolscombinations_with_replacementranger   r   r   r   r   r   r   r   r   r
   r   r   r   iterate__visit_name__appendr	   sortedr   unique_list)r"   r   r   case_acase_br   r   r   r   r   r   assert_a_paramsassert_b_paramselems                 r$   _run_cache_key_fixturez&CacheKeyFixture._run_cache_key_fixtureh  sX   ;;#f+
DAq Av#221Ivay. u =q	557q	557=EM}%ay5599)DDD}%ay5599)DDD99		),/((%*:*:-(  '#N  /   "- EIIuyy1		599-
 &)]3
q	=9 #%"$$,,VAY7D**k9'..t4 8 %,,VAY7D**k9'..t4 8 5++A((9 5++A((9A
r0   c                     |       } |       }t        j                  t        t        |            d      D ]  \  }}| j	                  ||   ||   |         y )Nr   )r   r   r   r   r   )r"   r   r   r   r   r   r   s          r$   _run_cache_key_equal_fixturez,CacheKeyFixture._run_cache_key_equal_fixture  sS    ;;#f+
DAq q	6!9nE
r0   N)r   r   r   r   r   r   ro   r0   r$   r   r   W  s     IVFr0   r   c                    | j                   }|j                  | j                   G d d      fdfd}|| _        y )Nc                  ,    e Zd ZdZd Zed        Zd Zy).insertmanyvalues_fixture.<locals>.RandomCursorcursorc                    || _         y r   r  )r"   r  s     r$   __init__z7insertmanyvalues_fixture.<locals>.RandomCursor.__init__  s	     DKr0   c                .    | j                   j                  S r   )r  descriptionr+   s    r$   r	  z:insertmanyvalues_fixture.<locals>.RandomCursor.description  s    ;;***r0   c                z    | j                   j                         }t        |      }t        j                  |       |S r   )r  fetchalllistrandomshuffle)r"   r   s     r$   r  z7insertmanyvalues_fixture.<locals>.RandomCursor.fetchall  s.    ;;'')D:DNN4 Kr0   N)r   r   r   	__slots__r  r   r	  r  ro   r0   r$   RandomCursorr    s%    		! 
	+ 
	+	r0   r  c              3     K   	r |      } | |||||      D ])  }
r!|j                   rt        j                  d       | + y w)Nz)Batches were downgraded for sorted INSERT)is_downgradedr   warn)ru   r  	statement
parametersgeneric_setinputsizescontextbatchr  orig_dialectrandomize_rowswarn_on_downgradeds          r$   !_deliver_insertmanyvalues_batcheszCinsertmanyvalues_fixture.<locals>._deliver_insertmanyvalues_batches  sV      !&)F!!
E "e&9&9		EFK
s   AAc                    t         j                  j                  | d      5   | |      cd d d        S # 1 sw Y   y xY w)Nr  )new)r   patchobject)dialectr  r  	orig_conns     r$   _exec_insertmany_contextz:insertmanyvalues_fixture.<locals>._exec_insertmany_context  sD    ZZ/1  

 Wg.	/ 	/ 
 
s	   	7A )r!  r  r#  )	ru   r  r  r!  r#  r  r  r"  r  s	    ``  @@@@r$   insertmanyvalues_fixturer$    sE       G<<L33I (./ +CJ'r0   )FF) 
__future__r   r   r  r   r^   
sqlalchemyr:   baser   r   r   r   
assertionsr	   r
   r   r   r   r   r   r   sqlr   sql.elementsr   r   r   r   r   r   r$  ro   r0   r$   <module>r+     s    #   	 
        0   1  )M M`+ +  MJ M`cF cFN :?:Cr0   