
    [h                         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j                  ZdS )    )	bindparam)Column)Integer)MetaData)select)String)Table)testing)text)eq_)fixturesc                      e Zd ZdZdZdZed             Zed             Zd Z	 e
j        dg d           e
j        d	dd
g          d                         Zd Zd Z e
j        ddd
g           e
j        dde
j        j        fde
j        j        fg          d                         Zd Zd Zd Ze
j        j        d             Ze
j        j        d             ZdS )RowCountTestztest rowcount functionality)sane_rowcountTc                     t          d|t          dt          dd          t          dt          d                    t          dt          d	                               d S )
N	employeesemployee_idFTautoincrementprimary_keyname2   
department   )r	   r   r   r   )clsmetadatas     u/var/www/api.easyaligner.net/htdocs/venv_linux/lib/python3.11/site-packages/sqlalchemy/testing/suite/test_rowcount.pydefine_tableszRowCountTest.define_tables   sj    # 	   66"::&&<++	
 	
 	
 	
 	
    c                     g dx| _         }| j        j        }|                    |                                d t          |          D                        d S )N)	)AngelaA)Andrewr"   )Anandr"   )BobB)Bobetter&   )Buffyr&   )CharlieC)Cynthiar*   )Chrisr*   c                 &    g | ]\  }\  }}|||d S )r   r   r    ).0inds       r   
<listcomp>z,RowCountTest.insert_data.<locals>.<listcomp><   s:       Av1 !"1A>>  r   )datatablesr   executeinsert	enumerate)r   
connectionr5   employees_tables       r   insert_datazRowCountTest.insert_data+   s{    

 

 

 
	
4 *.""$$ !*4  	
 	
 	
 	
 	
r   c                    | j         j        }t          |j        j        |j        j                                      |j        j                  }|                    |          	                                }t          || j                   d S )N)r6   r   r   cr   r   order_byr   r7   fetchallr   r5   )selfr:   r;   srowss        r   
test_basiczRowCountTest.test_basicB   s{    +/"O$5$@
 

(?$0
1
1 	
 !!!$$--//D$)r   	statement)updatedeleter8   r   close_firstFc           	      0   | j         j        }|j        j        }|j        rC|                    |                                                    |dk              ddi          }n|j        rB|                    |                                                    |dk              ddi          }n|j        r8|                    |                                dddddd	ddd
dddg          }n|j	        rot          |j        j
        |j        j                                      |j        j        dk              }|                    |          }|                                 n|                                 |r|                                 |j        dv sJ d S )Nr*   r   Z   znone 1Xr.      znone 2   znone 3)   )r6   r   r>   r   rF   r7   whererG   r8   r   r   allfailcloserowcount)rA   r:   rE   rH   r;   r   rrB   s           r   $test_non_rowcount_scenarios_no_raisez1RowCountTest.test_non_rowcount_scenarios_no_raiseK   s   
 +/ %&1
 	""&&((..zS/@AAs# AA  	""&&((..zS/@AAs# AA  	""&&(($&LL$&LL$&LL AA  	!&(9(D eO%0C788  ""1%%AEEGGGGNN 	GGIIIzW$$$$$$r   c                     | j         j        }|j        j        }|                    |                                                    |dk              ddi          }|j        dk    sJ d S )Nr*   r   rJ   rP   )r6   r   r>   r   r7   rF   rQ   rU   rA   r:   r;   r   rV   s        r   test_update_rowcount1z"RowCountTest.test_update_rowcount1v   sm    +/ %&1
""$$**:+<==3
 
 zQr   c                     | j         j        }|j        j        }|                    |                                                    |dk              ddi          }t          |j        d           d S )Nr*   r   rP   )	r6   r   r>   r   r7   rF   rQ   r   rU   rY   s        r   test_update_rowcount2z"RowCountTest.test_update_rowcount2   sr    +/ %&1
""$$**:+<==3
 
 	AJr   implicit_returningdmlrF   rG   c                    |r| j         j        }nmt          dt                      t	          dt
          dd          t	          dt          d                    t	          dt          d	                    d
          }|j        j        }|j	        r_|	                                
                    |dk                                  |j        j        dz                                             }nY|j        r>|                                
                    |dk                                              }n|                                 |                    |          }t!          |j        d           dS )znote this test should succeed for all RETURNING backends
        as of 2.0.  In
        Idf28379f8705e403a3c6a937f6a798a042ef2540 we changed rowcount to use
        len(rows) when we have implicit returning

        r   r   FTr   r   r   r   r   )r]   r*   rJ   )r   rP   N)r6   r   r	   r   r   r   r   r>   r   rF   rQ   valuesreturn_defaultsrG   rS   r7   r   rU   )rA   r:   r]   r^   r;   r   stmtrV   s           r   +test_update_delete_rowcount_return_defaultsz8RowCountTest.test_update_delete_rowcount_return_defaults   s\   $  	"k3OO#

!"' $	   vvbzz**|VAYY//#(  O %&1
: 	&&((zS())_.9C?@@ ""	 D Z 	&&((zS()) "" D HHJJJt$$AJr   c                 Z    |                     d          }t          |j        d           d S Nz8update employees set department='Z' where department='C'rP   )exec_driver_sqlr   rU   rA   r:   results      r   test_raw_sql_rowcountz"RowCountTest.test_raw_sql_rowcount   s4    ++F
 
 	FOQr   c                 t    |                     t          d                    }t          |j        d           d S re   )r7   r   r   rU   rg   s      r   test_text_rowcountzRowCountTest.test_text_rowcount   s=    ##KLL
 
 	FOQr   c                     | j         j        }|j        j        }|                    |                                                    |dk                        }t          |j        d           d S )Nr*   rP   )	r6   r   r>   r   r7   rG   rQ   r   rU   rY   s        r   test_delete_rowcountz!RowCountTest.test_delete_rowcount   sj    +/ %&1
""$$**:+<==
 
 	AJr   c                 2   | j         j        }|                                                    |j        j        t          d          k                                  d          }|                    |ddiddiddig          }t          |j
        d           d S )Nemp_namer*   )r   r%   r+   nonexistent   )r6   r   rF   rQ   r>   r   r   r`   r7   r   rU   rA   r:   r;   rb   rV   s        r   test_multi_update_rowcountz'RowCountTest.test_multi_update_rowcount   s    +/""$$U?$)Yz-B-BBCCVsV## 	 U#Y']+
 
 	AJr   c                 
   | j         j        }|                                                    |j        j        t          d          k              }|                    |ddiddiddig          }t          |j	        d           d S )Nro   r%   r+   rp   rq   )
r6   r   rG   rQ   r>   r   r   r7   r   rU   rr   s        r   test_multi_delete_rowcountz'RowCountTest.test_multi_delete_rowcount   s    +/%%''--"i
&;&;;
 
 U#Y']+
 
 	AJr   N)__name__
__module____qualname____doc____requires____backend__classmethodr   r<   rD   r
   	variationrW   rZ   r\   requiresupdate_returningdelete_returningrc   ri   rk   rm   sane_multi_rowcountrs   ru   r/   r   r   r   r      s       %%%LK
 
 [
 
 
 [
,   W{$L$L$LMMW}tUm44'% '% 54 NM'%R	 	 	
 
 
 W+dE];;Ww'89w'89	
 . .  <;.`             )  *)& )  *)  r   r   N)
sqlalchemyr   r   r   r   r   r   r	   r
   r   sqlalchemy.testingr   r   
TablesTestr   r/   r   r   <module>r      s   !                                                           " " " " " " ' ' ' ' ' 'l l l l l8& l l l l lr   