U
    dI                     @  sX  d Z ddlmZ ddlmZ ddlmZ ddlmZ G dd	 d	ej	Z
G d
d dej	ZG dd dej	ZG dd de
ZG dd dej	ZG dd dej	ZG dd dej	ZG dd dej	ZG dd dZG dd dZG dd deej	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 )-zOClasses used in pickling tests, need to be at the module level for
unpickling.
    )annotations   )fixtures   )Column)Stringc                   @  s   e Zd ZdS )UserN__name__
__module____qualname__ r   r   A/tmp/pip-unpacked-wheel-wbr0uges/sqlalchemy/testing/pickleable.pyr      s   r   c                   @  s   e Zd ZdS )OrderNr	   r   r   r   r   r      s   r   c                   @  s   e Zd ZdS )	DingalingNr	   r   r   r   r   r      s   r   c                   @  s   e Zd ZdS )	EmailUserNr	   r   r   r   r   r   !   s   r   c                   @  s   e Zd ZdS )AddressNr	   r   r   r   r   r   %   s   r   c                   @  s   e Zd ZdS )Child1Nr	   r   r   r   r   r   *   s   r   c                   @  s   e Zd ZdS )Child2Nr	   r   r   r   r   r   .   s   r   c                   @  s   e Zd ZdS )ParentNr	   r   r   r   r   r   2   s   r   c                   @  s   e Zd ZdddZdS )ScreenNc                 C  s   || _ || _d S N)objparent)selfr   r   r   r   r   __init__7   s    zScreen.__init__)Nr
   r   r   r   r   r   r   r   r   6   s   r   c                   @  s   e Zd ZeeZdS )MixinN)r
   r   r   r   r   Zemail_addressr   r   r   r   r   <   s   r   c                   @  s   e Zd ZdS )AddressWMixinNr	   r   r   r   r   r   @   s   r   c                   @  s$   e Zd ZdddZejZdd ZdS )Fooim stuffc                 C  s   d| _ || _|| _d S )Nzim datadatastuffmoredata)r   r$   r#   r   r   r   r   E   s    zFoo.__init__c                 C  s$   |j | j ko"|j| jko"|j| jkS r   r!   r   otherr   r   r   __eq__L   s
    

z
Foo.__eq__N)r    )r
   r   r   r   object__hash__r'   r   r   r   r   r   D   s   
r   c                   @  s*   e Zd Zdd ZejZdd Zdd ZdS )Barc                 C  s   || _ || _d S r   xyr   r,   r-   r   r   r   r   U   s    zBar.__init__c                 C  s$   |j | j ko"|j| jko"|j| jkS r   	__class__r,   r-   r%   r   r   r   r'   [   s
    

z
Bar.__eq__c                 C  s   d| j | jf S NzBar(%d, %d)r+   r   r   r   r   __str__b   s    zBar.__str__N)r
   r   r   r   r(   r)   r'   r3   r   r   r   r   r*   T   s   r*   c                   @  s   e Zd Zdd Zdd ZdS )	OldSchoolc                 C  s   || _ || _d S r   r+   r.   r   r   r   r   g   s    zOldSchool.__init__c                 C  s$   |j | j ko"|j| jko"|j| jkS r   r/   r%   r   r   r   r'   k   s
    

zOldSchool.__eq__N)r
   r   r   r   r'   r   r   r   r   r4   f   s   r4   c                   @  s   e Zd Zdd ZdS )OldSchoolWithoutComparec                 C  s   || _ || _d S r   r+   r.   r   r   r   r   t   s    z OldSchoolWithoutCompare.__init__Nr   r   r   r   r   r5   s   s   r5   c                   @  s   e Zd Zdd Zdd ZdS )BarWithoutComparec                 C  s   || _ || _d S r   r+   r.   r   r   r   r   z   s    zBarWithoutCompare.__init__c                 C  s   d| j | jf S r1   r+   r2   r   r   r   r3   ~   s    zBarWithoutCompare.__str__N)r
   r   r   r   r3   r   r   r   r   r6   y   s   r6   c                   @  s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
NotComparablec                 C  s
   || _ d S r   r"   r   r"   r   r   r   r      s    zNotComparable.__init__c                 C  s   t | S r   idr2   r   r   r   r)      s    zNotComparable.__hash__c                 C  s   t S r   NotImplementedr%   r   r   r   r'      s    zNotComparable.__eq__c                 C  s   t S r   r<   r%   r   r   r   __ne__   s    zNotComparable.__ne__Nr
   r   r   r   r)   r'   r>   r   r   r   r   r7      s   r7   c                   @  s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
BrokenComparablec                 C  s
   || _ d S r   r8   r9   r   r   r   r      s    zBrokenComparable.__init__c                 C  s   t | S r   r:   r2   r   r   r   r)      s    zBrokenComparable.__hash__c                 C  s   t d S r   NotImplementedErrorr%   r   r   r   r'      s    zBrokenComparable.__eq__c                 C  s   t d S r   rA   r%   r   r   r   r>      s    zBrokenComparable.__ne__Nr?   r   r   r   r   r@      s   r@   N)__doc__
__future__r    r   Zschemar   typesr   ZComparableEntityr   r   r   r   r   r   r   r   r   r   r   r   r*   r4   r5   r6   r7   r@   r   r   r   r   <module>
   s,   	