
    [h>                    Z   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dS )    )annotationsN   )TestBase   )config)mock)eq_)ne_)adict)drop_all_tables_from_metadata   )event)util)sort_tables_and_constraints)visitors)ClauseElementc                     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#dS )
TablesTestonceeachNTclassautousescopec              #     K   | j         }|                                 |                                 |                                 d V  |                                 d S N)	__class___init_class_setup_once_tables_setup_once_inserts_teardown_once_metadata_bind)selfclss     n/var/www/api.easyaligner.net/htdocs/venv_linux/lib/python3.11/site-packages/sqlalchemy/testing/fixtures/sql.py_setup_tables_test_classz#TablesTest._setup_tables_test_class7   sb      n   !!!((*****    functionc              #     K   |                                   |                                  d V  |                                  d S r   )_setup_each_tables_setup_each_inserts_teardown_each_tablesr"   s    r$   _setup_tables_test_instancez&TablesTest._setup_tables_test_instanceD   sK      !!!  """""$$$$$r&   c                    | j         S r   )_tables_metadatar,   s    r$   tables_test_metadatazTablesTest.tables_test_metadataM   s    $$r&   c                *   | j         dk    r| j        dk    rd| _        | j        dv sJ t                      | _        t                      | _        t                      | _        |                                 | _        t          j
                    | _        d S )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   s     F**$..(.%?n4444GG	WW
>>##!{}}r&   c                    | j         dk    r]|                                  | j                                        5 }|                     |           d d d            d S # 1 swxY w Y   d S d S Nr   r4   _load_fixturesr9   begininsert_data)r#   conns     r$   r    zTablesTest._setup_once_inserts_   s    ?f$$   !! &T%%%& & & & & & & & & & & & & & & & & & %$   AA #A c                8   | j         dk    r|                     | j                   | j        dk    r| j                            | j                   | j                            | j        j                   | j                            | j        j	                   d S d S r>   
r2   define_tablesr/   r3   
create_allr9   r6   updater7   
_sequencesr<   s    r$   r   zTablesTest._setup_once_tablesf   s     F**c2333$..$//999Jc29:::M  !5!@AAAAA +*r&   c                   | j         dk    r|                     | j                   | j        dk    r| j                            | j                   | j                            | j        j                   | j                            | j        j	                   d S | j        dk    r!| j                            | j                   d S d S Nr   rF   r,   s    r$   r)   zTablesTest._setup_each_tableso   s    !V++t4555%//%00;;;Kt4;<<<N!!$"7"BCCCCC#v--!,,TY77777 .-r&   c                    | j         dk    r]|                                  | j                                        5 }|                     |           d d d            d S # 1 swxY w Y   d S d S rL   r?   )r"   rC   s     r$   r*   zTablesTest._setup_each_insertsy   s    v%%!!!"" 'd  &&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' &%rD   c           	     "   | j         dk    rX| j                                         | j        dk    rt	          | j        | j                   | j                                         n%| j        dk    rt	          | j        | j                   t          t          j	        dd          }|r|j
        }| j         dk    rR| j        dk    rH| j        dk    r>| j                                        5 }t          d t          | j        j                                                  D                       D ]}	 |rT|                                5  |                    |                                           d d d            n# 1 swxY w Y   n'|                    |                                           # t&          j        j        $ r+}t-          d|d|t.          j                   Y d }~d }~ww xY w	 d d d            d S # 1 swxY w Y   d S d S d S d S )Nr   
savepointsFc                    g | ]	\  }}||
S r    ).0tfkss      r$   
<listcomp>z4TablesTest._teardown_each_tables.<locals>.<listcomp>   s-       $Q =	  )==r&   z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   tableexs        r$   r+   z TablesTest._teardown_each_tables   s   !V++K%//-d.CTYOOO!''))))#v--)$*?KKKV0,FF
 	,#+J "f,,&&00 F**"" d% (C 18??AA) )     E
% 9!%!2!2!4!4 = = $U\\^^ < < <= = = = = = = = = = = = = = = !LL8886,   >CeeRRH!$                         	 -,00**sa   *AG>0F.(E:.F.:E>>F.E>+F.-G>.G-!G(#G>(G--G>>HHc                    | j         rt          | j        | j                   | j        dk    r|                     | j                   d | j        _        | j        	d | _        d S d S r>   )r3   r   r/   r9   run_dispose_binddispose_bindrun_setup_bindr<   s    r$   r!   z'TablesTest._teardown_once_metadata_bind   sn      	J)#*>III6))SX&&&$(!)CHHH *)r&   c                    t           j        S r   )r   dbr<   s    r$   r8   zTablesTest.setup_bind   s
    yr&   c                    t          |d          r|                                 d S t          |d          r|                                 d S d S )Ndisposeclose)hasattrro   rp   )r#   r9   s     r$   rj   zTablesTest.dispose_bind   sR    4## 	LLNNNNNT7## 	JJLLLLL	 	r&   c                    d S r   rQ   )r#   metadatas     r$   rG   zTablesTest.define_tables       r&   c                    i S r   rQ   r<   s    r$   fixtureszTablesTest.fixtures   s    	r&   c                    d S r   rQ   )r#   
