o
    €Ï:€  ã                   @   sŽ   d dl mZ d dlmZ d dlT d dlT d dlmZmZm	Z	 d dl
mZmZmZ 	 g d¢ZG d	d
„ d
eƒZG dd„ deƒZG dd„ deƒZdS )é    )Úabsolute_import)ÚMarkedYAMLError)Ú*)ÚScannerÚRoundTripScannerÚScannerError)Úutf8ÚnprintÚnprintfF)ÚAnyÚDictÚOptionalÚList)ÚParserÚRoundTripParserÚParserErrorc                   @   s   e Zd ZdS )r   N)Ú__name__Ú
__module__Ú__qualname__© r   r   ú;/tmp/google-cloud-sdk/lib/third_party/ruamel/yaml/parser.pyr   [   s    r   c                   @   s>  e Zd ZdddœZdd„ Zdd„ Zdd	„ Zed
d„ ƒZedd„ ƒZ	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ ZdLd)d*„Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ ZdMd9d:„Zd;d<„ Z d=d>„ Z!d?d@„ Z"dAdB„ Z#dMdCdD„Z$dEdF„ Z%dGdH„ Z&dNdJdK„Z'dIS )Or   ú!ztag:yaml.org,2002:)r   ú!!c                 C   s6   || _ | j d urt| j dd ƒd u r| | j _|  ¡  d S )NÚ_parser)ÚloaderÚgetattrr   Úreset_parser)Úselfr   r   r   r   Ú__init__e   s   zParser.__init__c                 C   s*   d | _ d | _i | _g | _g | _| j| _d S ©N)Úcurrent_eventÚyaml_versionÚtag_handlesÚstatesÚmarksÚparse_stream_startÚstate©r   r   r   r   r   l   s   zParser.reset_parserc                 C   s   |   ¡  d S r   )r   r'   r   r   r   Údisposev   ó   zParser.disposec                 C   ó   t | jdƒr
| jjS | jjS ©NÚtyp)Úhasattrr   ÚscannerÚ_scannerr'   r   r   r   r.   z   ó   zParser.scannerc                 C   r*   r+   )r-   r   ÚresolverÚ	_resolverr'   r   r   r   r1      r0   zParser.resolverc                 G   sL   | j d u r| jr|  ¡ | _ | j d ur$|sdS |D ]}t| j |ƒr# dS qdS )NTF)r    r&   Ú
isinstance)r   ÚchoicesÚchoicer   r   r   Úcheck_eventˆ   s   


ÿzParser.check_eventc                 C   s    | j d u r| jr|  ¡ | _ | j S r   ©r    r&   r'   r   r   r   Ú
peek_event–   s   

zParser.peek_eventc                 C   s*   | j d u r| jr|  ¡ | _ | j }d | _ |S r   r7   )r   Úvaluer   r   r   Ú	get_eventž   s   

zParser.get_eventc                 C   s:   | j  ¡ }| | j  ¡ ¡ t|j|j|jd}| j| _	|S )N)Úencoding)
r.   Ú	get_tokenÚmove_commentÚ
peek_tokenÚStreamStartEventÚ
start_markÚend_markr;   Úparse_implicit_document_startr&   ©r   ÚtokenÚeventr   r   r   r%   ­   s
   
zParser.parse_stream_startc                 C   s\   | j  ttt¡s*| j| _| j  ¡ }|j }}t	||dd}| j
 | j¡ | j| _|S |  ¡ S )NF©Úexplicit)r.   Úcheck_tokenÚDirectiveTokenÚDocumentStartTokenÚStreamEndTokenÚDEFAULT_TAGSr"   r>   r@   ÚDocumentStartEventr#   ÚappendÚparse_document_endÚparse_block_noder&   Úparse_document_start)r   rD   r@   rA   rE   r   r   r   rB   ¹   s   

z$Parser.parse_implicit_document_startc                 C   sð   | j  t¡r| j  ¡  | j  t¡s| j  t¡sZ| j  ¡ }|j}|  ¡ \}}| j  t¡s<t	d d d| j  ¡ j
 | j  ¡ jƒ‚| j  ¡ }|j}t||d||d}| j | j¡ | j| _|S | j  ¡ }t|j|j|jd}| jrnJ ‚| jrsJ ‚d | _|S )Nz)expected '<document start>', but found %rT)rG   ÚversionÚtags©Úcomment)r.   rH   ÚDocumentEndTokenr<   rK   r>   r@   Úprocess_directivesrJ   r   ÚidrA   rM   r#   rN   rO   Úparse_document_contentr&   ÚStreamEndEventrU   r$   )r   rD   r@   rR   rS   rA   rE   r   r   r   rQ   Ë   s8   
