
    +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 d	dl	mZ  G d dee      Z G d dee      Z G d dee      Zy)    )Column)ForeignKeyConstraint)Integer)MetaData)String)Table   )AutogenFixtureTest   )combinations)configeq_)mock)TestBasec                   |    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
ej                  j                  d	        Zd
 Zd Zy)AutogenerateForeignKeysTestT)!foreign_key_constraint_reflectionc                    t               }t               }t        d|t        dt        d      d             t        d|t        dt        d      t        dt        d	      d
      t        dt        d      d      t        dt        d            t        dgdg             t        d|t        dt        d      d             t        d|t        dt        d      t        dt        d	      d
      t        dt        d      d      t        dt        d                   | j                  ||      }| j                  |d   dddgddgd       y )N
some_tabletest
   Tprimary_keyuseridname2   Fnullablea1xserver_defaulttest2some_table.testr   	remove_fkservergeneratedconditional_namer   r   r   r   r   r   _fixture_assert_fk_diffselfm1m2diffss       Y/var/www/html/venv/lib/python3.12/site-packages/alembic/testing/suite/test_autogen_fks.pytest_remove_fkz*AutogenerateForeignKeysTest.test_remove_fk   s4   ZZ66":48	
 	4d366":64C87F2J' '->,?@	
 	66":48	
 	4d366":64C87F2J'	
 b"%!HIH. 	 	
    c                    t               }t               }t        d|t        dt        d      t        dt	        d                   t        d|t        dt        d      t        dt	        d	      d
      t        dt	        d      d      t        dt	        d                   t        d|t        dt        d      t        dt	        d                   t        d|t        dt        d      t        dt	        d	      d
      t        dt	        d      d      t        dt	        d            t        dgdg             | j                  ||      }| j                  |d   dddgddg       y )Nr   r   Tr   r   r   r   r   r   Fr   r!   r"   r#   r%   r&   r   add_fk)r   r   r   r   r   r   r,   r-   r.   s       r3   test_add_fkz'AutogenerateForeignKeysTest.test_add_fkC   s;   ZZ4d366":&		
 	4d366":64C87F2J'	
 	4d366":&		
 	4d366":64C87F2J' '->,?@	
 b"%!Hh	<&	
r5   c                    t               }t               }t        d|t        dt        d      t        dt	        d                   t        d|t        dt        d      t        dt	        d	      d
      t        dt	        d      d      t        dt              t        dgdg             t        d|t        dt        d      t        dt	        d                   t        d|t        dt        d      t        dt	        d	      d
      t        dt	        d      d      t        dt              t        dgdg             | j                  ||      }t        |g        y )Nr   r   Tr   r   r   r   r   r   Fr   r!   r"   r#   r%   some_table.id)r   r   r   r   r   r   r,   r   r.   s       r3   test_no_changez*AutogenerateForeignKeysTest.test_no_changen   s'   ZZ4d366":&		
 	4d366":64C87G$ '_,=>	
 	4d366":&		
 	4d366":64C87G$ '_,=>	
 b"%E2r5   c                 H   t               }t               }t        d|t        dt        d      d      t        dt        d      d             t        d|t        dt        d      t        d	t        d
      d      t        dt        d      d      t        dt        d            t        dt        d            t        ddgddg             t        d|t        dt        d      d      t        dt        d      d             t        d|t        dt        d      t        d	t        d
      d      t        dt        d      d      t        dt        d            t        dt        d            t        ddgddg             | j                  ||      }t        |g        y )Nr   id_1r   Tr   id_2r   r   r   r   Fr   r!   r"   r#   
