
    hQ                        d dl mZ 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lmZ ddgZi ZddZd Zd Zd Z G d d      Z G d d      Z G d d      Zd Zd Zy)    )annotationsN   )config)
exclusions   )event)schema)types)mapped_column)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                  | i |S 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)list
startswithpopupdatetable_optionsr   againstr   _currentr	   r   )argskwk	test_optss       BD:\EasyAligner\venv\Lib\site-packages\sqlalchemy/testing/schema.pyr   r      s     (,BxIx!1<<3HBFF1IxIIIIm&//73"$B&r))+/@I/M%->" &.>"			FOOY	7B&b(r))+/@I/M'/#$'/#$<<$$$? Js
   C,C,c                 $    t        t        | |      S )z>An orm.mapped_column wrapper/hook for dialect-specific tweaks.)_schema_column_orm_mapped_columnr#   r$   s     r'   r   r   ?   s     ,dB77    c                 8    t        t        j                  | |      S )z9A schema.Column wrapper/hook for dialect-specific tweaks.)r)   r	   r   r+   s     r'   r   r   E   s     &--r22r,   c                   t        |      D ci c]&  }|j                  d      s||j                  |      ( }}t        j                  j
                  j                  t              s*|D cg c]  }t        |t        j                        r|! }} | |i |}| t        j                  u r|}n|j                  }|j                  dd      r|j                  dd      rn|j                  |j                  d|_        d|j                   d<   t#        j$                  t        j&                  d      rd }t)        j*                  |d|d	       |S c c}w c c}w )
Nr   test_needs_autoincrementFprimary_keyT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   dbdialectname)ctbls     r'   add_seqz_schema_column.<locals>.add_seqe   sL    OO&"II--sxx#~/F/O "&	r,   after_parent_attach)	propagate)r   r   r   r   requirementsforeign_key_ddlenabled_for_config
isinstancer	   
ForeignKeyr   columngetdefaultserver_defaultautoincrementinfor   r!   r"   r   listen)	factoryr#   r$   r%   r&   arg	constructcolr>   s	            r'   r)   r)   K   s+   '+BxIx!1<<3HBFF1IxII..AA&I#Nt:c6;L;L+MtN$$I&--}}/7BFFu= ;;3#5#5#= $C 04+, foox8 LL3WMI J Os   EE,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selfrW   s     r'   __init__zeq_type_affinity.__init__   s    **62r,   c                F    | j                   j                  |j                  u S rT   rW   _type_affinityrY   others     r'   __eq__zeq_type_affinity.__eq__   s    {{))U-A-AAAr,   c                F    | j                   j                  |j                  uS rT   r\   r^   s     r'   __ne__zeq_type_affinity.__ne__   s    {{))1E1EEEr,   N__name__
__module____qualname____doc__rZ   r`   rb    r,   r'   rR   rR   s   s    43BFr,   rR   c                  "    e Zd ZdZd Zd Zd Zy)eq_compile_typez,similar to eq_type_affinity but uses compilec                    || _         y rT   rW   rX   s     r'   rZ   zeq_compile_type.__init__   	    r,   c                <    | j                   |j                         k(  S rT   rW   compiler^   s     r'   r`   zeq_compile_type.__eq__       {{emmo--r,   c                <    | j                   |j                         k7  S rT   ro   r^   s     r'   rb   zeq_compile_type.__ne__   rq   r,   Nrc   rh   r,   r'   rj   rj      s    6..r,   rj   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 rT   rl   rX   s     r'   rZ   zeq_clause_element.__init__   rm   r,   c                8    | j                   j                  |      S rT   rW   comparer^   s     r'   r`   zeq_clause_element.__eq__   s    {{""5))r,   c                :    | j                   j                  |       S rT   rw   r^   s     r'   rb   zeq_clause_element.__ne__   s    ;;&&u---r,   Nrc   rh   r,   r'   rt   rt      s    =*.r,   rt   c                    t        |      | j                  kD  r:|dt        | j                  dz
  d       dz   t        t	        |      dz        dd  z   S |S )Nr      r3   @   r   )lenmax_identifier_lengthmaxhexhash)r:   r;   s     r'   r8   r8      s`    
4y7000S66:A>?$t*r/"12&'	
 r,   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 rT   )r;   value__members__setattr	__class__)rY   r;   r   aliasvalue_to_members       r'   rZ   zpep435_enum.<locals>.__init__   sc    	
!%!%d+&*DU#DNNE40 r,   c                    |   S rT   rh   )clsr   r   s     r'   rG   zpep435_enum.<locals>.get   s    u%%r,   )r   rZ   rG   r   rd   __main__rT   )r   classmethodtypeobjectsys	_getframe	f_globalsrG   AttributeError
ValueErrorre   )r;   r   rZ   rG   someenummoduler   s         @r'   pep435_enumr      s    -K1 O& & 		##FHq!++//
JG $O J' s   /A3 3BB)returnzschema.Table)
__future__r   r    r   r   r   r	   r
   rU   ormr   r*   utilr   __all__r    r   r   r)   rR   rj   rt   r8   r   rh   r,   r'   <module>r      sr    # 
       5 H
"%J83%P"F "FJ
. 
.
. 
.#r,   