o
    eii                    @  s2  d dl mZ d dl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	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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/m0Z0m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6m7Z7 d dl8m9Z9 d dl:m;Z; d dl<m=Z= d dl>m?Z?m@Z@ 	 g dZIG dd deZJG dd deZKdZLG dd deZMG dd dZNG dd deNZOd P D ]ZQeOReQ qeOSdeOjT G d!d" d"eOZUeUSd#eUjV eUSd$eUjW eUSd%eUjX eUSd&eUjY eUSd'eUjZ eUSd(eUj[ eUSd)eUj\ eUSd*eUj] eUSd+eUj^ eUSd,eUj_ eUSd-eUj` eUSd.eUja eUbd/eUjc eUbd0eUjd eUbd1eUje eUbd2eUjf eUbd3eUjg G d4d5 d5eOZhehjRd6d7d8 d9P D ]ZQehReQ qehSdehji dS ):    )annotationsN)	timedelta)HashableMutableSequenceMutableMapping)MarkedYAMLErrorMarkedYAMLFutureWarningMantissaNoDotYAML1_1Warning)*)SequenceNodeMappingNode
ScalarNode)builtins_modulenprintnprintfversion_tnf)ordereddict)Tag)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_timestampF)AnyDictListSetIteratorUnionOptional)BaseConstructorSafeConstructorConstructorConstructorErrorRoundTripConstructorc                   @     e Zd ZdS )r;   N__name__
__module____qualname__ rB   rB   U/home/ubuntu/transcripts/venv/lib/python3.10/site-packages/ruamel/yaml/constructor.pyr;   /       r;   c                   @  r=   )DuplicateKeyFutureWarningNr>   rB   rB   rB   rC   rE   3   rD   rE   z4https://yaml.dev/doc/ruamel.yaml/api/#Duplicate_keysc                   @  r=   )DuplicateKeyErrorNr>   rB   rB   rB   rC   rF   :   rD   rF   c                   @  s   e Zd Zi Zi ZdAdBdd	ZedCd
dZedCddZedCddZ	dCddZ
dCddZdCddZdDddZdEdFddZdGdHd d!ZdDd"d#ZdEdFd$d%ZdEdFd&d'ZdId,d-ZdJd0d1ZdEdFd2d3ZedKd5d6ZedLd9d:Ze	;dMdNd?d@ZdS )Or8   Npreserve_quotesOptional[bool]loaderr1   returnNonec                 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      )rI   getattrrL   dictyaml_base_dict_typelistyaml_base_list_typeconstructed_objectsrecursive_objectsstate_generatorsdeep_construct_preserve_quotesr   allow_duplicate_keys)selfrG   rI   rB   rB   rC   __init__C   s   zBaseConstructor.__init__c                 C  sv   t | jdr
| jjS z| jjW S  ty:   tjdt|  d tjd| jj d tjt	|  d  w )Ntypzslt 
zslc )
hasattrrI   composer	_composerAttributeErrorsysstdoutwritetypedirr[   rB   rB   rC   r`   Q   s   
zBaseConstructor.composerc                 C     t | jdr
| jjS | jjS Nr]   )r_   rI   resolver	_resolverrh   rB   rB   rC   rk   ]   s   zBaseConstructor.resolverc                 C  ri   rj   )r_   rI   scanner_scannerrh   rB   rB   rC   rm   c   s   zBaseConstructor.scannerc                 C  s
   | j  S N)r`   
check_noderh   rB   rB   rC   
check_dataj   s   
zBaseConstructor.check_datac                 C  s   | j  r| | j  S d S ro   )r`   rp   construct_documentget_noderh   rB   rB   rC   get_datan   s   
zBaseConstructor.get_datac                 C  s    | j  }|d ur| |S d S ro   )r`   get_single_noderr   r[   noderB   rB   rC   get_single_datas   s   

zBaseConstructor.get_single_datarw   c                 C  sT   |  |}t| jr| j}g | _|D ]}|D ]}qqt| js
i | _i | _d| _|S )NF)construct_objectboolrW   rU   rV   rX   )r[   rw   datarW   	generator_dummyrB   rB   rC   rr   z   s   


z"BaseConstructor.construct_documentFdeeprz   c                 C  sl   || j v r
| j | S |r| j}d| _|| jv r| j| S d| j|< | |}|| j |< | j|= |r4|| _|S )deep is True when creating an object/mapping recursively,
        in that case want the underlying elements available during construction
        TN)rU   rX   rV   construct_non_recursive_object)r[   rw   r~   old_deepr{   rB   rB   rC   ry      s   






z BaseConstructor.construct_objecttagOptional[str]c           	      C  s&  d }d }|d u r|j }|| jv r| j| }nO| jD ]}||r/|t|d  }| j| } n6qd | jv r=|}| jd  }n(d | jv rH| jd  }nt|trR| jj}nt|t	r\| jj
}n	t|tre| jj}|d u ro|| |}n|| ||}t|tjr|}t|}| jr|D ]}q|S | j| |S ro   )r   yaml_constructorsyaml_multi_constructors
startswithlen
isinstancer   	__class__construct_scalarr   construct_sequencer   construct_mappingtypesGeneratorTypenextrX   rW   append)	r[   rw   r   constructor
tag_suffix
tag_prefixr{   r|   r}   rB   rB   rC   r      sF   










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   r;   id
start_markvaluerv   rB   rB   rC   r      s
   
z BaseConstructor.construct_scalarc                   s8   t |tstddd|j|j fdd|jD S )r   N$expected a sequence node, but found c                   s   g | ]	}j | d qS )r~   )ry   ).0childr~   r[   rB   rC   
<listcomp>   s    z6BaseConstructor.construct_sequence.<locals>.<listcomp>)r   r   r;   r   r   r   r[   rw   r~   rB   r   rC   r      s   

z"BaseConstructor.construct_sequencec              	   C  s
  t |tstddd|j|j|  }t|dddur(|jdf|jdfg}n|jdfg}|D ]R\}}|  }|D ]B\}}	| j	|dd}
