o
    wiY                     @  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
 d dlmZmZmZ d dlmZmZ d dlmZ 	 g dZ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 )    )annotations)MarkedYAMLError)*)ScannerRoundTripScannerScannerError)BlankLineComment)C_PREC_POSTC_SPLIT_ON_FIRST_BLANK)nprintnprintf)TagF)AnyDictOptionalListr   )ParserRoundTripParserParserErrorargsr   kwreturnc                  O  s   t | i |S N)r   )r   r    r   O/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/ruamel/yaml/parser.pyxprintf]      r   c                   @  s   e Zd ZdS )r   N)__name__
__module____qualname__r   r   r   r   r   b   s    r   c                   @  s  e Zd ZdddZd`dd	Zdad
dZdaddZedbddZedbddZ	dcddZ
dbddZdbddZdbddZdbddZdbddZdbd d!Zdbd"d#Zdbd$d%Zdbd&d'Zdbd(d)Zdbd*d+Zddd.d/Zdedfd3d4Zdbd5d6Zdbd7d8Zdbd9d:Zdbd;d<Zdbd=d>Zdbd?d@ZdbdAdBZdgdhdDdEZdbdFdGZ dbdHdIZ!dbdJdKZ"dbdLdMZ#dgdidNdOZ$dbdPdQZ%dbdRdSZ&djdkdWdXZ'	0dldmd^d_Z(dTS )nr   !ztag:yaml.org,2002:)r!   z!!loaderr   r   Nonec                 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__l   s   zParser.__init__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&   r   s
   zParser.reset_parserc                 C  s   |    d S r   )r&   r0   r   r   r   disposez      zParser.disposec                 C     t | jdr
| jjS | jjS Ntyp)hasattrr"   scanner_scannerr0   r   r   r   r7   }      zParser.scannerc                 C  r3   r4   )r6   r"   resolver	_resolverr0   r   r   r   r:      r9   zParser.resolverchoicesboolc                 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'   r<   choicer   r   r   check_event   s   


zParser.check_eventc                 C  s    | j d u r| jr|  | _ | j S r   )r)   r/   r0   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   reprrA   
start_markliner*   )r'   valuer   r   r   rB      s   

zParser.get_eventc                 C  s4   | j  }| | t|j|j|jd}| j| _|S )N)encoding)	r7   	get_tokenmove_token_commentStreamStartEventrD   end_markrG   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)r7   check_tokenDirectiveTokenDocumentStartTokenStreamEndTokenDEFAULT_TAGSr+   
peek_tokenrD   DocumentStartEventr,   appendparse_document_endparse_block_noder/   parse_document_start)r'   rN   rD   rK   rO   r   r   r   rL      s   

z$Parser.parse_implicit_document_startc                 C  s   | j tr| j   | j ts| j tsY|  \}}| j ts6td d d| j  j	f| j  j
| j  }|j
}|j}t||d|||jd}| j| j | j| _|S | j  }t|j
|j|jd}| jrmJ | jrrJ d | _|S )Nz'expected '<document start>', but found T)rQ   versiontagscommentr_   )r7   rR   DocumentEndTokenrH   rU   process_directivesrT   r   rW   idrD   rK   rX   r_   r,   rY   rZ   parse_document_contentr/   StreamEndEventr-   )r'   r]   r^   rN   rD   rK   rO   r   r   r   r\      sD   





zParser.parse_document_startc                 C  s   | j  }|j }}d}| j trA| j  }| j  }t|ts<|jj	|jj	kr<t
d d d| j  jf| j  j|j}d}t|||d}| jjdkrT| j| _|S |r\| j| _|S | j| _|S )NFz5found non-comment content after document end marker, TrP      rg   )r7   rW   rD   rR   ra   rH   r>   rU   rK   rE   r   rc   DocumentEndEventr:   processing_versionr\   r/   rL   )r'   rN   rD   rK   rQ   ptrO   r   r   r   rZ      s6   





zParser.parse_document_endc                 C  s<   | j ttttr| | j  j}| j	
 | _|S |  S r   )r7   rR   rS   rT   ra   rU   process_empty_scalarrW   rD   r,   popr/   r[   )r'   rO   r   r   r   rd     s   zParser.parse_document_contentc           
      C  sp  d }i | _ | jtr[| j }|jdkr6|d ur!td d d|j|j\}}|dkr2td d d|j|j}n|jdkrU|j\}}|| j v rPtd d d||j|| j |< | jtst	| j rh|| j 
 f}n|d f}| jd urt| jdr|| j_| jjd u ri | j_| j D ]}| j | | jj|< | jjd j|| j | f q| jD ]}	|	| j vr| j|	 | j |	< q|S )	NYAMLzfound duplicate YAML directiverg   z:found incompatible YAML document (version 1.* is required)TAGzduplicate tag handle r^   )r+   r7   rR   rS   rH   namer   rD   rF   r=   copyr"   r6   r]   r^   	doc_infosrY   rV   )
r'   yaml_versionrN   majorminorhandleprefixrF   kkeyr   r   r   rb      sR   









 

zParser.process_directivesc                 C  s   | j ddS )NT)block
parse_noder0   r   r   r   r[   \  r2   zParser.parse_block_nodec                 C  s   |   S r   r{   r0   r   r   r   parse_flow_node_  s   zParser.parse_flow_nodec                 C  s   | j dddS )NT)rz   indentless_sequencer{   r0   r   r   r   'parse_block_node_or_indentless_sequenceb  r   z.Parser.parse_block_node_or_indentless_sequencetagr   c                 C     |d u rd S | d d S NFselect_transformr'   r   r   r   r   select_tag_transformh     zParser.select_tag_transformFrz   r~   c              
   C  s  | j tr| j  }t|j|j|j}| j	 | _
|S d }d }d  } }}	| j tr_| j  }| | |j}|j}|j}| j tr^| j  }|j}	|j}t|jd |jd | jd}nH| j tr| j  }z| | W n	 tyz   Y nw |j }}	|j}t|jd |jd | jd}| j tr| j  }|j }}	|j}|j}|d ur| | | rtd|d|j|	|d u r| j  j }}d }|d u pt|dk}
|rK| j trKd }| j  }| jr)| jjd u r)|jr
|jd r
|jd g g}d |jd< n*|jr(|jd d u r(|jd r(d |jd g}d |jd< n| jr4|jr4|j}| j  j}t|||
||d|d}| j| _
|S | j tr| j  }|j}|jrc|d u sjt|dkrmd	}n
|d u rud
}nd}t||||j|||j |jd}| j	 | _
|S | j t!r| j  }|j}t|||
||d|jd}| j"| _
|S | j t#r| 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 |r0| j t)r0| j  j}| j  j}t$|||
||d|d}| j*| _
|S |d us:|d urMt|||
dfd||}| j	 | _
|S |rSd}nd}| j  }td|d|d|j+|j)Nr   rg   )rv   suffixhandleszwhile parsing a nodezfound undefined tag handle r!   F)
flow_styler_   TF)FTFF)styler_   T rz   flowzwhile parsing a z nodez%expected the node content, but found ),r7   rR   
AliasTokenrH   
AliasEventrF   rD   rK   r,   rl   r/   AnchorTokenrI   TagTokenr   r+   NotImplementedErrorr   check_handler   rv   rW   strBlockEntryTokenr"   comment_handlingr_   SequenceStartEventparse_indentless_sequence_entryScalarTokenplainScalarEventr   FlowSequenceStartTokenparse_flow_sequence_first_entryFlowMappingStartTokenMappingStartEventparse_flow_mapping_first_keyBlockSequenceStartTokensplit_old_comment parse_block_sequence_first_entryBlockMappingStartTokenparse_block_mapping_first_keyrc   )r'   rz   r~   rN   rO   anchorr   rD   rK   tag_markimplicitr_   rj   	dimplicitnoder   r   r   r|   m  s.  










$

 

A
	4
	'



zParser.parse_nodec                 C      | j  }| j|j |  S r   )r7   rH   r-   rY   rD   parse_block_sequence_entryr'   rN   r   r   r   r     s   
z'Parser.parse_block_sequence_first_entryc                 C  s   | j tr,| j  }| | | j tts"| j| j | 	 S | j| _
| |jS | j tsF| j  }td| jd d|j|j| j  }t|j|j|jd}| j | _
| j  |S )Nz while parsing a block collectionro    expected <block end>, but found r`   )r7   rR   r   rH   rI   BlockEndTokenr,   rY   r   r[   r/   rk   rK   rW   r   r-   rc   rD   SequenceEndEventr_   rl   rM   r   r   r   r     s*   





z!Parser.parse_block_sequence_entryc                 C  s   | j tr.| j  }| | | j tttts$| j	| j
 |  S | j