ÿ

ü

ÿ
û

zParser.parse_document_startc                 C   sj   | j  ¡ }|j }}d}| j  t¡r| j  ¡ }|j}d}t|||d}| jj	dkr/| j
| _|S | j| _|S )NFTrF   ©é   r\   )r.   r>   r@   rH   rV   r<   rA   ÚDocumentEndEventr1   Úprocessing_versionrQ   r&   rB   )r   rD   r@   rA   rG   rE   r   r   r   rO   ì   s   


þzParser.parse_document_endc                 C   s<   | j  tttt¡r|  | j  ¡ j¡}| j	 
¡ | _|S |  ¡ S r   )r.   rH   rI   rJ   rV   rK   Úprocess_empty_scalarr>   r@   r#   Úpopr&   rP   )r   rE   r   r   r   rY      s   ÿzParser.parse_document_contentc                 C   s  d | _ i | _| j t¡r_| j ¡ }|jdkr9| j d ur#td d d|jƒ‚|j	\}}|dkr4td d d|jƒ‚|j	| _ n |jdkrY|j	\}}|| jv rTtd d dt
|ƒ |jƒ‚|| j|< | j t¡st| jƒrm| j | j ¡ f}n| j d f}| jD ]}|| jvr„| j| | j|< qu|S )NÚYAMLzfound duplicate YAML directiver\   z:found incompatible YAML document (version 1.* is required)ÚTAGzduplicate tag handle %r)r!   r"   r.   rH   rI   r<   Únamer   r@   r9   r   ÚboolÚcopyrL   )r   rD   ÚmajorÚminorÚhandleÚprefixr9   Úkeyr   r   r   rW     sD   



ÿ
ü



ÿ
ê



€zParser.process_directivesc                 C   s   | j ddS )NT)Úblock©Ú
parse_noder'   r   r   r   rP   ?  r)   zParser.parse_block_nodec                 C   s   |   ¡ S r   rl   r'   r   r   r   Úparse_flow_nodeC  s   zParser.parse_flow_nodec                 C   s   | j dddS )NT)rk   Úindentless_sequencerl   r'   r   r   r   Ú'parse_block_node_or_indentless_sequenceG  ó   z.Parser.parse_block_node_or_indentless_sequencec                 C   s   | j | | S r   )r"   ©r   rh   Úsuffixr   r   r   Útransform_tagK  rq   zParser.transform_tagFc              
   C   s  | j  t¡r| j  ¡ }t|j|j|jƒ}| j 	¡ | _
|S d }d }d  } }}	| j  t¡rO| j  ¡ }|j}|j}|j}| j  t¡rN| j  ¡ }|j}	|j}|j}n,| j  t¡r{| j  ¡ }|j }}	|j}|j}| j  t¡r{| j  ¡ }|j }}	|j}|j}|d ur |\}
}|
d urž|
| jvr—td|dt|
ƒ |	ƒ‚|  |
|¡}n|}|d u r¬| j  ¡ j }}d }|d u pµ|dk}|rð| j  t¡rðd }| j  ¡ }|jrÙ|jd rÙ|jd g g}d |jd< | j  ¡ j}t|||||d|d}| j| _
|S | j  t¡r1| j  ¡ }|j}|jr|d u s|dkrd}n
|d u rd}nd	}t||||j|||j|jd
}| j 	¡ | _
|S | j  t¡rR| j  ¡ }|j}t|||||d|jd}| j| _
|S | j  t¡rs| j  ¡ }|j}t|||||d|jd}| j| _
|S |r¬| j  t¡r¬| j  ¡ j}| j  ¡ }|j}|d u s—|d d u r›|  ¡ }t|||||d|d}| j!| _
|S |rÓ| j  t"¡rÓ| j  ¡ j}| j  ¡ j}t|||||d|d}| j#| _
|S |d usÝ|d urðt|||dfd||ƒ}| j 	¡ | _
|S |röd}nd}| j  ¡ }td| |d|j$ |jƒ‚)Nzwhile parsing a nodezfound undefined tag handle %rr   r   F)Ú
flow_stylerU   ©TF)FT©FF)ÚstylerU   Tr\   Ú rk   Úflowzwhile parsing a %s nodez'expected the node content, but found %r)%r.   rH   Ú
AliasTokenr<   Ú
AliasEventr9   r@   rA   r#   r`   r&   ÚAnchorTokenÚTagTokenr"   r   r   rt   r>   ÚBlockEntryTokenrU   ÚSequenceStartEventÚparse_indentless_sequence_entryÚScalarTokenÚplainÚScalarEventrx   ÚFlowSequenceStartTokenÚparse_flow_sequence_first_entryÚFlowMappingStartTokenÚMappingStartEventÚparse_flow_mapping_first_keyÚBlockSequenceStartTokenÚsplit_commentÚ parse_block_sequence_first_entryÚBlockMappingStartTokenÚparse_block_mapping_first_keyrX   )r   rk   ro   rD   rE   ÚanchorÚtagr@   rA   Útag_markrh   rs   ÚimplicitrU   ÚptÚnoder   r   r   rm   O  s  


