a
    ܌xd                    @   sD  d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZmZm	Z	 d dl
mZmZmZ d dlT d dlmZmZmZ d dlmZmZmZmZ d dlmZ d dlT d dlmZmZmZmZ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+m,Z, d d
l-m.Z.m/Z/m0Z0m1Z1m2Z2 d dl3m4Z4 d dl5m6Z6 d dl7m8Z8 d dl9m:Z:m;Z; d dl<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZC g dZDG dd deZEG dd deZFG dd deZGG dd dZHG dd deHZIeIJdeIjK eIJdeIjL eIJdeIjM eIJdeIjN eIJdeIjO eIJd eIjP eIJd!eIjQ eIJd"eIjR eIJd#eIjS eIJd$eIjT eIJd%eIjU eIJd&eIjV eIJdeIjW G d'd( d(eIZXeXJd)eXjK eXJd*eXjL eXJd+eXjY eXJd,eXjZ eXJd-eXj[ eXJd.eXjM eXJd/eXj\ eXJd0eXjN eXJd1eXj] eXJd2eXjU eXJd3eXj^ eXJd4eXjV eX_d5eXj` eX_d6eXja eX_d7eXjb eX_d8eXjc eX_d9eXjd G d:d; d;eIZeeeJdeejK eeJdeejf eeJdeejM eeJdeejN eeJdeejO eeJd eejP eeJd!eejQ eeJd"eejR eeJd#eejS eeJd$eejT eeJd%eejU eeJd&eejV eeJdeejg dS )<    N)HashableMutableSequenceMutableMapping)MarkedYAMLErrorMarkedYAMLFutureWarningMantissaNoDotYAML1_1Warning)*)SequenceNodeMappingNode
ScalarNode)builtins_modulenprintnprintfversion_tnf)ordereddict)CommentedMapCommentedOrderedMapCommentedSetCommentedKeySeqCommentedSeqTaggedScalarCommentedKeyMap	C_KEY_PRE	C_KEY_EOL
C_KEY_POSTC_VALUE_PREC_VALUE_EOLC_VALUE_POST)SingleQuotedScalarStringDoubleQuotedScalarStringLiteralScalarStringFoldedScalarStringPlainScalarStringScalarString)	ScalarInt	BinaryIntOctalIntHexInt
HexCapsInt)ScalarFloat)ScalarBoolean)	TimeStamp)timestamp_regexpcreate_timestamp)AnyDictListSetIteratorUnionOptional)BaseConstructorSafeConstructorConstructorConstructorErrorRoundTripConstructorc                   @   s   e Zd ZdS )r8   N__name__
__module____qualname__ r>   r>   O/var/www/html/Ranjet/env/lib/python3.9/site-packages/ruamel/yaml/constructor.pyr8   ,   s   r8   c                   @   s   e Zd ZdS )DuplicateKeyFutureWarningNr:   r>   r>   r>   r?   r@   0   s   r@   c                   @   s   e Zd ZdS )DuplicateKeyErrorNr:   r>   r>   r>   r?   rA   4   s   rA   c                   @   sp  e Zd Zi Zi Zd0ee eddddZe	edddZ
e	eddd	Ze	edd
dZedddZedddZedddZeedddZd1eeedddZd2eee edddZeedddZd3eeedddZd4eeedd d!Zeeeeeed"d#d$Zeeeeedd%d&d'Zd5eeedd(d)Zeeedd*d+d,Zeeedd-d.d/ZdS )6r5   N)preserve_quotesloaderreturnc                 C   sj   || _ | j d ur*t| j dd d u r*| | j _|| _ t| _t| _i | _i | _g | _	d| _
|| _tdd| _d S )N_constructorF)r         )r      )rC   getattrrE   dictyaml_base_dict_typelistyaml_base_list_typeconstructed_objectsrecursive_objectsstate_generatorsdeep_construct_preserve_quotesr   allow_duplicate_keys)selfrB   rC   r>   r>   r?   __init__=   s    zBaseConstructor.__init__rD   c                 C   s~   t | jdr| jjS z
| jjW S  tyx   tjdt|  d tjd| jj d tjt	|  d  Y n0 d S )Ntypzslt 
zslc )
hasattrrC   composerZ	_composerAttributeErrorsysstdoutwritetypedirrT   r>   r>   r?   rZ   K   s    
zBaseConstructor.composerc                 C   s   t | jdr| jjS | jjS NrW   )rY   rC   resolverZ	_resolverra   r>   r>   r?   rc   W   s    zBaseConstructor.resolverc                 C   s   t | jdr| jjS | jjS rb   )rY   rC   scannerZ_scannerra   r>   r>   r?   rd   ]   s    zBaseConstructor.scannerc                 C   s
   | j  S N)rZ   
check_nodera   r>   r>   r?   
check_datad   s    zBaseConstructor.check_datac                 C   s   | j  r| | j  S d S re   )rZ   rf   construct_documentZget_nodera   r>   r>   r?   get_datah   s    
zBaseConstructor.get_datac                 C   s    | j  }|d ur| |S d S re   )rZ   Zget_single_noderh   rT   noder>   r>   r?   get_single_datam   s    

