U
    Æ½„b„­  ã                   @   sä  d dl T d dlT d dlmZ d dlmZmZmZ d dlmZm	Z	m
Z
mZmZ d dlmZmZmZmZmZmZmZmZmZ d dlmZmZmZmZmZ d dlmZ d dlm Z  d d	l!m"Z" d d
l#m$Z$ d dl%Z%d dl&Z&d dl'Z'd dl(Z(d dl)Z)dddddgZ0G dd„ de1ƒZ2G dd„ dƒZ3G dd„ de3ƒZ4e4 5e6dƒe4j7¡ e4 5e8e4j9¡ e4 5e:e4j;¡ e4 5e<e4j=¡ e4 5e>e4j?¡ e4 5e@e4jA¡ e4 5eBe4jC¡ e4 5eDe4jC¡ e4 5eEe4jF¡ e4 5eGe4jH¡ e4 5ee4jI¡ e&jJdk�rêd dlKZKe4 5eKjLe4jI¡ e4 5e%jMe4jN¡ e4 5e%j%e4jO¡ e4 5de4jP¡ G dd„ de4ƒZQeQ 5eReQjS¡ eQ 5eDeQjT¡ eQ 5e6eQjU¡ eQ 5e'jVeQjU¡ eQ 5e'jWeQjU¡ eQ 5e'jXeQjY¡ eQ Ze[eQj\¡ eQ Ze6eQjU¡ G dd„ de4ƒZ]e] 5e6dƒe]j7¡ e] 5ee]j^¡ e] 5e	e]j_¡ e] 5e
e]j`¡ e] 5ee]ja¡ e] 5ee]jb¡ e] 5ee]jc¡ e] 5ee]jd¡ e] 5ee]je¡ e] 5ee]jf¡ e] 5ee]jg¡ e] 5ee]jh¡ e] 5e e]ji¡ e] 5ee]jC¡ e] 5ee]jF¡ e] 5ee]jI¡ e&jJdk�r¶d dlKZKe] 5eKjLe]jI¡ e] 5ee]jH¡ e] 5ee]jj¡ e] 5e"e]jO¡ dS )é    )Ú*)Úordereddict)Ú_FÚnprintÚnprintf)ÚLiteralScalarStringÚFoldedScalarStringÚSingleQuotedScalarStringÚDoubleQuotedScalarStringÚPlainScalarString)	ÚCommentedMapÚCommentedOrderedMapÚCommentedSeqÚCommentedKeySeqÚCommentedKeyMapÚCommentedSetÚcomment_attribÚmerge_attribÚTaggedScalar)Ú	ScalarIntÚ	BinaryIntÚOctalIntÚHexIntÚ
HexCapsInt)ÚScalarFloat)ÚScalarBoolean)Ú	TimeStamp)ÚAnchorNÚBaseRepresenterÚSafeRepresenterÚRepresenterÚRepresenterErrorÚRoundTripRepresenterc                   @   s   e Zd ZdS )r!   N)Ú__name__Ú
__module__Ú__qualname__© r&   r&   ú;/tmp/pip-unpacked-wheel-ctuyz3qg/ruamel/yaml/representer.pyr!   /   s   c                   @   sŠ   e Zd Zi Zi Zddd„Zedd„ ƒZdd„ Zdd	„ Z	d
d„ Z
edd„ ƒZedd„ ƒZddd„Zddd„Zddd„Zddd„Zdd„ ZdS )r   Nc                 C   s@   || _ | j d k	r| | j _|| _|| _i | _g | _d | _d| _d S )NT)ÚdumperZ_representerÚdefault_styleÚdefault_flow_styleÚrepresented_objectsÚobject_keeperÚ	alias_keyÚ sort_base_mapping_type_on_output©Úselfr)   r*   r(   r&   r&   r'   Ú__init__8   s    
zBaseRepresenter.__init__c                 C   s>   z t | jdƒr| jjW S | jjW S  tk
r8   |  Y S X d S )NÚtyp)Úhasattrr(   Ú
serializerZ_serializerÚAttributeError)r0   r&   r&   r'   r4   D   s    

zBaseRepresenter.serializerc                 C   s,   |   |¡}| j |¡ i | _g | _d | _d S )N)Úrepresent_datar4   Ú	serializer+   r,   r-   )r0   ÚdataÚnoder&   r&   r'   Ú	representN   s
    
zBaseRepresenter.representc                 C   sî   |   |¡rd | _n
t|ƒ| _| jd k	rN| j| jkrB| j| j }|S | j |¡ t|ƒj}|d | jkr|| j|d  | |ƒ}nn|D ]"}|| j	kr€| j	| | |ƒ} qêq€d | j	krÀ| j	d  | |ƒ}n*d | jkrÜ| jd  | |ƒ}nt
d t|ƒƒ}|S )Nr   )Úignore_aliasesr-   Úidr+   r,   ÚappendÚtypeÚ__mro__Úyaml_representersÚyaml_multi_representersÚ
ScalarNodeÚstr)r0   r8   r9   Ú
data_typesÚ	data_typer&   r&   r'   r6   V   s*    






zBaseRepresenter.represent_datac                 C   s
   |   |¡S )a  
        David Fraser: Extract a method to represent keys in mappings, so that
        a subclass can choose not to quote them (for example)
        used in represent_mapping
        https://bitbucket.org/davidfraser/pyyaml/commits/d81df6eb95f20cac4a79eed95ae553b5c6f77b8c
        )r6   ©r0   r8   r&   r&   r'   Úrepresent_keyx   s    zBaseRepresenter.represent_keyc                 C   s$   d| j kr| j ¡ | _|| j|< d S )Nr@   )Ú__dict__r@   Úcopy©ÚclsrE   Zrepresenterr&   r&   r'   Úadd_representer‚   s    
zBaseRepresenter.add_representerc                 C   s$   d| j kr| j ¡ | _|| j|< d S )NrA   )rH   rA   rI   rJ   r&   r&   r'   Úadd_multi_representer‰   s    
z%BaseRepresenter.add_multi_representerc                 C   sh   |d kr| j }d }|r<|d dkr<t|dd ƒ}|r<d |gg}t|||||d�}| jd k	rd|| j| j< |S )Nr   z|>Úcomment)ÚstylerN   Úanchor)r)   ÚgetattrrB   r-   r+   )r0   ÚtagÚvaluerO   rP   rN   r9   r&   r&   r'   Úrepresent_scalar�   s    

z BaseRepresenter.represent_scalarc           	      C   s„   g }t |||d�}| jd k	r(|| j| j< d}|D ],}|  |¡}t|tƒrN|jrRd}| |¡ q0|d kr€| jd k	rz| j|_	n||_	|S )N©Ú
flow_styleTF)
ÚSequenceNoder-   r+   r6   Ú
isinstancerB   rO   r=   r*   rV   )	r0   rR   ÚsequencerV   rS   r9   Ú
best_styleÚitemÚ	node_itemr&   r&   r'   Úrepresent_sequencež   s    



z"BaseRepresenter.represent_sequencec           
      C   s|   g }t |||d�}| jd k	r(|| j| j< d}|D ]$}|| }|  ||i¡}	| |	¡ q0|d krx| jd k	rr| j|_n||_|S )NrU   T)rW   r-   r+   r6   r=   r*   rV   )
r0   rR   ÚomaprV   rS   r9   rZ   Úitem_keyÚitem_valr\   r&   r&   r'   Úrepresent_omap±   s    


zBaseRepresenter.represent_omapc                 C   sè   g }t |||d�}| jd k	r(|| j| j< d}t|dƒrjt| ¡ ƒ}| jrjzt|ƒ}W n tk
rh   Y nX |D ]R\}}|  	|¡}	|  
|¡}
t|	tƒrš|	jržd}t|
tƒr®|
jr²d}| |	|
f¡ qn|d krä| jd k	rÞ| j|_n||_|S )NrU   TÚitemsF)ÚMappingNoder-   r+   r3   Úlistrb   r.   ÚsortedÚ	TypeErrorrG   r6   rX   rB   rO   r=   r*   rV   )r0   rR   ÚmappingrV   rS   r9   rZ   r_   Ú
item_valueÚnode_keyÚ
node_valuer&   r&   r'   Úrepresent_mappingÆ   s2    





z!BaseRepresenter.represent_mappingc                 C   s   dS ©NFr&   rF   r&   r&   r'   r;   ã   s    zBaseRepresenter.ignore_aliases)NNN)NN)N)N)N)r#   r$   r%   r@   rA   r1   Úpropertyr4   r:   r6   rG   ÚclassmethodrL   rM   rT   r]   ra   rk   r;   r&   r&   r&   r'   r   3   s"   

	"






c                   @   sª   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd!d
d„Zdd„ ZdZ	e
e	ƒe
e	e	 ƒkr\e	e	9 Z	q>dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd"dd„Zdd „ Zd	S )#r   c                 C   s:   |d kst |tƒr|dkrdS t |tttttfƒr6dS dS )Nr&   TF)rX   ÚtupleÚbytesrC   ÚboolÚintÚfloatrF   r&   r&   r'   r;   é   s
    zSafeRepresenter.ignore_aliasesc                 C   s   |   dd¡S )Nútag:yaml.org,2002:nullÚnull©rT   rF   r&   r&   r'   Úrepresent_noneô   s    zSafeRepresenter.represent_nonec                 C   s   |   d|¡S )Nútag:yaml.org,2002:strrv   rF   r&   r&   r'   Úrepresent_strø   s    zSafeRepresenter.represent_strc                 C   s<   t tdƒrt |¡ d¡}nt |¡ d¡}| jd|dd�S )NÚencodebytesÚasciiztag:yaml.org,2002:binaryú|)rO   )r3   Úbase64rz   ÚdecodeÚencodestringrT   rF   r&   r&   r'   Úrepresent_binaryü   s    
z SafeRepresenter.represent_binaryNc                 C   sH   z| j jt|ƒ }W n" tk
r6   |r.d}nd}Y nX | jd||d�S )NÚtrueÚfalseztag:yaml.org,2002:bool©rP   )r(   Zboolean_representationrq   r5   rT   )r0   r8   rP   rS   r&   r&   r'   Úrepresent_bool  s    
zSafeRepresenter.represent_boolc                 C   s   |   dt|ƒ¡S )Nútag:yaml.org,2002:int)rT   rC   rF   r&   r&   r'   Úrepresent_int  s    zSafeRepresenter.represent_intgœu ˆ<ä7~c                 C   sˆ   ||ks|dkr|dkrd}n^|| j kr.d}nN|| j  kr@d}n<t|ƒ ¡ }t| jdd ƒdkr|d|kr|d	|kr|| d	d
d¡}|  d|¡S )Nç        ç      ð?ú.nanú.infú-.infZuse_version)é   rŒ   Ú.Úez.0erŒ   útag:yaml.org,2002:float)Ú	inf_valueÚreprÚlowerrQ   r4   ÚreplacerT   ©r0   r8   rS   r&   r&   r'   Úrepresent_float  s    
zSafeRepresenter.represent_floatc                 C   s   |   d|¡S )Nútag:yaml.org,2002:seq©r]   rF   r&   r&   r'   Úrepresent_list.  s    	zSafeRepresenter.represent_listc                 C   s   |   d|¡S )Nútag:yaml.org,2002:map©rk   rF   r&   r&   r'   Úrepresent_dict?  s    zSafeRepresenter.represent_dictc                 C   s   |   d|¡S )Nztag:yaml.org,2002:omap)ra   rF   r&   r&   r'   Úrepresent_ordereddictC  s    z%SafeRepresenter.represent_ordereddictc                 C   s"   i }|D ]}d ||< q|   d|¡S )Nútag:yaml.org,2002:setrš   )r0   r8   rS   Úkeyr&   r&   r'   Úrepresent_setG  s    
zSafeRepresenter.represent_setc                 C   s   |  ¡ }|  d|¡S )Nútag:yaml.org,2002:timestamp©Ú	isoformatrT   r”   r&   r&   r'   Úrepresent_dateN  s    zSafeRepresenter.represent_datec                 C   s   |  d¡}|  d|¡S )Nú r    r¡   r”   r&   r&   r'   Úrepresent_datetimeS  s    
z"SafeRepresenter.represent_datetimec                 C   s.   t |dƒr| ¡ }n
|j ¡ }| j|||d�S ©NÚ__getstate__rU   )r3   r§   rH   rI   rk   )r0   rR   r8   rK   rV   Ústater&   r&   r'   Úrepresent_yaml_objectX  s    


z%SafeRepresenter.represent_yaml_objectc                 C   s   t td|d�ƒ‚d S )Nz$cannot represent an object: {data!s}©r8   )r!   r   rF   r&   r&   r'   Úrepresent_undefined`  s    z#SafeRepresenter.represent_undefined)N)N)r#   r$   r%   r;   rw   ry   r€   r„   r†   r�   r‘   r•   r˜   r›   rœ   rŸ   r£   r¥   r©   r«   r&   r&   r&   r'   r   è   s$   	


)é   é   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )r    c                 C   sl   |j dkrt|jƒ}nJ|jdkr0td|j d�}n0|j dkrNtd|j|j d�}ntd|j|j d�}|  d|¡S )	Nr‡   z{data_imag!r}j)Ú	data_imagr   z{data_real!r}+{data_imag!r}j)Z	data_realr®   z{data_real!r}{data_imag!r}jz tag:yaml.org,2002:python/complex)Úimagr‘   Úrealr   rT   rF   r&   r&   r'   Úrepresent_complexŠ  s    


