
    hgC                       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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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  ede      Z ede      Z ede      Z ede      Z G d d      Z G d dee
eef         Z G d d eeef         Z G d! d"ee         Z G d# d$      Z 	 d'	 	 	 	 	 d(d&Z!y%))    )annotations)filterfalse)AbstractSet)Any)Callable)cast)
Collection)Dict)Iterable)Iterator)List)Mapping)NoReturn)Optional)Set)Tuple)TYPE_CHECKING)TypeVar)Union   )Self_T)bound_S_KT_VTc                  8    e Zd ZdZddZddZd	dZd
dZddZy)ReadOnlyContainer c                F    t        d| j                  j                  z        )Nz&%s object is immutable and/or readonly	TypeError	__class____name__selfargkws      HD:\EasyAligner\venv\Lib\site-packages\sqlalchemy/util/_py_collections.py	_readonlyzReadOnlyContainer._readonly)   s!    4t~~7N7NN
 	
    c                F    t        d| j                  j                  z        )Nz%s object is immutabler!   r%   s      r)   
_immutablezReadOnlyContainer._immutable.   s    04>>3J3JJKKr+   c                $    | j                          y Nr*   r&   keys     r)   __delitem__zReadOnlyContainer.__delitem__1       r+   c                $    | j                          y r/   r0   r&   r2   values      r)   __setitem__zReadOnlyContainer.__setitem__4   r4   r+   c                $    | j                          y r/   r0   r6   s      r)   __setattr__zReadOnlyContainer.__setattr__7   r4   r+   Nr'   r   r(   r   returnr   )r2   r   r<   r   )r2   r   r7   r   r<   r   )r2   strr7   r   r<   r   )	r$   
__module____qualname__	__slots__r*   r-   r3   r8   r:   r   r+   r)   r   r   &   s!    I

Lr+   r   c                  T    e Zd Zerd
dZddZddZddZdddZddZ	dddZ
dd	Zy)ImmutableDictBasec                     y r/   r   clsargss     r)   __new__zImmutableDictBase.__new__>   s    cr+   c                     y r/   r   rD   s     r)   __init__zImmutableDictBase.__init__@   s    sr+   c                $    | j                          y r/   )r-   r%   s      r)   r*   zImmutableDictBase._readonlyB   s    r+   c                $    | j                          y r/   r0   r&   s    r)   clearzImmutableDictBase.clearE   r4   r+   Nc                $    | j                          y r/   r0   r&   r2   defaults      r)   popzImmutableDictBase.popH   r4   r+   c                $    | j                          y r/   r0   rL   s    r)   popitemzImmutableDictBase.popitemK   r4   r+   c                $    | j                          y r/   r0   rO   s      r)   
setdefaultzImmutableDictBase.setdefaultN   r4   r+   c                $    | j                          y r/   r0   r%   s      r)   updatezImmutableDictBase.updateQ   r4   r+   )rF   r   r<   r   )rF   r   r;   r<   r   r/   )r2   r   rP   zOptional[Any]r<   r   )r$   r>   r?   r   rG   rI   r*   rM   rQ   rS   rU   rW   r   r+   r)   rB   rB   ;   s)    1*r+   rB   c                       e Zd Zd Z	 	 ddZd Z	 d	 	 	 ddZ	 d	 	 	 	 	 ddZ	 	 	 	 ddZddZ	ddZ
	 	 	 	 d fd	Z	 	 	 	 d fd