zBaseConstructor.get_single_datark   rD   c                 C   sL   |  |}t| jr6| j}g | _|D ]}|D ]}q,q$q
i | _i | _d| _|S )NF)construct_objectboolrP   rN   rO   rQ   )rT   rk   datarP   	generator_dummyr>   r>   r?   rh   t   s    

z"BaseConstructor.construct_documentFrk   deeprD   c                 C   sl   || j v r| j | S |r$| j}d| _|| jv r8| j| S d| j|< | |}|| j |< | j|= |rh|| _|S )deep is True when creating an object/mapping recursively,
        in that case want the underlying elements available during construction
        TN)rN   rQ   rO   construct_non_recursive_object)rT   rk   rt   Zold_deeprp   r>   r>   r?   rn      s    






z BaseConstructor.construct_object)rk   tagrD   c           	      C   s*  d }d }|d u r|j }|| jv r,| j| }n| jD ],}||r2|t|d  }| j| } qq2d | jv rz|}| jd  }nPd | jv r| jd  }n:t|tr| jj}n&t|t	r| jj
}nt|tr| jj}|d u r|| |}n|| ||}t|tjr&|}t|}| jr|D ]}qn| j| |S re   )rw   yaml_constructorsyaml_multi_constructors
startswithlen
isinstancer   	__class__construct_scalarr	   construct_sequencer
   construct_mappingtypesGeneratorTypenextrQ   rP   append)	rT   rk   rw   constructorZ
tag_suffix
tag_prefixrp   rq   rr   r>   r>   r?   rv      sB    










z.BaseConstructor.construct_non_recursive_objectc                 C   s(   t |ts"td d d|j|j|jS )N"expected a scalar node, but found )r|   r   r8   id
start_markvaluerj   r>   r>   r?   r~      s
    
z BaseConstructor.construct_scalarc                    s8   t |ts"tddd|j|j fdd|jD S )ru   N$expected a sequence node, but found c                    s   g | ]}j | d qS )rt   )rn   ).0childrt   rT   r>   r?   
<listcomp>       z6BaseConstructor.construct_sequence.<locals>.<listcomp>)r|   r	   r8   r   r   r   rT   rk   rt   r>   r   r?   r      s    

z"BaseConstructor.construct_sequencec              	   C   s
  t |ts"tddd|j|j|  }t|dddurP|jdf|jdfg}n|jdfg}|D ]\}}|  }|D ]\}}	| j	|dd}
