a
    8gq                     @  s   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ddZdd Zdd Zdd ZG dd dZG dd dZG dd dZdd Zdd ZdS )     )annotationsN   )config)
exclusions   )event)schema)types)mapped_column)OrderedDictTableColumnzschema.Table)returnc                    s    fddt  D } t ttjdrjd vrd vrd vrd|v sVd|v r`d	 d< qd
 d< nHttjdrd vrd vrd vrd|v sd|v rd	 d< nd
 d< tj| i  S )z8A schema.Table wrapper/hook for dialect-specific tweaks.c                   s"   i | ]}| d r| |qS Ztest_
startswithpop.0kkw v/var/www/vosh/data/www/fastworkle.ru/webshop-tgbot-v.1.0/venv/lib/python3.9/site-packages/sqlalchemy/testing/schema.py
<dictcomp>       zTable.<locals>.<dictcomp>ZmysqlZmysql_engineZ
mysql_typeZautoload_withZtest_needs_fkZtest_needs_acidZInnoDBZMyISAMZmariadbZmariadb_engineZmariadb_type)	listupdatetable_optionsr   againstr   _currentr   r   )argsr   	test_optsr   r   r   r      s.    



c                  O  s   t t| |S )z>An orm.mapped_column wrapper/hook for dialect-specific tweaks.)_schema_column_orm_mapped_columnr!   r   r   r   r   r
   ?   s    r
   c                  O  s   t tj| |S )z9A schema.Column wrapper/hook for dialect-specific tweaks.)r#   r   r   r%   r   r   r   r   E   s    c                   s    fddt  D }tjjts2dd |D }| |i  }| tju rP|}n|j}|ddr ddr|j	d u r|j
d u rd|_d|jd< ttjd	rd
d }tj|d|dd |S )Nc                   s"   i | ]}| d r| |qS r   r   r   r   r   r   r   L   r   z"_schema_column.<locals>.<dictcomp>c                 S  s   g | ]}t |tjs|qS r   )
isinstancer   Z
ForeignKey)r   argr   r   r   
<listcomp>O   r   z"_schema_column.<locals>.<listcomp>Ztest_needs_autoincrementFZprimary_keyToraclec                 S  s2   |  tjttjj|jd | j d dd d S )N_Z_seqT)optional)Z_init_itemsr   Sequence_truncate_namer   dbdialectname)cZtblr   r   r   add_seqe   s    z_schema_column.<locals>.add_seqZafter_parent_attach)	propagate)r   r   requirementsZforeign_key_ddlZenabled_for_configr   r   columngetdefaultZserver_defaultZautoincrementinfor   r   r    r   listen)factoryr!   r   r"   Z	constructcolr2   r   r   r   r#   K   s"    


r#   c                   @  s(   e Zd ZdZdd Zdd Zdd ZdS )	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                 C  s   t || _d S N)sqltypesZto_instancetargetselfr?   r   r   r   __init__   s    zeq_type_affinity.__init__c                 C  s   | j j|ju S r=   r?   Z_type_affinityrA   otherr   r   r   __eq__   s    zeq_type_affinity.__eq__c                 C  s   | j j|juS r=   rC   rD   r   r   r   __ne__   s    zeq_type_affinity.__ne__N__name__
__module____qualname____doc__rB   rF   rG   r   r   r   r   r<   s   s   r<   c                   @  s(   e Zd ZdZdd Zdd Zdd ZdS )	eq_compile_typez,similar to eq_type_affinity but uses compilec                 C  s
   || _ d S r=   r?   r@   r   r   r   rB      s    zeq_compile_type.__init__c                 C  s   | j | kS r=   r?   compilerD   r   r   r   rF      s    zeq_compile_type.__eq__c                 C  s   | j | kS r=   rO   rD   r   r   r   rG      s    zeq_compile_type.__ne__NrH   r   r   r   r   rM      s   rM   c                   @  s(   e Zd ZdZdd Zdd Zdd ZdS )	eq_clause_elementz3Helper to compare SQL structures based on compare()c                 C  s
   || _ d S r=   rN   r@   r   r   r   rB      s    zeq_clause_element.__init__c                 C  s   | j |S r=   r?   comparerD   r   r   r   rF      s    zeq_clause_element.__eq__c                 C  s   | j | S r=   rR   rD   r   r   r   rG      s    zeq_clause_element.__ne__NrH   r   r   r   r   rQ      s   rQ   c                 C  sJ   t || jkrB|dt| jd d d tt|d dd   S |S d S )Nr      r*   @   r   )lenZmax_identifier_lengthmaxhexhash)r/   r0   r   r   r   r-      s    r-   c              	     s   t  }d	 fdd	}i  t fdd}t| tf|||d}ztdjdd}W n tt	fyl   Y n0 |d ur|||_
|S )
Nc                   sL   || _ || _| | j|< |  |< t| j||  |rH| | j|< t| j||  d S r=   )r0   value__members__setattr	__class__)rA   r0   rZ   aliasZvalue_to_memberr   r   rB      s    

zpep435_enum.<locals>.__init__c                   s    | S r=   r   )clsrZ   r_   r   r   r6      s    zpep435_enum.<locals>.get)r[   rB   r6   r   rI   __main__)N)r   classmethodtypeobjectsys	_getframe	f_globalsr6   AttributeError
ValueErrorrJ   )r0   r[   rB   r6   Zsomeenummoduler   r_   r   pep435_enum   s"    

rk   )
__future__r   re    r   r   r   r   r	   r>   Zormr
   r$   utilr   __all__r   r   r   r#   r<   rM   rQ   r-   rk   r   r   r   r   <module>	   s&   %(%