| _| |jS | j  }d }| jrE| jjd u rE|j}|j}n| jj}| |j|j}t|||d}| j | _|S )Nr`   )r7   rR   r   rH   rI   KeyToken
ValueTokenr   r,   rY   r   r[   r/   rk   rK   rW   r"   r   r_   rD   r*   distribute_commentrE   r   rl   )r'   rN   crD   rO   r   r   r   r   5  s(   


z&Parser.parse_indentless_sequence_entryc                 C  r   r   )r7   rH   r-   rY   rD   parse_block_mapping_keyr   r   r   r   r   R  s   
z$Parser.parse_block_mapping_first_keyc                 C  s  | j tr-| j  }| | | j ttts#| j| j	 | 
 S | j	| _| |jS | jjdkrF| j trF| j	| _| | j  jS | j ts`| j  }td| jd d|j|j| j  }| | t|j|j|jd}| j | _| j  |S )Nrf   zwhile parsing a block mappingro   r   r`   )r7   rR   r   rH   rI   r   r   r,   rY   parse_block_mapping_valuer   r/   rk   rK   r:   ri   rW   rD   r   r-   rc   MappingEndEventr_   rl   rM   r   r   r   r   W  s2   






zParser.parse_block_mapping_keyc                 C  s   | j tra| j  }| j tr| | n| j ts$| j|dd | j ttts7| j| j	 | 
 S | j	| _|j}|d u rY| j  }|j}|rYd |d g|_|d d g}| j|j|dS | j	| _| j  }| |jS )NTemptyrg   r   r`   )r7   rR   r   rH   rI   r   r   r,   rY   r   r   r/   r_   rW   _commentrk   rK   rD   )r'   rN   r_   r   r   r   r   s  s*   


