a
    »ÏOcV  ã                   @   sR   d dl Z d dlmZ d dlmZ G dd„ dƒZdd„ Zdd	„ Zd
d„ Zdd„ Z	dS )é    N)Úget_backend)Úgroup_fieldsc                   @   s<   e Zd Zdd„ Zedd„ ƒZedd„ ƒZdd„ Zd	d
„ ZdS )ÚYamlWrapc                 C   s"   d| _ || _|| _t|jƒ| _d S )Nztag:yaml.org,2002:map)ÚtagÚobjectÚdepthr   Ú	__class__Úfields)ÚselfÚor   © r   úM/var/www/html/gsl.tools/lib/python3.9/site-packages/peeringdb/output/_yaml.pyÚ__init__   s    zYamlWrap.__init__c                 C   s    |dkrt ||d ƒS |jS d S )Nr   é   )r   Úid©ÚnameÚvaluer   r   r   r   Ú_resolve_one   s    zYamlWrap._resolve_onec                    s<   ˆ dkr‡ fdd„|  ¡ D ƒS ˆ dkr8t|jddd�ƒS d S )Nr   c                    s   g | ]}t |ˆ d  ƒ‘qS )r   )r   )Ú.0r   ©r   r   r   Ú
<listcomp>   ó    z*YamlWrap._resolve_many.<locals>.<listcomp>r   T)Zflat)ÚallÚlistZvalues_listr   r   r   r   Ú_resolve_many   s    zYamlWrap._resolve_manyc                 C   sH   |dkr|S |dkr$t  ||| j¡S |dkr<t  ||| j¡S t|ƒ‚d S )NZscalarsZsingle_refsÚ	many_refs)r   r   r   r   Ú
ValueError©r
   Úgroupr   r   r   r   r   Úresolve   s    zYamlWrap.resolvec              	   c   sT   | j D ]H}| jdkr|dkrq| j | D ]$}|  ||t| j|ƒ¡}||fV  q(qd S )Nr   r   )r	   r   r    Úgetattrr   r   r   r   r   Úfield_values)   s    
zYamlWrap.field_valuesN)	Ú__name__Ú
__module__Ú__qualname__r   Ústaticmethodr   r   r    r"   r   r   r   r   r   
   s   


r   c                    sB   i ‰ |  ¡ D ]\}}|ˆ |< q‡ fdd„tˆ ƒD ƒ}|  |j|¡S )Nc                    s   g | ]}|ˆ | f‘qS r   r   )r   Úk©Ú_dictr   r   r   6   r   z%represent_wrapped.<locals>.<listcomp>)r"   ÚsortedZrepresent_mappingr   )ÚdumperÚwrapr   r   Úalistr   r(   r   Úrepresent_wrapped2   s
    
r.   c                 C   s   |   t|ƒ¡S ©N)Zrepresent_strÚstr)r+   Údatar   r   r   Údefault_representer:   s    r2   c                  C   s0   t j} tƒ jD ]}|  |t¡ q|  tt¡ d S r/   )ÚyamlZ
SafeDumperr   ZCUSTOM_FIELDSZadd_representerr2   r   r.   )r+   Úclsr   r   r   Ú_init>   s    r5   c                 C   s4   t ƒ  tƒ  t| ƒ¡r t| |ƒ} tj| |dd� d S )NF)ÚstreamZdefault_flow_style)r5   r   Zis_concreteÚtyper   r3   Z	safe_dump)Úobjr   Úfiler   r   r   ÚdumpE   s    
r:   )
r3   Z	peeringdbr   Zpeeringdb.utilr   r   r.   r2   r5   r:   r   r   r   r   Ú<module>   s   (