other_id_1
other_id_2some_table.id_1some_table.id_2r   r   r   r   r   r   r,   r   r.   s       r3   test_no_change_composite_fkz7AutogenerateForeignKeysTest.test_no_change_composite_fk   sk   ZZ66":4866":48		
 	4d366":64C8<,<, |,"$56	
 	66":4866":48		
 	4d366":64C8<,<, |,"$56	
 b"%E2r5   c                 H   t               }t               }t        d|t        dt        d      d             t        d|t        dt        d      t        dt        d	      d
      t        dt        d      d      t        dt        d            t        dgdgd             t        d|t        dt        d      d             t        d|t        dt        d      t        dt        d	      d
      t        dt        d      d      t        dt        d            t        dgdgd             | j                  ||      }| j                  |d   dddgddgt        j                  j                  j                  rdnd        | j                  |d   dddgddgd       y )Nr   r   r   Tr   r   r   r   r   Fr   r!   r"   r#   r%   r&   MyFKr   myfkr   r'   r	   r7   )r   r   r   r   r   r   r,   r-   r   requirementsfk_namesenabledr.   s       r3   1test_casing_convention_changed_so_put_drops_firstzMAutogenerateForeignKeysTest.test_casing_convention_changed_so_put_drops_first   s   ZZ66":48	
 	4d366":64C87F2J' '->,?fM	
 	66":48	
 	4d366":64C87F2J' $*;)<6J	
 b"%!HIH!..77??T 	 	
 	!HFH 	 	
r5   c                 T   t               }t               }t        d|t        dt        d      d      t        dt        d      d             t        d|t        dt        d      t        d	t        d
      d      t        dt        d      d      t        dt        d            t        dt        d                   t        d|t        dt        d      d      t        dt        d      d             t        d|t        dt        d      t        d	t        d
      d      t        dt        d      d      t        dt        d            t        dt        d            t        ddgddgd             | j                  ||      }| j                  |d   ddddgdddgd       y )Nr   r=   r   Tr   r>   r   r   r   r   Fr   r!   r"   r#   r?   r@   rA   rB   fk_test_namerG   r   r7   r+   r.   s       r3   test_add_composite_fk_with_namez;AutogenerateForeignKeysTest.test_add_composite_fk_with_name  s   ZZ66":4866":48		
 	4d366":64C8<,<,	
 	66":4866":48		
 	4d366":64C8<,<, |,"$56#	
 b"%!H<(V 	 	
r5   c                 T   t               }t               }t        d|t        dt        d      d      t        dt        d      d             t        d|t        dt        d      t        d	t        d
      d      t        dt        d      d      t        dt        d            t        dt        d            t        ddgddgd             t        d|t        dt        d      d      t        dt        d      d             t        d|t        dt        d      t        d	t        d
      d      t        dt        d      d      t        dt        d            t        dt        d                   | j                  ||      }| j                  |d   ddddgdddgd       y )Nr   r=   r   Tr   r>   r   r   r   r   Fr   r!   r"   r#   r?   r@   rA   rB   rN   rG   r   r'   r)   r+   r.   s       r3   test_remove_composite_fkz4AutogenerateForeignKeysTest.test_remove_composite_fk=  s   ZZ66":4866":48		
 	4d366":64C8<,<, |,"$56#	
 	66":4866":48		
 	4d366":64C8<,<,	
 b"%!H<(V+ 	 	
r5   c                    t               }t               }t        d|t        dt        d      d      t        dt        d      d             t        d|t        dt        d      t        d	t        d            t        d
t        d                   t        d|t        dt        d      dd      t        dt        d      dd             t        d|t        dt        d      t        d	t        d      d      t        d
t        d      d      t        ddgddgd             | j                  ||      }| j                  |d   ddd	d
gdddgd       y )Nr   r=   r   Tr   r>   r   r   r?   r@   tid1keyr   tid2oid1rU   oid2some_table.tid1some_table.tid2rN   rG   r   r7   r+   r.   s       r3   test_add_fk_colkeysz/AutogenerateForeignKeysTest.test_add_fk_colkeysu  sJ   ZZ66":4866":48		
 	4d3<,<,	
 	66":6tD66":6tD		
 	4d3<8<8  "$56#	
 b"%!H<(V 	 	