connections     r$   rB   zTablesTest.insert_data   rt   r&   c                >    |                      | j        ||           d S r   )assert_sql_countr9   )r"   countfns      r$   
sql_count_zTablesTest.sql_count_   s"    diU33333r&   c                >    |                      | j        ||           d S r   )
assert_sqlr9   )r"   	callable_
statementss      r$   sql_eq_zTablesTest.sql_eq_   s     	9j99999r&   c                R   i i c}|                                                                  D ]S\  }t          |          dk     rt          t                    r| j                 |d         <   |dd         |<   Tt          | j        j                                                  D ]y\  }vr| j	        
                                5 }|                                                    fd|         D                        ddd           n# 1 swxY w Y   zdS )z4Insert rows as represented by the fixtures() method.r   r   r   Nc                V    g | ]%}t          t                   |                    &S rQ   )dictzip)rR   column_valuesheadersrf   s     r$   rU   z-TablesTest._load_fixtures.<locals>.<listcomp>   s?       ) S??@@  r&   )rv   itemslen
isinstancestrr6   r   r/   r]   r9   rA   r_   insert)r#   rowsdatarT   rC   r   rf   s        @@r$   r@   zTablesTest._load_fixtures   s    B<<>>//11 	# 	#KE44yy1}}%%% *
5)!!WGENqrr(DKK5 '..00
 
 	 	JE3 }G##!! TLLNN    -1%[                  	 	s   <DD	"D	)$__name__
