a
    ‚4i©
  ã                   @   s:   d dl mZ ddlmZ d dlZd dlZG dd„ dƒZdS )é    )Údefaultdicté   )ÚdnskeyNc                   @   sn   e Zd ZdZedd„ ƒZdZg Zddd„Zdd„ Z	d	d
„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )Úkeydictz<A dictionary of keys, indexed by name, algorithm, and key idc                   C   s   t tƒS ©N)r   Údict© r   r   ú-/usr/lib/python3/dist-packages/isc/keydict.pyÚ<lambda>   ó    zkeydict.<lambda>Nc                 K   s’   |  dd ¡| _|  dd ¡}|s:|  dd ¡p,d}|  |¡ nT|D ]N}d|v r`|d d ur`|d }n|rp| |¡jprd}|  ||¡s>| j |¡ q>d S )NZkeyttlÚzonesÚpathÚ.)ÚgetÚ_defttlÚreadallZpolicyZ	directoryÚreadoneÚ_missingÚappend)ÚselfZdpÚkwargsr   r   Úzoner   r   r	   Ú__init__   s    
zkeydict.__init__c                 C   sH   t   tj |d¡¡}|D ]*}t||| jƒ}|| j|j |j |j	< qd S )Nz	*.private)
ÚglobÚosr   Újoinr   r   Ú_keydictÚnameÚalgÚkeyid)r   r   ÚfilesÚinfileÚkeyr   r   r	   r   ,   s    zkeydict.readallc           	      C   sŠ   |  d¡s|d7 }d| d }t tj ||¡¡}d}|D ]J}t||| jƒ}|j|krXq:|dkrf|jnd}|| j	| |j
 |j< d}q:|S )Nr   ÚKz
+*.privateFT)Úendswithr   r   r   r   r   r   Úfullnamer   r   r   r   )	r   r   r   Úmatchr    Úfoundr!   r"   Zkeynamer   r   r	   r   3   s    

zkeydict.readonec                 c   s>   | j  ¡ D ].\}}| ¡ D ]\}}| ¡ D ]
}|V  q*qq
d S r   )r   ÚitemsÚvalues)r   r   Ú
algorithmsr   Úkeysr"   r   r   r	   Ú__iter__D   s    zkeydict.__iter__c                 C   s
   | j | S r   )r   )r   r   r   r   r	   Ú__getitem__J   s    zkeydict.__getitem__c                 C   s
   | j  ¡ S r   ©r   r+   ©r   r   r   r	   r   M   s    zkeydict.zonesc                 C   s   | j |  ¡ S r   r.   )r   r   r   r   r	   r*   P   s    zkeydict.algorithmsc                 C   s   | j | |  ¡ S r   r.   )r   r   r   r   r   r	   r+   S   s    zkeydict.keysc                 C   s   | j S r   )r   r/   r   r   r	   ÚmissingV   s    zkeydict.missing)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r   r,   r-   r   r*   r+   r0   r   r   r   r	   r      s   
r   )Úcollectionsr   Ú r   r   r   r   r   r   r   r	   Ú<module>   s   