r5   c                    t               }t               }t        d|t        dt        d      d      t        dt        d      d             t        d|t        dt        d      t        d	t        d            t        d
t        d            t        d	d
gddg             t        d|t        dt        d      dd      t        dt        d      dd             t        d|t        dt        d      t        d	t        d      d      t        d
t        d      d      t        ddgddg             | j                  ||      }t        |g        y )Nr   r=   r   Tr   r>   r   r   r?   r@   rA   rB   rS   rT   rV   rW   rX   rY   rZ   r[   rC   r.   s       r3   test_no_change_colkeysz2AutogenerateForeignKeysTest.test_no_change_colkeys  s3   ZZ66":4866":48		
 	4d3<,<, |,"$56
	
 	66":6tD66":6tD		
 	4d3<8<8  #46G"H		
 b"%E2r5   N)__name__
__module____qualname____backend____requires__r4   r8   r;   rD   rL   rO   r   rI   no_name_normalizerQ   r\   r^    r5   r3   r   r      s\    K9L-
^)
V(T0d;
z4
l **5
 +5
n1
f+r5   r   c                       e Zd ZdZdZ edd      ej                  j                  d               Z	d Z
 edd      ej                  j                  d               Zy)	IncludeHooksTestT)rJ   )objectrG   c           	      :   t               }t               }t        d|t        dt        d            }t        d|t        dt              t        dt                    }|j	                  t        |j                  j                  g|j                  j                  gd	             |j	                  t        |j                  j                  g|j                  j                  gd
	             t        d|t        dt        d            }t        d|t        dt              t        dt                     |dk(  rd }| j                  |||      }n|dk(  rd }| j                  |||      }| j                  d   dddgddgd
       t        t        |      d       y )Nrefr   Tr   tr"   yfk1rG   fk2rh   c                 H    t        | t              xr |dk(  xr	 |xr |dk(   S Nforeign_key_constraintrm   
isinstancer   object_r   type_	reflected
compare_tos        r3   include_objectzBIncludeHooksTest.test_remove_connection_fk.<locals>.include_object   s;    w(<= &!99&!& 	 r5   object_filtersr   c                 T    | dk(  r#|dk(  ryt        |d       t        |d ddd       yy)Nrm   indexTrq   rk   schema_name
table_nameschema_qualified_table_nameFr   r   rv   parent_namess      r3   include_namez@IncludeHooksTest.test_remove_connection_fk.<locals>.include_name  s@    5='#78$+/*-;> !r5   name_filtersr   r'   r)   r	   r   r   r   r   append_constraintr   cr"   r   rl   r,   r-   r   len)	r/   	hook_typer0   r1   rj   t1ry   r2   r   s	            r3   test_remove_connection_fkz*IncludeHooksTest.test_remove_connection_fk  s~    ZZ4d3

 3 3 	
 	 "$$&&CEEHH:EB	
 	 "$$&&CEEHH:EB	
 4d3

 	3 3 		
   MM"bMHE&  " MM"b|MDE!HEF" 	 	
 	CJr5   c           	         t               }t               }t        d|t        dt        d             t        d|t        dt              t        dt                     t        d|t        dt        d            }t        d|t        dt              t        dt                    }|j	                  t        |j                  j                  g|j                  j                  gd	             |j	                  t        |j                  j                  g|j                  j                  gd
	             d }| j                  |||      }| j                  |d   dddgddgd
	       t        t        |      d       y )Nrj   r   Tr   rk   r"   rl   rm   rG   rn   c                 J    t        | t              xr |dk(  xr
 | xr |dk(   S rp   rr   rt   s        r3   ry   z=IncludeHooksTest.test_add_metadata_fk.<locals>.include_objectK  s=    7$89 "55"!M" EM	 r5   rz   r   r7   r	   r   )r/   r0   r1   rj   t2ry   r2   s          r3   test_add_metadata_fkz%IncludeHooksTest.test_add_metadata_fk)  sG   ZZ4d3	

 	3 3 		
 4d3

 3 3 	
 	 "$$&&CEEHH:EB	
 	 "$$&&CEEHH:EB	
	 b"^D!HhcUED6 	 	
 	CJr5   c           
         t               }t               }t        d|t        dt        d            }t        d|t        dt        d      t        dt        d             t        d|t        dt              t        d	t              t        d