t |
t
sSt |
trSt|
}
t |
t
satd|jd|j| j	|	|d}|rx| ||||
|rw|||
< q:|||
< q:|| q0|S )	r   N#expected a mapping node, but found mergeFTr   while constructing a mappingfound unhashable key)r   r   r;   r   r   rR   rP   r   r   ry   r   rS   tuplecheck_mapping_keyupdate)r[   rw   r~   total_mappingtodovaluescheckmappingkey_node
value_nodekeyr   rB   rB   rC   r      s<   




z!BaseConstructor.construct_mappingr   r   r   r   c              	   C  sx   ||v r:| j s8||}d|jd| d| d| d|jdt ddg}| j d	u r4tjt| d
d dS t| dS dS )zreturn True if key is uniquer   found duplicate key "z" with value "z" (original value: "z")I
                    To suppress this check see:
                        
                                        Duplicate keys will become an error in future releases, and are errors
                    by default when using the new API.
                    NrN   
stacklevelFT)rZ   getr   
DUPKEY_URLwarningswarnrE   rF   )r[   rw   r   r   r   r   mkargsrB   rB   rC   r      s(   

z!BaseConstructor.check_mapping_keyr[   settingc                 C  sb   ||v r-| j s/d|jd| d|jdt ddg}| j d u r)tjt| dd d S t| d S d S )	Nzwhile constructing a setr   "r   r   r   rN   r   )rZ   r   r   r   r   rE   rF   )r[   rw   r   r   r   r   rB   rB   rC   check_set_key  s    

zBaseConstructor.check_set_keyc                 C  sd   t |tstd d d|j|jg }|jD ]\}}| j||d}| j||d}|||f q|S )Nr   r   )r   r   r;   r   r   r   ry   r   )r[   rw   r~   pairsr   r   r   r   rB   rB   rC   construct_pairs3  s   
zBaseConstructor.construct_pairsr   c                 C  sD   t |tr	t|}d| jvr| j | _| j|d }|| j|< |S )Nr   )r   r   str__dict__r   copyr   )clsr   r   ret_valrB   rB   rC   add_constructorA  s   


zBaseConstructor.add_constructorr   multi_constructorc                 C  s$   d| j vr| j | _|| j|< d S )Nr   )r   r   r   )r   r   r   rB   rB   rC   add_multi_constructorK  s   
z%BaseConstructor.add_multi_constructortag:yaml.org,2002:r   methodtag_basec                 C  8   | ds|d u rd| }|| }| |t| | d S Nztag:construct_yaml_r   r   rP   r   r   r   r   rB   rB   rC   add_default_constructorQ  
   
z'BaseConstructor.add_default_constructor)NN)rG   rH   rI   r1   rJ   rK   )rJ   r1   rw   r1   rJ   r1   Frw   r1   r~   rz   rJ   r1   ro   )rw   r1   r   r   rJ   r1   )rw   r1   r   r1   r   r1   r   r1   r   r1   rJ   rz   )r[   r1   rw   r1   r   r1   r   r1   r   r1   rJ   rK   )r   r1   r   r1   rJ   r1   )r   r1   r   r1   rJ   rK   )Nr   r   r   r   r1   r   r   rJ   rK   )r?   r@   rA   r   r   r\   propertyr`   rk   rm   rq   rt   rx   rr   ry   r   r   r   r   r   r   r   classmethodr   r   r   rB   rB   rB   rC   r8   >   s:    




