
    +h                         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gZ
i Zd Zd Z G d de      Z G d de      Zd Zd Zy)    N   )config)
exclusions   )event)schema)types)OrderedDictTableColumnc                     t        |      D ci c]&  }|j                  d      s||j                  |      ( }}|j                  t               t        j                  t        j                  d      r d|vr_d|vr[d|vrWd|v sd|v rd|d<   nId	|d<   nCt        j                  t        j                  d
      rd|vrd|vrd|vrd|v sd|v rd|d<   nd	|d<   t        j                  t        j                  d      r| d   }t        j                  j                  j                  j                  }| D cg c]/  }t        |t        j                        r|j                   D ]  }| 1 }}}|D ]w  }|j"                  }	t        |	t        j                        r|	j$                  j&                  }
n ||	      d   }
|
|k(  sQ|j(                  d|_        |j*                  qd|_        y t        j,                  | i |S c c}w c c}}w )z8A schema.Table wrapper/hook for dialect-specific tweaks.test_mysqlmysql_engine
mysql_typeautoload_withtest_needs_fktest_needs_acidInnoDBMyISAMmariadbmariadb_enginemariadb_typefirebirdr   CASCADE)list
startswithpopupdatetable_optionsr   againstr   _currentdbdialectidentifier_preparerunformat_identifiers
isinstancer   r   foreign_keys_colspectablenameondeleteonupdater   )argskwk	test_opts
table_nameunpackcolfkfksrefr+   s              L/var/www/html/venv/lib/python3.12/site-packages/sqlalchemy/testing/schema.pyr   r      s    (,BxI!1<<3HBFF1IIIIIIm&//73"$B&r))+/@I/M%->"%->"			FOOY	7B&b(r))+/@I/M'/#$'/#$ &//:6!W
""66KK 
#v}}-&&	
  

 
  	,B++C#v}}-yy~~
 c{1~z!;;&"+BK;;&"+BK	,  <<$$$q JB
s   G;G;34H c                     t        |      D ci c]&  }|j                  d      s||j                  |      ( }}t        j                  j
                  j                  t              s*| D cg c]  }t        |t        j                        r|! } }t        j                  | i |}|j                  dd      r|j                  dd      ro|j                  |j                  d|_        d|j                  d<   t!        j"                  t        j$                  dd      rd }t'        j(                  |d	|d
       |S c c}w c c}w )z9A schema.Column wrapper/hook for dialect-specific tweaks.r   test_needs_autoincrementFprimary_keyTr   oraclec           	          | j                  t        j                  t        t        j
                  j                  |j                  dz   | j                  z   dz         d             y )N__seqT)optional)_init_itemsr   Sequence_truncate_namer   r#   r$   r+   )ctbls     r8   add_seqzColumn.<locals>.add_seql   sL    OO&"II--sxx#~/F/O "&	    after_parent_attach)	propagate)r   r   r   r   requirementsforeign_key_ddlenabled_for_configr'   r   
ForeignKeyr   getdefaultserver_defaultautoincrementinfor   r!   r"   r   listen)r.   r/   r0   r1   argr4   rF   s          r8   r   r   U   s    (,BxI!1<<3HBFF1IIII..AA&I#N:c6;L;L+MNN
--
$
$C}}/7BFFu= ;;3#5#5#= $C 04+, fooz8D LL3WMJ? J Os   D<D<,EEc                   "    e Zd ZdZd Zd Zd Zy)eq_type_affinitya  Helper to compare types inside of datastructures based on affinity.

    E.g.::

        eq_(
            inspect(connection).get_columns("foo"),
            [
                {
                    "name": "id",
                    "type": testing.eq_type_affinity(sqltypes.INTEGER),
                    "nullable": False,
                    "default": None,
                    "autoincrement": False,
                },
                {
                    "name": "data",
                    "type": testing.eq_type_affinity(sqltypes.NullType),
                    "nullable": True,
                    "default": None,
                    "autoincrement": False,
                },
            ],
        )

    c                 8    t        j                  |      | _        y N)sqltypesto_instancetargetselfr[   s     r8   __init__zeq_type_affinity.__init__   s    **62rG   c                 F    | j                   j                  |j                  u S rX   r[   _type_affinityr]   others     r8   __eq__zeq_type_affinity.__eq__   s    {{))U-A-AAArG   c                 F    | j                   j                  |j                  uS rX   r`   rb   s     r8   __ne__zeq_type_affinity.__ne__   s    {{))1E1EEErG   N__name__
__module____qualname____doc__r^   rd   rf    rG   r8   rV   rV   z   s    43BFrG   rV   c                   "    e Zd ZdZd Zd Zd Zy)eq_clause_elementz3Helper to compare SQL structures based on compare()c                     || _         y rX   )r[   r\   s     r8   r^   zeq_clause_element.__init__   s	    rG   c                 8    | j                   j                  |      S rX   r[   comparerb   s     r8   rd   zeq_clause_element.__eq__   s    {{""5))rG   c                 :    | j                   j                  |       S rX   rq   rb   s     r8   rf   zeq_clause_element.__ne__   s    ;;&&u---rG   Nrg   rl   rG   r8   rn   rn      s    =*.rG   rn   c                     t        |      | j                  kD  r:|dt        | j                  dz
  d       dz   t        t	        |      dz        dd  z   S |S )Nr      r>   @   r   )lenmax_identifier_lengthmaxhexhash)r$   r+   s     r8   rC   rC      s`    
4y7000S66:A>?$t*r/"12&'	
 rG   c                    t               }dfd	}i t        fd       }t        | t        f|||d      }	 t	        j
                  d      j                  j                  dd      }||_
        |S # t        t        f$ r Y w xY w)Nc                     || _         || _        | | j                  |<   | |<   t        | j                  ||        |r'| | j                  |<   t        | j                  ||        y y rX   )r+   value__members__setattr	__class__)r]   r+   r~   aliasvalue_to_members       r8   r^   zpep435_enum.<locals>.__init__   sc    	
!%!%d+&*DU#DNNE40 rG   c                     |   S rX   rl   )clsr~   r   s     r8   rN   zpep435_enum.<locals>.get   s    u%%rG   )r   r^   rN   r   rh   __main__rX   )r
   classmethodtypeobjectsys	_getframe	f_globalsrN   AttributeError
ValueErrorri   )r+   r   r^   rN   someenummoduler   s         @r8   pep435_enumr      s    -K1 O& & 		##FHq!++//
JG $O J' s   /A3 3BB)r    r   r   r   r   r	   rY   utilr
   __all__r    r   r   r   rV   rn   rC   r   rl   rG   r8   <module>r      s^            H
;%|"J"Fv "FJ
. 
.#rG   