
    {<i:                    >   d dl m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 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)	provision)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     d/home/www/utuvibe.miabetepe.com/venv/lib/python3.12/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
>>#!{{}r1   c                    | j                   dk(  rE| j                          | j                  j                         5 }| j	                  |       d d d        y y # 1 sw Y   y xY wNr   r5   _load_fixturesr:   begininsert_data)r$   conns     r%   r!   zTablesTest._setup_once_inserts_   sU    ??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?   
r3   define_tablesr/   r4   
create_allr:   r7   updater8   
_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 +r1   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   rG   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 .r1   c                    | j                   dk(  rE| j                          | j                  j                         5 }| j	                  |       d d d        y y # 1 sw Y   y xY wrM   r@   r#   rD   s     r%   r*   zTablesTest._setup_each_insertsy   sY    v%!" 'd  &' ' &' 'rE   c                P   | j                   dk(  rd| j                  j                          | j                  dk(  r t	        | j
                  | j                         | j
                  j                          n/| j                  dk(  r t	        | j
                  | j                         | j                   dk7  ri| j                  dk(  rY| j                  dk(  rI| j                  j                         5 }t        j                  |t        | j
                         d d d        y y y y # 1 sw Y   y xY w)Nr   r   )r3   r7   clearr4   r   r/   r:   run_deletesrB   r	   delete_from_all_tablesr   rO   s     r%   r+   z TablesTest._teardown_each_tables   s    !!V+KK%%/-d.C.CTYYO!!'')##v-)$*?*?K ""f,&&&0  F*" d00&$"7"7  + 1 - s   *&DD%c                    | j                   r t        | j                  | j                         | j                  dk(  r| j                  | j                         d | j                  _        | j                  d | _        y y r?   )r4   r   r/   r:   run_dispose_binddispose_bindrun_setup_bindr=   s    r%   r"   z'TablesTest._teardown_once_metadata_bind   se      )#*>*>I6)SXX&$(!)CH *r1   c                "    t         j                  S r   )r   dbr=   s    r%   r9   zTablesTest.setup_bind   s    yyr1   c                x    t        |d      r|j                          y t        |d      r|j                          y y )Ndisposeclose)hasattrr[   r\   )r$   r:   s     r%   rV   zTablesTest.dispose_bind   s-    4#LLNT7#JJL $r1   c                     y r    )r$   metadatas     r%   rH   zTablesTest.define_tables       r1   c                    i S r   r_   r=   s    r%   fixtureszTablesTest.fixtures   s    	r1   c                     y r   r_   )r$   
connections     r%   rC   zTablesTest.insert_data   ra   r1   c                >    | j                  | j                  ||       y r   )assert_sql_countr:   )r#   countfns      r%   
sql_count_zTablesTest.sql_count_   s    diiU3r1   c                >    | j                  | j                  ||       y r   )
assert_sqlr:   )r#   	callable_
statementss      r%   sql_eq_zTablesTest.sql_eq_   s    		9j9r1   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)rc   itemslen
isinstancestrr7   r   r/   valuesr:   rB   executeinsertdictzip)r$   headersrowstabledatafksrD   column_valuess           r%   rA   zTablesTest._load_fixtures   s(    B<<>//1 	#KE44y1}%%

5)!!WGENqr(DK	# 6  ''..0
 	JE3 }G#! TLLN .2%[) S?@ 	 s   >"D D?DDD	)$__name__
__module____qualname__rW   r3   r4   r5   rR   rU   r:   r/   r7   r6   r8   r   fixturer&   r-   propertyr0   classmethodr   r!   r    r)   r*   r+   r"   r9   rV   rH   rc   rC   rj   ro   rA   r_   r1   r%   r   r      s~   N   K K DFEIV^^D0
+ 1
+ V^^D
3% 4% % % - - & & B B8'( 
 
          4:  r1   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   rY   _compiled_cache)r#   _caches     r%   _disable_cachezNoCache._disable_cache   s0     **$(		!$*		!s   A