'
'
	r8   c                	   @  s  e Zd Zd2ddZd2ddZd3d4ddZd2ddZdddddddddZd5ddZd6ddZ	dZ
e
e
e
 kr@e
e
9 Z
e
e
e
 ks6e
 e
 Zd7ddZd2ddZeZd8d9ddZd2d d!Zd2d"d#Zd2d$d%Zd2d&d'Zd2d(d)Zd2d*d+Zd:d-d.Zd;d0d1ZdS )<r9   rw   r1   rJ   c                 C  s>   t |tr|jD ]\}}|jdkr| |  S qt| |S )Ntag:yaml.org,2002:value)r   r   r   r   r   r8   )r[   rw   r   r   rB   rB   rC   r   ]  s   

z SafeConstructor.construct_scalarc           
      C  sl  g }d}|t |jk r|j| \}}|jdkr|r2| jr%|j|= |d7 }qd|jd|jdg}t| |j|= t|trG| | |	|j nWt|t
rg }|jD ]}t|tsetd|jd|j|j| | ||j qQ|  |D ]}	|	|	 qwntd|jd|j|j|jd	krd
|_|d7 }n|d7 }|t |jk st|r||_||j |_dS dS )z
        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:mergerN   r   found duplicate merge key "<<"                        Duplicate merge keys are never allowed, not even when
                        `.allow_duplicate_keys` is set to True
                        *expected a mapping for merging, but found >expected a mapping or list of mappings for merging, but found r   tag:yaml.org,2002:strN)r   r   r   rZ   r   rF   r   r   flatten_mappingextendr   r;   r   r   reverserz   r   )
r[   rw   r   indexr   r   r   submergesubnoder   rB   rB   rC   r   d  sl   










3zSafeConstructor.flatten_mappingFr~   rz   c                 C  s$   t |tr
| | tj| ||dS )r   r   )r   r   r   r8   r   r   rB   rB   rC   r     s   

z!SafeConstructor.construct_mappingc                 C  s   |  | d S ro   r   rv   rB   rB   rC   construct_yaml_null     
z#SafeConstructor.construct_yaml_nullT)yesnoyntruefalseonoffc                 C  s   |  |}| j|  S ro   )r   bool_valueslowerr[   rw   r   rB   rB   rC   construct_yaml_bool  s   
z#SafeConstructor.construct_yaml_boolintc                 C  s>  |  |}|dd}d}|d dkrd}|d dv r!|dd  }|dkr'dS |d	r7|t|d
d  d
 S |drG|t|d
d  d S |drW|t|d
d  d S | jjdkrj|d dkrj|t|d S | jjdkrd|v rdd |dD }|  d}d}|D ]}||| 7 }|d9 }q|| S |t| S )N_ rN   r   -+-00b   0xrO   0o   rN   rN   :c                 S     g | ]}t |qS rB   r   r   partrB   rB   rC   r         z6SafeConstructor.construct_yaml_int.<locals>.<listcomp><   )r   replacer   r   rk   processing_versionsplitr   )r[   rw   value_ssigndigitsbaser   digitrB   rB   rC   construct_yaml_int  s6   




z"SafeConstructor.construct_yaml_intgu <7~floatc                 C  s  |  |}|dd }d}|d dkrd}|d dv r#|dd  }|dkr,|| j S |d	kr3| jS | jjd
krbd|v rbdd |dD }|  d}d}|D ]}||| 7 }|d9 }qQ|| S | jjd
krd|v r|d\}	}
d|	vrt	j
t||dd |t| S )Nr   r   rN   r   r   r   r   .inf.nanrN   r   r   c                 S  r  rB   r  r  rB   rB   rC   r     r  z8SafeConstructor.construct_yaml_float.<locals>.<listcomp>        r  e.r   )r   r  r   	inf_value	nan_valuerk   r  r	  r   r   r   r	   r  )r[   rw   value_sor
  r  r  r  r   r  mantissaexponentrB   rB   rC   construct_yaml_float  s2   


z$SafeConstructor.construct_yaml_floatc              
   C     dd l }z