t                    }|j	                  t        |j                  j                  g|j                  j                  gd             |j	                  t        |j                  j                  g|j                  j                  gd             t        d|t        dt        d             t        d|t        dt        d      t        dt        d            }t        d|t        dt              t        d	t              t        d
t                    }|j	                  t        |j                  j                  |j                  j                  g|j                  j                  |j                  j                  gd             |j	                  t        |j                  j                  |j                  j                  g|j                  j                  |j                  j                  gd             |dk(  rd }| j                  |||      }	n|dk(  rd }
| j                  |||
      }	|dk(  rR| j                  	d   ddd	gddgd       | j                  |	d   ddd	d
gdddgd       t        t        |	      d       y |dk(  r/t        	D ch c]  }|d   |d   j                   f c}h d       y y c c}w )Nref_aaTr   ref_bbrk   r"   rl   zrm   rG   rn   rh   c                 @    t        | t              xr |dk(  xr |dk(   S rp   rr   rt   s        r3   ry   z7IncludeHooksTest.test_change_fk.<locals>.include_object  s1    w(<= &!99& r5   rz   r   c                 T    |dk(  ry| dk(  rt        |d       t        |d ddd       yy)Nr}   Trm   rq   rk   r~   Fr   r   s      r3   r   z5IncludeHooksTest.test_change_fk.<locals>.include_name  s@    G#5=78$+/*-;> !r5   r   r   r'   r	   r7      >   r7   rm   r7   rn   r'   rn   )r   r   r   r   r   r   r   r"   r   rl   r   r   r,   r-   r   r   r   )r/   r   r0   r1   r1ar   r2br   ry   r2   r   ds               r3   test_change_fkzIncludeHooksTest.test_change_fkZ  s    ZZ3T2

 	3T23T2		
 3 3 3 
 	 "$$&&CEEGG95A	
 	 "$$&&CEEGG95A	
 	3T2	

 3T23T2	
 3 3 3 
 	  35577CEEGG"45	

 	  35577CEEGG"45	
   MM"bMHE&  $ MM"b|MDE   a+sSE7SE !    ac
c
 !  E
A& ,12q!A$!		"2L !2s   +MN)r_   r`   ra   rb   rc   r   r   rI   rd   r   r   r   re   r5   r3   rg   rg     ss    K L+y)**K + *KZ/b +y)**l + *lr5   rg   c                      e Zd ZdZd Zej                  j                  d        Zej                  j                  d        Z	d Z
ej                  j                  d        Zej                  j                  d        Zej                  j                  d        Zej                  j                   d	        Zej                  j$                  d
        Zej                  j(                  d        Zej                  j                  d        Zej                  j                   d        Zej                  j                   d        Zej                  j                  ej                  j                  d               Zej                  j4                  d        Zej                  j4                  d        Zej                  j:                  ej                  j4                  d               Zej                  j:                  ej                  j4                  d               Zej                  j4                  ej                  j:                  d               Z ej                  j4                  ej                  j:                  d               Z!ej                  j4                  ej                  j:                  d               Z"ej                  j:                  d        Z#ej                  jH                  d        Z%y)AutogenerateFKOptionsTestTc                 R   t               }t               }t        d|t        dt        d      t        dt	        d                   t        d|t        dt        d      t        dt	        d	      d
      t        dt              t        dgdgfi |       t        d|t        dt        d      t        dt	        d                   t        d|t        dt        d      t        dt	        d	      d
      t        dt              t        dgdgfi |       | j                  ||      S )Nr   r   Tr   r   r   r   r   r   Fr   tidr:   )r   r   r   r   r   r   r,   )r/   old_optsnew_optsr0   r1   s        r3   _fk_opts_fixturez*AutogenerateFKOptionsTest._fk_opts_fixture  s	   ZZ4d366":&		
 	4d366":65'" %?*;HxH	
 	4d366":&		
 	4d366":65'" %?*;HxH	
 }}R$$r5   c           
          | j                  i ddi      }| j                  |d   dddgddgd d	
       | j                  |d   dddgddgd       y )Nondeletecascader   r'   r   r   r   r   r(   r   r*   r	   r7   r   r   r-   r/   r2   s     r3   test_add_ondeletez+AutogenerateFKOptionsTest.test_add_ondelete  ~    %%b:y*AB!HGF. 	 		
 	!HGF 	 	
