o
    pi	                     @   s4   d dl mZ G dd dZdd ZG dd dZdS )	   )common_functionsc                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )KeyCheckerDictc                 C   s
   || _ d S Nchildren)selfr    r   ]/home/ubuntu/.local/lib/python3.10/site-packages/pytorch_metric_learning/utils/key_checker.py__init__      
zKeyCheckerDict.__init__c                 C   s
   | j | S r   r   )r   keyr   r   r	   __getitem__   r   zKeyCheckerDict.__getitem__c                 C   s   || j |< d S r   r   )r   r   valuer   r   r	   __setitem__   s   zKeyCheckerDict.__setitem__c                 C   s.   | j  D ]\}}| t||d || qd S r   )r   items_verify_propgetattr)r   objkvr   r   r	   verify   s   zKeyCheckerDict.verifyc                    s   fdd}j r|d i fv rtjd|  |d ury|j}| D ]tfddt|D s@J d|d|f q%|jD ]tfdd|D s]tjd	|f  qF|j	D ] t fd
d|D sxJ d| f qcd S d S )Nc                    s   t | r
|  jS | S r   )callabler   )x)sr   r   r	   <lambda>   s    z-KeyCheckerDict._verify_prop.<locals>.<lambda>z%s is emptyc                 3   s    | ]}|  V  qd S r   )match).0pattern)r   r   r	   	<genexpr>   s    

z.KeyCheckerDict._verify_prop.<locals>.<genexpr>z%s keys must be one of %sz, c                 3        | ]}t  |V  qd S r   c_fregex_wrapperr   r   r   )imp_keyr   r	   r      s    z%s is missing "%s"c                 3   r   r   r    r#   )ess_keyr   r	   r   !   s    
z%s must contain "%s")

warn_emptyr!   LOGGERwarningkeysanyr"   join	important	essential)r   r   obj_namer   valr)   r   )r%   r$   r   r   r   r	   r      s.   



	zKeyCheckerDict._verify_propN)__name__
__module____qualname__r
   r   r   r   r   r   r   r   r	   r      s    r   c                 C   s   t | j| jS r   )r!   excluder)   r-   )r   dr   r   r	   default_important&   s   r5   c                   @   s   e Zd ZdedfddZdS )
KeyCheckerTNc                 C   s0   || _ || _|| _|| _| jd u rg | _d S d S r   )r)   r&   r,   r-   )r   r)   r&   r,   r-   r   r   r	   r
   ,   s   

zKeyChecker.__init__)r0   r1   r2   r5   r
   r   r   r   r	   r6   +   s
    r6   N) r   r!   r   r5   r6   r   r   r   r	   <module>   s    "