t |
t
st |
trt|
}
t |
t
std|jd|j| j	|	|d}|r| ||||
|r|||
< qt|||
< qt|| q`|S )	ru   N#expected a mapping node, but found mergeFTr   while constructing a mappingfound unhashable key)r|   r
   r8   r   r   rK   rI   r   r   rn   r   rL   tuplecheck_mapping_keyupdate)rT   rk   rt   Ztotal_mappingtodovaluescheckmappingkey_node
value_nodekeyr   r>   r>   r?   r      s:    





z!BaseConstructor.construct_mapping)rk   r   r   r   r   rD   c              	   C   sn   ||v rj| j sf||}d|jd| d| d| d|jddg}| j du r^tjt| d	d
 nt| dS dS )zreturn True if key is uniquer   found duplicate key "z" with value "z" (original value: "z")
                    To suppress this check see:
                        http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys
                                        Duplicate keys will become an error in future releases, and are errors
                    by default when using the new API.
                    NrG   
stacklevelFT)rS   getr   warningswarnr@   rA   )rT   rk   r   r   r   r   mkargsr>   r>   r?   r      s"    

z!BaseConstructor.check_mapping_key)rT   rk   r   settingr   rD   c                 C   sT   ||v rP| j sPd|jd| d|jddg}| j d u rHtjt| dd nt| d S )Nzwhile constructing a setr   "r   r   rG   r   )rS   r   r   r   r@   rA   )rT   rk   r   r   r   r   r>   r>   r?   check_set_key  s    

zBaseConstructor.check_set_keyc                 C   sd   t |ts"td d d|j|jg }|jD ]2\}}| j||d}| j||d}|||f q,|S )Nr   r   )r|   r
   r8   r   r   r   rn   r   )rT   rk   rt   pairsr   r   r   r   r>   r>   r?   construct_pairs-  s    
zBaseConstructor.construct_pairs)rw   r   rD   c                 C   s$   d| j vr| j | _|| j|< d S )Nrx   )__dict__rx   copy)clsrw   r   r>   r>   r?   add_constructor9  s    
zBaseConstructor.add_constructor)r   multi_constructorrD   c                 C   s$   d| j vr| j | _|| j|< d S )Nry   )r   ry   r   )r   r   r   r>   r>   r?   add_multi_constructor?  s    
z%BaseConstructor.add_multi_constructor)NN)F)N)F)F)F)r;   r<   r=   rx   ry   r4   ro   r.   rU   propertyrZ   rc   rd   rg   ri   rl   rh   rn   strrv   r~   r   r   r   r   r   classmethodr   r   r>   r>   r>   r?   r5   8   s6   '(
r5   c                	   @   sd  e Zd ZeedddZeedddZd,eeeddd	Zeedd
dZdddddddddZ	eedddZ
eedddZdZeee kree9 Zqe e ZeedddZeedddZeZd-eeedddZeedddZeedddZeeddd Zeedd!d"Zeedd#d$Zeedd%d&Zeeed'd(d)Zeddd*d+ZdS ).r6   rm   c                 C   s>   t |tr2|jD ] \}}|jdkr| |  S qt| |S )Ntag:yaml.org,2002:value)r|   r
   r   rw   r~   r5   )rT   rk   r   r   r>   r>   r?   r~   G  s
    

z SafeConstructor.construct_scalarc           
      C   s  g }d}|t |jk rt|j| \}}|jdkrN|r| jrN|j|= |d7 }qd|jd|j d|jddg}| jd	u rtjt| dd
 nt| |j|= t	|t
r| | ||j nt	|tr2g }|jD ]>}t	|t
std|jd|j|j| | ||j q|  |D ]}	||	 qntd|jd|j|jq|jdkrjd|_|d7 }q|d7 }qt|r||_||j |_d	S )
        This implements the merge key feature http://yaml.org/type/merge.html
        by inserting keys from the merge dict/list of dicts if not yet
        available in this node
        r   tag:yaml.org,2002:mergerG   r   r   r   
                        To suppress this check see:
                           http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys
                                                Duplicate keys will become an error in future releases, and are errors
                        by default when using the new API.
                        Nr   *expected a mapping for merging, but found >expected a mapping or list of mappings for merging, but found r   tag:yaml.org,2002:str)r{   r   rw   rS   r   r   r   r@   rA   r|   r
   flatten_mappingextendr	   r8   r   r   reversero   r   )
rT   rk   r   indexr   r   r   Zsubmergesubnoder   r>   r>   r?   r   N  sl    









zSafeConstructor.flatten_mappingFrs   c                 C   s$   t |tr| | tj| ||dS )ru   r   )r|   r
   r   r5   r   r   r>   r>   r?   r     s    

z!SafeConstructor.construct_mappingc                 C   s   |  | d S re   r~   rj   r>   r>   r?   construct_yaml_null  s    
z#SafeConstructor.construct_yaml_nullT)yesnoyntruefalseonoffc                 C   s   |  |}| j|  S re   )r~   bool_valueslowerrT   rk   r   r>   r>   r?   construct_yaml_bool  s    
z#SafeConstructor.construct_yaml_boolc                 C   sH  |  |}|dd}d}|d dkr*d}|d dv rB|dd  }|dkrNdS |d	rn|t|d
d  d
 S |dr|t|d
d  d S |dr|t|d
d  d S | jjdkr|d dkr|t|d S | jjdkr8d|v r8dd |dD }|  d}d}|D ]}||| 7 }|d9 }q|| S |t| S d S )N_ rG   r   -+-00b   0xrH   0o   rG   rG   :c                 S   s   g | ]}t |qS r>   intr   partr>   r>   r?   r     r   z6SafeConstructor.construct_yaml_int.<locals>.<listcomp><   )r~   replacerz   r   rc   processing_versionsplitr   )rT   rk   value_ssigndigitsbaser   digitr>   r>   r?   construct_yaml_int  s6    



z"SafeConstructor.construct_yaml_intgu <7~c                 C   s  |  |}|dd }d}|d dkr.d}|d dv rF|dd  }|dkrX|| j S |d	krf| jS | jjd
krd|v rdd |dD }|  d}d}|D ]}||| 7 }|d9 }q|| S | jjd
krd|v r|d\}	}
d|	vrt	j
t||dd |t| S d S )Nr   r   rG   r   r   r   r   .inf.nanrG   r   r   c                 S   s   g | ]}t |qS r>   floatr   r>   r>   r?   r     r   z8SafeConstructor.construct_yaml_float.<locals>.<listcomp>        r   e.r   )r~   r   r   	inf_value	nan_valuerc   r   r   r   r   r   r   r   )rT   rk   value_sor   r   r   r   r   r   mantissaexponentr>   r>   r?   construct_yaml_float  s2    



z$SafeConstructor.construct_yaml_floatc              
   C   s   z|  |d}W n: tyN } z"td d d||jW Y d }~n
d }~0 0 zt|W S  tjy } z"td d d||jW Y d }~n
d }~0 0 d S Nasciiz*failed to convert base64 data into ascii: zfailed to decode base64 data: 	r~   encodeUnicodeEncodeErrorr8   r   base64decodebytesbinasciiErrorrT   rk   r   excr>   r>   r?   construct_yaml_binary  s    z%SafeConstructor.construct_yaml_binaryNrk   r   rD   c                 C   sj   |d u r\z| j |j}W n ty0   d }Y n0 |d u rTtd d d|j d|j| }tf i |S )N$failed to construct timestamp from "r   )r,   matchr   	TypeErrorr8   r   	groupdictr-   )rT   rk   r   r  r>   r>   r?   construct_yaml_timestamp  s    
z(SafeConstructor.construct_yaml_timestampc                 c   s   t  }|V  t|ts0td|jd|j|j|jD ]}t|ts^td|jd|j|jt|jdkrtd|jdt|jdd|j|jd \}}| 	|}||vsJ | 	|}|||< q6d S )	N!while constructing an ordered mapexpected a sequence, but found *expected a mapping of length 1, but found rG   *expected a single mapping item, but found d itemsr   )
r   r|   r	   r8   r   r   r   r
   r{   rn   rT   rk   Zomapr   r   r   r   r   r>   r>   r?   construct_yaml_omap  s:    






z#SafeConstructor.construct_yaml_omapc                 c   s   g }|V  t |ts.td|jd|j|j|jD ]}t |ts\td|jd|j|jt|jdkrtd|jdt|jdd|j|jd \}}| |}| |}|	||f q4d S )	Nzwhile constructing pairsr  r  rG   r  r  r  r   )
r|   r	   r8   r   r   r   r
   r{   rn   r   )rT   rk   r   r   r   r   r   r   r>   r>   r?   construct_yaml_pairs3  s8    






z$SafeConstructor.construct_yaml_pairsc                 c   s$   t  }|V  | |}|| d S re   )setr   r   rT   rk   rp   r   r>   r>   r?   construct_yaml_setR  s    
z"SafeConstructor.construct_yaml_setc                 C   s   |  |}|S re   r   r   r>   r>   r?   construct_yaml_strX  s    
z"SafeConstructor.construct_yaml_strc                 c   s"   |   }|V  || | d S re   )rM   r   r   rT   rk   rp   r>   r>   r?   construct_yaml_seq\  s    z"SafeConstructor.construct_yaml_seqc                 c   s&   |   }|V  | |}|| d S re   )rK   r   r   r  r>   r>   r?   construct_yaml_mapa  s    
z"SafeConstructor.construct_yaml_maprk   r   rD   c                 c   sN   | |}|V  t|dr4| j|dd}|| n| |}|j| d S )N__setstate__Tr   )__new__rY   r   r   r   r   )rT   rk   r   rp   stater>   r>   r?   construct_yaml_objectg  s    


z%SafeConstructor.construct_yaml_objectc                 C   s   t d d d|j|jd S )N.could not determine a constructor for the tag )r8   rw   r   rj   r>   r>   r?   construct_undefinedq  s    
z#SafeConstructor.construct_undefined)F)N)r;   r<   r=   r.   r~   r   ro   r   r   r   r   r   r   r   r   r   r   r  r,   r  r  r  r  r  r  r  r#  r%  r>   r>   r>   r?   r6   F  s>   F

 
r6   ztag:yaml.org,2002:nullztag:yaml.org,2002:boolztag:yaml.org,2002:intztag:yaml.org,2002:floatztag:yaml.org,2002:binaryztag:yaml.org,2002:timestampztag:yaml.org,2002:omapztag:yaml.org,2002:pairsztag:yaml.org,2002:setr   ztag:yaml.org,2002:seqztag:yaml.org,2002:mapc                   @   s  e Zd ZeedddZeedddZeedddZeeddd	Zeedd
dZ	eedddZ
eeedddZeeedddZeeedddZeeedddZd'eeeeeedddZeeddddZeeedd d!Zd(eeeed"d#d$Zeeedd%d&ZdS ))r7   rm   c                 C   s
   |  |S re   r   rj   r>   r>   r?   construct_python_str  s    z Constructor.construct_python_strc                 C   s
   |  |S re   r   rj   r>   r>   r?   construct_python_unicode  s    z$Constructor.construct_python_unicodec              
   C   s   z|  |d}W n: tyN } z"td d d||jW Y d }~n
d }~0 0 zt|W S  tjy } z"td d d||jW Y d }~n
d }~0 0 d S r   r   r  r>   r>   r?   construct_python_bytes  s    z"Constructor.construct_python_bytesc                 C   s   |  |}|S re   )r   )rT   rk   valr>   r>   r?   construct_python_long  s    
z!Constructor.construct_python_longc                 C   s   t | |S re   )complexr~   rj   r>   r>   r?   construct_python_complex  s    z$Constructor.construct_python_complexc                 C   s   t | |S re   )r   r   rj   r>   r>   r?   construct_python_tuple  s    z"Constructor.construct_python_tuple)namemarkrD   c                 C   sj   |st d|d|zt| W n@ ty^ } z(t d|d|d|d|W Y d }~n
d }~0 0 tj| S )N"while constructing a Python module+expected non-empty name appended to the tagcannot find module  ())r8   
__import__ImportErrorr\   modules)rT   r.  r/  r  r>   r>   r?   find_python_module  s"    zConstructor.find_python_modulec                 C   s6  |st d|d|d|v r~|d}|}g }t|dkr|d|  d|}zt| W qW q, tyx   Y q,Y q,0 q,n
t}|g}zt| W n@ ty } z(t d|d|d|d|W Y d }~n
d }~0 0 t	j
| }d|}	|}
|r2t|
|d s t d|d	|	d
|j|t|
|d}
q|
S )Nz"while constructing a Python objectr1  r   rG   r   r2  r3  r4  zcannot find z in the module )r8   r   r{   insertpopjoinr5  r6  r   r\   r7  rY   r;   rI   )rT   r.  r/  lnameZlmodule_nameZlobject_namemodule_namer  moduleZobject_nameobjr>   r>   r?   find_python_name  sV    



zConstructor.find_python_name)suffixrk   rD   c                 C   s4   |  |}|r&td|jd||j| ||jS )Nz while constructing a Python name$expected the empty value, but found )r~   r8   r   r@  rT   rA  rk   r   r>   r>   r?   construct_python_name  s    
z!Constructor.construct_python_namec                 C   s4   |  |}|r&td|jd||j| ||jS )Nr0  rB  )r~   r8   r   r8  rC  r>   r>   r?   construct_python_module  s    
z#Constructor.construct_python_moduleNF)rA  rk   r   kwdsnewobjrD   c                 C   sV   |sg }|si }|  ||j}|rDt|trD|j|g|R i |S ||i |S d S re   )r@  r   r|   r_   r!  )rT   rA  rk   r   rF  rG  r   r>   r>   r?   make_python_instance  s    z Constructor.make_python_instance)instancer"  rD   c                 C   s   t |dr|| nfi }t|tr8t|dkr8|\}}t |drP|j| n|r^|| | D ]\}}t||| qfd S )Nr   r   r   )	rY   r   r|   r   r{   r   r   itemssetattr)rT   rI  r"  	slotstater   r   r>   r>   r?   set_python_instance_state%  s    


z%Constructor.set_python_instance_statec                 c   sH   | j ||dd}|| j|< |V  t|d}| j||d}| || d S )NTrG  r   r   )rH  rO   rY   r   rM  )rT   rA  rk   rI  rt   r"  r>   r>   r?   construct_python_object3  s    

z#Constructor.construct_python_object)rA  rk   rG  rD   c                 C   s   t |tr*| j|dd}i }i }g }i }nJ| j|dd}	|	dg }|	di }|	di }|	dg }|	di }| |||||}
t|r| |
| t|r|
| t|r|D ]}|| |
|< q|
S )NTr   r   rF  r"  	listitems	dictitems)	r|   r	   r   r   r   rH  ro   rM  r   )rT   rA  rk   rG  r   rF  r"  rP  rQ  r   rI  r   r>   r>   r?   construct_python_object_apply=  s*    

z)Constructor.construct_python_object_applyc                 C   s   | j ||ddS )NTrN  )rR  )rT   rA  rk   r>   r>   r?   construct_python_object_newb  s    z'Constructor.construct_python_object_new)NNF)F)r;   r<   r=   r.   r&  r'  r(  r   r*  r,  r-  r8  r@  rD  rE  ro   rH  rM  rO  rR  rS  r>   r>   r>   r?   r7     s.   0 
 %r7   ztag:yaml.org,2002:python/noneztag:yaml.org,2002:python/boolztag:yaml.org,2002:python/strz tag:yaml.org,2002:python/unicodeztag:yaml.org,2002:python/bytesztag:yaml.org,2002:python/intztag:yaml.org,2002:python/longztag:yaml.org,2002:python/floatz tag:yaml.org,2002:python/complexztag:yaml.org,2002:python/listztag:yaml.org,2002:python/tupleztag:yaml.org,2002:python/dictztag:yaml.org,2002:python/name:z tag:yaml.org,2002:python/module:z tag:yaml.org,2002:python/object:z&tag:yaml.org,2002:python/object/apply:z$tag:yaml.org,2002:python/object/new:c                   @   s  e Zd ZdZeedddZd6eee edddZeed	d
dZeed	ddZ	eed	ddZ
eed	ddZd7eeeedddZeed	ddZddddZd8eeeedddZd9eeeeddd Zeee d	d!d"Zeee d	d#d$Zeedd%d&d'Zeeed(d)d*Zeee d	d+d,Zeee d	d-d.Zeeeeeef  d	d/d0Zd:eeee j!e j e"f d1d2d3Z#eeee$f d	d4d5Z%dS );r9   zOneed to store the comments on the node itself,
    as well as on the items
    )idxrD   c                 C   s(   | j jd usJ | jj| }|  |S re   )rC   comment_handlingrd   commentsZset_assigned)rT   rT  xr>   r>   r?   comment  s    zRoundTripConstructor.commentN)list_of_commentsrT  rD   c                 c   sF   |d u rg S |d ur,|| d u r$g S || }|D ]}|  |V  q0d S re   )rX  )rT   rY  rT  rW  r>   r>   r?   rV    s    zRoundTripConstructor.commentsrm   c                 C   s  t |ts"td d d|j|j|jdkrt |jtrt|j|j	d}| j
r|| j
jd u r||jr|jd r|jd d |_n*|jd ur|jd r| |jd d |_|S |jdkrt |jtrg }d}|jd|d }|dk rq||t|  qt|jdd	|j	d}| j
rP| j
jd u rP|jr~|jd r~|jd d |_n.|jd ur~|jd r~| |jd d |_|r||_|S t| jrt |jtr|jd
krt|j|j	dS |jdkrt|j|j	dS |j	rt|j|j	dS |jS )Nr   |anchorrG   r   >r   r   'r   )r|   r   r8   r   r   styler   r   r    r\  rC   rU  rX  findr   r{   r!   r   Zfold_posro   rR   r   r   r"   )rT   rk   ZlssZfold_positionsrT  Zfssr>   r>   r?   r~     sH    
z%RoundTripConstructor.construct_scalarc                 C   s  d }|  |}z*|d}t||d d ddg}W n* tyN   d }Y n tyb   d }Y n0 |dd}d}|d dkrd}|d dv r|dd  }|d	krdS |d
r@| jj	dkr|d d	krt|dd  }|d ur|d dk|d< t|dd  dko|d dk|d< t
|t|dd  d |||jdS |dr| jj	dkrx|d d	krxt|dd  }t}|dd  D ]*}	|	dv rt} q|	dv r qq|d ur|d dk|d< t|dd  dko|d dk|d< ||t|dd  d |||jdS |dr| jj	dkrP|d d	krPt|dd  }|d ur|d dk|d< t|dd  dko|d dk|d< t|t|dd  d |||jdS | jj	dkr|d d	krt|t|d |||jdS | jj	dkrPd|v rPdd |dD }
|
  d}d}|
D ]}||| 7 }|d9 }q,|| S | jj	dkr|d d	kr|d urt|dko|d dk|d< t|t| t||dS |rt|dko|d dk|d< t|t| d ||jdS |jrt|t| d |jdS |t| S d S )Nr   rG   Fr   r   r   r   r   r   r   r   r   )width
underscorer\  r   ZABCDEFZabcdefrH   r   r   r   r   c                 S   s   g | ]}t |qS r>   r   r   r>   r>   r?   r   '  r   z;RoundTripConstructor.construct_yaml_int.<locals>.<listcomp>r   )rb  rc  )rb  r\  )r~   rstripr{   rindex
ValueError
IndexErrorr   rz   rc   r   r%   r   r\  r'   r(   r&   r   r   r$   )rT   rk   rb  Zvalue_susxrc  r   r   Zhex_funchr   r   r   r   r>   r>   r?   r     s    

 

&



&
&
z'RoundTripConstructor.construct_yaml_intc                 C   s  t tddd}d}| |}|dd }d}|d d	krBd
}|d dv rb|d }|dd  }|dkrt|| j S |dkr| jS | jjdkrd|v rdd |	dD }|
  d}d}	|D ]}
|	|
| 7 }	|d9 }q||	 S d|v rz|	d\}}d}W n& ty&   |	d\}}d}Y n0 | jjdkrTd|vrTtjt||dd ||}t|}|d}|r||d8 }t|}|d dv }t|t| ||||||||jd	S t|}|d}||}t|t| |||||jdS )N)vrD   c                 S   sB   d}d}|t | k r>| | dv r>| | dkr4|d7 }|d7 }q|S )Nr   z0.r   rG   )r{   )rj  lead0rT  r>   r>   r?   leading_zerosA  s    
z@RoundTripConstructor.construct_yaml_float.<locals>.leading_zerosFr   r   rG   r   r   r   r   r   r   r   r   c                 S   s   g | ]}t |qS r>   r   r   r>   r>   r?   r   Y  r   z=RoundTripConstructor.construct_yaml_float.<locals>.<listcomp>r   r   r   Er   r   )rb  precm_signm_lead0expe_widthe_signr\  )rb  rn  ro  rp  r\  )r.   r   r~   r   r   r   r   rc   r   r   r   rf  r   r   r   r{   ra  r)   r   r\  )rT   rk   rl  ro  r   r   r   r   r   r   r   r   r   rq  rk  rb  rn  rr  rs  r>   r>   r?   r   @  s|    










z)RoundTripConstructor.construct_yaml_floatc                 C   s   |  |}t|tr|S |S re   )r~   r|   r#   r   r>   r>   r?   r    s    

z'RoundTripConstructor.construct_yaml_strF)rk   seqtyprt   rD   c                 C   s  t |ts"td d d|j|jg }| jrv| jjd u rv|jr||jd d  t	|jdkr|j
|jd dd n|jrtd|j |jrddlm} ||js||j t|jD ]P\}}|jr|j|j|d d |_|| j||d	 |||jj|jjg q|S )
Nr   r   TclearZnc3r   templated_idr   r   )r|   r	   r8   r   r   rC   rU  rX  _yaml_add_commentr{   yaml_end_comment_extendr   r\  ruamel.yaml.serializerrx  yaml_set_anchor	enumerater   r   rn   Z_yaml_set_idx_line_collinecolumn)rT   rk   rt  rt   Zret_valrx  rT  r   r>   r>   r?   construct_rt_sequence  s8    


z*RoundTripConstructor.construct_rt_sequencec           	         sd  t t d fdd}g }d}|t|jk r`|j| \}}|jdkr:|r jrb|j|= |d7 }qd|jd|j d	|jd
dg} jdu rtjt| dd nt	| |j|= t
|tr||||f nlt
|tr|jD ]<}t
|tstd|jd|j|j||||f qntd|jd|j|jq|jdkrVd|_|d7 }q|d7 }q|S )r   )r   rD   c                    s(   |  j v r j |  }n j| dd}|S )NFr   )rN   rn   )r   r   ra   r>   r?   constructed  s    
z9RoundTripConstructor.flatten_mapping.<locals>.constructedr   r   rG   r   r   r   r   r   Nr   r   r   r   r   )r.   r{   r   rw   rS   r   r   r   r@   rA   r|   r
   r   r	   r8   r   )	rT   rk   r  Zmerge_map_listr   r   r   r   r   r>   ra   r?   r     s^    





