o
    ¨¸¢io„  ã                   @   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   úV/home/ubuntu/transcripts/venv/lib/python3.10/site-packages/strictyaml/ruamel/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   r0   €   r/   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   r6   )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   rC   r?   r@   rD   r   r   r   rA   º   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)rF   ÚversionÚtags©Úcomment)r-   rG   ÚDocumentEndTokenr;   rJ   r=   r?   Úprocess_directivesrI   r   Úidr@   rL   r"   rM   rN   Úparse_document_contentr%   ÚStreamEndEventrT   r#   )r   rC   r?   rQ   rR   r@   rD   r   r   r   rP   Î   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 )NFTrE   ©é   r[   )r-   r=   r?   rG   rU   r;   r@   ÚDocumentEndEventr0   Úprocessing_versionrP   r%   rA   )r   rC   r?   r@   rF   rD   r   r   r   rN   õ   s   


þzParser.parse_document_endc                 C   s<   | j  tttt¡r|  | j  ¡ j¡}| j	 
¡ | _|S |  ¡ S r   )r-   rG   rH   rI   rU   rJ   Úprocess_empty_scalarr=   r?   r"   Úpopr%   rO   )r   rD   r   r   r   rX   	  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 %rrR   )r!   r-   rG   rH   r;   Únamer   r?   r8   r   ÚboolÚcopyr   r,   rQ   rR   rK   )
r   Úyaml_versionrC   ÚmajorÚminorÚhandleÚprefixr8   ÚkÚkeyr   r   r   rV     sV   


ÿ
ü



ü
ç



€zParser.process_directivesc                 C   s   | j ddS )NT)Úblock©Ú
parse_noder&   r   r   r   rO   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_stylerT   ©TF)FT©FF)ÚstylerT   Tr[   Ú rl   Úflowzwhile parsing a %s nodez'expected the node content, but found %r)%r-   rG   Ú
AliasTokenr;   Ú
AliasEventr8   r?   r@   r"   r_   r%   ÚAnchorTokenÚTagTokenr!   r   r   ru   r=   ÚBlockEntryTokenrT   Ú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_keyrW   )r   rl   rp   rC   rD   ÚanchorÚtagr?   r@   Útag_markrh   rt   ÚimplicitrT   ÚptÚnoder   r   r   rn   a  s@  
ÿ

€





ü

ù	

ø
O²
ù	B¿
ù	5Ì
ù	!àù	íÿõ
üzParser.parse_nodec                 C   ó    | j  ¡ }| j |j¡ |  ¡ S r   )r-   r;   r#   rM   r?   Úparse_block_sequence_entry©r   rC   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 %rrS   )r-   rG   r€   r;   r<   r=   ÚBlockEndTokenr"   rM   r—   rO   r%   r^   r@   r   r#   rW   r?   ÚSequenceEndEventrT   r_   rB   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 )NrS   )r-   rG   r€   r;   r<   r=   ÚKeyTokenÚ
ValueTokenr›   r"   rM   r‚   rO   r%   r^   r@   rœ   r?   rT   r_   rB   r   r   r   r‚   >  s    
ÿ
ÿz&Parser.parse_indentless_sequence_entryc                 C   r–   r   )r-   r;   r#   rM   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 )NrZ   zwhile parsing a block mappingr™   rš   rS   )r-   rG   r   r;   r<   r=   rž   r›   r"   rM   Úparse_block_mapping_valuerq   r%   r^   r@   r0   r]   r?   r   r#   rW   ÚMappingEndEventrT   r_   rB   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   rS   )r-   rG   rž   r;   r<   r=   r   r›   r"   rM   rŸ   rq   r%   rT   Ú_commentr^   r@   r?   )r   rC   rT   r   r   r   r    |  s*   


z Parser.parse_block_mapping_valuec                 C   ó$   | j  ¡ }| j |j¡ | jddS ©NT)Úfirst)r-   r;   r#   rM   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   rS   )r-   rG   ÚFlowSequenceEndTokenÚFlowEntryTokenr;   r=   r   r#   rW   r?   r   r‰   r@   Ú%parse_flow_sequence_entry_mapping_keyr%   r"   rM   r§   ro   rœ   rT   r_   ©r   r¦   rC   rD   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;   rG   rž   rª   r©   r"   rM   Ú'parse_flow_sequence_entry_mapping_valuero   r%   r^   r@   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-   rG   rž   r;   rª   r©   r"   rM   Ú%parse_flow_sequence_entry_mapping_endro   r%   r^   r@   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#   rM   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 %rrZ   rS   )r-   rG   ÚFlowMappingEndTokenrª   r;   r=   r   r#   rW   r?   r   rž   r"   rM   Úparse_flow_mapping_valuero   r%   r^   r@   r0   r]   Úparse_flow_mapping_empty_valuer¡   rT   r_   r¬   r   r   r   r±   ø  sB   
ü
ÿÿ

zParser.parse_flow_mapping_keyc                 C   r®   r   )r-   rG   rž   r;   rª   r²   r"   rM   r±   ro   r%   r^   r@   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   rS   )r…   )r   ÚmarkrT   r   r   r   r^   2  s   zParser.process_empty_scalarrx   )Fr   )(r   r   r   rK   r   r   r'   Úpropertyr-   r0   r5   r7   r9   r$   rA   rP   rN   rX   rV   rO   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   Ústrictyaml.ruamel.errorr   Ústrictyaml.ruamel.tokensÚstrictyaml.ruamel.eventsÚstrictyaml.ruamel.scannerr   r   r   Ústrictyaml.ruamel.compatr   r	   r
   Útypingr   r   r   r   Ú__all__r   Úobjectr   r   r   r   r   r   Ú<module>   s    L     ]