Z xZS )immutabledictc                \    t         j                  |       }t        j                  |g|  |S r/   )rB   rG   dictrI   )rE   rF   news      r)   rG   zimmutabledict.__new__V   s(    '',c!D!
r+   c                     y r/   r   )r&   rF   s     r)   rI   zimmutabledict.__init__[   s     	r+   c                &    t         t        |       ffS r/   )rZ   r\   rL   s    r)   
__reduce__zimmutabledict.__reduce__`   s    tDzm++r+   c                    |s| S t         j                  | j                        }t        j	                  ||        t        j                  ||       |S r/   rB   rG   r#   r\   rI   rW   )r&   _immutabledict__dr]   s      r)   unionzimmutabledict.unionc   sA     K''7c4 C
r+   c                    |s|s| S t         j                  | j                        }t        j	                  ||        |rt        j                  ||       t        j                  ||       |S r/   rb   )r&   rc   r(   r]   s       r)   _union_w_kwzimmutabledict._union_w_kwn   sT     2K''7c4 KKS!C
r+   c                    d }|D ]R  }|s|5t         j                  | j                        }t        j	                  ||        t        j                  ||       T || S |S r/   rb   )r&   dictsr]   ds       r)   
merge_withzimmutabledict.merge_with|   s\     A;+33DNNCCMM#t,C#  ;K
r+   c                2    dt         j                  |       z  S )Nzimmutabledict(%s))r\   __repr__rL   s    r)   rl   zimmutabledict.__repr__   s    "T]]4%888r+   c                $    | j                          y r/   r0   )r&   _immutabledict__values     r)   __ior__zimmutabledict.__ior__   r4   r+   c                4    t        t        | 	  |            S r/   )rZ   super__or__r&   rn   r#   s     r)   rr   zimmutabledict.__or__   s     GN7#
 	
r+   c                4    t        t        | 	  |            S r/   )rZ   rq   __ror__rs   s     r)   ru   zimmutabledict.__ror__   s     GOG$
 	
r+   )rF   z3Union[Mapping[_KT, _VT], Iterable[Tuple[_KT, _VT]]]r/   )rc   Optional[Mapping[_KT, _VT]]r<   immutabledict[_KT, _VT])rc   rv   r(   r   r<   rw   )rh   rv   r<   rw   r<   r=   )rn   r   r<   r   )rn   zMapping[_KT, _VT]r<   rw   )r$   r>   r?   rG   rI   r`   rd   rf   rj   rl   ro   rr   ru   __classcell__r#   s   @r)   rZ   rZ   U   s    
H
, 26	.		 	 26.=@	 1	 9
(
	 

(
	 
 
r+   rZ   c                  :    e Zd ZU dZded<   d d! fdZd"dZd# fdZd# fdZd$ fdZ	d% fd	Z
d# fd
Zd& fdZd'dZd(dZd)dZd*dZeZd+ fdZd,dZd-dZd,dZd.dZd/dZd0dZd,dZd. fdZd1dZd2 fdZd/dZd2 fdZd,dZd2 fdZ d1dZ! xZ"S )3
OrderedSet_listList[_T]r~   c                l    |*t        |      | _        t        |   | j                         y g | _        y r/   )unique_listr~   rq   rW   )r&   ri   r#   s     r)   rI   zOrderedSet.__init__   s*    =$QDJGN4::&DJr+   c                    | j                         }| j                  j                         |_        t        j	                  ||j                         |S r/   )r#   r~   copysetrW   )r&   cps     r)   r   zOrderedSet.copy   s7    ^^::??$

2rxx 	r+   c                b    || vr| j                   j                  |       t        |   |       y r/   r~   appendrq   addr&   elementr#   s     r)   r   zOrderedSet.add   s)    $JJg&Gr+   c                Z    t         |   |       | j                  j                  |       y r/   )rq   remover~   r   s     r)   r   zOrderedSet.remove   s!    w