z$RoundTripConstructor.flatten_mappingrV   c                 C   s   d S re   r>   ra   r>   r>   r?   	_sentinel  s    zRoundTripConstructor._sentinel)rk   maptyprt   rD   c                 C   s  t |ts"td d d|j|j| |}| jr|| jjd u r||jr|	|jd d  t
|jdkr|j|jd dd n<|jr|jjd u rg |j_| |jdD ]}|jj| q|jrddlm} ||js||j d | j }}|jD ]\}	}
| j|	dd}t |tst |trrt|}|	jdu rB|j  n|	jdu rX|j  ||jj |jj! |}nZt |t"rt#|}|	jdu r|j  n|	jdu r|j  ||jj |jj! |}t |tstd	|jd
|	j| j|
|d}| $||	|||r| jr| jjd u r|	jrt
|	jdkr|	jd r|d u rr|	j%d|	jd< |j	|	j|d n"|	j%d|	jd< |j	|	j|d d |	_|	jr|j	|	j|d |
jr|j	|
j|d n|	jrHt&d||	j |	jd r|j'|t(|	jd  |	jd r&|j'|t)|	jd  |	jd rH|j'|t*|	jd  |
jrt&d||
j |
jd r|j'|t+|
jd  |
jd r|j'|t,|
jd  |
jd r|j'|t-|
jd  |.||	jj |	jj/|
jj |
jj/g |||< || }}q|r|0| d S )Nr   r   Tru  r   rw  r   Fr   r      r   ry  Znc5arG   Znc5b)1r|   r
   r8   r   r   r   rC   rU  rX  rz  r{   r{  caprerV  r   r\  r|  rx  r}  r  r   rn   r   r   r   
flow_stylefaset_flow_styleset_block_style_yaml_set_line_collcr  colr   r   r   r:  r   r  r   r   r   r   r   r   Z_yaml_set_kv_line_colr  Zadd_yaml_merge)rT   rk   r  rt   Z	merge_mapZcmntrx  last_key
last_valuer   r   r   Zkey_sZkey_mr   r>   r>   r?   r     s    