| |d}W n ty% } ztd d d||jd }~ww z||W S  tjyD } ztd d d||jd }~ww Nr   asciiz*failed to convert base64 data into ascii: zfailed to decode base64 data: 	base64r   encodeUnicodeEncodeErrorr;   r   decodebytesbinasciiErrorr[   rw   r"  r   excrB   rB   rC   construct_yaml_binary  (   z%SafeConstructor.construct_yaml_binaryNr   c                 C  sj   |d u r.z	| j |j}W n ty   d }Y nw |d u r*td d d|j d|j| }tdi |S )N$failed to construct timestamp from "r   rB   )r/   matchr   	TypeErrorr;   r   	groupdictr0   )r[   rw   r   r-  rB   rB   rC   construct_yaml_timestamp  s   z(SafeConstructor.construct_yaml_timestampc                 c  s    t  }|V  t|tstd|jd|j|j|jD ]G}t|ts0td|jd|j|jt|jdkrHtd|jdt|jdd|j|jd \}}| 	|}||vsZJ | 	|}|||< qd S )	N!while constructing an ordered mapexpected a sequence, but found *expected a mapping of length 1, but found rN   *expected a single mapping item, but found d itemsr   )
r   r   r   r;   r   r   r   r   r   ry   r[   rw   omapr   r   r   r   r   rB   rB   rC   construct_yaml_omap$  s>   







z#SafeConstructor.construct_yaml_omapc                 c  s    g }|V  t |tstd|jd|j|j|jD ]D}t |ts/td|jd|j|jt|jdkrGtd|jdt|jdd|j|jd \}}| |}| |}|	||f qd S )	Nzwhile constructing pairsr2  r3  rN   r4  r5  r6  r   )
r   r   r;   r   r   r   r   r   ry   r   )r[   rw   r   r   r   r   r   r   rB   rB   rC   construct_yaml_pairsD  s<   






z$SafeConstructor.construct_yaml_pairsc                 c  s&    t  }|V  | |}|| d S ro   )setr   r   r[   rw   r{   r   rB   rB   rC   construct_yaml_setc  s
   
z"SafeConstructor.construct_yaml_setc                 C     |  |}|S ro   r   r   rB   rB   rC   construct_yaml_stri  r   z"SafeConstructor.construct_yaml_strc                 c  s$    |   }|V  || | d S ro   )rT   r   r   r[   rw   r{   rB   rB   rC   construct_yaml_seqm  s   z"SafeConstructor.construct_yaml_seqc                 c  s(    |   }|V  | |}|| d S ro   )rR   r   r   r<  rB   rB   rC   construct_yaml_mapr  s
   
z"SafeConstructor.construct_yaml_mapr   c                 c  sR    | |}|V  t|dr| j|dd}|| d S | |}|j| d S )N__setstate__Tr   )__new__r_   r   rC  r   r   )r[   rw   r   r{   staterB   rB   rC   construct_yaml_objectx  s   


z%SafeConstructor.construct_yaml_objectrK   c                 C  s   t d d d|j|j)N.could not determine a constructor for the tag )r;   r   r   rv   rB   rB   rC   construct_undefined  s   
z#SafeConstructor.construct_undefinedr   r   r   )rw   r1   rJ   rz   rw   r1   rJ   r   )rw   r1   rJ   r  ro   )rw   r1   r   r1   rJ   r1   rw   r1   r   r1   rJ   r1   )rw   r1   rJ   rK   )r?   r@   rA   r   r   r   r   r   r   r  r  r  r  r*  r/   r0  r9  r:  r=  r?  rA  rB  rF  rH  rB   rB   rB   rC   r9   \  sB    

?







 





r9   z?null bool int float binary timestamp omap pairs set str seq mapc                   @  s   e Zd Zd6ddZd6ddZd6dd	Zd7ddZd6ddZd6ddZd8ddZ	d8ddZ
d9ddZd9ddZ	d:d;d"d#Zd<d'd(Zd9d)d*Z	d=d>d+d,Zd9d-d.Ze	/d?d@d4d5ZdS )Ar:   rw   r1   rJ   c                 C  
   |  |S ro   r   rv   rB   rB   rC   construct_python_str     
z Constructor.construct_python_strc                 C  rK  ro   r   rv   rB   rB   rC   construct_python_unicode  rM  z$Constructor.construct_python_unicodec              
   C  r  r  r!  r(  rB   rB   rC   construct_python_bytes  r+  z"Constructor.construct_python_bytesr   c                 C  r>  ro   )r  )r[   rw   valrB   rB   rC   construct_python_long  r   z!Constructor.construct_python_longc                 C     t | |S ro   )complexr   rv   rB   rB   rC   construct_python_complex     z$Constructor.construct_python_complexc                 C  rR  ro   )r   r   rv   rB   rB   rC   construct_python_tuple  rU  z"Constructor.construct_python_tuplenamemarkc                 C  s^   |s	t d|d|zt| W n ty) } zt d|d|d|d|d }~ww tj| S )N"while constructing a Python module+expected non-empty name appended to the tagcannot find module  ())r;   
__import__ImportErrorrc   modules)r[   rW  rX  r)  rB   rB   rC   find_python_module  s&   
zConstructor.find_python_modulec                 C  s  |s	t d|d|d|v r:|d}|}g }t|dkr9|d|  d|}zt| W n	 ty8   Y qw nt}|g}zt| W n ty_ } zt d|d|d|d|d }~ww t	j
| }d|}	|}
|rt|
|d st d|d	|	d
|j|t|
|d}
|sn|
S )Nz"while constructing a Python objectrZ  r  rN   r   r[  r\  r]  zcannot find z in the module )r;   r	  r   insertpopjoinr^  r_  r   rc   r`  r_   r?   rP   )r[   rW  rX  lnamelmodule_namelobject_namemodule_namer)  moduleobject_nameobjrB   rB   rC   find_python_name  s`   