'"r+   c                    	 | j                   j                         }t        |   |       |S # t        $ r t        d      d w xY w)Npop from an empty set)r~   rQ   
IndexErrorKeyErrorrq   r   )r&   r7   r#   s     r)   rQ   zOrderedSet.pop   sJ    	>JJNN$E 	u  	>23=	>s	   . Ac                d    || vr| j                   j                  ||       t        |   |       y r/   )r~   insertrq   r   )r&   posr   r#   s      r)   r   zOrderedSet.insert   s+    $JJc7+Gr+   c                d    || v r+| j                   j                  |       t        |   |       y y r/   )r~   r   rq   r   s     r)   discardzOrderedSet.discard   s-    d?JJg&GN7# r+   c                0    t         |           g | _        y r/   )rq   rM   r~   )r&   r#   s    r)   rM   zOrderedSet.clear   s    
r+   c                     | j                   |   S r/   r}   r1   s     r)   __getitem__zOrderedSet.__getitem__   s    zz#r+   c                ,    t        | j                        S r/   )iterr~   rL   s    r)   __iter__zOrderedSet.__iter__   s    DJJr+   c                $    | j                  |      S r/   rd   r&   others     r)   __add__zOrderedSet.__add__       zz%  r+   c                N    | j                   j                  d| j                  dS N())r#   r$   r~   rL   s    r)   rl   zOrderedSet.__repr__   s    >>22DJJ??r+   c                    |D ]8  }|D ]1  }|| vs| j                   j                  |       t        |   |       3 : y r/   r   )r&   	iterablesiterableer#   s       r)   rW   zOrderedSet.update   s;    !HD=JJ%%a(GKN  "r+   c                (    | j                  |       | S r/   )rW   r   s     r)   ro   zOrderedSet.__ior__   s    Er+   c                D    | j                         } |j                  |  |S r/   )r   rW   )r&   r   results      r)   rd   zOrderedSet.union   s     ,0IIKur+   c                $    | j                  |      S r/   r   r   s     r)   rr   zOrderedSet.__or__   r   r+   c                j    t                j                  |  | j                  fd| D              S )Nc              3  ,   K   | ]  }|v s|  y wr/   r   .0a	other_sets     r)   	<genexpr>z*OrderedSet.intersection.<locals>.<genexpr>   s     @Aia   	)r   rW   r#   )r&   r   r   s     @r)   intersectionzOrderedSet.intersection   s/    !e		% ~~@@@@r+   c                $    | j                  |      S r/   )r   r   s     r)   __and__zOrderedSet.__and__   s      ''r+   c                    t        |t              r|x}n4t        |t              r|}t        |      nt        |      }t        |       j	                  fd D              }|j                   fd|D               |S )Nc              3  ,   K   | ]  }|vs|  y wr/   r   r   s     r)   r   z2OrderedSet.symmetric_difference.<locals>.<genexpr>  s     F4a1I3E4r   c              3  ,   K   | ]  }|vs|  y wr/   r   )r   r   r&   s     r)   r   z2OrderedSet.symmetric_difference.<locals>.<genexpr>  s     =Aq}ar   )
isinstancer   r	   listr#   rW   )r&   r   
collectionr   r   s   `   @r)   symmetric_differencezOrderedSet.symmetric_difference   sl    eS!%**Jz*JE
IeJJIF4FF===r+   c                h    t        t        t        t        t        f      |       j                  |      S r/   )r   r|   r   r   r   r   r   s     r)   __xor__zOrderedSet.__xor__	  s,    JuRV}-t4II
 	
r+   c                f    t        |   | | j                  fd| j                  D              S )Nc              3  ,   K   | ]  }|v s|  y wr/   r   r   s     r)   r   z(OrderedSet.difference.<locals>.<genexpr>  s     FAqI~ar   )rq   
differencer#   r~   )r&   r   r   r#   s     @r)   r   zOrderedSet.difference  s+    G&.	~~FFFFr+   c                $    | j                  |      S r/   )r   r   s     r)   __sub__zOrderedSet.__sub__  s    u%%r+   c                p    t        |   |  | j                  D cg c]	  }|| v s| c}| _        y c c}w r/   )rq   intersection_updater~   r&   r   r   r#   s      r)   r   zOrderedSet.intersection_update  s3    #U+!%9AqDya9
9   	33c                (    | j                  |       | S r/   )r   r   s     r)   __iand__zOrderedSet.__iand__  s      'r+   c                
   t        |t              r|n
t        |      }t        |   |       | j
                  D cg c]	  }|| v s| c}| _        | xj
                  |D cg c]	  }|| v s| c}z  c_        y c c}w c c}w r/   )r   r	   r   rq   symmetric_difference_updater~   )r&   r   r   r   r#   s       r)   r   z&OrderedSet.symmetric_difference_update  so    (
;Ue
+J7!%9AqDya9


*:*QT	q*::
 ::s   	A;A;"	B ,B c                l    | j                  |       t        t        t        t        t
        f      |       S r/   )r   r   r|   r   r   r   r   s     r)   __ixor__zOrderedSet.__ixor__#  s*    ((/JuRV}-t44r+   c                p    t        |   |  | j                  D cg c]	  }|| v s| c}| _        y c c}w r/   )rq   difference_updater~   r   s      r)   r   zOrderedSet.difference_update'  s3    !5)!%9AqDya9
9r   c                (    | j                  |       | S r/   )r   r   s     r)   __isub__zOrderedSet.__isub__+  s    u%r+   r/   )ri   zOptional[Iterable[_T]]r<   None)r<   OrderedSet[_T])r   r   r<   r   )r<   r   )r   intr   r   r<   r   r<   r   )r2   r   r<   r   )r<   Iterator[_T])r   r   r<   r   rx   )r   Iterable[_T]r<   r   )r   zAbstractSet[_S]r<   OrderedSet[Union[_T, _S]])r   zIterable[_S]r<   r   )r   Iterable[Any]r<   r   )r   zAbstractSet[object]r<   r   )r   r   r<   r   )r   zAbstractSet[Optional[_T]]r<   r   )r   r   r<   r   )#r$   r>   r?   r@   __annotations__rI   r   r   r   rQ   r   r   rM   r   r   r   rl   __str__rW   ro   rd   rr   r   r   r   r   r   r   r   r   r   r   r   r   ry   rz   s   @r)   r|   r|      s    IO
#
$
 !@ G#
!A
(

G&:;5:r+   r|   c                  B   e Zd ZU dZded<   d)d*dZd+dZd,dZd+dZd+d	Z	d-d
Z
d.dZd/dZd/dZd0dZd/dZd/dZd0dZd/dZd/dZd1dZd2dZd3dZd2dZd1dZd4dZd3dZd4dZd1dZd4dZd3dZd4dZd1d Z d4d!Z!d3d"Z"d4d#Z#d5d$Z$e$Z%d6d%Z&d7d&Z'd8d'Z(d9d(Z)y):IdentitySetzA set that considers only object id() for uniqueness.

    This strategy has edge cases for builtin types- it's possible to have
    two 'foo' strings in one of these sets, for example.  Use sparingly.

    zDict[int, Any]_membersNc                J    t               | _        |r| j                  |       y y r/   )r\   r   rW   r&   r   s     r)   rI   zIdentitySet.__init__:  s    KK! r+   c                4    || j                   t        |      <   y r/   r   idr&   r7   s     r)   r   zIdentitySet.add?  s    #(bi r+   c                0    t        |      | j                  v S r/   )r   r   r   s     r)   __contains__zIdentitySet.__contains__B  s    %yDMM))r+   c                0    | j                   t        |      = y r/   r   r   s     r)   r   zIdentitySet.removeE  s    MM"U)$r+   c                F    	 | j                  |       y # t        $ r Y y w xY wr/   )r   r   r   s     r)   r   zIdentitySet.discardH  s%    	KK 		s    	  c                r    	 | j                   j                         }|d   S # t        $ r t        d      w xY w)N   r   )r   rS   r   )r&   pairs     r)   rQ   zIdentitySet.popN  s=    	4==((*D7N 	4233	4s   ! 6c                8    | j                   j                          y r/   )r   rM   rL   s    r)   rM   zIdentitySet.clearU  s    r+   c                V    t        |t              r| j                  |j                  k(  S y)NFr   r   r   r   s     r)   __eq__zIdentitySet.__eq__X  s"    e[)==ENN22r+   c                V    t        |t              r| j                  |j                  k7  S y)NTr   r   s     r)   __ne__zIdentitySet.__ne__^  s"    e[)==ENN22r+   c                   t        || j                        r|}n| j                  |      }t        |       t        |      kD  ryt        |j                  j
                  t        | j                  j                                     D ]  } y yNFTr   r#   lenr   r   r   r   keysr&   r   r   ms       r)   issubsetzIdentitySet.issubsetd  sp    h/ENN8,Et9s5z!NN''dmm.@.@.B)C
A 
 r+   c                P    t        |t              st        S | j                  |      S r/   )r   r   NotImplementedr   r   s     r)   __le__zIdentitySet.__le__r  s!    %-!!}}U##r+   c                    t        |t              st        S t        |       t        |      k  xr | j	                  |      S r/   )r   r   r   r   r   r   s     r)   __lt__zIdentitySet.__lt__w  s3    %-!!4y3u:%>$--*>>r+   c                   t        || j                        r|}n| j                  |      }t        |       t        |      k  ryt        | j                  j
                  t        |j                  j                                     D ]  } y yr   r   r   s       r)   
issupersetzIdentitySet.issuperset|  sp    h/ENN8,Et9s5z!MM&&U^^-@-@-B(C
A 
 r+   c                P    t        |t              st        S | j                  |      S r/   )r   r   r   r  r   s     r)   __ge__zIdentitySet.__ge__  !    %-!!u%%r+   c                    t        |t              st        S t        |       t        |      kD  xr | j	                  |      S r/   )r   r   r   r   r  r   s     r)   __gt__zIdentitySet.__gt__  s3    %-!!4y3u:%@$//%*@@r+   c                    | j                         }| j                  }|j                  j                  |       |j                  j                  d |D               |S )Nc              3  6   K   | ]  }t        |      |f  y wr/   r   r   objs     r)   r   z$IdentitySet.union.<locals>.<genexpr>  s     B#3~   )r#   r   rW   )r&   r   r   memberss       r)   rd   zIdentitySet.union  sF    !--w'BBBr+   c                P    t        |t              st        S | j                  |      S r/   )r   r   r   rd   r   s     r)   rr   zIdentitySet.__or__  s!    %-!!zz%  r+   c                H    | j                   j                  d |D               y )Nc              3  6   K   | ]  }t        |      |f  y wr/   r  r  s     r)   r   z%IdentitySet.update.<locals>.<genexpr>  s     @xbgs^xr  )r   rW   r   s     r)   rW   zIdentitySet.update  s    @x@@r+   c                T    t        |t              st        S | j                  |       | S r/   )r   r   r   rW   r   s     r)   ro   zIdentitySet.__ior__  s#    %-!!Er+   c                8   | j                  | j                        }t        || j                        r|j                  }n|D ch c]  }t	        |       }}| j                  j                         D ci c]  \  }}||vs|| c}}|_        |S c c}w c c}}w r/   rG   r#   r   r   r   itemsr&   r   r   r   r  kvs          r)   r   zIdentitySet.difference  s    dnn- h/%%E(01RWE1!]]002
2TQaunAqD2
 	 2
   B4BBc                P    t        |t              st        S | j                  |      S r/   )r   r   r   r   r   s     r)   r   zIdentitySet.__sub__  r  r+   c                D    | j                  |      j                  | _        y r/   )r   r   r   s     r)   r   zIdentitySet.difference_update  s    1::r+   c                T    t        |t              st        S | j                  |       | S r/   )r   r   r   r   r   s     r)   r   zIdentitySet.__isub__  s%    %-!!u%r+   c                8   | j                  | j                        }t        || j                        r|j                  }n|D ch c]  }t	        |       }}| j                  j                         D ci c]  \  }}||v s|| c}}|_        |S c c}w c c}}w r/   r  r  s          r)   r   zIdentitySet.intersection  s    dnn- h/%%E(01RWE1!]]002
2TQa5jAqD2
 	 2
r  c                P    t        |t              st        S | j                  |      S r/   )r   r   r   r   r   s     r)   r   zIdentitySet.__and__  s#    %-!!  ''r+   c                D    | j                  |      j                  | _        y r/   )r   r   r   s     r)   r   zIdentitySet.intersection_update  s    ))(3<<r+   c                T    t        |t              st        S | j                  |       | S r/   )r   r   r   r   r   s     r)   r   zIdentitySet.__iand__  s%    %-!!  'r+   c                     j                   j                        }t        | j                        r|j                  }n|D ci c]  }t	        |      | }} j                  j                         D ci c]  \  }}||vs|| c}}|_        |j                  j                   fd|j                         D               |S c c}w c c}}w )Nc              3  J   K   | ]  \  }}|j                   vs||f  y wr/   )r   )r   r  r  r&   s      r)   r   z3IdentitySet.symmetric_difference.<locals>.<genexpr>  s(      
,tq!0FQF}s   #	#)rG   r#   r   r   r   r  rW   r  s   `      r)   r   z IdentitySet.symmetric_difference  s    dnn-h/%%E-56XcRWc\XE6!]]002
2TQaunAqD2
 	 