zRepresenter.represent_complexc                 C   s   |   d|¡S )Nztag:yaml.org,2002:python/tupler—   rF   r&   r&   r'   Úrepresent_tuple–  s    zRepresenter.represent_tuplec                 C   sN   zt d|j|jd�}W n& tk
r<   t d|j|jd�}Y nX |  d| d¡S )Nz{modname!s}.{qualname!s})ÚmodnameÚqualnamez{modname!s}.{name!s})r³   Únameztag:yaml.org,2002:python/name:Ú )r   r$   r%   r5   r#   rT   )r0   r8   rµ   r&   r&   r'   Úrepresent_nameš  s      ÿ
zRepresenter.represent_namec                 C   s   |   d|j d¡S )Nz tag:yaml.org,2002:python/module:r¶   )rT   r#   rF   r&   r&   r'   Úrepresent_module¥  s    zRepresenter.represent_modulec                 C   sâ  t |ƒ}|tjkr"tj| |ƒ}n:t|dƒr8| d¡}n$t|dƒrL| ¡ }nttd|d�ƒ‚t|ƒd gd  d d… }|\}}}}}t|ƒ}|d kr˜i }|d k	r¨t|ƒ}|d k	r¸t	|ƒ}|j
dkrà|d }|d	d … }d
}	d}
nd}	d}
ztd|j|jd�}W n( tk
�r&   td|j|j
d�}Y nX |�s\|�s\|�s\t|t	ƒ�r\|
�r\|  d| |¡S |�sŠ|�sŠt|t	ƒ�rŠ|�sŠ|  |	| |¡S i }|�rœ||d< |�s®t|t	ƒ�s¶||d< |�rÄ||d< |�rÒ||d< |  |	| |¡S )NÚ__reduce_ex__r¬   Ú
__reduce__z!cannot represent object: {data!r}rª   é   Ú
__newobj__r   rŒ   z$tag:yaml.org,2002:python/object/new:Tz&tag:yaml.org,2002:python/object/apply:Fz{fun!s}.{qualname!s})Úfunr´   z{fun!s}.{name!s})r½   rµ   z tag:yaml.org,2002:python/object:Úargsr¨   Ú	listitemsÚ	dictitems)r>   ÚcopyregÚdispatch_tabler3   r¹   rº   r!   r   rd   Údictr#   r$   r%   r5   rX   rk   r]   )r0   r8   rK   ÚreduceÚfunctionr¾   r¨   r¿   rÀ   rR   ZnewobjZfunction_namerS   r&   r&   r'   Úrepresent_object©  sj    




  ÿ
  ÿ$ ÿzRepresenter.represent_objectN)r#   r$   r%   r±   r²   r·   r¸   rÆ   r&   r&   r&   r'   r    ‰  s
   c                   @   sô   e Zd Zd8dd„Zdd„ Zdd„ Zdd	„ ZeZd