$
	z&RoundTripConstructor.construct_mapping)rk   rW   rt   rD   c           	      C   s  t |ts"td d d|j|j| jrr| jjd u rr|jr||jd d  t	|jdkr|j
|jd dd n|jrtd|j |jrddlm} ||js||j |jD ]\}}| j|dd}t |tst |trt|}t |tstd	|jd
|j| j||d}| |||| | jrh| jjd u rh|jrN|j|j|d |jr|j|j|d n(|jr|td|j |jrtd|j || qd S )Nr   r   Tru  Znc6r   rw  r   r   r   ry  r  Znc7aZnc7b)r|   r
   r8   r   r   rC   rU  rX  rz  r{   r{  r   r\  r|  rx  r}  r   rn   r   rL   r   r   add)	rT   rk   rW   rt   rx  r   r   r   r   r>   r>   r?   construct_settingu  sN    



z&RoundTripConstructor.construct_settingc                 c   sB   t  }||jj|jj |V  || || | || d S re   )r   r  r   r  r  r   r  set_collection_styler  r>   r>   r?   r    s
    z'RoundTripConstructor.construct_yaml_seqc                 c   s@   t  }||jj|jj |V  | j||dd | || d S )NTr   )r   r  r   r  r  r   r  r  r>   r>   r?   r    s
    z'RoundTripConstructor.construct_yaml_map)rp   rk   rD   c                 C   s>   t |dkrd S |jdu r&|j  n|jdu r:|j  d S )Nr   TF)r{   r  r  r  r  )rT   rp   rk   r>   r>   r?   r    s    