r5   c           
          | j                  ddii       }| j                  |d   dddgddgdd	
       | j                  |d   dddgddgd        y )Nr   CASCADEr   r'   r   r   r   r   r(   r   r	   r7   r   r   r   s     r3   test_remove_ondeletez.AutogenerateFKOptionsTest.test_remove_ondelete  ~    %%z9&=rB!HGF. 	 		
 	!HGF 	 	
r5   c                 H    | j                  ddiddi      }t        |g        y)test case sensitivityr   caSCAdeCasCadeNr   r   r   s     r3   test_nochange_ondeletez0AutogenerateFKOptionsTest.test_nochange_ondelete&  s,    %%#j)%<
 	E2r5   c           
          | j                  i ddi      }| j                  |d   dddgddgd d	
       | j                  |d   dddgddgd       y )Nonupdater   r   r'   r   r   r   r   r(   r   r*   r	   r7   r   r   r   s     r3   test_add_onupdatez+AutogenerateFKOptionsTest.test_add_onupdate-  r   r5   c           
          | j                  ddii       }| j                  |d   dddgddgdd	
       | j                  |d   dddgddgd        y )Nr   r   r   r'   r   r   r   r   r(   r   r	   r7   r   r   r   s     r3   test_remove_onupdatez.AutogenerateFKOptionsTest.test_remove_onupdateF  r   r5   c                 H    | j                  ddiddi      }t        |g        y)r   r   r   r   Nr   r   s     r3   test_nochange_onupdatez0AutogenerateFKOptionsTest.test_nochange_onupdate_  s.     %%#j)%<
 	E2r5   c                 H    | j                  ddiddi      }t        |g        y)6test the RESTRICT option which MySQL doesn't report onr   restrictNr   r   s     r3   test_nochange_ondelete_restrictz9AutogenerateFKOptionsTest.test_nochange_ondelete_restrictg  .     %%$z:&>
 	E2r5   c                 H    | j                  ddiddi      }t        |g        y)r   r   r   Nr   r   s     r3   test_nochange_onupdate_restrictz9AutogenerateFKOptionsTest.test_nochange_onupdate_restrictp  r   r5   c                 H    | j                  ddiddi      }t        |g        y)<test the NO ACTION option which generally comes back as Noner   	no actionNr   r   s     r3   test_nochange_ondelete_noactionz9AutogenerateFKOptionsTest.test_nochange_ondelete_noactiony  .     %%%
K'@
 	E2r5   c                 H    | j                  ddiddi      }t        |g        y)r   r   r   Nr   r   s     r3   test_nochange_onupdate_noactionz9AutogenerateFKOptionsTest.test_nochange_onupdate_noaction  r   r5   c                     | j                  ddiddi      }| j                  |d   dddgdd	gd
t        j                  d	       | j                  |d   dddgdd	gd
d       y
)r   r   r   r   r   r'   r   r   r   r   Nr(   r   r   r*   r	   r7   r   r   r   r-   r   ANYr   s     r3   "test_change_ondelete_from_restrictz<AutogenerateFKOptionsTest.test_change_ondelete_from_restrict  s     %%$z9&=
 	!HGFXX. 	 
	
 	!HGF 	 		
r5   c                     | j                  ddiddi      }| j                  |d   dddgdd	gt        j                  d
d	       | j                  |d   dddgdd	gdd
       y
)r   r   r   r   r   r'   r   r   r   r   Nr(   r   r	   r7   r   r   r   s     r3   "test_change_onupdate_from_restrictz<AutogenerateFKOptionsTest.test_change_onupdate_from_restrict  s     %%$z9&=
 	!HGFXX. 	 
	
 	!HGF 	 		
r5   c                     | j                  dddddd      }| j                  |d   dddgd	d
gddd	       | j                  |d   dddgd	d
gdd       y )Nr   zSET NULLr   RESTRICTr   r'   r   r   r   r   r(   r   r	   r7   r   r   s     r3   test_ondelete_onupdate_comboz6AutogenerateFKOptionsTest.test_ondelete_onupdate_combo  s     %%"
;#<

 	!HGF. 	 
	
 	!HGF 	 		
r5   c           
          | j                  i ddi      }| j                  |d   dddgddgd d	
       | j                  |d   dddgddgd       y )N	initiallydeferredr   r'   r   r   r   r   r(   r   r*   r	   r7   r   r   r   s     r3   test_add_initially_deferredz5AutogenerateFKOptionsTest.test_add_initially_deferred  s~    %%b;
