a
    ܌xd                     @   s   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 d dl	m
Z
mZmZ d dlmZmZ d dlmZmZmZmZmZ g dZeeed	d
dZG dd deZG dd dZG dd deZG dd deZdS )    )MarkedYAMLError)*)ScannerRoundTripScannerScannerError)BlankLineComment)C_PREC_POSTC_SPLIT_ON_FIRST_BLANK)nprintnprintf)AnyDictOptionalListr   )ParserRoundTripParserParserError)argskwreturnc                  O   s   t | i |S N)r   )r   r    r   J/var/www/html/Ranjet/env/lib/python3.9/site-packages/ruamel/yaml/parser.pyxprintfZ   s    r   c                   @   s   e Zd ZdS )r   N)__name__
__module____qualname__r   r   r   r   r   _   s   r   c                   @   sB  e Zd ZdddZeddddZddd	d
Z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dddZedddZedddZedd d!Zedd"d#Zedd$d%Zedd&d'Zedd(d)Zeeed*d+d,ZdVeeed.d/d0Zedd1d2Zedd3d4Zedd5d6Zedd7d8Zedd9d:Zedd;d<Zedd=d>Z dWeed?d@dAZ!eddBdCZ"eddDdEZ#eddFdGZ$eddHdIZ%dXeed?dJdKZ&eddLdMZ'eddNdOZ(dYeeedPdQdRZ)dZee*e e*e edSdTdUZ+dS )[r   !ztag:yaml.org,2002:)r   !!N)loaderr   c                 C   s6   || _ | j d ur*t| j dd d u r*| | j _|   d S )N_parser)r    getattrr!   reset_parser)selfr    r   r   r   __init__i   s    zParser.__init__)r   c                 C   s*   d  | _ | _i | _g | _g | _| j| _d S r   )current_event
last_eventtag_handlesstatesmarksparse_stream_startstater$   r   r   r   r#   o   s
    zParser.reset_parserc                 C   s   |    d S r   )r#   r-   r   r   r   disposew   s    zParser.disposec                 C   s   t | jdr| jjS | jjS Ntyp)hasattrr    scannerZ_scannerr-   r   r   r   r2   z   s    zParser.scannerc                 C   s   t | jdr| jjS | jjS r/   )r1   r    resolverZ	_resolverr-   r   r   r   r3      s    zParser.resolver)choicesr   c                 G   sL   | j d u r| jr|  | _ | j d urH|s,dS |D ]}t| j |r0 dS q0dS )NTF)r&   r,   
isinstance)r$   r4   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   sJ   | j d u r| jr|  | _ tdt| j |  jj | j  | _}d | _ |S )N	get_event)r&   r,   r   reprr8   
start_markliner'   )r$   valuer   r   r   r9      s    

zParser.get_eventc                 C   s4   | j  }| | t|j|j|jd}| j| _|S )N)encoding)	r2   	get_tokenmove_token_commentZStreamStartEventr;   end_markr>   parse_implicit_document_startr,   r$   tokeneventr   r   r   r+      s
    

