
    Zix7                    Z   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% dd l&m'Z' dd!l&m(Z(  e)       Z*d"e+d#<    ejX                  ed$      d%        Z-d& Z.e.Z/d'e+d(<   d)Z0d'e+d*<    G d+ d,      Z1 G d- d.      Z2 G d/ d0      Z3 G d1 d2e3      Z4 G d3 d4e3      Z5y))5    )annotations)Any)Dict)Literal)overload)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     c/home/portmadness/app/.venv/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_objectr5   -   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rK   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@   TrA   r*   rC   FrJ   rD   rW   )rS   rG   rH   rI   streetuq_emailrU   rL   rM   rN   
   rP   rQ   rR   user_idrY   zamount > -1rT   itemdescriptionzorder.order_idzlen(description) > 5)r<   r   r   r   r   r   r   r   r   r   r   r
   rZ   s      r-   _get_model_schemazModelOne._get_model_schemak   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]   re    r/   r-   r9   r9   9   s8    4LFC* *X , ,r/   r9   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)NamingConvModelr:   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_qrU   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   )r[   r\   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_conventionrv   rw   TrA   rz   r{   r|   r~   token_x2check1rU   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   )r[   r   r\   s      r-   re   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)	rf   rg   rh   ri   configure_optsr   rk   r]   re   rl   r/   r-   rn   rn      sQ    4L148N%55K! 6 6p ( (r/   rn   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diffr2   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)rf   rg   rh   r   rl   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_diffsC  s;      	A!T"..q111		1s   *;9;c                "    t         j                  S r(   )r!   dbr[   s    r-   	_get_bindzAutogenTest._get_bindJ  s    yyr/   zDict[Any, Any]r   c                    t                | j                         | _        | j                         | _        | j                  j                  | j                         | j                         | _        y r(   )r$   r   r   r]   m1
create_allre   m2r   s    r-   setup_classzAutogenTest.setup_classP  sJ    ==?##%#((#&&(r/   c                b    | j                   j                  | j                         t                y r(   )r   drop_allr   r#   r   s    r-   teardown_classzAutogenTest.teardown_classX  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   r6   r7   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.tearDownr  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_contextu  sZ     &;JD  %%&78%4B3CD  0#2>D  .###r/   )NNN)rf   rg   rh   r   rk   r   r   rj   r   r   r   r   r   rl   r/   r-   r   r   B  sd       &(NN') )  D* GK	$r/   r   c                      e Zd Ze	 	 	 	 ddd	 	 	 	 	 	 	 dd       Ze	 	 	 	 dddd	 	 	 	 	 	 	 dd       Zddeeddf	 	 	 	 	 	 	 ddZd	 Zd
 Zy)AutogenFixtureTest.)max_identifier_lengthc                    y r(   rl   	r   r   r   r   r   r   r   
return_opsr   s	            r-   _fixturezAutogenFixtureTest._fixture  s     r/   )r   r   c                    y r(   rl   r   s	            r-   r   zAutogenFixtureTest._fixture  s     r/   FNc	                   |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   dialectr   #_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   r   r   r   existing_lengthmodel_metadatar\   r   r   r   r   uos                     r-   r   z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   r\   s     r-   r   zAutogenFixtureTest.tearDown  sA    4,-\\$"8"89 &

499%&r/   )....)r   r   r   r   r   zLiteral[True]returnzops.UpgradeOps)r   r   r   r   r   zLiteral[False]r  z	list[Any])r   r   r   r   r   boolr  zops.UpgradeOps | list[Any])	rf   rg   rh   r   r   r6   r7   r   r   rl   r/   r-   r   r     s    
  "  " 
  
  &)!  # 
 " .* "6$6$ 6$ 6$ 
$6$pr/   r   )6
__future__r   typingr   r   r   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%   rj   listens_forr.   r5   r6   r7   r9   rn   r   r   r   rl   r/   r-   <module>r     s    "       &   !      +     '      )    , &"u H $ 5/0' 1'  7  6! s !_ _Dm m`4$ 4$n<$, <$~^ ^r/   