zConstructor.find_python_namesuffixc                 C  4   |  |}|rtd|jd||j| ||jS )Nz while constructing a Python name$expected the empty value, but found )r   r;   r   rl  r[   rm  rw   r   rB   rB   rC   construct_python_name     
z!Constructor.construct_python_namec                 C  rn  )NrY  ro  )r   r;   r   ra  rp  rB   rB   rC   construct_python_module  rr  z#Constructor.construct_python_moduleNFr   kwdsnewobjrz   c                 C  sR   |sg }|si }|  ||j}|r"t|tr"|j|g|R i |S ||i |S ro   )rl  r   r   rf   rD  )r[   rm  rw   r   rt  ru  r   rB   rB   rC   make_python_instance  s   z Constructor.make_python_instanceinstancerE  rK   c                 C  s   t |dr|| d S i }t|trt|dkr|\}}t |dr)|j| n|r0|| | D ]
\}}t||| q4d S )NrC  r   r   )	r_   rC  r   r   r   r   r   itemssetattr)r[   rw  rE  	slotstater   r   rB   rB   rC   set_python_instance_state  s   


z%Constructor.set_python_instance_statec                 c  sJ    | j ||dd}|| j|< |V  t|d}| j||d}| || d S )NTru  rC  r   )rv  rV   r_   r   r{  )r[   rm  rw   rw  r~   rE  rB   rB   rC   construct_python_object)  s   

z#Constructor.construct_python_objectc                 C  s   t |tr| j|dd}i }i }g }i }n%| j|dd}	|	dg }|	di }|	di }|	dg }|	di }| |||||}
t|rM| |
| t|rV|
| t|re|D ]}|| |
|< q\|
S )NTr   r   rt  rE  	listitems	dictitems)	r   r   r   r   r   rv  rz   r{  r   )r[   rm  rw   ru  r   rt  rE  r~  r  r   rw  r   rB   rB   rC   construct_python_object_apply3  s*   

z)Constructor.construct_python_object_applyc                 C  s   | j ||ddS )NTr|  )r  )r[   rm  rw   rB   rB   rC   construct_python_object_newX  s   z'Constructor.construct_python_object_newtag:yaml.org,2002:python/r   r   r   r   c                 C  r   r   r   r   rB   rB   rC   r   [  r   z#Constructor.add_default_constructorr   rI  )rW  r1   rX  r1   rJ   r1   )rm  r1   rw   r1   rJ   r1   )NNF)rm  r1   rw   r1   r   r1   rt  r1   ru  rz   rJ   r1   )rw  r1   rE  r1   rJ   rK   r   )rm  r1   rw   r1   ru  rz   rJ   r1   )Nr  r   )r?   r@   rA   rL  rN  rO  rQ  rT  rV  ra  rl  rq  rs  rv  r{  r}  r  r  r   r   rB   rB   rB   rC   r:     s*    








0



%r:   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dBddZdCdDd
dZdEddZdEddZdEddZdEddZ	dFdGddZ
dEddZdHddZdFdId!d"ZdFdJd$d%ZdKd'd(ZdLd*d+ZdMd-d.ZdNd0d1ZdOd3d4ZdPd6d7ZdQd9d:Z	dCdRd=d>ZdSd@dAZdS )Tr<   zOneed to store the comments on the node itself,
    as well as on the items
    idxr1   rJ   c                 C  s(   | j jd usJ | jj| }|  |S ro   )rI   comment_handlingrm   commentsset_assigned)r[   r  xrB   rB   rC   comment  s   zRoundTripConstructor.commentNlist_of_commentsOptional[Any]c                 c  sH    |d u rg S |d ur|| d u rg S || }|D ]}|  |V  qd S ro   )r  )r[   r  r  r  rB   rB   rC   r    s   zRoundTripConstructor.commentsrw   c                 C  s  t |tstd d d|j|j|jdkrVt |jtrVt|j|j	d}| j
r?| j
jd u r?|jr=|jd r=|jd d |_|S |jd urT|jd rT| |jd d |_|S |jdkrt |jtrg }d}	 |jd	|d }|dk rtn
||t|  qft|jd	d
|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 |_|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   |anchorrN   r   >r   Tr   'r   )r   r   r;   r   r   styler   r   r#   r  rI   r  r  findr   r   r$   r  fold_posrz   rY   r!   r"   r%   )r[   rw   lssfold_positionsr  fssrB   rB   rC   r     sP   