${{}
 	
  7
s   C6C
C
c                P    t        |t              st        S | j                  |      S r/   r   r   r   r   r   s     r)   r   zIdentitySet.__xor__  s#    %-!!((//r+   c                D    | j                  |      j                  | _        y r/   )r   r   r   s     r)   r   z'IdentitySet.symmetric_difference_update  s    11(;DDr+   c                T    t        |t              st        S | j                  |       | S r/   r&  r   s     r)   r   zIdentitySet.__ixor__  s%    %-!!!!%(r+   c                z    | j                  | j                        }| j                  j                         |_        |S r/   )rG   r#   r   r   )r&   r   s     r)   r   zIdentitySet.copy  s-    dnn---,,.r+   c                ,    t        | j                        S r/   )r   r   rL   s    r)   __len__zIdentitySet.__len__  s    4==!!r+   c                H    t        | j                  j                               S r/   )r   r   valuesrL   s    r)   r   zIdentitySet.__iter__  s    DMM((*++r+   c                    t        d      )Nzset objects are unhashable)r"   rL   s    r)   __hash__zIdentitySet.__hash__
  s    455r+   c                z    t        |       j                  dt        | j                  j	                               dS r   )typer$   r   r   r-  rL   s    r)   rl   zIdentitySet.__repr__  s)    :..T]]5I5I5K0LMMr+   r/   )r   zOptional[Iterable[Any]])r7   r   r<   r   )r7   r   r<   bool)r<   r   r   )r   r   r<   r2  )r   r   r<   r2  )r   r   r<   r   )r   r   r<   r   )r   r   r<   r   )r   r   r<   r   )r<   r   )r<   r   )r<   zIterator[Any]rX   rx   )*r$   r>   r?   __doc__r   rI   r   r   r   r   rQ   rM   r   r   r   r   r  r  r  r	  rd   rr   rW   ro   r   r   r   r   r   r   r   r   r   r   r   r   r   __copy__r+  r   r/  rl   r   r+   r)   r   r   0  s     "
)*%4$
?
&
A
!
A&
;(
=0
E
 H",6Nr+   r   Nc                    t               }|j                  }|s| D cg c]  }||vs ||      r| c}S | D cg c]  } ||      |vr | ||            s| c}S c c}w c c}w r/   )r   r   )seqhashfuncseenseen_addxs        r)   r   r     s|     UDxxHD3a!4-3DD 
{$&x/D 
 	
 E
s   	AAA!A$r/   )r6  r   r7  zOptional[Callable[[_T], int]]r<   r   )"
__future__r   	itertoolsr   typingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   util.typingr   r   r   r   r   r   rB   rZ   r|   r   r   r   r+   r)   <module>r?     s    # !                   TTe3e3 *)4S> 4I
%c3h/ I
XLR L^^N ^ND BF
	
!>

r+   