d„ Zdd„ Z	dd„ Z
dd„ Zd9dd„Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd:d d!„Zd"d#„ Zd$d%„ Zd;d&d'„Zd<d(d)„Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd=d6d7„ZdS )>r"   Nc                 C   s,   t |dƒs|d krd}tj| |||d� d S )Nr2   F)r)   r*   r(   )r3   r   r1   r/   r&   r&   r'   r1     s    üzRoundTripRepresenter.__init__c                 C   sB   z |j d k	r|j jd k	rW dS W n tk
r4   Y nX t | |¡S rl   )rP   rS   r5   r   r;   rF   r&   r&   r'   r;     s    
z#RoundTripRepresenter.ignore_aliasesc                 C   s.   t | jƒdkr"| jjs"|  dd¡S |  dd¡S )Nr   rt   ru   r¶   )Úlenr+   r4   Zuse_explicit_startrT   rF   r&   r&   r'   rw     s    z#RoundTripRepresenter.represent_nonec                 C   s*   d }d}|j dd�}d}| j||||d�S )Nr|   T©Úanyrx   ©rO   rP   ©Úyaml_anchorrT   ©r0   r8   rR   rO   rP   r&   r&   r'   Úrepresent_literal_scalarstring   s
    z3RoundTripRepresenter.represent_literal_scalarstringc                 C   sœ   d }d}|j dd�}tt|dg ƒƒD ]`}|| dkr$|dkr$||d   ¡ s$|t|ƒk r$||d   ¡ s$|d |… d ||d …  }q$d	}| j||||d
�S )Nú>TrÈ   Úfold_posr¤   r   rŒ   úrx   rÊ   )rÌ   ÚreversedrQ   ÚisspacerÇ   rT   )r0   r8   rR   rO   rP   rÐ   r&   r&   r'   Úrepresent_folded_scalarstring*  s"    
ÿþþ
ýýz2RoundTripRepresenter.represent_folded_scalarstringc                 C   s*   d }d}|j dd�}d}| j||||d�S )Nú'TrÈ   rx   rÊ   rË   rÍ   r&   r&   r'   Ú$represent_single_quoted_scalarstring9  s
    z9RoundTripRepresenter.represent_single_quoted_scalarstringc                 C   s*   d }d}|j dd�}d}| j||||d�S )Nú"TrÈ   rx   rÊ   rË   rÍ   r&   r&   r'   Ú$represent_double_quoted_scalarstringA  s
    z9RoundTripRepresenter.represent_double_quoted_scalarstringc                 C   s*   d }d}|j dd�}d}| j||||d�S )Nr¶   TrÈ   rx   rÊ   rË   rÍ   r&   r&   r'   Úrepresent_plain_scalarstringI  s
    z1RoundTripRepresenter.represent_plain_scalarstringc                 C   sœ   |d kr| j d|| |d�S |d rht|ƒ}t|ƒ|d  }|dkr^| |d¡ ||d 8 }q<d |¡}|d rxd| }|d rˆ|d7 }| j d|| |d�S )Nr…   rƒ   r   Ú_r¶   rŒ   r¬   )rT   rd   rÇ   ÚinsertÚjoin)r0   ÚprefixÚsZ
underscorerP   ÚslÚposr&   r&   r'   Úinsert_underscoreQ  s    
z&RoundTripRepresenter.insert_underscorec                 C   sD   |j d k	rd ||j ¡}n
t|dƒ}|jdd�}| jd||j|d�S )Nz{:0{}d}ÚdTrÈ   r¶   rƒ   ©Ú_widthÚformatrÌ   rá   Z_underscore©r0   r8   rÞ   rP   r&   r&   r'   Úrepresent_scalar_intb  s
    

z)RoundTripRepresenter.represent_scalar_intc                 C   sD   |j d k	rd ||j ¡}n
t|dƒ}|jdd�}| jd||j|d�S )Nz{:0{}b}ÚbTrÈ   Ú0brƒ   rã   ræ   r&   r&   r'   Úrepresent_binary_intk  s
    

z)RoundTripRepresenter.represent_binary_intc                 C   sD   |j d k	rd ||j ¡}n
t|dƒ}|jdd�}| jd||j|d�S )Nz{:0{}o}ÚoTrÈ   Z0orƒ   rã   ræ   r&   r&   r'   Úrepresent_octal_intu  s
    

z(RoundTripRepresenter.represent_octal_intc                 C   sD   |j d k	rd ||j ¡}n
t|dƒ}|jdd�}| jd||j|d�S )Nz{:0{}x}ÚxTrÈ   Ú0xrƒ   rã   ræ   r&   r&   r'   Úrepresent_hex_int  s
    

z&RoundTripRepresenter.represent_hex_intc                 C   sD   |j d k	rd ||j ¡}n
t|dƒ}|jdd�}| jd||j|d�S )Nz{:0{}X}ÚXTrÈ   rî   rƒ   rã   ræ   r&   r&   r'   Úrepresent_hex_caps_int‰  s
    

z+RoundTripRepresenter.represent_hex_caps_intc                 C   s˜  d}|j dd�}||ks(|dkr.|dkr.d}n || jkr>d}n|| j krNd}|rb| jd	||d
�S |jdkrª|jdkrª|j|jd krªd |jr–|jndtt	|ƒƒ¡}�nÈ|jdk�r>|j}|jrÈ|jnd}d |t|ƒ|jt
|ƒ |j| d ¡}|dk�s|dk�r|dk�r| dd¡}t
|ƒ|jk �rr|d7 }�q�n4d ||j|j|j�rXdnd ¡ d¡\}}|jdk�r||jn|jd }|dk �r˜|d7 }|d|… }t	|ƒ}	| d¡\}
}t
|
ƒt
|ƒ |j|jdk�rÜdnd k �rò|d7 }�qº|j�r|dk�rd|
 }
|j�rdnd}|jdk �r |dk�r@|	t
|ƒ8 }	nd}t
|
ƒt
|ƒ |j�r^dnd |jk �r€|d7 }|	d8 }	�qD|
| |j d |	||j¡ }nÒ|jdk�rÜ|	t
|ƒ8 }	|
| d |j d |	||j¡ }n–|jdk�rd|jd  |
 | }d}
|d|j … }|	|j7 }	t
|
ƒ|jk �rP|
|d 7 }
|dd… }|	d8 }	�q|
d | |j d |	||j¡ }|dk�rˆt|ƒ ¡ }| jd	||d
�S )z this is way more complicated NTrÈ   r‡   rˆ   r‰   rŠ   r‹   r�   rƒ   r   rŒ   z{}{:d}.r¶   z{}{:0{}.{}f}z0.r�   Ú0z	{:{}.{}e}rŽ   ú+z	{:{}0{}d})rÌ   r�   rT   Ú_expZ_precrä   rå   Z_m_signÚabsrr   rÇ   r“   ÚsplitZ_e_signZ_e_widthZ_m_lead0r‘   r’   )r0   r8   rS   rP   ÚprecÚmsÚmÚesÚwrŽ   Úm1Úm2Zesgnr&   r&   r'   Úrepresent_scalar_float“  s†    
$$   ÿüû
,
( $
"
z+RoundTripRepresenter.represent_scalar_floatc                 C   sî  g }z|j  |¡}W n tk
r,   |}Y nX z| ¡ }W n tk
rR   d }Y nX t||||d�}| jd k	rz|| j| j< d}zÊt|tƒ}|j	|_	|j	rº|j	d rº|j	d D ]}	|	 
¡  q¬|j}
|
 ¡ D ]&}|rÈ|d rÈ|d D ]}	|	 
¡  qàqÈ|j}
|j	d k�r|j	|_	n|j	d d … |_	z|j	 |j¡ W n tk
�rD   Y nX W n tk
�rb   i }
Y nX t|ƒD ]H\}}|  |¡}|  ||
 |¡¡ t|tƒ�r¤|j�r¨d}| |¡ �ql|d k�rêt|ƒdk�rä| jd k	�rä| j|_n||_|S )N©rV   rP   TrŒ   Fr   )ÚfarV   r5   rÌ   rW   r-   r+   rQ   r   rN   Úresetrb   Úvaluesr=   ÚendÚ	enumerater6   Úmerge_commentsÚgetrX   rB   rO   rÇ   r*   )r0   rR   rY   rV   rS   rP   r9   rZ   rN   ÚctÚitem_commentsÚvÚidxr[   r\   r&   r&   r'   r]   Þ  sZ    










z'RoundTripRepresenter.represent_sequencec                 C   s„   |d krt |dƒst‚|S t|dd ƒd k	rzt|ƒD ]F\}}|t|jƒkrJq2|j| }|d k	r2|d ksp||kspt‚|||< q2||_|S )NrN   )r3   ÚAssertionErrorrQ   r  rÇ   rN   )r0   r9   Úcommentsr
  ÚvalZncr&   r&   r'   r    s    

z#RoundTripRepresenter.merge_commentsc                 C   sL   t |tƒr d | _| jd|dd�S t |tƒr@d | _| jd|dd�S t | |¡S )Nr–   TrU   r™   )rX   r   r-   r]   r   rk   r   rG   rF   r&   r&   r'   rG   %  s    

z"RoundTripRepresenter.represent_keyc                 C   s&  g }z|j  |¡}W n tk
r,   |}Y nX z| ¡ }W n tk
rR   d }Y nX t||||d�}| jd k	rz|| j| j< d}zÌt|tƒ}|j	d krž|j	|_	n|j	d d … |_	|j	rÖ|j	d rÖ|j	d D ]}	|	 
¡  qÈ|j}
| jjd k�rH|
 ¡ D ](}|rò|d rò|d D ]}	|	 
¡  �q
qòz|j	 |j¡ W n tk
�rD   Y nX n W n tk
�rd   i }
Y nX dd„ t|tg ƒD ƒ}zt|tdggƒd d }W n tk
�r²   d}Y nX d}t|ƒ�rÌ| ¡ }n| ¡ }|D ]À\}}|d7 }|  |¡}|  |¡}|
 |¡}|�rX|d d… |_	t|dd ƒ}|d k	�rJ|d |d< |d	 |d< n|dd … |_	t|tƒ�rl|j�rpd
}t|tƒ�r„|j�rˆd
}| ||f¡ �qØ|d k�rÔ|dk�s¸t|ƒ�rÎ| jd k	�rÎ| j|_n||_t|ƒ�r"t|ƒdk�rü|  |d ¡}n|  |¡}d|_| |tddƒ|f¡ |S )Nrÿ   TrŒ   c                 S   s   g | ]}|d  ‘qS )rŒ   r&   )Ú.0rù   r&   r&   r'   Ú
<listcomp>X  s     z:RoundTripRepresenter.represent_mapping.<locals>.<listcomp>r   r¬   rN   é   Fztag:yaml.org,2002:mergez<<)r   rV   r5   rÌ   rc   r-   r+   rQ   r   rN   r  rb   r(   Zcomment_handlingr  r=   r  r   Ú
IndexErrorrq   Znon_merged_itemsrG   r6   r  rX   rB   rO   r*   rÇ   rÛ   )r0   rR   rg   rV   rS   rP   r9   rZ   rN   r  r  r	  Z
merge_listZ	merge_posZ
item_countrb   r_   rh   ri   rj   Úitem_commentÚnvcÚargr&   r&   r'   rk   /  sŽ    















 


z&RoundTripRepresenter.represent_mappingc                 C   s^  g }z|j  |¡}W n tk
r,   |}Y nX z| ¡ }W n tk
rR   d }Y nX t||||d�}| jd k	rz|| j| j< d}z¼t|tƒ}|j	d krž|j	|_	n|j	d d … |_	|j	rÖ|j	d rÖ|j	d D ]}	|	 
¡  qÈ|j}
|
 ¡ D ](}|rä|d rä|d D ]}	|	 
¡  � qüqäz|j	 |j¡ W n tk
�r6   Y nX W n tk
�rT   i }
Y nX |D ]Ø}|| }|  ||i¡}|
 |¡}|�r&|d �rœd |d g|_	t|jd d dd ƒd k�s¼t‚|d d g|jd d _	t|jd d dd ƒ}|d k	�r|d |d< |d |d< n|dd … |jd d _	| |¡ �qZ|d k�rZ| jd k	�rT| j|_n||_|S )Nrÿ   TrŒ   r   rN   r¬   r  )r   rV   r5   rÌ   rW   r-   r+   rQ   r   rN   r  rb   r  r=   r  r6   r  rS   r  r*   )r0   rR   r^   rV   rS   rP   r9   rZ   rN   r  r  r	  r_   r`   r\   r  r  r&   r&   r'   ra   ‡  sh    










 


