U
    ^g%i                     @   s   d dl mZ d dlmZ d dlmZ G dd dZG dd dZG dd	 d	ZG d
d dZ	G dd dZ
G dd dZG dd dZdS )    )zip_longest)schema)
ClauseListc                   @   s$   e Zd Zdd Zdd Zdd ZdS )CompareTablec                 C   s
   || _ d S N)table)selfr    r	   \/var/www/html/api-medvista/venv/lib/python3.8/site-packages/alembic/testing/schemacompare.py__init__   s    zCompareTable.__init__c                 C   sv   | j j|jks| j j|jkr dS t| j j|jD ]@\}}|d krH|d k	sX|d kr^|d k	r^ dS t||kr0 dS q0dS NFT)r   namer   r   cCompareColumn)r   otherc1c2r	   r	   r
   __eq__   s    zCompareTable.__eq__c                 C   s   |  | S r   r   r   r   r	   r	   r
   __ne__   s    zCompareTable.__ne__N__name__
__module____qualname__r   r   r   r	   r	   r	   r
   r      s   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )r   c                 C   s
   || _ d S r   )column)r   r   r	   r	   r
   r       s    zCompareColumn.__init__c                 C   s   | j j|jko| j j|jkS r   )r   r   Znullabler   r	   r	   r
   r   #   s    zCompareColumn.__eq__c                 C   s   |  | S r   r   r   r	   r	   r
   r   *   s    zCompareColumn.__ne__Nr   r	   r	   r	   r
   r      s   r   c                   @   s.   e Zd ZdddZdd Zdd Zdd	 Zd
S )CompareIndexFc                 C   s   || _ || _d S r   )index	name_only)r   r   r   r	   r	   r
   r   /   s    zCompareIndex.__init__c                 C   sD   | j r| jj|jkS tt| jtt|ko>| jj|jkS d S r   )r   r   r   strr   ZCreateIndexZdialect_kwargsr   r	   r	   r
   r   3   s    zCompareIndex.__eq__c                 C   s   |  | S r   r   r   r	   r	   r
   r   =   s    zCompareIndex.__ne__c                 C   sN   t | jj }z| j}W n tk
r6   t|}Y nX d| jj d| dS )Nz<CompareIndex (z)>)r   r   Zexpressionscompilestring	Exceptionr   r   )r   exprZexpr_strr	   r	   r
   __repr__@   s    zCompareIndex.__repr__N)F)r   r   r   r   r   r   r%   r	   r	   r	   r
   r   .   s   

r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )CompareCheckConstraintc                 C   s
   || _ d S r   
constraintr   r(   r	   r	   r
   r   J   s    zCompareCheckConstraint.__init__c                 C   sT   t |tjoR| jj|jkoRt| jjt|jkoR|jj| jjjkoR|jj| jjjkS r   )
isinstancer   ZCheckConstraintr(   r   r   Zsqltextr   r   r	   r	   r
   r   M   s    zCompareCheckConstraint.__eq__c                 C   s   |  | S r   r   r   r	   r	   r
   r   V   s    zCompareCheckConstraint.__ne__Nr   r	   r	   r	   r
   r&   I   s   	r&   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )CompareForeignKeyc                 C   s
   || _ d S r   r'   r)   r	   r	   r
   r   [   s    zCompareForeignKey.__init__c                 C   s   t |tjo<| jj|jko<|jj| jjjko<|jj| jjjk}|sFdS t| jj|jD ]@\}}|d krn|d k	s~|d kr|d k	r dS t||krV dS qVdS r   )	r*   r   ZForeignKeyConstraintr(   r   r   r   columnsr   r   r   r1r   r   r	   r	   r
   r   ^   s&    zCompareForeignKey.__eq__c                 C   s   |  | S r   r   r   r	   r	   r
   r   p   s    zCompareForeignKey.__ne__Nr   r	   r	   r	   r
   r+   Z   s   r+   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )ComparePrimaryKeyc                 C   s
   || _ d S r   r'   r)   r	   r	   r
   r   u   s    zComparePrimaryKey.__init__c                 C   s   t |tjo<| jj|jko<|jj| jjjko<|jj| jjjk}|sFdS t| jj|jD ]@\}}|d krn|d k	s~|d kr|d k	r dS t||krV dS qVdS r   )	r*   r   ZPrimaryKeyConstraintr(   r   r   r   r,   r   r-   r	   r	   r
   r   x   s&    zComparePrimaryKey.__eq__c                 C   s   |  | S r   r   r   r	   r	   r
   r      s    zComparePrimaryKey.__ne__Nr   r	   r	   r	   r
   r/   t   s   r/   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )CompareUniqueConstraintc                 C   s
   || _ d S r   r'   r)   r	   r	   r
   r      s    z CompareUniqueConstraint.__init__c                 C   s   t |tjo<| jj|jko<|jj| jjjko<|jj| jjjk}|sFdS t| jj|jD ]@\}}|d krn|d k	s~|d kr|d k	r dS t||krV dS qVdS r   )	r*   r   ZUniqueConstraintr(   r   r   r   r,   r   r-   r	   r	   r
   r      s&    zCompareUniqueConstraint.__eq__c                 C   s   |  | S r   r   r   r	   r	   r
   r      s    zCompareUniqueConstraint.__ne__Nr   r	   r	   r	   r
   r0      s   r0   N)	itertoolsr   Z
sqlalchemyr   Zsqlalchemy.sql.elementsr   r   r   r   r&   r+   r/   r0   r	   r	   r	   r
   <module>   s   