U
    O8Úc´  ã                   @   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-hml_76kf/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r€qn|| j jkršt
d|› ƒ‚t| d| |ƒ qn| j jD ]"}t| |ƒd kr´t
d|› dƒ‚q´d 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