z%RoundTripConstructor.construct_scalarc                 C  s  d }|  |}z|d}t||d d ddg}W n ty'   d }Y n ty1   d }Y nw |dd}d}|d dv rN|d dkrHd}|dd  }|d	r| jj	d
krg|d dkrgt|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r|d dkrt|dd  }t}|dd  D ]}	|	dv rt} n|	dv r n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rG| jj	d
kr|d dkrt|dd  }|d ur5|d dk|d< t|dd  dko2|d dk|d< t|t|dd  d |||jdS | jj	dkrjt|dkrj|d dkrjt|t|d |||jd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 dkr|d urt|dko|d dk|d< t|t| t|||jdS |rt|dko|d dk|d< t|t| d ||jdS |jrt|t| d |jdS |t| S )Nr   rN   Fr   r   r   r   r   r   r   r   r   )width
underscorer  r   ABCDEFabcdefrO   r   r   r  r   c                 S  r  rB   r  r  rB   rB   rC   r   3  r  z;RoundTripConstructor.construct_yaml_int.<locals>.<listcomp>r  )r  r  )r   rstripr   rindex
ValueError
IndexErrorr  r   rk   r  r(   r   r  r*   r+   r)   r	  r   r'   )r[   rw   r  value_susxr  r
  r  hex_funchr  r  r   r  rB   rB   rC   r    s   

 
$
$
&

z'RoundTripConstructor.construct_yaml_intc                 C  s  ddd}d}|  |}|dd	 }d
}|d dkrd}|d dv r.|d }|d
d  }|dkr7|| j S |dkr>| jS | jjdkrmd|v rmdd |dD }|  d
}d}	|D ]}
|	|
| 7 }	|d9 }q\||	 S d|v rz|d\}}d}W n t	y   |d\}}d}Y nw | jjdkrd|vrt
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vr1   rJ   r   c                 S  sX   d}d}|t | k r*| | dv r*| | dkr|d7 }|d7 }|t | k r*| | dv s|S )Nr   z0.r   rN   )r   )r  lead0r  rB   rB   rC   leading_zerosR  s   z@RoundTripConstructor.construct_yaml_float.<locals>.leading_zerosFr   r   rN   r   r   r   r   r  r  r  r   c                 S  r  rB   r  r  rB   rB   rC   r   j  r  z=RoundTripConstructor.construct_yaml_float.<locals>.<listcomp>r  r  r  Er  r   )r  precm_signm_lead0expe_widthe_signr  )r  r  r  r  r  )r  r1   rJ   r   )r   r  r   r  r  rk   r  r	  r   r  r   r   r	   r   r  r,   r  r  )r[   rw   r  r  r  r
  r  r  r  r   r  r  r  r  r  r  r  r  r  rB   rB   rC   r  Q  s~   








z)RoundTripConstructor.construct_yaml_floatc                 C  s0   |j jr
| |}n| |}t|tr|S |S ro   )ctaghandleconstruct_unknownr   r   r&   r   rB   rB   rC   r?    s   

z'RoundTripConstructor.construct_yaml_strFseqtypr~   rz   c                 C  s  t |tstd d d|j|jg }| jr;| jjd u r;|jr:||jd d  t	|jdkr:|j
|jd dd n	|jrDtd|j |jrXddlm} ||jsX||j t|jD ](\}}|jro|j|j|d d |_|| j||d	 |||jj|jjg q]|S )
Nr   r   Tclearnc3r   templated_idr   r   )r   r   r;   r   r   rI   r  r  _yaml_add_commentr   yaml_end_comment_extendr   r  ruamel.yaml.serializerr  yaml_set_anchor	enumerater   r   ry   _yaml_set_idx_line_collinecolumn)r[   rw   r  r~   r   r  r  r   rB   rB   rC   construct_rt_sequence  s:   


z*RoundTripConstructor.construct_rt_sequencec           
        s:  ddl m} d fdd}| }d}|t|jk r|j| \}}|jdkrt|r6d	|jd
|jdg}t| |j|= ||_t|t	rJ|
|| nJt|trv||| |jD ]}	t|	t	smtd	|jd|	j|	j|
||	 qYntd	|jd|j|j|jdkrd|_|d7 }n|d7 }|t|jk s|S )z
        This implements the merge key feature http://yaml.org/type/merge.html
        by referencing the merge dict/list of dicts
        r   )
MergeValuer   r1   rJ   c                   s*   |  j v r j |  }|S  j| dd}|S NTr   )rU   ry   )r   r   rh   rB   rC   constructed  s
   

