
    ,YHh4                    B   U 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 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  ddl!m"Z" ddl!m#Z# ddl$m%Z% ddl$m&Z&  e'       Z(d e)d!<    e
jT                  ed"      d#        Z+d$ Z,e,Z-d%e)d&<   d'Z.d%e)d(<    G d) d*      Z/ G d+ d,      Z0 G d- d.      Z1 G d/ d0e1      Z2 G d1 d2e1      Z3y')3    )annotations)Any)Dict)Set)CHAR)CheckConstraint)Column)event)
ForeignKey)Index)inspect)Integer)MetaData)Numeric)PrimaryKeyConstraint)String)Table)Text)text)UniqueConstraint   )autogenerate)util)api)_fk_spec)MigrationContextops)config)eq_)clear_staging_env)staging_envzSet[Any]names_in_this_testafter_parent_attachc                B    t         j                  | j                         y N)r#   addname)tableparents     `/var/www/html/planif/env/lib/python3.12/site-packages/alembic/testing/suite/_autogen_fixtures.py	new_tabler,   &   s    5::&    c                    |dk(  r|t         v S y)Nr)   T)r#   )objr(   type_	reflected
compare_tos        r+   _default_include_objectr3   +   s    )))r-   r   _default_object_filtersN_default_name_filtersc                  @    e Zd ZU dZdZded<   ed        Zed        Zy)ModelOneunique_constraint_reflectionNr   schemac                V   | j                   }t        |      }t        d|t        dt        d      t        dt        d            t        dt              t        d	t        d            t        d
d	             t        d|t        dt        d      t        dt        d      d             t        d|t        dt        d      t        dt        dd      dt        d            t        dd             t        d|t        dt              t        dt        t        d                   |S )Nr:   useridTprimary_keyr(   2   a1pwpw_idxaddressemail_addressd   Fnullableorderorder_idamount      0rI   server_defaultzamount >= 0ck_order_amountr(   extraxuiduser.id)r:   r   r   r	   r   r   r   r   r   r   r   r   r   clsr:   ms      r+   _get_db_schemazModelOne._get_db_schema<   s   F#4d366":&44$(D!	
 	4d3?F3K%@		
 	:wD91#Cy	 M0AB	
 	35':i#89		
 r-   c                   | j                   }t        |      }t        d|t        dt        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            t        dd             t        d|t        dt        d      t        dt        dd      dt        d            t        dt        t        d            t        dd             t        d|t        dt        d      t        dt        d            t        dt        t        d             t        d!             |S )"Nr<   r=   r>   Tr?   r(   rA   FrH   rB   rU   )rQ   rE   rF   rG   streetuq_emailrS   rJ   rK   rL   
   rN   rO   rP   user_idrW   zamount > -1rR   itemdescriptionzorder.order_idzlen(description) > 5)r:   r   r   r	   r   r   r   r   r   r   r   r   rX   s      r+   _get_model_schemazModelOne._get_model_schemai   s3   F#4d366":64c2	
 	4d3?F3K%@8VBZ(_:>	
 	:wD9A#Cy	 9gz)'<=M0AB	
 	4d3=&+.:w
3C(DE23	
 r-   )	__name__
__module____qualname____requires__r:   __annotations__classmethodr[   rc    r-   r+   r7   r7   7   s8    4LFC* *X , ,r-   r7   c                  H    e Zd ZdZddiZdddddd	Zed
        Zed        Zy)NamingConvModelr8   conv_all_constraint_namesTzix_%(column_0_label)sz%uq_%(table_name)s_%(constraint_name)sz%ck_%(table_name)s_%(constraint_name)sz;fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)szpk_%(table_name)s)ixuqckfkpkc                2   t               }t        d|t        dt              t	        dd      t        dd             t        d|t        dt              t        dt        dd	            t        d