€





ü

ÿ

ø
AÀ
ù	4Í
ù	'Ú
ÿèÿïõ
üzParser.parse_nodec                 C   ó    | j  ¡ }| j |j¡ |  ¡ S r   )r.   r<   r$   rN   r@   Úparse_block_sequence_entry©r   rD   r   r   r   rŒ   ì  s   
z'Parser.parse_block_sequence_first_entryc                 C   sÈ   | j  t¡r/| j  ¡ }| | j  ¡ ¡ | j  tt¡s%| j | j	¡ |  
¡ S | j	| _|  |j¡S | j  t¡sH| j  ¡ }td| jd d|j |jƒ‚| j  ¡ }t|j|j|jd}| j ¡ | _| j ¡  |S )Nz while parsing a block collectionéÿÿÿÿú"expected <block end>, but found %rrT   )r.   rH   r   r<   r=   r>   ÚBlockEndTokenr#   rN   r–   rP   r&   r_   rA   r   r$   rX   r@   ÚSequenceEndEventrU   r`   rC   r   r   r   r–   ô  s*   

ü

z!Parser.parse_block_sequence_entryc                 C   s   | j  t¡r1| j  ¡ }| | j  ¡ ¡ | j  tttt¡s'| j	 
| j¡ |  ¡ S | j| _|  |j¡S | j  ¡ }t|j|j|jd}| j	 ¡ | _|S )NrT   )r.   rH   r   r<   r=   r>   ÚKeyTokenÚ
ValueTokenrš   r#   rN   r   rP   r&   r_   rA   r›   r@   rU   r`   rC   r   r   r   r     s   
ÿ
z&Parser.parse_indentless_sequence_entryc                 C   r•   r   )r.   r<   r$   rN   r@   Úparse_block_mapping_keyr—   r   r   r   rŽ   +  s   
z$Parser.parse_block_mapping_first_keyc                 C   s  | j  t¡r0| j  ¡ }| | j  ¡ ¡ | j  ttt¡s&| j 	| j
¡ |  ¡ S | j
| _|  |j¡S | jjdkrI| j  t¡rI| j
| _|  | j  ¡ j¡S | j  t¡sb| j  ¡ }td| jd d|j |jƒ‚| j  ¡ }| | j  ¡ ¡ t|j|j|jd}| j ¡ | _| j ¡  |S )Nr[   zwhile parsing a block mappingr˜   r™   rT   )r.   rH   rœ   r<   r=   r>   r   rš   r#   rN   Úparse_block_mapping_valuerp   r&   r_   rA   r1   r^   r@   r   r$   rX   ÚMappingEndEventrU   r`   rC   r   r   r   rž   1  s2   

ü

zParser.parse_block_mapping_keyc                 C   sì   | j  t¡rg| j  ¡ }| j  t¡r| | j  ¡ ¡ n| j  t¡s*|j| j  ¡ dd | j  ttt¡s=| j 	| j
¡ |  ¡ S | j
| _|j}|d u r_| j  ¡ }|j}|r_d |d g|_|d d g}| j|j|dS | j
| _| j  ¡ }|  |j¡S )NT)Úemptyr\   r   rT   )r.   rH   r   r<   r=   r>   rœ   rš   r#   rN   rž   rp   r&   rU   Ú_commentr_   rA   r@   )r   rD   rU   r   r   r   rŸ   N  s*   


z Parser.parse_block_mapping_valuec                 C   ó$   | j  ¡ }| j |j¡ | jddS ©NT)Úfirst)r.   r<   r$   rN   r@   Úparse_flow_sequence_entryr—   r   r   r   r†   v  ó   
z&Parser.parse_flow_sequence_first_entryc                 C   sâ   | j  t¡sU|s'| j  t¡r| j  ¡  n| j  ¡ }td| jd d|j |j	ƒ‚| j  t
¡rD| j  ¡ }td d d|j	|jdd}| j| _|S | j  t¡sU| j | j¡ |  ¡ S | j  ¡ }t|j	|j|jd}| j ¡ | _| j ¡  |S )Nzwhile parsing a flow sequencer˜   zexpected ',' or ']', but got %rT)ru   rT   )r.   rH   ÚFlowSequenceEndTokenÚFlowEntryTokenr<   r>   r   r$   rX   r@   rœ   rˆ   rA   Ú%parse_flow_sequence_entry_mapping_keyr&   r#   rN   r¦   rn   r›   rU   r`   ©r   r¥   rD   rE   r   r   r   r¦   |  s4   
ü
ÿ