z9RoundTripConstructor.flatten_mapping.<locals>.constructedr   r   r   r   r   r   r   r   rN   N)r   r1   rJ   r1   )ruamel.yaml.mergevaluer  r   r   r   r   rF   	merge_posr   r   r   r   set_sequencer;   r   )
r[   rw   r  r  merge_map_listr   r   r   r   r   rB   rh   rC   r     sZ   









,z$RoundTripConstructor.flatten_mappingrK   c                 C  s   d S ro   rB   rh   rB   rB   rC   	_sentinel  s   zRoundTripConstructor._sentinelmaptypc                 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 rKg |j_| |jdD ]	}|jj| qR|jrpddlm} ||jsp||j d | j}}|jD ]u\}	}
| j|	dd}t |tst |trt|}|	jdu r|j  n
|	jdu r|j  ||jj |jj! |}n*t |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rFt
|	jdkrF|	jd rF|d u r2|	j%d|	jd< |j	|	j|d n|	j%d|	jd< |j	|	j|d d |	_|	jrR|j	|	j|d |
jr^|j	|
j|d nu|	jr|	jd rt|j&|t'|	jd  |	jd r|j&|t(|	jd  |	jd r|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 |||< ||}}qy|r|0| d S d S )Nr   r   Tr  r   r  r   Fr   r      r   r  rN   nc5b)1r   r   r;   r   r   r   rI   r  r  r  r   r  caprer  r   r  r  r  r  r  r   ry   r   r   r   
flow_stylefaset_flow_styleset_block_style_yaml_set_line_collcr  colr   r   r   rc  r;  r   r   r   r   r   r   r    _yaml_set_kv_line_colr  add_yaml_merge)r[   rw   r  r~   	merge_mapcmntr  last_key
last_valuer   r   r   key_skey_mr   rB   rB   rC   r     s   












$
	
z&RoundTripConstructor.construct_mappingr]   c           	      C  s  t |tstd d d|j|j| jr9| jjd u r9|jr8||jd d  t	|jdkr8|j
|jd dd n	|jrBtd|j |jrVddlm} ||jsV||j |jD ]m\}}| j|dd}t |tsrt |trrt|}t |tstd	|jd
|j| j||d}| |||| | jr| jjd u r|jr|j|j|d |jr|j|j|d n|jrtd|j |jrtd|j || qYd S )Nr   r   Tr  nc6r   r  r   r   r   r  r  nc7anc7b)r   r   r;   r   r   rI   r  r  r  r   r  r   r  r  r  r  r   ry   r   rS   r   r   add)	r[   rw   r]   r~   r  r   r   r   r   rB   rB   rC   construct_setting{  sT   




z&RoundTripConstructor.construct_settingIterator[CommentedSeq]c                 c  sD    t  }||jj|jj |V  || || | || d S ro   )r   r  r   r  r  r   r  set_collection_styler@  rB   rB   rC   rA    s   z'RoundTripConstructor.construct_yaml_seqIterator[CommentedMap]c                 c  sB    t  }||jj|jj |V  | j||dd | || d S r  )r   r  r   r  r  r   r  r@  rB   rB   rC   rB    s   z'RoundTripConstructor.construct_yaml_mapr{   c                 C  sD   t |dkrd S |jdu r|j  d S |jdu r |j  d S d S )Nr   TF)r   r  r  r  r  )r[   r{   rw   rB   rB   rC   r    s   

z)RoundTripConstructor.set_collection_styler   c                 c  s    ddl m}m}m} ||}|V  t|dr&tj| |dd}|| n||rtj| |dd}i }	|j	
 D ]$}
t|
j|sR|
j|u sRt|
jtr]|
jdr]|
j|ur]|
j|	|
j< q9| D ]\}}||	vrpt||| qbt|dd }|d uri }|	 D ]\}}|||||< q|di | |j	
 D ]}
|
j|vr|
j|urt||
j|
  qnt| |}t|dr|jdi | n|j| |jrdd	lm} dd
lm} ||jst||js| }t||j| nt||j}|j|_d S d S d S )Nr   )is_dataclassInitVarMISSINGrC  Tr   r  __post_init____attrs_attrs__r  )AnchorrB   ) dataclassesr  r  r  rD  r_   r9   r   rC  __dataclass_fields__r   r   rf   r   r   defaultrW  rx  ry  rP   r   default_factoryr\   r   r   r  r  r  ruamel.yaml.anchorr  attribr   )r[   rw   r   r  r  r  r{   rE  r   init_var_defaultsfieldattrr   	post_initkwrW  r  r  r  arB   rB   rC   rF    sf   








z*RoundTripConstructor.construct_yaml_objectIterator[CommentedOrderedMap]c                 c  s   t  }||jj|jj |jdu r|j  n
|jdu r#|j  |V  | j	rN| j	j
d u rN|jrM||jd d  t|jdkrM|j|jd dd n	|jrWtd|j t|tsitd|jd|j|j|jD ]}t|tstd|jd|j|jt|jd	krtd|jd
t|jdd|j|jd \}}| |}||vsJ | |}| 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rtd|j |||< qld S )NTFr   r  nc8r1  r2  r3  rN   r4  r5  r6  r   r  r  nc9anc9bnc9c)r   r  r   r  r  r  r  r  r  rI   r  r  r  r   r  r   r   r   r;   r   r   r   ry   r7  rB   rB   rC   r9    st   










