U
    W+d)                     @   s@  d dl mZ G dd deZG dd deZG dd deZG dd	 d	eZG d
d deZG dd deZG dd deZ	G dd deZ
G dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG d d! d!eZG d"d# d#eZG d$d! d!eZG d%d& d&eZd'S )(    dynamize_valuec                   @   s   e Zd ZdZdd ZdS )	Conditionz
    Base class for conditions.  Doesn't do a darn thing but allows
    is to test if something is a Condition instance or not.
    c                 C   s   t |tr|  | kS d S N)
isinstancer   to_dict)selfother r
   ;/tmp/pip-unpacked-wheel-dlxw5sjy/boto/dynamodb/condition.py__eq__!   s    
zCondition.__eq__N)__name__
__module____qualname____doc__r   r
   r
   r
   r   r      s   r   c                   @   s    e Zd ZdZdd Zdd ZdS )ConditionNoArgsz`
    Abstract class for Conditions that require no arguments, such
    as NULL or NOT_NULL.
    c                 C   s   d| j j S )Nz%s	__class__r   r   r
   r
   r   __repr__+   s    zConditionNoArgs.__repr__c                 C   s   d| j jiS )NComparisonOperatorr   r   r
   r
   r   r   .   s    zConditionNoArgs.to_dictN)r   r   r   r   r   r   r
   r
   r
   r   r   %   s   r   c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	ConditionOneArgz\
    Abstract class for Conditions that require a single argument
    such as EQ or NE.
    c                 C   s
   || _ d S r   )v1)r   r   r
   r
   r   __init__8   s    zConditionOneArg.__init__c                 C   s   d| j j| jf S )Nz%s:%s)r   r   r   r   r
   r
   r   r   ;   s    zConditionOneArg.__repr__c                 C   s   t | jg| jjdS )NZAttributeValueListr   )r   r   r   r   r   r
   r
   r   r   >   s    
zConditionOneArg.to_dictNr   r   r   r   r   r   r   r
   r
   r
   r   r   2   s   r   c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	ConditionTwoArgszv
    Abstract class for Conditions that require two arguments.
    The only example of this currently is BETWEEN.
    c                 C   s   || _ || _d S r   )r   v2)r   r   r   r
   r
   r   r   I   s    zConditionTwoArgs.__init__c                 C   s   d| j j| j| jf S )Nz
%s(%s, %s))r   r   r   r   r   r
   r
   r   r   M   s    zConditionTwoArgs.__repr__c                 C   s$   | j | jf}dd |D | jjdS )Nc                 S   s   g | ]}t |qS r
   r   .0vr
   r
   r   
<listcomp>R   s     z,ConditionTwoArgs.to_dict.<locals>.<listcomp>r   )r   r   r   r   r   valuesr
   r
   r   r   P   s    zConditionTwoArgs.to_dictNr   r
   r
   r
   r   r   C   s   r   c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	ConditionSeveralArgszO
    Abstract class for conditions that require several argument (ex: IN).
    c                 C   s
   || _ d S r   )r#   r"   r
   r
   r   r   [   s    zConditionSeveralArgs.__init__c                 C   s   d | jjd| jS )Nz{0}({1})z, )formatr   r   joinr#   r   r
   r
   r   r   ^   s    

zConditionSeveralArgs.__repr__c                 C   s   dd | j D | jjdS )Nc                 S   s   g | ]}t |qS r
   r   r   r
   r
   r   r!   c   s     z0ConditionSeveralArgs.to_dict.<locals>.<listcomp>r   )r#   r   r   r   r
   r
   r   r   b   s    zConditionSeveralArgs.to_dictNr   r
   r
   r
   r   r$   V   s   r$   c                   @   s   e Zd ZdS )EQNr   r   r   r
   r
   r
   r   r'   g   s   r'   c                   @   s   e Zd ZdS )NENr(   r
   r
   r
   r   r)   l   s   r)   c                   @   s   e Zd ZdS )LENr(   r
   r
   r
   r   r*   q   s   r*   c                   @   s   e Zd ZdS )LTNr(   r
   r
   r
   r   r+   v   s   r+   c                   @   s   e Zd ZdS )GENr(   r
   r
   r
   r   r,   {   s   r,   c                   @   s   e Zd ZdS )GTNr(   r
   r
   r
   r   r-      s   r-   c                   @   s   e Zd ZdS )NULLNr(   r
   r
   r
   r   r.      s   r.   c                   @   s   e Zd ZdS )NOT_NULLNr(   r
   r
   r
   r   r/      s   r/   c                   @   s   e Zd ZdS )CONTAINSNr(   r
   r
   r
   r   r0      s   r0   c                   @   s   e Zd ZdS )NOT_CONTAINSNr(   r
   r
   r
   r   r1      s   r1   c                   @   s   e Zd ZdS BEGINS_WITHNr(   r
   r
   r
   r   r3      s   r3   c                   @   s   e Zd ZdS )INNr(   r
   r
   r
   r   r4      s   r4   c                   @   s   e Zd ZdS r2   r(   r
   r
   r
   r   r3      s   c                   @   s   e Zd ZdS )BETWEENNr(   r
   r
   r
   r   r5      s   r5   N)Zboto.dynamodb.typesr   objectr   r   r   r   r$   r'   r)   r*   r+   r,   r-   r.   r/   r0   r1   r3   r4   r5   r
   r
   r
   r   <module>   s&   