z Parser.parse_block_mapping_valuec                 C  $   | j  }| j|j | jddS NT)first)r7   rH   r-   rY   rD   parse_flow_sequence_entryr   r   r   r   r        
z&Parser.parse_flow_sequence_first_entryr   c                 C  s   | j tsV|s(| j tr| j   n| j  }td| jd d|j|j	| j t
rE| j  }td d d|j	|jdd}| j| _|S | j tsV| j| j |  S | j  }t|j	|j|jd}| j | _| j  |S )Nzwhile parsing a flow sequencero   zexpected ',' or ']', but got T)r   r`   )r7   rR   FlowSequenceEndTokenFlowEntryTokenrH   rW   r   r-   rc   rD   r   r   rK   %parse_flow_sequence_entry_mapping_keyr/   r,   rY   r   r}   r   r_   rl   r'   r   rN   rO   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   )r7   rH   rR   r   r   r   r,   rY   'parse_flow_sequence_entry_mapping_valuer}   r/   rk   rK   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   )r7   rR   r   rH   r   r   r,   rY   %parse_flow_sequence_entry_mapping_endr}   r/   rk   rK   rW   rD   r   r   r   r   r        

z.Parser.parse_flow_sequence_entry_mapping_valuec                 C  s    | j | _| j }t|j|jS r   )r   r/   r7   rW   r   rD   r   r   r   r   r     s   
z,Parser.parse_flow_sequence_entry_mapping_endc                 C  r   r   )r7   rH   r-   rY   rD   parse_flow_mapping_keyr   r   r   r   r     r   z#Parser.parse_flow_mapping_first_keyc                 C  s,  | j tsz|s(| j tr| j   n| j  }td| jd d|j|j	| j t
rP| j  }| j tttsF| j| j |  S | j| _| |jS | jjdkri| j tri| j| _| | j  jS | j tsz| j| j |  S | j  }t|j	|j|jd}| j | _| j  |S )Nzwhile parsing a flow mappingro   zexpected ',' or '}', but got rf   r`   )r7   rR   FlowMappingEndTokenr   rH   rW   r   r-   rc   rD   r   r   r,   rY   parse_flow_mapping_valuer}   r/   rk   rK   r:   ri   parse_flow_mapping_empty_valuer   r_   rl   r   r   r   r   r     sB   




