U
    ‰±Ëh»  ã                   @   s(   d dl Zd dlmZ G dd„ deƒZdS )é    N)Únormc                       sV   e Zd Zddd„Z‡ fdd„ZeZdd„ Zedd	„ ƒZed
d„ ƒZ	edd„ ƒZ
‡  ZS )ÚFaceNc                 K   s>   |d kri }|r|j f |Ž | ¡ D ]\}}t| ||ƒ q$d S ©N)ÚupdateÚitemsÚsetattr)ÚselfÚdÚkwargsÚkÚv© r   ú:/tmp/pip-unpacked-wheel-5oclok7i/insightface/app/common.pyÚ__init__   s    zFace.__init__c                    sj   t |ttfƒr"‡ fdd„|D ƒ}n t |tƒrBt |ˆ jƒsBˆ  |¡}ttˆ ƒ ||¡ ttˆ ƒ ||¡ d S )Nc                    s$   g | ]}t |tƒrˆ  |¡n|‘qS r   )Ú
isinstanceÚdictÚ	__class__)Ú.0Úx©r   r   r   Ú
<listcomp>   s    ÿz$Face.__setattr__.<locals>.<listcomp>)	r   ÚlistÚtupler   r   Úsuperr   Ú__setattr__Ú__setitem__)r   ÚnameÚvalue©r   r   r   r      s    
ÿ
zFace.__setattr__c                 C   s   d S r   r   )r   r   r   r   r   Ú__getattr__   s    zFace.__getattr__c                 C   s   | j d krd S t| j ƒS r   )Ú	embeddingÚl2normr   r   r   r   Úembedding_norm!   s    
zFace.embedding_normc                 C   s   | j d krd S | j | j S r   )r    r"   r   r   r   r   Únormed_embedding'   s    
zFace.normed_embeddingc                 C   s    | j d krd S | j dkrdS dS )Né   ÚMÚF)Zgenderr   r   r   r   Úsex-   s    
zFace.sex)N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   Úpropertyr"   r#   r'   Ú__classcell__r   r   r   r   r      s   
	

r   )ZnumpyÚnpZnumpy.linalgr   r!   r   r   r   r   r   r   Ú<module>   s   