U
    d                     @   s:   d dl Z d dlZe eZG dd dZG dd dZdS )    Nc                   @   s2   e Zd ZdZdddZdd Zdd Zd	d
 ZdS )ResourceMetaz9
    An object containing metadata about a resource.
    Nc                 C   s.   || _ |d krg }|| _|| _|| _|| _d S N)service_nameidentifiersclientdataresource_model)selfr   r   r   r   r    r
   8/tmp/pip-unpacked-wheel-vyj7p4na/boto3/resources/base.py__init__   s    	zResourceMeta.__init__c                 C   s   d | j| jS )Nz"ResourceMeta('{}', identifiers={}))formatr   r   )r	   r
   r
   r   __repr__2   s     zResourceMeta.__repr__c                 C   s    |j j| j jkrdS | j|jkS )NF)	__class____name____dict__)r	   otherr
   r
   r   __eq__7   s    zResourceMeta.__eq__c                 C   s    | j  }|d}t|f|S )z8
        Create a copy of this metadata object.
        r   )r   copypopr   )r	   paramsr   r
   r
   r   r   >   s    

zResourceMeta.copy)NNNN)r   
__module____qualname____doc__r   r   r   r   r
   r
   r
   r   r      s       
r   c                   @   s4   e Zd ZdZdZdd Zdd Zdd Zd	d
 ZdS )ServiceResourcez
    A base class for resources.

    :type client: botocore.client
    :param client: A low-level Botocore client instance
    Nc                 O   s   | j  | _ |dd k	r*|d| j _nt| j j| j _t|D ] \}}t| d| j j|  | qD|	 D ]<\}}|dkrqn|| j jkrt
d| t| d| | qn| j jD ]"}t| |d krt
d| dqd S )Nr   _zUnknown keyword argument: zRequired parameter z not set)metar   getr   boto3r   	enumeratesetattrr   items
ValueErrorgetattr)r	   argskwargsivaluename
identifierr
   r
   r   r   _   s    zServiceResource.__init__c              	   C   sF   g }| j jD ]"}|| dtt| |  qd| jjd|S )N=z{}({})z, )	r   r   appendreprr#   r   r   r   joinr	   r   r)   r
   r
   r   r      s    zServiceResource.__repr__c                 C   s@   |j j| j jkrdS | jjD ]}t| |t||kr dS qdS )NFT)r   r   r   r   r#   )r	   r   r)   r
   r
   r   r      s    zServiceResource.__eq__c                 C   s6   g }| j jD ]}|t| | qt| jjt|fS r   )r   r   r+   r#   hashr   r   tupler.   r
   r
   r   __hash__   s    zServiceResource.__hash__)	r   r   r   r   r   r   r   r   r1   r
   r
   r
   r   r   G   s    r   )loggingr   	getLoggerr   loggerr   r   r
   r
   r
   r   <module>   s   
2