__module____qualname__rk   r2   r3   r4   r[   ri   r9   r/   r6   r5   r7   r   fixturer%   r-   propertyr0   classmethodr   r    r   r)   r*   r+   r!   r8   rj   rG   rv   rB   r}   r   r@   rQ   r&   r$   r   r      s)       N   K K DFEIV^D000
+ 
+ 10
+ V^D
333% % 43% % % X% - - [- & & [& B B [B8 8 8' ' '' ' 'R 
 
 [
   [   [   [   [   [4 4 4: : :   [  r&   r   c                  D    e Zd Z ej        dd          d             ZdS )NoCacheTr'   r   c              #  x   K   t           j        j        }d t           j        _        d V  |t           j        _        d S r   )r   rm   _compiled_cache)r"   _caches     r$   _disable_cachezNoCache._disable_cache   s3      *$(	!$*	!!!r&   N)r   r   r   r   r   r   rQ   r&   r$   r   r      s?        V^D
333+ + 43+ + +r&   r   c                  j    e Zd Zej        d             Zd Z ej        dd          d             Z	dS )RemovesEventsc                    t                      S r   )setr,   s    r$   
_event_fnszRemovesEvents._event_fns   s    uur&   c                h    | j                             |||f           t          j        |||fi | d S r   )r   addr   listen)r"   targetnamer|   kws        r$   event_listenzRemovesEvents.event_listen   sA    VT2.///VT2,,,,,,,r&   Tr'   r   c              #  B   K   d V  | j         D ]}t          j        |  d S r   )r   r   remove)r"   keys     r$   _remove_eventszRemovesEvents._remove_events   s:      ? 	 	CL#	 	r&   N)
r   r   r   r   memoized_propertyr   r   r   r   r   rQ   r&   r$   r   r      sm        	  - - - V^D
333  43  r&   r   c                  Z    e Zd ZdxZZdZdZ ej        d          Z	d Z
ed             ZdS )ComputedReflectionFixtureTestNT)computed_columnstable_reflectionz[\[\]\(\)\s`'\"]*c                \    | j                             d|                                          S )N )regexpsublower)r"   texts     r$   	normalizez'ComputedReflectionFixtureTest.normalize  s$    {r4((..000r&   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	        rE |d| |d|d	
           |d|           |d| |d                    t          j                  }|j        j        j	        rg|                     |d| |dd                               |j        j        j	        r+|                     |d| |dd                               |j        j        j	        ri|                     |d| |dd	                               |j        j        j	        r/|                     |d| |dd	                               d S d S d S )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schemasrZ   r   test_schemacomputed_columns_virtualappend_columncomputed_columns_stored)	r#   rs   r   r   r   r   r   rS   t2s	            r$   rG   z+ComputedReflectionFixtureTest.define_tables  s   $$$$$$&&&&&&######$F4d333F8W%%F>7HH],C,CDDF>74@@@	
 	
 	
 E#F4d333F8W%%F%w0G0GHH
 
 #+ 	'tW$777x)))7HH]4K4KLL)  B 4< 	OO&H\U;;;    '/   F* ???    3; 	OO%H]d;;;    '/   F) $???     	 	 r&   )r   r   r   r4   r[   __backend____requires__recompiler   r   r   rG   rQ   r&   r$   r   r     si         $$K+K;LRZ,--F1 1 1 A A [A A Ar&   r   c                       e Zd Zd Zd Zd ZdS )CacheKeyFixturec                   |                                 }|                                 }|!|j                            d          sJ |J nt          |j        |j                   t          t          |j                  t          |j                             t          |j        |j                  D ]\  }}|                    ||          s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00====	59%%%UYei111$'(8%:J$K$K O O w~NNNNNNe|r&   c           	         |            } |            }t          j        t          t          |                    d          D ]y\  }}||k    r*|                     ||         ||         |          \  }}|5n||                                         }||                                         }||I|"||         j                            d          sJ |"||         j                            d          sJ |j        |j        k    rTt          |j
        |j
                  D ]\  }	}
|	                    |
|          s nt          |j        |j                   nt          |j        |j                   t          ||         t                    r(t          ||         t                    rg }g }t          j        ||                   D ]"}|j        dk    r|                    |           #t          j        ||                   D ]"}|j        dk    r|                    |           #t'          t)          |j
        d           t)          t+          j        |          d                      t'          t)          |j
        d           t)          t+          j        |          d	                      {d S )
Nr   r   r   	bindparamc                    | j         S r   r   r   s    r$   <lambda>z8CacheKeyFixture._run_cache_key_fixture.<locals>.<lambda>      15 r&   r   c                    | j         S r   r   r   s    r$   r   z8CacheKeyFixture._run_cache_key_fixture.<locals>.<lambda>       r&   c                    | j         S r   r   r   s    r$   r   z8CacheKeyFixture._run_cache_key_fixture.<locals>.<lambda>  r   r&   c                    | j         S r   r   r   s    r$   r   z8CacheKeyFixture._run_cache_key_fixture.<locals>.<lambda>  r   r&   )	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  s   ;#f++
 
 E	 E	DAq Avv#221Ivay.   u = ! q	5577q	5577=EM}%ay599)DDDDD}%ay599)DDDDD9	)),/(%*:- - 2 2(  '#N  /     " "E" EIuy111	59---
 &)]33 
q	=9 9  #%"$$,VAY77 5 5D*k99'..t444$,VAY77 5 5D*k99'..t444
 5+AAA(99     5+AAA(99    AE	 E	r&   c                     |            } |            }t          j        t          t          |                    d          D ](\  }}|                     ||         ||         |           )d S )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  s~    ;#f++
 
 	F 	FDAq q	6!9nEEEE	F 	Fr&   N)r   r   r   r   r  r  rQ   r&   r$   r   r   W  sJ           I I IVF F F F Fr&   r   Fc                    | j         }|j        | j         G d d          fdfd}|| _        d S )Nc                  4    e Zd ZdZd Zed             Zd ZdS ).insertmanyvalues_fixture.<locals>.RandomCursorcursorc                    || _         d S r   r  )r"   r	  s     r$   __init__z7insertmanyvalues_fixture.<locals>.RandomCursor.__init__  s     DKKKr&   c                    | j         j        S r   )r	  descriptionr,   s    r$   r  z:insertmanyvalues_fixture.<locals>.RandomCursor.description  s    ;**r&   c                ~    | j                                         }t          |          }t          j        |           |S r   )r	  fetchalllistrandomshuffle)r"   r   s     r$   r  z7insertmanyvalues_fixture.<locals>.RandomCursor.fetchall  s5    ;''))D::DN4   Kr&   N)r   r   r   	__slots__r  r   r  r  rQ   r&   r$   RandomCursorr    sR        		! 	! 	! 
	+ 	+ 
	+	 	 	 	 	r&   r  c              3     K   	r |          } | |||||          D ]#}
r|j         rt          j        d           |V  $d S )Nz)Batches were downgraded for sorted INSERT)is_downgradedr   warn)rx   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 " Ge&9 G	EFFFKKKK	 	r&   c                    t           j                            | d          5   | |          cd d d            S # 1 swxY w Y   d S )Nr   )new)r   patchobject)dialectr  r   	orig_conns     r$   _exec_insertmany_contextz:insertmanyvalues_fixture.<locals>._exec_insertmany_context  s    Z/1  
 
 	/ 	/
 9Wg..	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   =AA)r%  r   r'  )	rx   r  r  r%  r'  r  r   r&  r  s	    ``  @@@@r$   insertmanyvalues_fixturer(    s      G<L3I       (       ./ / / / / / +CJ'''r&   )FF) 
__future__r   r   r  r   rd   
sqlalchemyr:   baser   r   r   r   
assertionsr	   r
   r   r   r   r   r   r   sqlr   sql.elementsr   r   r   r   r   r   r(  rQ   r&   r$   <module>r/     s<   # " " " " "      				 



                                         0 0 0 0 0 0             1 1 1 1 1 1       ) ) ) ) ) )M M M M M M M M`+ + + + + + + +        M M M M MJ M M M`cF cF cF cF cF cF cF cFN :?:C :C :C :C :C :Cr&   