z(RoundTripConstructor.construct_yaml_omapIterator[CommentedSet]c                 c  s\    t  }||jj|jj |jdu r|j  n
|jdu r#|j  |V  | 	|| d S )NTF)
r   r  r   r  r  r  r  r  r  r  r@  rB   rB   rC   r=  4  s   


z'RoundTripConstructor.construct_yaml_set9Iterator[Union[CommentedMap, TaggedScalar, CommentedSeq]]c                 c  s   zt |trOt }||jj|jj |jdu r|j	  n
|jdu r)|j
  ||j |V  |jrFddlm} ||jsF||j | || W d S t |trt }| ||_|j|_||j |V  |jrddlm} ||js|j|jdd W d S t |trt }||jj|jj |jdu r|j	  n
|jdu r|j
  ||j |V  |jrddlm} ||js||j || | W d S W n   Y td d d|j|j)NTFr   r  )always_dumprG  )r   r   r   r  r   r  r  r  r  r  r  yaml_set_ctagr  r  r  r  r  r   r   r   r   r   r  r   r   r   r   r;   r   )r[   rw   r{   r  data2data3rB   rB   rC   r  >  sh   












z&RoundTripConstructor.construct_unknownr   2Union[datetime.date, datetime.datetime, TimeStamp]c              	   C  s  z	| j |j}W n ty   d }Y nw |d u r&td d d|j d|j| }|d s5tdi |S dD ]}|| r? nq7tdi |S tdi |}d }|d rw|d }t|}|d }	|	rft|	nd}
t	||
d	}|d d
krw| }t
|tjrt|j|j|j|j|j|j|j|j}nt|j|j|jdddd}|S |r||jd< |d |d  }|d r|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  TrB   )r/   r-  r   r.  r;   r   r/  r0   r   	TimeDeltar   datetimer.   yearmonthdayr  minutesecondmicrosecondtzinfo_yaml)r[   rw   r   r-  r  ddr
  r  r  r	  r  r{   r  rB   rB   rC   r0  w  s^    

z-RoundTripConstructor.construct_yaml_timestampUnion[bool, ScalarBoolean]c                 C  s$   t | |}|jrt||jdS |S )Nr  )r9   r   r  r-   )r[   rw   brB   rB   rC   construct_yaml_sbool  s   z)RoundTripConstructor.construct_yaml_sbool)r  r1   rJ   r1   ro   )r  r1   r  r  rJ   r1   r   r   )rw   r1   r  r1   r~   rz   rJ   r1   )rJ   rK   )rw   r1   r  r1   r~   rz   rJ   r1   )rw   r1   r]   r1   r~   rz   rJ   r1   )rw   r1   rJ   r  )rw   r1   rJ   r  )r{   r1   rw   r1   rJ   rK   rJ  )rw   r1   rJ   r  )rw   r1   rJ   r  )rw   r1   rJ   r  )rw   r1   r   r1   rJ   r  )rw   r1   rJ   r  )r?   r@   rA   __doc__r  r  r   r  r  r?  r  r   r  r   r  rA  rB  r  rF  r9  r=  r  r0  r  rB   rB   rB   rC   r<     s.    


;
c
L	
$
Fg
1
	


3
=

:9r<   rz   r  )r   z:null int float binary timestamp omap pairs set str seq map)j
__future__r   r  r   r  r&  rc   r   r   collections.abcr   r   r   ruamel.yaml.errorr   r   r	   ruamel.yaml.nodesr   r   r   ruamel.yaml.compatr   r   r   r   r   ruamel.yaml.tagr   ruamel.yaml.commentsr   r   r   r   r   r   r   r   r   r   r   r   r    ruamel.yaml.scalarstringr!   r"   r#   r$   r%   r&   ruamel.yaml.scalarintr'   r(   r)   r*   r+   ruamel.yaml.scalarfloatr,   ruamel.yaml.scalarboolr-   ruamel.yaml.timestampr.   ruamel.yaml.utilr/   r0   typingr1   r2   r3   r4   r5   r6   r7   __all__r;   rE   r   rF   r8   r9   r	  r   r   r   rH  r:   r   r   rL  rN  rO  r  rQ  r  rT  rA  rV  rB  r   rq  rs  r}  r  r  r<   r  rB   rB   rB   rC   <module>   s   <      1 V       