z)RoundTripConstructor.set_collection_styler  c                 c   s   | |}|V  t|dr6tj| |dd}|| n4t| |}t|dr^|jf i | n|j| |jrddl	m
} ddlm} ||jst||js| }t||j| nt||j}|j|_d S )Nr   Tr   __attrs_attrs__r   rw  )Anchor)r!  rY   r6   r   r   rU   r   r   r\  r|  rx  Zruamel.yaml.anchorr  attribrK  rI   r   )rT   rk   r   rp   r"  rx  r  ar>   r>   r?   r#    s$    



z*RoundTripConstructor.construct_yaml_objectc                 c   s  t  }||jj|jj |jdu r0|j  n|jdu rD|j  |V  | j	r| j	j
d u r|jr||jd d  t|jdkr|j|jd dd n|jrtd|j t|tstd|jd|j|j|jD ]0}t|tstd|jd|j|jt|jd	kr4td|jd
t|jdd|j|jd \}}| |}||vsZJ | |}| j	r| j	j
d u r|jr|j|j|d |jr|j|j|d |jr |j|j|d n<|jrtd|j |jrtd|j |jr td|j |||< qd S )NTFr   ru  Znc8r  r  r  rG   r  r  r  r   ry  r  Znc9aZnc9bZnc9c)r   r  r   r  r  r  r  r  r  rC   rU  rX  rz  r{   r{  r   r|   r	   r8   r   r   r
   rn   r  r>   r>   r?   r    sl    







z(RoundTripConstructor.construct_yaml_omapc                 c   s0   t  }||jj|jj |V  | || d S re   )r   r  r   r  r  r  r  r>   r>   r?   r    s    z'RoundTripConstructor.construct_yaml_setc                 c   s  zt |trt }||jj|jj |jdu r>|j	  n|jdu rR|j
  ||j |V  |jrddlm} ||js||j | || W d S t |trt }| ||_|j|_||j |V  |jrddlm} ||js|j|jdd W d S t |trt }||jj|jj |jdu rJ|j	  n|jdu r`|j
  ||j |V  |jrddlm} ||js||j || | W d S W n   Y n0 td d d|j|jd S )NTFr   rw  )Zalways_dumpr$  )r|   r
   r   r  r   r  r  r  r  r  r  Zyaml_set_tagrw   r\  r|  rx  r}  r   r   r   r~   r   r`  r	   r   r   r   r8   )rT   rk   rp   rx  Zdata2Zdata3r>   r>   r?   construct_unknown  sd    