d             t        d|t        dt              t        dt              t        dt              t        dd             t        d|t        dt              t        dd             t        d|t        dt              t        dt        dd            t        dt              t        dt              t        dd      t        dd      t        dd      	       t        d|t        dt              t        dt              t        d      t        d             |S )Nx1qdb_x1_index_qdb_x1_primary_qrS   x2px1.qdb_x2_foreign_qq > 5db_x2_check_qx3rsdb_x3_unique_qx4db_x4_primary_qx5x4.qdb_x5_foreign_qdb_x5_primary_qdb_x5_unique_rs > 5db_x5_check_sunnamed_sqlite)	r   r   r	   r   r   r   r   r   r   )rY   rZ   s     r+   r[   zNamingConvModel._get_db_schema   sg   
 J3 /3' +<=	
 	3 3
60ABCG/:	
 	3 3 3 S'78	
 	3  +<=		
 	3 3
60ABC3 3  +<=S'78G/:
	
 	3 3  %S!	
 r-   c                   ddl m} t        | j                        }t	        d|t        dt        d      t        d d             t	        d|t        dt              t        d	t        d
            t        dd             t	        d|t        dt              t        dt              t        dt              t        dd      t        d |d                   t	        d|t        dt        d      t        dd             t	        d|t        dt        d      t        d	t        d            t        dt              t        dt              t        dd      t        dd      t        d |d            	       |S )Nr   )conv)naming_conventionrt   ru   Tr?   rx   ry   rz   r|   token_x2check1rS   r~   r   r   	token_x3ruserdef_x3_unique_sr   userdef_x4_idx_qx6r   	token_x6rr   token_x6check1zs < 20userdef_x6_check_s)sqlalchemy.sql.namingr   r   r   r   r	   r   r   r   r   r   )rY   r   rZ   s      r+   rc   z!NamingConvModel._get_model_schema   sD   .s'<'<=!VCd;U4=M	
 	3 3
6*+G*:;	
 	3 3 3 S{3St,A'BC	
 	3T2$c*		
 	3T23
6*+3 3 S{3G%56Hd+?&@A
	
 r-   N)	rd   re   rf   rg   configure_optsr   ri   r[   rc   rj   r-   r+   rl   rl      sQ    4L148N%55K! 6 6p ( (r-   rl   c                  "    e Zd Z	 	 	 	 	 	 	 ddZy)_ComparesFKsNc           
        t        |d         \
  }}}}}}}}}}t        |d   |       t        ||       t        ||       t        ||       t        ||	       t        ||
       t        ||       t        ||       t        ||       t        |d   j                  D cg c]  }|j                  j                   c}|       |e|dk(  rFt        | j                        j                  |      }|d   d   }t        |d   j                  |       y t        |d   j                  |       y t        |d   j                  |       y c c}w )N   r   servergeneratedr(   )r   r    elementscolumnr(   r   bindget_foreign_keys)selfdiffr0   source_tablesource_columnstarget_tabletarget_columnsr(   conditional_namesource_schemaonupdateondelete	initially
deferrablefk_source_schemafk_source_tablefk_source_columnsfk_target_schemafk_target_tablefk_target_columnsfk_onupdatefk_ondeletefk_deferrablefk_initiallyelemfksserver_fk_names                              r+   _assert_fk_diffz_ComparesFKs._assert_fk_diff
  s/   < T!W	
 	DGUO\*~.O\*m,K"K"L)$M:&$q'*:*:;$T[[;^L'#44dii(99,G!$QDGLL.1DGLL"23Qd# <s   E)NNNNNNN)rd   re   rf   r   rj   r-   r+   r   r   	  s     3$r-   r   c                  h    e Zd ZU d Zed        Zi Zded<   ed        Zed        Z	d Z
d Z	 dd
Zy	)AutogenTestc              #  z   K   |D ]0  }t        |t              r| j                  |      E d {    -| 2 y 7 wr&   )
isinstancelist_flatten_diffs)r   diffsds      r+   r   zAutogenTest._flatten_diffsA  s;      	A!T"..q111		1s   *;9;c                "    t         j                  S r&   )r   dbrY   s    r+   	_get_bindzAutogenTest._get_bindH  s    yyr-   zDict[Any, Any]r   c                    t                | j                         | _        | j                         | _        | j                  j                  | j                         | j                         | _        y r&   )r"   r   r   r[   m1
create_allrc   m2r   s    r+   setup_classzAutogenTest.setup_classN  sJ    ==?##%#((#&&(r-   c                b    | j                   j                  | j                         t                y r&   )r   drop_allr   r!   r   s    r+   teardown_classzAutogenTest.teardown_classV  s    !r-   c           
     V   | j                   j                         x| _        }dd| j                  ddddt        t
        d	}| j                  r|j                  | j                         t        j                  ||      x| _
        }t        j                  || j                        | _        y )NTupgrades