zParser.parse_flow_mapping_keyc                 C  r   r   )r7   rR   r   rH   r   r   r,   rY   r   r}   r/   rk   rK   rW   rD   r   r   r   r   r   	  r   zParser.parse_flow_mapping_valuec                 C  s   | j | _| | j jS r   )r   r/   rk   r7   rW   rD   r0   r   r   r   r     s   z%Parser.parse_flow_mapping_empty_valueNmarkr_   c              	   C  s   t d d dd|||dS )Nr   r   r`   )r   )r'   r   r_   r   r   r   rk     s   zParser.process_empty_scalarrN   ntOptional[Any]r   Optional[bool]c                 C  s   d S r   r   r'   rN   r   r   r   r   r   rI     s   zParser.move_token_comment)r"   r   r   r#   )r   r#   )r   r   )r<   r   r   r=   r   r   r   r#   r   )rz   r=   r~   r=   r   r   )F)r   r=   r   r   )r   r   r   r   r   )r   r   r_   r   r   r   r   rN   r   r   r   r   r   r   r   ))r   r   r    rV   r(   r&   r1   propertyr7   r:   r@   rA   rB   r.   rL   r\   rZ   rd   rb   r[   r}   r   r   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rk   rI   r   r   r   r   r   f   sT    










(
#


<


 
#





'

	


%
r   c                   @  s(   e Zd ZdZdddZ		ddddZdS )r   ?roundtrip is a safe loader, that wants to see the unmangled tagr   r   r   r#   c                 C  r   )NTr   r   r   r   r   r   '  r   z$RoundTripParser.select_tag_transformNFrN   r   r   r   r   r   c                 C  $   |j |d u r| j n||d d S Nr   )move_old_commentr7   rW   r   r   r   r   rI   ,     $z"RoundTripParser.move_token_commentr   r   r   )r   r   r    __doc__r   rI   r   r   r   r   r   $  s
    
r   c                   @  s(   e Zd ZdZ	ddddZdddZdS )RoundTripParserSCr   NFr'   r   rN   r   r   r   r   r#   c                 C  r   r   )move_new_commentr7   rW   r   r   r   r   rI   8  r   z$RoundTripParserSC.move_token_commentr_   rE   c                 C  s   |d u rd S |d sd S |d d |d ksJ | j jd@ }|tkr$d S |tkr5d d |d g}d |d< |S t|d D ]\}}t| jj| trJ nq;d S |dkrSd S |t	krnd d |d d | g}|d |d  |d< |S t
)Nr   rg      )r"   r   r
   r	   	enumerater>   r7   commentsr   r   r   )r'   r_   rE   r5   r   _idxcmntidxr   r   r   r   =  s0   z$RoundTripParserSC.distribute_commentr   )
r'   r   rN   r   r   r   r   r   r   r#   )r_   r   rE   r   r   r   )r   r   r    r   rI   r   r   r   r   r   r   2  s
    r   N)r   r   r   r   r   r   )
__future__r   ruamel.yaml.errorr   ruamel.yaml.tokensruamel.yaml.eventsruamel.yaml.scannerr   r   r   r   ruamel.yaml.commentsr	   r
   r   ruamel.yaml.compatr   r   ruamel.yaml.tagr   typingr   r   r   r   __all__r   r   r   r   r   r   r   r   r   <module>   s*   L
     C