zParser.parse_stream_startc                 C   s`   | j tttsT| j| _| j  }|j }}t	||dd}| j
| j | j| _|S |  S d S )NFexplicit)r2   check_tokenDirectiveTokenDocumentStartTokenStreamEndTokenDEFAULT_TAGSr(   
peek_tokenr;   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   q | j ts|  \}}| j tsbtd d d| j  j	f| j  j
| j  }|j
}|j}t||d|||jd}| j| j | j| _n8| j  }t|j
|j|jd}| jrJ | jrJ d | _|S )Nz'expected '<document start>', but found T)rG   versiontagscommentrU   )r2   rH   DocumentEndTokenr?   rK   process_directivesrJ   r   rM   idr;   rA   rN   rU   r)   rO   rP   parse_document_contentr,   ZStreamEndEventr*   )r$   rS   rT   rD   r;   rA   rE   r   r   r   rR      s@    





zParser.parse_document_startc                 C   sh   | j  }|j }}d}| j tr8| j  }|j}d}t|||d}| jj	dkr\| j
| _n| j| _|S )NFTrF      r\   )r2   rM   r;   rH   rW   r?   rA   ZDocumentEndEventr3   processing_versionrR   r,   rB   )r$   rD   r;   rA   rG   rE   r   r   r   rP      s    



zParser.parse_document_endc                 C   s@   | j ttttr4| | j  j}| j	
 | _|S |  S d S r   )r2   rH   rI   rJ   rW   rK   process_empty_scalarrM   r;   r)   popr,   rQ   )r$   rE   r   r   r   rZ     s    zParser.parse_document_contentc           
      C   sT  d }i | _ | jtr| j }|jdkrl|d urBtd d d|j|j\}}|dkrdtd d d|j|j}q
|jdkr
|j\}}|| j v rtd d d||j|| j |< q
t	| j r|| j 
 f}n|d f}| jd ur&t| jdr&|| j_| jjd u ri | j_| j D ]}| j | | jj|< q| jD ]"}	|	| j vr,| j|	 | j |	< q,|S )NYAMLzfound duplicate YAML directiver\   z:found incompatible YAML document (version 1.* is required)ZTAGzduplicate tag handle rT   )r(   r2   rH   rI   r?   namer   r;   r=   boolcopyr    r1   rS   rT   rL   )
r$   Zyaml_versionrD   majorminorhandleprefixr=   kkeyr   r   r   rX     sL    









zParser.process_directivesc                 C   s   | j ddS )NT)block
parse_noder-   r   r   r   rQ   E  s    zParser.parse_block_nodec                 C   s   |   S r   rk   r-   r   r   r   parse_flow_nodeH  s    zParser.parse_flow_nodec                 C   s   | j dddS )NT)rj   indentless_sequencerk   r-   r   r   r   'parse_block_node_or_indentless_sequenceK  s    z.Parser.parse_block_node_or_indentless_sequencerf   suffixr   c                 C   s   | j | | S r   )r(   r$   rf   rq   r   r   r   transform_tagN  s    zParser.transform_tagF)rj   rn   r   c              
   C   sd  | j tr8| j  }t|j|j|j}| j	 | _
|S d }d }d  } }}	| j tr| j  }| | |j}|j}|j}| j tr| j  }|j}	|j}|j}n\| j tr| j  }|j }}	|j}|j}| j tr| j  }|j }}	|j}|j}|d urR|\}
}|
d urN|
| jvr@td|d|
|	| |
|}n|}|d u rl| j  j }}d }|d u p|dk}|r,| j tr,d }| j  }| jr| jjd u r|jr|jd r|jd g g}d |jd< n| jr|jr|j}| j  j}t|||||d|d}| j| _
|S | j tr| j  }|j}|jr\|d u sf|dkrld}n|d u r|d}nd	}t||||j|||j|jd
}| j	 | _
n| j tr| j  }|j}t|||||d|jd}| j| _
np| j tr2| j  }|j}t|||||d|jd}| j | _
n.|r| j t!r| j  j}| j  }|j}|d u sz|d d u r|" }t|||||d|d}| j#| _
n|r| j t$r| j  j}| j  j}t|||||d|d}| j%| _
nr|d us|d ur&t|||dfd||}| j	 | _
n:|r2d}nd}| j  }td|d|d|j&|j|S )Nzwhile parsing a nodezfound undefined tag handle r   r   F)
flow_stylerU   TF)FT)FF)stylerU   Tr\    rj   Zflowzwhile parsing a z nodez%expected the node content, but found )'r2   rH   Z
AliasTokenr?   Z
AliasEventr=   r;   rA   r)   r_   r,   ZAnchorTokenr@   ZTagTokenr(   r   rs   rM   BlockEntryTokenr    comment_handlingrU   ZSequenceStartEventparse_indentless_sequence_entryZScalarTokenplainScalarEventrv   ZFlowSequenceStartTokenparse_flow_sequence_first_entryZFlowMappingStartTokenMappingStartEventparse_flow_mapping_first_keyZBlockSequenceStartTokenZsplit_old_comment parse_block_sequence_first_entryZBlockMappingStartTokenparse_block_mapping_first_keyrY   )r$   rj   rn   rD   rE   anchortagr;   rA   Ztag_markrf   rq   ZimplicitrU   ptnoder   r   r   rl   Q  s   















	
	





zParser.parse_nodec                 C   s    | j  }| j|j |  S r   )r2   r?   r*   rO   r;   parse_block_sequence_entryr$   rD   r   r   r   r     s    
z'Parser.parse_block_sequence_first_entryc                 C   s   | j trX| j  }| | | j ttsD| j| j | 	 S | j| _
| |jS | j ts| 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 rV   )r2   rH   rx   r?   r@   BlockEndTokenr)   rO   r   rQ   r,   r^   rA   rM   r   r*   rY   r;   SequenceEndEventrU   r_   rC   r   r   r   r     s*    





z!Parser.parse_block_sequence_entryc                 C   s   | j tr\| j  }| | | j ttttsH| j	| j
 |  S | j
| _| |jS | j  }d }| jr| jjd u r|j}|j}n| jj}| |j|j}t|||d}| j | _|S )NrV   )r2   rH   rx   r?   r@   KeyToken
ValueTokenr   r)   rO   rz   rQ   r,   r^   rA   rM   r    ry   rU   r;   r'   distribute_commentr<   r   r_   )r$   rD   cr;   rE   r   r   r   rz     s(    


z&Parser.parse_indentless_sequence_entryc                 C   s    | j  }| j|j |  S r   )r2   r?   r*   rO   r;   parse_block_mapping_keyr   r   r   r   r   5  s    
z$Parser.parse_block_mapping_first_keyc                 C   s  | j trZ| j  }| | | j tttsF| j| j	 | 
 S | j	| _| |jS | jjdkr| j tr| j	| _| | j  jS | j ts| j  }td| jd d|j|j| j  }| | t|j|j|jd}| j | _| j  |S )Nr[   zwhile parsing a block mappingr   r   rV   )r2   rH   r   r?   r@   r   r   r)   rO   parse_block_mapping_valuero   r,   r^   rA   r3   r]   rM   r;   r   r*   rY   MappingEndEventrU   r_   rC   r   r   r   r   :  s2    






zParser.parse_block_mapping_keyc                 C   s   | j tr| j  }| j tr.| | n| j tsH| j|dd | j tttsn| j| j	 | 
 S | j	| _|j}|d u r| j  }|j}|rd |d g|_|d d g}| j|j|dS n| j	| _| j  }| |jS d S )NTemptyr\   r   rV   )r2   rH   r   r?   r@   r   r   r)   rO   r   ro   r,   rU   rM   _commentr^   rA   r;   )r$   rD   rU   r   r   r   r   V  s*    


z Parser.parse_block_mapping_valuec                 C   s$   | j  }| j|j | jddS NT)first)r2   r?   r*   rO   r;   parse_flow_sequence_entryr   r   r   r   r}   }  s    
z&Parser.parse_flow_sequence_first_entry)r   r   c                 C   s   | j ts|sP| j tr(| j   n(| j  }td| jd d|j|j	| j t
r| j  }td d d|j	|jdd}| j| _|S | j ts| j| j |  S | j  }t|j	|j|jd}| j | _| j  |S )Nzwhile parsing a flow sequencer   zexpected ',' or ']', but got T)rt   rV   )r2   rH   FlowSequenceEndTokenFlowEntryTokenr?   rM   r   r*   rY   r;   r   r~   rA   %parse_flow_sequence_entry_mapping_keyr,   r)   rO   r   rm   r   rU   r_   r$   r   rD   rE   r   r   r   r     s4    




z Parser.parse_flow_sequence_entryc                 C   sH   | j  }| j ttts0| j| j | 	 S | j| _
| |jS d S r   )r2   r?   rH   r   r   r   r)   rO   'parse_flow_sequence_entry_mapping_valuerm   r,   r^   rA   r   r   r   r   r     s    
z,Parser.parse_flow_sequence_entry_mapping_keyc                 C   sr   | j trP| j  }| j tts:| j| j | 	 S | j| _
| |jS n| j| _
| j  }| |jS d S r   )r2   rH   r   r?   r   r   r)   rO   %parse_flow_sequence_entry_mapping_endrm   r,   r^   rA   rM   r;   r   r   r   r   r     s    

z.Parser.parse_flow_sequence_entry_mapping_valuec                 C   s    | j | _| j }t|j|jS r   )r   r,   r2   rM   r   r;   r   r   r   r   r     s    
z,Parser.parse_flow_sequence_entry_mapping_endc                 C   s$   | j  }| j|j | jddS r   )r2   r?   r*   rO   r;   parse_flow_mapping_keyr   r   r   r   r     s    
z#Parser.parse_flow_mapping_first_keyc                 C   s.  | j ts|sP| j tr(| j   n(| j  }td| jd d|j|j	| j t
r| j  }| j ttts| j| j |  S | j| _| |jS nT| jjdkr| j tr| j| _| | j  jS | j ts| j| j |  S | j  }t|j	|j|jd}| j | _| j  |S )Nzwhile parsing a flow mappingr   zexpected ',' or '}', but got r[   rV   )r2   rH   FlowMappingEndTokenr   r?   rM   r   r*   rY   r;   r   r   r)   rO   parse_flow_mapping_valuerm   r,   r^   rA   r3   r]   parse_flow_mapping_empty_valuer   rU   r_   r   r   r   r   r     sB    




zParser.parse_flow_mapping_keyc                 C   sr   | j trP| j  }| j tts:| j| j | 	 S | j| _
| |jS n| j| _
| j  }| |jS d S r   )r2   rH   r   r?   r   r   r)   rO   r   rm   r,   r^   rA   rM   r;   r   r   r   r   r     s    

zParser.parse_flow_mapping_valuec                 C   s   | j | _| | j jS r   )r   r,   r^   r2   rM   r;   r-   r   r   r   r     s    z%Parser.parse_flow_mapping_empty_value)markrU   r   c              	   C   s   t d d dd|||dS )Nru   rw   rV   )r|   )r$   r   rU   r   r   r   r^     s    zParser.process_empty_scalarrD   ntr   r   c                 C   s   d S r   r   r$   rD   r   r   r   r   r   r@     s    zParser.move_token_comment)FF)F)F)N)NF),r   r   r   rL   r   r%   r#   r.   propertyr2   r3   rb   r7   r8   r9   r+   rB   rR   rP   rZ   rX   rQ   rm   ro   rs   rl   r   r   rz   r   r   r   r}   r   r   r   r   r   r   r   r   r^   r   r@   r   r   r   r   r   c   sX   
(
9 "'	% r   c                   @   s@   e Zd ZdZeeedddZd
eee ee eddd	ZdS )r   ?roundtrip is a safe loader, that wants to see the unmangled tagrp   c                 C   s&   |dkr|dv rt | ||S || S )Nr   )nullrb   intfloatbinary	timestampZomappairssetstrseqmap)r   rs   rr   r   r   r   rs   
  s    zRoundTripParser.transform_tagNFr   c                 C   s$   |j |d u r| j n||d d S Nr   )Zmove_old_commentr2   rM   r   r   r   r   r@     s    z"RoundTripParser.move_token_comment)NF)	r   r   r   __doc__r   rs   r   rb   r@   r   r   r   r   r     s    r   c                   @   s>   e Zd ZdZd
eeeee ddddZeeeddd	ZdS )RoundTripParserSCr   NF)r$   rD   r   r   r   c                 C   s$   |j |d u r| j n||d d S r   )Zmove_new_commentr2   rM   r   r   r   r   r@   )  s    z$RoundTripParserSC.move_token_comment)rU   r<   r   c                 C   s  |d u rd S |d sd S |d d |d kr8t d|| |d d |d ksPJ | jjd@ }|tkrhd S |tkrd d |d g}d |d< |S t|d D ]\}}t| jj| t	r qqd S |dkrd S |t
krd d |d d | g}|d |d  |d< |S td S )Nr   r\   z>>>dcxxx   )r   r    ry   r	   r   	enumerater5   r2   commentsr   r
   NotImplementedError)r$   rU   r<   r0   r   Z_idxZcmntidxr   r   r   r   .  s2    z$RoundTripParserSC.distribute_comment)NF)	r   r   r   r   r   r   rb   r@   r   r   r   r   r   r   #  s    r   N)Zruamel.yaml.errorr   Zruamel.yaml.tokensZruamel.yaml.eventsZruamel.yaml.scannerr   r   r   r   Zruamel.yaml.commentsr   r	   r
   Zruamel.yaml.compatr   r   typingr   r   r   r   __all__r   r   r   r   r   r   r   r   r   <module>M   s$        )