o
    
 ¢i„  ã                   @   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   úL/home/ubuntu/.local/lib/python3.10/site-packages/srsly/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 | _ i | _g | _g | _| j| _d S ©N)Úcurrent_eventÚ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   Údisposeu   ó   zParser.disposec                 C   ó   t | jdƒr
| jjS | jjS ©NÚtyp)Úhasattrr   ÚscannerÚ_scannerr'   r   r   r   r.   y   ó   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   Î   s@   
ÿ

ÿ
û

ÿ

ùÿ

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>   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   sT  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rV|j\}}|| j v rQtd d dt	|ƒ |jƒ‚|| j |< | j t¡st
| j ƒri|| 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)ÚTAGzduplicate tag handle %rrS   )r"   r.   rH   rI   r<   Únamer   r@   r9   r	   ÚboolÚcopyr   r-   rR   rS   rL   )
r   Úyaml_versionrD   ÚmajorÚminorÚhandleÚprefixr9   ÚkÚkeyr   r   r   rW     sV   


ÿ
ü



ü
ç



€zParser.process_directivesc                 C   s   | j ddS )NT)Úblock©Ú
parse_noder'   r   r   r   rP   Q  r)   zParser.parse_block_nodec                 C   s   |   ¡ S r    rm   r'   r   r   r   Úparse_flow_nodeU  s   zParser.parse_flow_nodec                 C   s   | j dddS )NT)rl   Úindentless_sequencerm   r'   r   r   r   Ú'parse_block_node_or_indentless_sequenceY  ó   z.Parser.parse_block_node_or_indentless_sequencec                 C   s   | j | | S r    )r"   ©r   rh   Úsuffixr   r   r   Útransform_tag]  rr   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   Ú rl   Ú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	   ru   r>   ÚBlockEntryTokenrU   ÚSequenceStartEventÚparse_indentless_sequence_entryÚScalarTokenÚplainÚScalarEventry   Ú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   rl   rp   rD   rE   ÚanchorÚtagr@   rA   Útag_markrh   rt   ÚimplicitrU   ÚptÚnoder   r   r   rn   a  s@  
ÿ

€





ü

ù	

ø
O²
ù	B¿
ù	5Ì
ù	!àù	íÿõ
ü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   W  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_valuerq   r&   r^   rA   r1   r]   r@   r   r$   rX   ÚMappingEndEventrU   r_   rC   r   r   r   rŸ   ]  s6   
ÿ
ü

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Ÿ   rq   r&   rU   Ú_commentr^   rA   r@   )r   rD   rU   r   r   r   r    |  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‡   ¤  ó   
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)rv   rT   )r.   rH   ÚFlowSequenceEndTokenÚFlowEntryTokenr<   r>   r   r$   rX   r@   r   r‰   rA   Ú%parse_flow_sequence_entry_mapping_keyr&   r#   rN   r§   ro   rœ   rU   r_   ©r   r¦   rD   rE   r   r   r   r§   ª  s8   
ü
ÿ
ÿ
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_valuero   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_endro   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_valuero   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±   ro   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 )Nrw   rz   rT   )r…   )r   ÚmarkrU   r   r   r   r^   2  s   zParser.process_empty_scalarrx   )Fr    )(r   r   r   rL   r   r   r(   Úpropertyr.   r1   r6   r8   r:   r%   rB   rQ   rO   rY   rW   rP   ro   rq   ru   rn   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   )Únullrc   ÚintÚfloatÚbinaryÚ	timestampÚomapÚpairsÚsetÚstrÚseqÚmap)r   ru   rs   r   r   r   ru   :  s   zRoundTripParser.transform_tagN)r   r   r   Ú__doc__ru   r   r   r   r   r   7  s    r   N)Ú
__future__r   Úerrorr   ÚtokensÚeventsr.   r   r   r   Úcompatr	   r
   r   Útypingr   r   r   r   Ú__all__r   Úobjectr   r   r   r   r   r   Ú<module>   s    L     ]