o
    ܀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                   @   s:   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 u r	g }|| _|| _|| _|| _d S N)service_nameidentifiersclientdataresource_model)selfr   r   r   r   r    r
   ?/usr/local/lib/python3.10/dist-packages/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i |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                   @   s6   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 ur|d| j _n	t| j j| j _t|D ]\}}t| d| j j|  | q"|	 D ]\}}|dkr@q7|| j jvrMt
d| t| d| | q7| j jD ]}t| |d u rkt
d| dqZd 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