
                              d dl mZ d dl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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 	 ddgZ" G d	 de      Z# G d
 de$      Z%d Z&y)    )absolute_import)	YAMLError)nprintDBG_NODEdbgstring_typesnprintf)RegExp)
StreamStartEventStreamEndEventMappingStartEventMappingEndEventSequenceStartEventSequenceEndEvent
AliasEventScalarEventDocumentStartEventDocumentEndEvent)MappingNode
ScalarNodeSequenceNode
SerializerSerializerErrorc                       e Zd Zy)r   N)__name__
__module____qualname__     )lib/third_party/ruamel/yaml/serializer.pyr   r      s    r   c                   x    e Zd ZdZ ed      Z	 	 	 	 	 	 ddZed        Zed        Z	d Z
d Zd	 Zd
 Zd Zd Zy)r   zid%03dzid(?!000$)\d{3,}Nc                 T   || _         | j                   | | j                   _        || _        || _        || _        t        |t              r.t        t        t        |j                  d                  | _        n|| _        || _        i | _        i | _        d| _        d | _        d | _        y )N.r   )dumper_serializeruse_encodinguse_explicit_startuse_explicit_end
isinstancer   tuplemapintsplituse_versionuse_tagsserialized_nodesanchorslast_anchor_idclosed_templated_id)selfencodingexplicit_startexplicit_endversiontagsr$   s          r    __init__zSerializer.__init__(   s     ;;"&*DKK#$"0 ,g|,$SgmmC.@%ABD&D "!r   c                     t        | j                  d      r| j                  j                  S | j                  j                  S Ntyp)hasattrr$   emitter_emitterr5   s    r    r@   zSerializer.emitterC   s2     4;;&;;&&&{{###r   c                     t        | j                  d      r| j                  j                   | j                  j                  S r=   )r?   r$   resolver	_resolverrB   s    r    rD   zSerializer.resolverJ   s/     4;;&KK  {{$$$r   c                     | j                   7| j                  j                  t        | j                               d| _         y | j                   rt        d      t        d      )N)r6   Fserializer is closedzserializer is already opened)r3   r@   emitr   r&   r   rB   s    r    openzSerializer.openQ   sP    ;;LL.8I8IJKDK[[!"899!"@AAr   c                     | j                   t        d      | j                   s+| j                  j                  t	                      d| _         y y )Nserializer is not openedT)r3   r   r@   rH   r   rB   s    r    closezSerializer.close[   s@    ;;!"<==LLn./DK r   c                    t        t              rt        d       |j                          | j                  t        d      | j                  rt        d      | j                  j                  t        | j                  | j                  | j                               | j                  |       | j                  |d d        | j                  j                  t        | j                               i | _        i | _        d| _        y )NzSerializing nodesrK   rG   )explicitr9   r:   )rN   r   )r   r   r   dumpr3   r   r@   rH   r   r'   r.   r/   anchor_nodeserialize_noder   r(   r0   r1   r2   )r5   nodes     r    	serializezSerializer.serializef   s    x=&'IIK;;!"<==[[!"89900$:J:JQUQ^Q^	

 	D$-*D4I4IJK "r   c                    || j                   v r/| j                   |   | j                  |      | j                   |<   y y d }	 |j                  j                  r|j                  j                  }|| j                   |<   t        |t              r#|j                  D ]  }| j                  |        y t        |t              r7|j                  D ]'  \  }}| j                  |       | j                  |       ) y y #  Y xY wN)	r1   generate_anchoranchoralways_dumpvaluer)   r   rP   r   )r5   rR   rW   itemkeyrY   s         r    rP   zSerializer.anchor_node{   s    4<<||D!)%)%9%9$%?T" * F;;**![[..F "(DLL$- JJD$$T* 'D+."&**JC$$S)$$U+ #- /s   ,C7 7C;c                     	 |j                   j                  }|.| xj                  dz  c_        | j                  | j                  z  S |S #  d }Y 8xY w)N   )rW   rY   r2   ANCHOR_TEMPLATE)r5   rR   rW   s      r    rV   zSerializer.generate_anchor   sV    	[[&&F >1$''$*=*===	Fs   A
 
Ac                    | j                   |   }|| j                  v r%| j                  j                  t	        |             y d| j                  |<   | j
                  j                  ||       t        |t              r| j
                  j                  t        |j                  d      }| j
                  j                  t        |j                  d      }|j                  |k(  |j                  |k(  |j                  j                  d      f}| j                  j                  t        ||j                  ||j                  |j                  |j                               n`t        |t               r|j                  | j
                  j                  t         |j                  d      k(  }|j                  }d }	d }
|j"                  du r|r|d   }
|rt%        |      dkD  r|d   }	nd }	| j                  j                  t'        ||j                  ||j"                  |j                               d}|j                  D ]  }| j)                  |||       |d	z  } | j                  j                  t+        |
|	g
             n?t        |t,              r.|j                  | j
                  j                  t,        |j                  d      k(  }|j                  }d }	d }|j"                  du r|r|d   }|rt%        |      dkD  r|d   }	| j                  j                  t/        ||j                  ||j"                  |j                  t%        |j                                     |j                  D ]+  \  }}| j)                  ||d        | j)                  |||       - | j                  j                  t1        ||	g
             | j
                  j3                          y )NT)TF)FTztag:yaml.org,2002:)stylecommentr      )
flow_stylera   r]   )ra   )rc   ra   nr_items)r1   r0   r@   rH   r   rD   descend_resolverr)   r   resolverY   tag
startswithr   r`   ra   r   rc   lenr   rQ   r   r   r   r   ascend_resolver)r5   rR   parentindexaliasdetected_tagdefault_tagimplicitra   end_commentseq_commentrZ   map_commentr[   rY   s                  r    rQ   zSerializer.serialize_node   s"   T"4(((LLj/0*.D!!$'MM**659$
+  $}}44Z]["mm33J

MZXX-XX,HH''(<=
 !! 

"jj $	 D,/88t}}'<'<\4::W['\\,,""??d*&-ajs7|a/")!*K"&K!!& #'?? $  JJD''dE:QJE ' !!"2K;U"VWD+.88t}}'<'<[$**VZ'[[,,""??d*&-ajs7|a/")!*K!!% #'?? $!$TZZ	 #'**JC''T48''tS9 #- !!/;:T"UVMM))+r   )NNNNNN)r   r   r   r^   r
   	ANCHOR_REr;   propertyr@   rD   rI   rL   rS   rP   rV   rQ   r   r   r    r   r   "   su      O+,I "6 $ $ % %B *,*	P,r   c                 @    t         j                  j                  |       S rU   )r   rt   match)ss    r    templated_idry      s    %%a((r   N)'
__future__r   ruamel.yaml.errorr   ruamel.yaml.compatr   r   r   r   r	   ruamel.yaml.utilr
   ruamel.yaml.eventsr   r   r   r   r   r   r   r   r   r   ruamel.yaml.nodesr   r   r   typingAnyDictUnionTextOptionalVersionType__all__r   objectr   ry   r   r   r    <module>r      s^    ' ' K K #   D C *
+	i 	I, I,X)r   