z#RoundTripRepresenter.represent_omapc                 C   sæ  d}d}g }|j  |¡}z| ¡ }W n tk
r<   d }Y nX t||||d�}| jd k	rd|| j| j< d}zºt|tƒ}|j	d krˆ|j	|_	n|j	d d … |_	|j	rÀ|j	d rÀ|j	d D ]}	|	 
¡  q²|j}
|
 ¡ D ]&}|rÎ|d rÎ|d D ]}	|	 
¡  qæqÎz|j	 |j¡ W n tk
�r   Y nX W n tk
�r<   i }
Y nX |jD ]˜}|  |¡}|  d ¡}|
 |¡}|�r�t|dd ƒd k�s‚t‚|d d… |_	d |_|_t|tƒ�r°|j�r´d}t|tƒ�rÈ|j�rÌd}| ||f¡ �qD|}|S )	NFr�   rÿ   TrŒ   rN   r¬   ú?)r   rV   rÌ   r5   rc   r-   r+   rQ   r   rN   r  rb   r  r=   r  ZodictrG   r6   r  r  rO   rX   rB   )r0   ZsettingrV   rR   rS   rP   r9   rZ   rN   r  r  r	  r_   ri   rj   r  r&   r&   r'   rŸ   Ç  s\    











z"RoundTripRepresenter.represent_setc                 C   s\   z|j j}W n tk
r$   d}Y nX |rL| d¡rFd|dd…  }qP|}nd}|  ||¡S )z!write out tag if saved on loadingNú!!útag:yaml.org,2002:r¬   r™   )rR   rS   r5   Ú
startswithrk   ©r0   r8   ÚtrR   r&   r&   r'   r›   ü  s    