downgradesop.sa.)	compare_typecompare_server_defaulttarget_metadataupgrade_tokendowngrade_tokenalembic_module_prefixsqlalchemy_module_prefixinclude_objectinclude_name
connectionopts)r   connectconnr   r4   r5   r   updater   	configurecontextr   AutogenContextautogen_context)r   r   ctx_optsr   s       r+   setUpzAutogenTest.setUp[  s    99,,..	D &*#ww'+%*(-51

 OOD//0!1!;!;("
 	
w  #11'477Cr-   c                8    | j                   j                          y r&   )r   closer   s    r+   tearDownzAutogenTest.tearDownp  s    		r-   Nc                    ||| j                   j                  d<   ||g| j                   _        ||g| j                   _        | j                   S )Ninclude_schemas)r   r   _object_filters_name_filters)r   object_filtersname_filtersr   s       r+   _update_contextzAutogenTest._update_contexts  sZ     &;JD  %%&78%4B3CD  0#2>D  .###r-   )NNN)rd   re   rf   r   ri   r   r   rh   r   r   r   r   r   rj   r-   r+   r   r   @  sd       &(NN') )  D* GK	$r-   r   c                  ,    e Zd ZddeeddfdZd Zd Zy)AutogenFixtureTestFNc	                   |r0| j                   j                  }	|	j                  }
|x|	_        |	_        	 ||c| _        }t        j                  | j                        D ]  }|j                  | j                           | j                   j                         5 }dd|dddd|||d
}|r|j                  |       t        j                  ||      x| _        }t        j                  ||      }t        j                   g       }t#        j$                  ||       |r2|cd d d        |r%| j                   j                  }	
x|	_        |	_        S S |j'                         cd d d        |r%| j                   j                  }	
x|	_        |	_        S S # 1 sw Y   nxY w	 |r%| j                   j                  }	
x|	_        |	_        y y # |r%| j                   j                  }	
x|	_        |	_        w w xY w)	NTr   r   r   r   )
r   r   r   r   r   r   r   r   r   r   r   r   )r   dialectmax_identifier_length#_user_defined_max_identifier_length_alembic_metadatar   to_listr   r   r   r   r   r   r   r   r   
UpgradeOpsr   _produce_net_changesas_diffs)r   r   r   r   r   r   r   
return_opsr   r   existing_lengthmodel_metadatarZ   r   r   r   r   uos                     r+   _fixturezAutogenFixtureTest._fixture  s    !ii''G%;;O &&G);%	$572D"N\\$"8"89 (TYY'( ""$ )$(.2'5%/'3-205&4$0'6 OOD))9)C)C#(* w #&"4"4Wn"M^^+11/2F1) )8 %))++ $$-? % ;;=5) )8 %))++ $$-? %9) ) )8 %))++ $$-? %$))++ $$-? %s1   A#G BF	G F	G FG )G*c                B    t                t        j                  | _        y r&   )r"   r   r   r   r   s    r+   r   zAutogenFixtureTest.setUp  s    II	r-   c                    t        | d      r?t        j                  | j                        D ]  }|j	                  | j
                          t                y )Nr   )hasattrr   r   r   r   r   r!   )r   rZ   s     r+   r   zAutogenFixtureTest.tearDown  sA    4,-\\$"8"89 &

499%&r-   )rd   re   rf   r4   r5   r  r   r   rj   r-   r+   r   r     s&    
 .*"6$pr-   r   )4
__future__r   typingr   r   r   
sqlalchemyr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r    r   r   r   ddl.baser   	migrationr   
operationsr   testingr   r    testing.envr!   r"   setr#   rh   listens_forr,   r3   r4   r5   r7   rl   r   r   r   rj   r-   r+   <module>r     s    "     &   !      +     '      )    , &"u H $ 5/0' 1'  7  6! s !_ _Dm m`4$ 4$n<$, <$~A Ar-   