AN)r   r   r   r   r   r   r_   r1   r%   r   r      s!    V^^D
3+ 4+r1   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r1   c                p    | j                   j                  |||f       t        j                  |||fi | y r   )r   addr   listen)r#   targetnameri   kws        r%   event_listenzRemovesEvents.event_listen   s0    VT2./VT2,,r1   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   r_   r1   r%   r   r      s@    	 - V^^D
3 4r1   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0r1   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schemasenabledr   test_schemacomputed_columns_virtualappend_columncomputed_columns_stored)	r$   r`   r   r   r   r   r   tt2s	            r%   rH   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 <r1   )r   r   r   r5   rR   __backend____requires__recompiler   r   r   rH   r_   r1   r%   r   r      sB     $$K+K;LRZZ,-F1 A Ar1   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   hashry   
bindparamscompare)r#   abr   a_keyb_keya_paramb_params           r%   _compare_equalzCacheKeyFixture._compare_equalC  s    %%'%%'=>>%%i000= = e| 		599%UYYeii1$'(8(8%:J:J$K O w~NNNOe|r1   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>  
    155 r1   r   c                    | j                   S r   r   r   s    r%   r   z8CacheKeyFixture._run_cache_key_fixture.<locals>.<lambda>  
     r1   c                    | j                   S r   r   r   s    r%   r   z8CacheKeyFixture._run_cache_key_fixture.<locals>.<lambda>  r   r1   c                    | j                   S r   r   r   s    r%   r   z8CacheKeyFixture._run_cache_key_fixture.<locals>.<lambda>  r   r1   )	itertoolscombinations_with_replacementrangerr   r   r   r   r   r   ry   r   r   r   rs   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_fixtureS  sn   ;;#f+
 E	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		),/((%*:*:- 2(  '#N  /   "2 EIIuyy1		599-
 &)]3
q	=9 #%"$$,,VAY7 5D**k9'..t45 %,,VAY7 5D**k9'..t45 5++A((9 5++A((9AE	r1   c                     |       } |       }t        j                  t        t        |            d      D ]  \  }}| j	                  ||   ||   |         y )Nr   )r   r   r   rr   r   )r#   r   r   r   r   r   r   s          r%   _run_cache_key_equal_fixturez,CacheKeyFixture._run_cache_key_equal_fixture  sZ    ;;#f+
 	FDAq q	6!9nE	Fr1   N)r   r   r   r   r   r   r_   r1   r%   r   r   B  s     IVFr1   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	     DKr1   c                .    | j                   j                  S r   )r   descriptionr,   s    r%   r   z:insertmanyvalues_fixture.<locals>.RandomCursor.description  s    ;;***r1   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 Kr1   N)r   r   r   	__slots__r   r   r   r  r_   r1   r%   RandomCursorr     s%    		! 
	+ 
	+	r1   r  c              3     K   	r |      } | |||||      D ])  }
r!|j                   rt        j                  d       | + y w)Nz)Batches were downgraded for sorted INSERT)is_downgradedr   warn)re   r   	statement
parametersgeneric_setinputsizescontextbatchr  orig_dialectrandomize_rowswarn_on_downgradeds          r%   !_deliver_insertmanyvalues_batcheszCinsertmanyvalues_fixture.<locals>._deliver_insertmanyvalues_batches  s[      !&)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  )	re   r  r  r  r  r  r  r  r  s	    ``  @@@@r%   insertmanyvalues_fixturer    sE       G<<L33I (./ +CJ'r1   )FF) 
__future__r   r   r  r   
sqlalchemyr;   baser   r   r   r   r	   
assertionsr
   r   r   r   r   r   r   r   sqlr   sql.elementsr   r   r   r   r   r   r  r_   r1   r%   <module>r!     s    #   	         0   1  )x xv+ +  MJ M`cF cFN :?:Cr1   