*CD!HGF. 	 		
 	!HGF  	 	
r5   c                     | j                  ddii       }| j                  |d   dddgddgd	d
d	       | j                  |d   dddgddgd        y )Nr   r   r   r'   r   r   r   r   DEFERREDTr(   r   
deferrabler*   r	   r7   r   r   r   s     r3   test_remove_initially_deferredz8AutogenerateFKOptionsTest.test_remove_initially_deferred  s    %%{J&?D!HGF . 	 
	
 	!HGF 	 	
r5   c           
          | j                  i ddd      }| j                  |d   dddgdd	gd d
       | j                  |d   dddgdd	gdd       y )N	immediateTr   r   r   r'   r   r   r   r   r(   r   r	   r7   r   r   s     r3   ,test_add_initially_immediate_plus_deferrablezFAutogenerateFKOptionsTest.test_add_initially_immediate_plus_deferrable  s     %%k>
 	!HGF. 	 		
 	!HGF! 	 		
r5   c                     | j                  dddi       }| j                  |d   dddgdd	gd dd
	       | j                  |d   dddgdd	gd d        y )Nr   Tr   r   r'   r   r   r   r   r(   r   r	   r7   r   r   s     r3   /test_remove_initially_immediate_plus_deferrablezIAutogenerateFKOptionsTest.test_remove_initially_immediate_plus_deferrable:  s     %%%T:B
 	!HGF. 	 
	
 	!HGF 	 		
r5   c                 L    | j                  dddddd      }t        |g        y )NTr   r   r   r   r   s     r3   *test_add_initially_deferrable_nochange_onezDAutogenerateFKOptionsTest.test_add_initially_deferrable_nochange_oneX  s/     %%k:k:

 	E2r5   c                 L    | j                  dddddd      }t        |g        y )NTr   r   r   r   s     r3   *test_add_initially_deferrable_nochange_twozDAutogenerateFKOptionsTest.test_add_initially_deferrable_nochange_twob  /     %%j9j9

 	E2r5   c                 L    | j                  d ddd dd      }t        |g        y )Nr   r   r   r   s     r3   ,test_add_initially_deferrable_nochange_threezFAutogenerateFKOptionsTest.test_add_initially_deferrable_nochange_threel  r   r5   c           
          | j                  i ddi      }| j                  |d   dddgddgd d	
       | j                  |d   dddgddgd       y Nr   Tr   r'   r   r   r   r   r(   )r   r*   r	   r7   )r   r   r   s     r3   test_add_deferrablez-AutogenerateFKOptionsTest.test_add_deferrablev  s~    %%b<*>?!HGF. 	 		
 	!HGF 	 	
r5   c           
          | j                  ddii       }| j                  |d   dddgddgdd	
       | j                  |d   dddgddgd        y r   r   r   s     r3   test_remove_deferrablez0AutogenerateFKOptionsTest.test_remove_deferrable  s~    %%|T&:B?!HGF. 	 		
 	!HGF 	 	
r5   N)&r_   r`   ra   rb   r   r   rI   fk_ondelete_is_reflectedr   r   r   fk_onupdate_is_reflectedr   r   fk_onupdater   fk_ondelete_restrictr   fk_onupdate_restrictr   fk_ondelete_noactionr   r   r   r   r   fk_initiallyr   r   fk_deferrabler   r   r   r   r   r   fk_deferrable_is_reflectedr   re   r5   r3   r   r     s*   K$%L 11
 2
0 11
 2
0 11
 2
0 11
 2
0 $$ % -- . -- . -- . $$ % --
 .
> --
 .
> 1111
 2 2
: %%
 &
0 %%
 &
2 &&%%
 & '
6 &&%%
 & '
8 %%&& ' & %%&& ' & %%&& ' & &&
 '
0 33
 4
r5   r   N)
sqlalchemyr   r   r   r   r   r   _autogen_fixturesr
   testingr   r   r   r   r   r   rg   r   re   r5   r3   <module>r     s^     +     1 #    C"4h CLr)8 rj[
 2H [
r5   