z&RoundTripConstructor.construct_unknownr	  c                 C   s  z| j |j}W n ty(   d }Y n0 |d u rLtd d d|j d|j| }|d sjtf i |S dD ]}|| rn qqntf i |S tf i |}d }|d rt|d }|d }|rt|nd}	t	j
||	d	}|d d
kr| }t|t	j	rt|j|j|j|j|j|j|j}
nt|j|j|jdddd}
|
S |r||
jd< |d |d  }|d rv|d|d  7 }||
jd< n|d r|d |
jd< |d rd|
jd< |
S )Nr
  r   hour)ttz_signtz_hour	tz_minuter  r  r  r   )hoursminutesr   deltar   tzr  T)r,   r  r   r  r8   r   r  r-   r   datetime	timedeltar|   r+   yearmonthdayr  minutesecondmicrosecondZ_yaml)rT   rk   r   r  r   ddr  r  r  r  rp   r  r>   r>   r?   r  R  sX    





z-RoundTripConstructor.construct_yaml_timestampc                 C   s$   t | |}|jr t||jdS |S )Nr[  )r6   r   r\  r*   )rT   rk   br>   r>   r?   construct_yaml_sbool  s    z)RoundTripConstructor.construct_yaml_sbool)N)F)F)F)N)&r;   r<   r=   __doc__r.   rX  r4   rV  r~   r   r   r  ro   r  r   r  r   r  r2   r   r  r   r  r  r#  r   r  r   r  r3   r   r  r  dater+   r  r*   r  r>   r>   r>   r?   r9     s6   0_L$Ug1	=: 8r9   )hr  r  r  r\   r   r   collections.abcr   r   r   Zruamel.yaml.errorr   r   r   Zruamel.yaml.nodesr	   r
   r   Zruamel.yaml.compatr   r   r   r   r   Zruamel.yaml.commentsr   r   r   r   r   r   r   r   r   r   r   r   r   Zruamel.yaml.scalarstringr   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.utilr,   r-   typingr.   r/   r0   r1   r2   r3   r4   __all__r8   r@   rA   r5   r6   r   r   r   r   r   r  r  r  r  r  r  r  r  r%  r7   r&  r'  r(  r*  r,  r-  r   rD  rE  rO  rR  rS  r9   r  r  r>   r>   r>   r?   <module>   s  < $    6 J     {