o
    h                     @   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                   @   $   e Zd Zdd Zdd Zdd ZdS )CompareTablec                 C   
   || _ d S N)table)selfr	    r   q/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/alembic/testing/schemacompare.py__init__      
zCompareTable.__init__c                 C   sv   | j j|jks| j j|jkrdS t| j j|jD ] \}}|d u r$|d us,|d u r/|d ur/ dS t||kr8 dS qdS NFT)r	   namer   r   cCompareColumn)r
   otherc1c2r   r   r   __eq__   s   zCompareTable.__eq__c                 C      |  | S r   r   r
   r   r   r   r   __ne__      zCompareTable.__ne__N__name__
__module____qualname__r   r   r   r   r   r   r   r      s    r   c                   @   r   )r   c                 C   r   r   )column)r
   r    r   r   r   r       r   zCompareColumn.__init__c                 C   s   | j j|jko| j j|jkS r   )r    r   nullabler   r   r   r   r   #   s   zCompareColumn.__eq__c                 C   r   r   r   r   r   r   r   r   *   r   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   s@   | j r
| jj|jkS tt| jtt|ko| jj|jkS r   )r$   r#   r   strr   CreateIndexdialect_kwargsr   r   r   r   r   3   s   zCompareIndex.__eq__c                 C   r   r   r   r   r   r   r   r   =   r   zCompareIndex.__ne__c                 C   sL   t | jj }z| j}W n ty   t|}Y nw d| jj d| dS )Nz<CompareIndex (z)>)r   r#   expressionscompilestring	Exceptionr%   r   )r
   expr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                   @   r   )CompareCheckConstraintc                 C   r   r   
constraintr
   r2   r   r   r   r   J   r   zCompareCheckConstraint.__init__c                 C   sT   t |tjo)| jj|jko)t| jjt|jko)|jj| jjjko)|jj| jjjkS r   )
isinstancer   CheckConstraintr2   r   r%   sqltextr	   r   r   r   r   r   M   s   zCompareCheckConstraint.__eq__c                 C   r   r   r   r   r   r   r   r   V   r   zCompareCheckConstraint.__ne__Nr   r   r   r   r   r0   I   s    	r0   c                   @   r   )CompareForeignKeyc                 C   r   r   r1   r3   r   r   r   r   [   r   zCompareForeignKey.__init__c                 C      t |tjo| jj|jko|jj| jjjko|jj| jjjk}|s#dS t| jj|jD ] \}}|d u r7|d us?|d u rB|d urB dS t||krK dS q+dS r   )	r4   r   ForeignKeyConstraintr2   r   r	   r   columnsr   r
   r   r1r   r   r   r   r   r   ^   s"   zCompareForeignKey.__eq__c                 C   r   r   r   r   r   r   r   r   p   r   zCompareForeignKey.__ne__Nr   r   r   r   r   r7   Z   s    r7   c                   @   r   )ComparePrimaryKeyc                 C   r   r   r1   r3   r   r   r   r   u   r   zComparePrimaryKey.__init__c                 C   r8   r   )	r4   r   PrimaryKeyConstraintr2   r   r	   r   r:   r   r;   r   r   r   r   x   "   zComparePrimaryKey.__eq__c                 C   r   r   r   r   r   r   r   r      r   zComparePrimaryKey.__ne__Nr   r   r   r   r   r=   t       r=   c                   @   r   )CompareUniqueConstraintc                 C   r   r   r1   r3   r   r   r   r      r   z CompareUniqueConstraint.__init__c                 C   r8   r   )	r4   r   UniqueConstraintr2   r   r	   r   r:   r   r;   r   r   r   r      r?   zCompareUniqueConstraint.__eq__c                 C   r   r   r   r   r   r   r   r      r   zCompareUniqueConstraint.__ne__Nr   r   r   r   r   rA      r@   rA   N)	itertoolsr   
sqlalchemyr   sqlalchemy.sql.elementsr   r   r   r"   r0   r7   r=   rA   r   r   r   r   <module>   s    