z#RoundTripRepresenter.represent_dictc                 C   s\   z|j j}W n tk
r$   d }Y nX |rL| d¡rFd|dd …  }qP|}nd}|  ||¡S )Nr  r  r¬   r–   )rR   rS   r5   r  r]   r  r&   r&   r'   r˜     s    

z#RoundTripRepresenter.represent_listc                 C   sb   |j d rdnd}|j }|d r8||d 7 }| |¡}n
| |¡}|d rV||d 7 }|  d|¡S )Nr  ÚTr¤   ÚdeltaÚtzr    )Ú_yamlr¢   rT   )r0   r8   Zinterr  rS   r&   r&   r'   r¥     s    
z'RoundTripRepresenter.represent_datetimec                 C   sb   z|j j}W n tk
r$   d }Y nX z| ¡ }W n tk
rJ   d }Y nX | j||j|j|d�S )NrÊ   )rR   rS   r5   rÌ   rT   rO   )r0   r8   rR   rP   r&   r&   r'   Úrepresent_tagged_scalar(  s    

z,RoundTripRepresenter.represent_tagged_scalarc                 C   s6   z|  ¡ }W n tk
r$   d }Y nX tj| ||d�S )Nrƒ   )rÌ   r5   r   r„   )r0   r8   rP   r&   r&   r'   Úrepresent_scalar_bool4  s
    