z Parser.parse_flow_sequence_entryc                 C   sD   | j  ¡ }| j  ttt¡s| j | j¡ |  	¡ S | j| _
|  |j¡S r   )r.   r<   rH   r   r©   r¨   r#   rN   Ú'parse_flow_sequence_entry_mapping_valuern   r&   r_   rA   r—   r   r   r   rª   ›  s   
z,Parser.parse_flow_sequence_entry_mapping_keyc                 C   ól   | j  t¡r'| j  ¡ }| j  tt¡s| j | j¡ |  	¡ S | j| _
|  |j¡S | j| _
| j  ¡ }|  |j¡S r   )r.   rH   r   r<   r©   r¨   r#   rN   Ú%parse_flow_sequence_entry_mapping_endrn   r&   r_   rA   r>   r@   r—   r   r   r   r¬   ¥  ó   

z.Parser.parse_flow_sequence_entry_mapping_valuec                 C   s    | j | _| j ¡ }t|j|jƒS r   )r¦   r&   r.   r>   r    r@   r—   r   r   r   r®   ´  s   
z,Parser.parse_flow_sequence_entry_mapping_endc                 C   r£   r¤   )r.   r<   r$   rN   r@   Úparse_flow_mapping_keyr—   r   r   r   r‰   À  r§   z#Parser.parse_flow_mapping_first_keyc                 C   s*  | j  t¡sy|s'| j  t¡r| j  ¡  n| j  ¡ }td| jd d|j |j	ƒ‚| j  t
¡rO| j  ¡ }| j  ttt¡sE| j | j¡ |  ¡ S | j| _|  |j¡S | jjdkrh| j  t¡rh| j| _|  | j  ¡ j¡S | j  t¡sy| j | j¡ |  ¡ S | j  ¡ }t|j	|j|jd}| j ¡ | _| j ¡  |S )Nzwhile parsing a flow mappingr˜   zexpected ',' or '}', but got %rr[   rT   )r.   rH   ÚFlowMappingEndTokenr©   r<   r>   r   r$   rX   r@   rœ   r   r#   rN   Úparse_flow_mapping_valuern   r&   r_   rA   r1   r^   Úparse_flow_mapping_empty_valuer    rU   r`   r«   r   r   r   r°   Æ  sB   
ü
ÿÿ

zParser.parse_flow_mapping_keyc                 C   r­   r   )r.   rH   r   r<   r©   r±   r#   rN   r°   rn   r&   r_   rA   r>   r@   r—   r   r   r   r²   ì  r¯   zParser.parse_flow_mapping_valuec                 C   s   | j | _|  | j ¡ j¡S r   )r°   r&   r_   r.   r>   r@   r'   r   r   r   r³   û  s   z%Parser.parse_flow_mapping_empty_valueNc              	   C   s   t d d dd|||dS )Nrv   ry   rT   )r„   )r   ÚmarkrU   r   r   r   r_      s   zParser.process_empty_scalarrw   )Fr   )(r   r   r   rL   r   r   r(   Úpropertyr.   r1   r6   r8   r:   r%   rB   rQ   rO   rY   rW   rP   rn   rp   rt   rm   rŒ   r–   r   rŽ   rž   rŸ   r†   r¦   rª   r¬   r®   r‰   r°   r²   r³   r_   r   r   r   r   r   _   sP    



!4
  (


&r   c                   @   s   e Zd ZdZdd„ ZdS )r   z?roundtrip is a safe loader, that wants to see the unmangled tagc                 C   s&   |dkr|dv rt  | ||¡S || S )Nr   )Únullrd   ÚintÚfloatÚbinaryÚ	timestampÚomapÚpairsÚsetÚstrÚseqÚmap)r   rt   rr   r   r   r   rt     s   zRoundTripParser.transform_tagN)r   r   r   Ú__doc__rt   r   r   r   r   r     s    r   N)Ú
__future__r   Úruamel.yaml.errorr   Úruamel.yaml.tokensÚruamel.yaml.eventsÚruamel.yaml.scannerr   r   r   Úruamel.yaml.compatr   r	   r
   Útypingr   r   r   r   Ú__all__r   Úobjectr   r   r   r   r   r   Ú<module>   s    L     +