o
    ùj-  ã                   @   s$   d Z ddlmZ G dd„ deƒZdS )zThe typed dict moduleé    )Úchainc                       sx   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zd
d„ Z‡ fdd„Zddd„Z	d‡ fdd„	Z
eddd„ƒZ‡ fdd„Z‡  ZS )ÚtdictNc                 C   sl   || _ || _|du r|du r| j| _n|du r| j| _n|du r%| j| _n| j| _|dur4|  |¡ dS dS )zsThis is a typed dict implementation that optionally enforces given
        types on contained values on assignment.N)Ú_ktÚ_vtÚ_check_noopÚcheckÚ_check_vÚ_check_kÚ	_check_kvÚupdate)ÚselfÚktÚvtÚdata© r   úP/var/www/html/LicenciasMiG/venv/lib/python3.10/site-packages/spyne/util/tdict.pyÚ__init__   s   


ÿztdict.__init__c                 G   s   d S ©Nr   )r   Ú_r   r   r   r   .   s   ztdict._check_noopc                 C   s   t || jƒstt|ƒƒ‚d S r   )Ú
isinstancer   Ú	TypeErrorÚrepr)r   Úkeyr   r   r   r   r	   1   ó   ÿztdict._check_kc                 C   s   t || jƒstt|ƒƒ‚d S r   )r   r   r   r   )r   r   Úvaluer   r   r   r   5   r   ztdict._check_vc                 C   s4   t || jƒstt|ƒƒ‚t || jƒstt|ƒƒ‚d S r   )r   r   r   r   r   ©r   r   r   r   r   r   r
   9   s
   ÿztdict._check_kvc                    s"   |   ||¡ tt| ƒ ||¡ d S r   )r   Úsuperr   Ú__setitem__r   ©Ú	__class__r   r   r   ?   s   ztdict.__setitem__c                 K   sN   zt | ¡ | ¡ ƒ}W n ty   t ||ƒ}Y nw |D ]\}}|| |< qd S r   )r   ÚitemsÚAttributeError)r   ÚEÚFÚitÚkÚvr   r   r   r   C   s   ÿ
ÿztdict.updatec                    sb   | j d u r|  ||¡nd  | jd u r|  ||¡nd  tt| ƒ ||¡ d S  tt| ƒ ||¡ d S r   )r   r	   r   r   r   r   Ú
setdefault)r   r%   Údr   r   r   r'   L   s   €þztdict.setdefaultc                 C   sX   d  }}t |ƒdkrtdd„ |D ƒƒ\}|d urt|ƒ}t||ƒ}|D ]}|||< q#|S )Nr   c                 s   s    | ]}t |ƒV  qd S r   )Útype)Ú.0Úsr   r   r   Ú	<genexpr>W   s   € z!tdict.fromkeys.<locals>.<genexpr>)ÚlenÚsetr)   r   )ÚclsÚSr&   r   r   Úretvalr+   r   r   r   ÚfromkeysR   s   

ztdict.fromkeysc                    s   d| j | jtt| ƒ ¡ f S )Nztdict(kt=%s, vt=%s, data=%s))r   r   r   r   Ú__repr__)r   r   r   r   r   c   s   ÿz
tdict.repr)NNNr   )Ú__name__Ú
__module__Ú__qualname__r   r   r	   r   r
   r   r   r'   Úclassmethodr2   r   Ú__classcell__r   r   r   r   r      s    

	r   N)Ú__doc__Ú	itertoolsr   Údictr   r   r   r   r   Ú<module>   s   