z*RoundTripRepresenter.represent_scalar_boolc                 C   sN   t |dƒr| ¡ }n
|j ¡ }| tjd ¡}| j|||d�}|d k	rJ||_|S r¦   )	r3   r§   rH   rI   Úpopr   Úattribrk   rP   )r0   rR   r8   rK   rV   r¨   rP   Úresr&   r&   r'   r©   <  s    


z*RoundTripRepresenter.represent_yaml_object)NNN)N)N)N)N)N)r#   r$   r%   r1   r;   rw   rÎ   Z represent_preserved_scalarstringrÔ   rÖ   rØ   rÙ   rá   rç   rê   rì   rï   rñ   rþ   r]   r  rG   rk   ra   rŸ   r›   r˜   r¥   r  r   r©   r&   r&   r&   r'   r"     s8   
	
	



K
7

X
@5)kZruamel.yaml.errorZruamel.yaml.nodesZruamel.yaml.compatr   r   r   r   Zruamel.yaml.scalarstringr   r   r	   r
   r   Zruamel.yaml.commentsr   r   r   r   r   r   r   r   r   Zruamel.yaml.scalarintr   r   r   r   r   Zruamel.yaml.scalarfloatr   Zruamel.yaml.scalarboolr   Zruamel.yaml.timestampr   Zruamel.yaml.anchorr   ÚdatetimeÚsysÚtypesrÁ   r}   ÚDictÚListÚAnyÚUnionÚTextÚOptionalÚ__all__Z	YAMLErrorr!   r   r   rL   r>   rw   rC   ry   rp   r€   rq   r„   rr   r†   rs   r•   rd   r˜   ro   rÃ   r›   ÚsetrŸ   rœ   Úversion_infoÚcollectionsÚOrderedDictÚdater£   r¥   r«   r    Úcomplexr±   r²   r·   ÚFunctionTypeÚBuiltinFunctionTypeÚ
ModuleTyper¸   rM   ÚobjectrÆ   r"   rÎ   rÔ   rÖ   rØ   rÙ   rç   rê   rì   rï   rñ   rþ   r   r  r&   r&   r&   r'   Ú<module>   sÎ   , ÿ 6} ÿg    L ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