o
    ei\                    @  s  d dl mZ d dlmZ d dlm  mZ d dlmZ d dl	m
Z
mZmZmZ 	 g dZd	Zd
ZdZed kr;d&ddZG dd deZG dd dZG dd dZG dd deZd Zd Z G dd dZ!G dd de!Z"G dd de!Z#G d d! d!e!Z$G d"d# d#Z%G d$d% d%eZ&dS )'    )annotations)MarkedYAMLErrorN)Version)check_anchorname_char_debugnprintnprintfF)AnyDictOptionalListUnionTextTuple)ScannerRoundTripScannerScannerErroru   
   u    
 	   	argsr	   kwreturnc                  O  s   t | i |S N)r   )r   r    r   Q/home/ubuntu/transcripts/venv/lib/python3.10/site-packages/ruamel/yaml/scanner.pyxprintf1   s   r   c                   @  s   e Zd ZdS )r   N)__name__
__module____qualname__r   r   r   r   r   5   s    r   c                   @  s   e Zd ZdddZdS )	SimpleKeytoken_numberr	   requiredindexintlinecolumnmarkr   Nonec                 C  s(   || _ || _|| _|| _|| _|| _d S r   )r   r    r!   r#   r$   r%   )selfr   r    r!   r#   r$   r%   r   r   r   __init__<   s   
zSimpleKey.__init__N)r   r	   r    r	   r!   r"   r#   r"   r$   r"   r%   r	   r   r&   )r   r   r   r(   r   r   r   r   r   9   s    r   c                   @  s  e Zd ZddddZedd	d
ZdddZedddZedddZdddZ	dddZ
dddZdddZdddZdddZdd d!Zdd"d#Zdd$d%Zdd&d'Zdd)d*Zdd+d,Zdd-d.Zdd/d0Zdd1d2Zdd3d4Zdd5d6Zdd8d9Zdd:d;Zdd<d=Zdd@dAZddBdCZddDdEZddFdGZ ddHdIZ!ddJdKZ"ddLdMZ#ddNdOZ$ddPdQZ%ddRdSZ&ddTdUZ'ddVdWZ(ddXdYZ)dd[d\Z*dd]d^Z+dd_d`Z,ddadbZ-ddcddZ.ddedfZ/ddgdhZ0ddidjZ1ddkdlZ2ddmdnZ3ddodpZ4ddqdrZ5ddsdtZ6ddudvZ7ddxdyZ8ddzd{Z9dd|d}Z:dd~dZ;dddZ<dddZ=dddZ>dddZ?dddZ@ddddZAdddZBdddZCdddZDdddZEdddZFi ddddddddddddddddddddddddddddddddddddiZGddddZHdddZIdddZJdddZKdddĄZLdddƄZMdddɄZNddd˄ZOddd̈́ZPdddτZQdS )r   Nloaderr	   r   r&   c                 C  s<   || _ | j durt| j dddu r| | j _|   d| _dS )zInitialize the scanner.N_scannerF)r)   getattrr*   reset_scanner
first_time)r'   r)   r   r   r   r(   H   s
   
zScanner.__init__r"   c                 C  s
   t | jS r   )lenflow_contextr'   r   r   r   
flow_levelY   s   
zScanner.flow_levelc                 C  sH   d| _ g | _g | _|   d| _d| _g | _d| _i | _d | _	g | _
d S )NFr   T)doner/   tokensfetch_stream_starttokens_takenindentindentsallow_simple_keypossible_simple_keysyaml_versiontag_directivesr0   r   r   r   r,   ]   s   
zScanner.reset_scannerc                 C  sD   z| j W S  ty!   t| jdr| jj| _ n| jj| _ | j  Y S w Ntyp)_scanner_readerAttributeErrorhasattrr)   reader_readerr0   r   r   r   rB      s   

zScanner.readerc                 C  s   t | jdr| jjjS | jjS r=   )rA   r)   resolverprocessing_versionr0   r   r   r   scanner_processing_version   s   
z"Scanner.scanner_processing_versionchoicesboolc                 G  sR   |   r|   |   st| jdkr'|sdS |D ]}t| jd |r& dS qdS Nr   TF)need_more_tokensfetch_more_tokensr.   r4   
isinstancer'   rG   choicer   r   r   check_token   s   zScanner.check_tokenc                 C  s4   |   r|   |   st| jdkr| jd S d S Nr   )rJ   rK   r.   r4   r0   r   r   r   
peek_token   s   
zScanner.peek_tokenc                 C  sD   |   r|   |   st| jdkr |  jd7  _| jdS d S Nr      )rJ   rK   r.   r4   r6   popr0   r   r   r   	get_token   s   zScanner.get_tokenc                 C  s:   | j rdS t| jdkrdS |   |  | jkrdS dS )NFr   T)r3   r.   r4   stale_possible_simple_keysnext_possible_simple_keyr6   r0   r   r   r   rJ      s   zScanner.need_more_tokenscommentc                 C  s   t r   )NotImplementedError)r'   rX   r   r   r   fetch_comment   s   zScanner.fetch_commentc                 C  s  |   }|d ur| |S |   | | jj | j }|dkr%|  S |dkr1|  r1| 	 S |dkr=| 
 r=|  S |dkrI|  rI|  S |dkrQ|  S |dkrY|  S |dkra|  S |dkri|  S |d	krq|  S |dkr}|  r}|  S |d
kr|  r|  S |dkr|  r|  S |dkr|  S |dkr|  S |dkr|  S |dkr| js|  S |dkr| js|  S |dkr|  S |dkr|   S | ! r| " S t#dd d|d| j$ )N %-.[{]},?:*&!|>'"z!while scanning for the next tokenzfound character z that cannot start any token)%scan_to_next_tokenrZ   rV   unwind_indentrB   r$   peekfetch_stream_endcheck_directivefetch_directivecheck_document_startfetch_document_startcheck_document_endfetch_document_endfetch_flow_sequence_startfetch_flow_mapping_startfetch_flow_sequence_endfetch_flow_mapping_endfetch_flow_entrycheck_block_entryfetch_block_entry	check_key	fetch_keycheck_valuefetch_valuefetch_aliasfetch_anchor	fetch_tagr1   fetch_literalfetch_foldedfetch_singlefetch_doublecheck_plainfetch_plainr   get_mark)r'   rX   chr   r   r   rK      sh   

	
zScanner.fetch_more_tokensc                 C  s6   d }| j D ]}| j | }|d u s|j|k r|j}q|S r   )r:   r   )r'   min_token_numberlevelkeyr   r   r   rW   B  s   

z Scanner.next_possible_simple_keyc                 C  sb   t | jD ])}| j| }|j| jjks| jj|j dkr.|jr*td|jd| j | j|= qd S )Ni   while scanning a simple keycould not find expected ':')	listr:   r#   rB   r!   r    r   r%   r   )r'   r   r   r   r   r   rV   Q  s   
 z"Scanner.stale_possible_simple_keysc                 C  sl   | j  o
| j| jjk}| jr4|   | jt| j }t	||| jj
| jj| jj| j }|| j| j < d S d S r   )r1   r7   rB   r$   r9   remove_possible_simple_keyr6   r.   r4   r   r!   r#   r   r:   )r'   r    r   r   r   r   r   save_possible_simple_keyd  s   z Scanner.save_possible_simple_keyc                 C  sF   | j | jv r!| j| j  }|jrtd|jd| j | j| j = d S d S )Nr   r   )r1   r:   r    r   r%   rB   r   )r'   r   r   r   r   r   {  s   z"Scanner.remove_possible_simple_keyr$   c                 C  sT   t | jrd S | j|kr(| j }| j | _| jt	|| | j|ksd S d S r   )
rH   r1   r7   rB   r   r8   rT   r4   appendBlockEndToken)r'   r$   r%   r   r   r   rn     s   


zScanner.unwind_indentc                 C  s&   | j |k r| j| j  || _ dS dS )NTF)r7   r8   r   )r'   r$   r   r   r   
add_indent  s
   
zScanner.add_indentc                 C  s*   | j  }| jtj||| j jd d S )N)encoding)rB   r   r4   r   StreamStartTokenr   r'   r%   r   r   r   r5     s   
 zScanner.fetch_stream_startc                 C  sF   |  d |   d| _i | _| j }| jt|| d| _	d S )Nr2   FT)
rn   r   r9   r:   rB   r   r4   r   StreamEndTokenr3   r   r   r   r   rp     s   


zScanner.fetch_stream_endc                 C  s,   |  d |   d| _| j|   d S )Nr2   F)rn   r   r9   r4   r   scan_directiver0   r   r   r   rr     s   
zScanner.fetch_directivec                 C     |  tj d S r   )fetch_document_indicatorr4   DocumentStartTokenr0   r   r   r   rt        zScanner.fetch_document_startc                 C  r   r   )r   r4   DocumentEndTokenr0   r   r   r   rv     r   zScanner.fetch_document_end
TokenClassc                 C  sN   |  d |   d| _| j }| jd | j }| j||| d S )Nr2   F   )rn   r   r9   rB   r   forwardr4   r   )r'   r   
start_markend_markr   r   r   r     s   


z Scanner.fetch_document_indicatorc                 C     | j tjdd d S )Nr_   to_push)fetch_flow_collection_startr4   FlowSequenceStartTokenr0   r   r   r   rw        z!Scanner.fetch_flow_sequence_startc                 C  r   )Nr`   r   )r   r4   FlowMappingStartTokenr0   r   r   r   rx     r   z Scanner.fetch_flow_mapping_startr   r   c                 C  sN   |    | j| d| _| j }| j  | j }| j||| d S NT)r   r/   r   r9   rB   r   r   r4   )r'   r   r   r   r   r   r   r   r     s   


z#Scanner.fetch_flow_collection_startc                 C  r   r   )fetch_flow_collection_endr4   FlowSequenceEndTokenr0   r   r   r   ry     r   zScanner.fetch_flow_sequence_endc                 C  r   r   )r   r4   FlowMappingEndTokenr0   r   r   r   rz     r   zScanner.fetch_flow_mapping_endc                 C  sd   |    z| j }W n	 ty   Y nw d| _| j }| j  | j }| j	||| d S NF)
r   r/   rT   
IndexErrorr9   rB   r   r   r4   r   )r'   r   poppedr   r   r   r   r   r     s   


z!Scanner.fetch_flow_collection_endc                 C  sD   d| _ |   | j }| j  | j }| jt|| d S r   )r9   r   rB   r   r   r4   r   FlowEntryToken)r'   r   r   r   r   r   r{     s   


zScanner.fetch_flow_entryc                 C  s   | j s'| jstd d d| j | | jjr&| j }| jt	|| n	 d| _| 
  | j }| j  | j }| jt|| d S )Nz%sequence entries are not allowed hereT)r1   r9   r   rB   r   r   r$   r4   r   BlockSequenceStartTokenr   r   BlockEntryTokenr'   r%   r   r   r   r   r   r}     s&   



zScanner.fetch_block_entryc                 C  s   | j s&| jstd d d| j | | jjr&| j }| jt	|| | j  | _| 
  | j }| j  | j }| jt|| d S )Nz!mapping keys are not allowed here)r1   r9   r   rB   r   r   r$   r4   r   BlockMappingStartTokenr   r   KeyTokenr   r   r   r   r   8  s   




zScanner.fetch_keyc                 C  s  | j | jv r@| j| j  }| j| j = | j|j| j t|j|j | j s<| |j	r<| j|j| j t
|j|j d| _n2| j sP| jsPtd d d| j | j si| | jj	ri| j }| jt
|| | j  | _|   | j }| j  | j }| jt|| d S )NFz#mapping values are not allowed here)r1   r:   r4   insertr   r6   r   r%   r   r$   r   r9   r   rB   r   r   r   r   
ValueToken)r'   r   r%   r   r   r   r   r   r   S  s>   







zScanner.fetch_valuec                 C  &   |    d| _| j| tj d S r   )r   r9   r4   r   scan_anchor
AliasTokenr0   r   r   r   r        zScanner.fetch_aliasc                 C  r   r   )r   r9   r4   r   r   AnchorTokenr0   r   r   r   r     r   zScanner.fetch_anchorc                 C  "   |    d| _| j|   d S r   )r   r9   r4   r   scan_tagr0   r   r   r   r     s   zScanner.fetch_tagc                 C     | j dd d S )Nri   stylefetch_block_scalarr0   r   r   r   r     r   zScanner.fetch_literalc                 C  r   )Nrj   r   r   r0   r   r   r   r     r   zScanner.fetch_foldedr   c                 C  s$   d| _ |   | j| | d S r   )r9   r   r4   r   scan_block_scalarr'   r   r   r   r   r     s   zScanner.fetch_block_scalarc                 C  r   )Nrk   r   fetch_flow_scalarr0   r   r   r   r     r   zScanner.fetch_singlec                 C  r   )Nrl   r   r   r0   r   r   r   r     r   zScanner.fetch_doublec                 C  s$   |    d| _| j| | d S r   )r   r9   r4   r   scan_flow_scalarr   r   r   r   r     s   zScanner.fetch_flow_scalarc                 C  r   r   )r   r9   r4   r   
scan_plainr0   r   r   r   r     s   zScanner.fetch_plainc                 C  s   | j jdkrdS d S )Nr   T)rB   r$   r0   r   r   r   rq     s   zScanner.check_directivec                 C  4   | j jdkr| j ddkr| j dtv rdS d S )Nr   r   ---TrB   r$   prefixro   _THE_END_SPACE_TABr0   r   r   r   rs         zScanner.check_document_startc                 C  r   )Nr   r   ...Tr   r0   r   r   r   ru     r   zScanner.check_document_endc                 C  s   | j dtv S )NrS   )rB   ro   r   r0   r   r   r   r|     s   zScanner.check_block_entryc                 C  s   t | jrdS | jdtv S )NTrS   )rH   r1   rB   ro   r   r0   r   r   r   r~     s   
zScanner.check_keyc                 C  s   | j dkrt| jrdS n0t| jr=| jd dkr%| jdtvr#dS dS | jr;t| jd tj	r;| jdtvr;dS dS | jdtv S )NrS   rS   Tr2   r_   rS   F)
rF   rH   r1   r/   rB   ro   r   r4   rL   r   r0   r   r   r   r     s   


zScanner.check_valuec                 C  s   | j j}| }| jdkr"|dvp!|dtvo!|dkp!| j o!|dv S |dvr(dS |d}|dkr6|tvr6dS |dkrEt| jrE|tvrEdS |dtvoV|dkpV| j oV|dv S )Nr   u      	
  -?:,[]{}#&*!|>'"%@`rS   r]   z?:Tre   )rB   ro   rF   r   r1   rH   
_SPACE_TAB)r'   srpr   ch1r   r   r   r     s"   
zScanner.check_plainc                 C  s   | j j}| j j}| j jdkr| dkr|  d}t}| jdkr!dnd}|sS| |v r2|  | |v s*| dkrD| |vrD|  | |vs<|  rO| jsNd| _nd}|r%d S )Nr      ﻿Fr    #T)rB   ro   r   r!   _THE_ENDr1   scan_line_breakr9   )r'   r   srffound_the_endwhite_spacer   r   r   rm   %  s,   




zScanner.scan_to_next_tokenc                 C  s   | j j}| j j}| j  }|  | |}d }|dkr&| |}| j  }n!|dkr5| |}| j  }n| j  }| tvrG|  | tvs?| | t	
||||S )NYAMLTAG)rB   ro   r   r   scan_directive_namescan_yaml_directive_valuescan_tag_directive_valuer   scan_directive_ignored_liner4   DirectiveToken)r'   r   r   r   namevaluer   r   r   r   r   L  s$   







zScanner.scan_directiver   c                 C  s  d}| j j}||}d|  krdks/n d|  krdks/n d|  kr*dks/n |dv r\|d	7 }||}d|  krAdks/n d|  krLdks/n d|  krWdks/n |dv s/|sktd
|d|| j  | j |}| j | | }|dvrtd
|d|| j  |S )Nr   09AZazz-_:.rS   while scanning a directive4expected alphabetic or numeric character, but found      
  )rB   ro   r   r   r   r   )r'   r   lengthr   r   r   r   r   r   r   a  s2   JJzScanner.scan_directive_namec                 C  s   | j j}| j j}| dkr|  | dks| |}| dkr-td|d| | j  |  | |}| dvrHtd|d| | j  ||f| _t||| jj	d _
| jS )Nr   r^   r   z#expected a digit or '.', but found r   r2   )rB   ro   r   scan_yaml_directive_numberr   r   r;   r   r)   	doc_infosdoc_version)r'   r   r   r   majorminorr   r   r   r   |  s2   








z!Scanner.scan_yaml_directive_valuec                 C  s   | j j}| j j}| }d|  krdks#n td|d|| j  d}d||  kr1dkrDn n|d7 }d||  krCdks3n t| j |}|| |S )Nr   r   r   zexpected a digit, but found r   rS   )rB   ro   r   r   r   r"   r   )r'   r   r   r   r   r   r   r   r   r   r     s"   z"Scanner.scan_yaml_directive_numberc                 C  sp   | j j}| j j}| dkr|  | dks| |}| dkr'|  | dks| |}||f}| j| |S )Nr   )rB   ro   r   scan_tag_directive_handlescan_tag_directive_prefixr<   r   )r'   r   r   r   handler   ret_valr   r   r   r     s   





z Scanner.scan_tag_directive_valuec                 C  s<   |  d|}| j }|dkrtd|d|| j |S )N	directiver   r   expected ' ', but found )scan_tag_handlerB   ro   r   r   r'   r   r   r   r   r   r   r        
z!Scanner.scan_tag_directive_handlec                 C  s<   |  d|}| j }|dvrtd|d|| j |S )Nr   r   r   r   )scan_tag_urirB   ro   r   r   r  r   r   r   r     r  z!Scanner.scan_tag_directive_prefixc                 C  s   | j j}| j j}| dkr|  | dks| dkr'| tvr'|  | tvs| }|tvr;td|d|| j  |   d S )Nr   r   r   .expected a comment or a line break, but found rB   ro   r   r   r   r   r   )r'   r   r   r   r   r   r   r   r     s$   




z#Scanner.scan_directive_ignored_linec           
      C  s   | j j}| j  }| }|dkrd}nd}| j   d}||}t|r0|d7 }||}t|s$|sBtd||d|| j  | j |}| j | |dvrbtd||d|| j  | j  }	||||	S )	Nrf   aliasanchorr   rS   while scanning an r   u     	
  ?:,[]{}%@`)rB   ro   r   r   r   r   r   )
r'   r   r   r   	indicatorr   r   r   r   r   r   r   r   r     s>   	


zScanner.scan_anchorc                 C  sd  | j j}| j  }|d}d}|dkr"d}| j   | j j}|d}|dkrMd }| j d | d|}| dkrGtd|d	| | j  | j   nA|tv r[d }|}| j   n3d}d
}|dvrv|dkrjd}n|d7 }||}|dvsc|}|r| d|}n|}| j   | d|}| }|dvrtd|d|| j  ||f}	| j  }
t	|	||
S )NrS   rh   z!!<   tagrj   zwhile parsing a tagzexpected '>' but found Fr   Tzwhile scanning a tagr   )
rB   ro   r   r   r  r   r   r  r4   TagToken)r'   r   r   r   short_handler   suffixr   
use_handler   r   r   r   r   r     sf   





zScanner.scan_tagFrtOptional[bool]c                 C  s  | j j}|dkrd}nd}g }| j  }| j   | |\}}| |}	| jd }
|d u rQ|
dk rD|dvsB| jdkrDt| j	ddrDd}
| 
 \}}}t|
|}n|
dk rWd}
|
| d }| |\}}d}| j j|kr| d	kr|| | d
v}d}||tvr|d7 }||tvs|| j | | j | |  }| |\}}|dv r|
dkr|  s|  rn?| j j|kr| d	kr|r|r|dkr|d |r|dkr|r| d
vr|s|d n|| nn| j j|kr| d	ksqg }|dv r|| |du r|| n
|dv r|| td|d|||}| j	d urAt| j	dd}|d u rA|	d urA||	g t|dkr| j	d ur|t| j	dd }|d ur||jt| }|D ]}|d dksnJ | j|d| |d7 }qc|  }|r|d|d j |d   |  }|s| j	d urt| j	dd}|d u r| j  }td|||}|| |S )Nrj   TFrS   z|>r   0top_level_block_style_scalar_no_indent_error_1_1 r[   r   r   
r   r   r   comment_handlingr2   ) rB   ro   r   r   scan_block_scalar_indicatorsscan_block_scalar_ignored_liner7   rF   r+   r)   scan_block_scalar_indentationmaxscan_block_scalar_breaksr$   extendr   r   r   r   rs   ru   r4   ScalarTokenjoinadd_pre_commentsr.   r#   commentsadd_blank_linerm   CommentTokenadd_post_comment)r'   r   r  r   foldedchunksr   chomping	incrementblock_scalar_comment
min_indentbreaks
max_indentr   r7   
line_breakleading_non_spacer   trailingtokencomment_handlerr#   xrX   comment_end_markr   r   r   r   K  s   








-










zScanner.scan_block_scalarc                 C  s  | j j}d }d }| }|dv r<|dkrd}nd}| j   | }|dv r;t|}|dkr6td|d| j  | j   n0|dv rlt|}|dkrRtd|d| j  | j   | }|dv rl|dkred}nd}| j   | }|d	vrtd|d
|| j  ||fS )Nz+-+TF
0123456789r   while scanning a block scalarz<expected indentation indicator in the range 1-9, but found 0r   z7expected chomping or indentation indicators, but found )rB   ro   r   r"   r   r   )r'   r   r   r(  r)  r   r   r   r   r    s\   



z$Scanner.scan_block_scalar_indicatorsc                 C  s   | j j}| j j}d}d }| dkr|| 7 }|  | dks| dkr7|}| tvr7|| 7 }|  | tvs*| }|tvrKtd|d|| j  |   |S )Nr  r   r   r7  r  r  )r'   r   r   r   r   rX   r   r   r   r   r    s0   






z&Scanner.scan_block_scalar_ignored_linec                 C  s   | j j}| j j}g }d}d}| j  }| dv rD| dkr2|dk r%| j j}||   | j  }n|  | j j|kr?| j j}| dv s|dkrV||krV| j  }td||||fS )Nr2   r       
  r   z9more indented follow up line than first in a block scalar)rB   ro   r   r   r$   r   r   r   )r'   r   r   r'  first_indentr-  r   r   r   r   r   r    s,   






z%Scanner.scan_block_scalar_indentationr7   c                 C  s   g }| j j}| j j}| j  }| j j|k r(| dkr(|  | j j|k r(| dks| dv rW||   | j  }| j j|k rR| dkrR|  | j j|k rR| dksD| dv s-||fS )Nr   
   
  )rB   ro   r   r   r$   r   r   )r'   r7   r'  r   r   r   r   r   r   r  ,  s   



z Scanner.scan_block_scalar_breaksc                 C  s   |dkrd}nd}| j j}g }| j  }| }| j   || || | |krA|| || || || | |ks*| j   | j  }td	|d|||S )Nrl   TFr  )
rB   ro   r   r   r  scan_flow_scalar_non_spacesscan_flow_scalar_spacesr4   r  r   )r'   r   doubler   r'  r   quoter   r   r   r   r   ;  s    





zScanner.scan_flow_scalarr   r[   r   r  bt	nr  vfrer   rl   /\N   _    Lu    Pu    r        )r3  uUr=  c           
   	   C  s  g }| j j}| j j}	 d}||dvr|d7 }||dvs|dkr.|| j | || | }|sG|dkrG|ddkrG|d |d n|rM|dksS|s\|dv r\|| |  n|r|dkr|  | }|| jv ry|| j|  |  nc|| jv r| j| }|  t|D ]}||d	vrtd
|d|dd||| j 	 qt
| j |d}	|t|	 || n!|dv r|   || || ntd
|d|| j 	 |S q)NTr   u    
'"\ 	  rS   rk   r  z"\rM  0123456789ABCDEFabcdefz%while scanning a double-quoted scalarzexpected escape sequence of dz hexdecimal numbers, but found    u
   
  zfound unknown escape character )rB   ro   r   r   r   ESCAPE_REPLACEMENTSESCAPE_CODESranger   r   r"   chrr   r  scan_flow_scalar_breaks)
r'   r=  r   r'  r   r   r   r   kcoder   r   r   r;  j  sh   







z#Scanner.scan_flow_scalar_non_spacesc           
      C  s   | j j}g }d}||dv r|d7 }||dv s| j |}| j | | }|dkr5td|d| j  |dv r[|  }| ||}	|dkrM|| n|	sT|d	 |	|	 |S || |S )
Nr   r   rS   r[   while scanning a quoted scalarzfound unexpected end of streamr:  r  r   )
rB   ro   r   r   r   r   r   r_  r   r  )
r'   r=  r   r   r'  r   whitespacesr   r.  r,  r   r   r   r<    s6   


zScanner.scan_flow_scalar_spacesc                 C  s   g }| j j}| j j}	 | j d}|dks|dkr)|dtv r)td|d| j  | dv r6|  | dv s.| dv rC||   n|S q)	NTr   r   r   rb  z#found unexpected document separatorr   r:  )	rB   ro   r   r   r   r   r   r   r   )r'   r=  r   r'  r   r   r   r   r   r   r_    s&   


zScanner.scan_flow_scalar_breaksc                 C  s  | j j}| j j}g }| j  }|}| jd }g }	 d}| dkr!n	 ||}		 |	dkr4||d tvr4n%|	dkr>| jd	kr>n|	tv sX| jsQ|	dkrQ||d tv sX| jrY|	d
v rYn|d7 }q"| jr||	dkr|||d dvr||| td|d| j  d|dkrn2d| _	|
| || j | || | j  }| ||}|r| dks| js| j j|k rnqtd|d||}
| jd ur
t| jdd}|d u r|r|d dkrtd|d ||}|
| |
S |dur
|jd }|D ]}	|	dkr	| jdd| |d7 }q|
S )NrS   Tr   r   Fre   rc   rd   r   z,:?[]{}u     	
  ,[]{}zwhile scanning a plain scalarzfound unexpected ':'zGPlease check http://pyyaml.org/wiki/YAMLColonInFlowContext for details.r  r  r  )rB   ro   r   r   r7   r   rF   r1   r   r9   r  r   r   scan_plain_spacesr$   r4   r  r   r)   r+   r$  r%  r#   r"  r#  )r'   r   r   r'  r   r   r7   spacesr   r   r1  r2  rX   r#   r   r   r   r     s   


	


6



zScanner.scan_plainc                 C  s>  | j j}| j j}g }d}||dv r|d7 }||dv s| j |}| j | | }|dv r|  }	d| _| j d}
|
dksD|
dkrL|dtv rLd S g }| d	v r~| dkr\|  n||   | j d}
|
dksq|
dkry|dtv ryd S | d	v sS|	d
kr||	 n|s|d || |S |r|| |S )Nr   r   rS   r:  Tr   r   r   r8  r  )	rB   ro   r   r   r   r9   r   r   r  )r'   r7   r   r   r   r'  r   rc  r   r.  r   r,  r   r   r   rd  -  sD   





zScanner.scan_plain_spacesr   c                 C  sF  | j j}| }|dkrtd||d|| j  d}||}|dkrd|  kr/dksJn d|  kr:d	ksJn d
|  krEdksJn |dv rw|d7 }||}d|  kr\dksJn d|  krgd	ksJn d
|  krrdksJn |dv sJ|dkr| j | td||d|| j  |d7 }| j |}| j | |S )Nrh   r	  zexpected '!', but found rS   r   r   r   r   r   r   r   z-_zexpected '!' but found )rB   ro   r   r   r   r   )r'   r   r   r   r   r   r   r   r   r   r  R  s8   JJzScanner.scan_tag_handlec                 C  sv  | j j}g }d}||}d|  krdks:n d|  kr!dks:n d|  kr,dks:n |dv s:| jd	kr|d
kr|dkrY|| j | | j | d}|| || n|d7 }||}d|  krkdks:n d|  krvdks:n d|  krdks:n |dv s:| jd	kr|d
ks:|dkr|| j | | j | d}|std||d|| j  d	|S )Nr   r   r   r   r   r   r   z-;/?:@&=+$,_.!~*'()[]%r   r   r\   rS   zwhile parsing an zexpected URI, but found r  )
rB   ro   rF   r   r   r   scan_uri_escapesr   r   r   )r'   r   r   r   r'  r   r   r   r   r   r  r  sB   

zScanner.scan_tag_uric           
   
   C  s   | j j}| j j}g }| j  }| dkrK|  tdD ]}||dvr5td||d||| j  q|t| j dd |d | dksz
t	|
d}W |S  tym }	 ztd||t|	|d }	~	ww )Nr\   r  rX  r	  @expected URI escape sequence of 2 hexdecimal numbers, but found rZ  utf-8rB   ro   r   r   r]  r   r   r"   r   bytesdecodeUnicodeDecodeErrorstr)
r'   r   r   r   r   
code_bytesr%   r`  r   excr   r   r   rf    s6   


zScanner.scan_uri_escapesc                 C  sZ   | j  }|dv r | j ddkr| j d dS | j   dS |dv r+| j   |S dS )N   
r  
r       r  rB   ro   r   r   )r'   r   r   r   r   r     s   
	

zScanner.scan_line_breakr   )r)   r	   r   r&   )r   r"   r   r&   r   r	   rG   r	   r   rH   r   rH   rX   r	   r   r&   )r$   r	   r   r&   )r$   r"   r   rH   )r   r	   r   r&   )r   r	   r   r   r   r&   )r   r	   r   r&   r   r	   r   r	   )r   r	   r   r&   )r   r	   r   r	   Fr   r	   r  r  r   r	   )r7   r"   r   r	   )r   r	   r   r	   )r=  r	   r   r	   r   r	   )r7   r	   r   r	   r   r	   r   r	   r   r	   r   r	   )Rr   r   r   r(   propertyr1   r,   rB   rF   rO   rQ   rU   rJ   rZ   rK   rW   rV   r   r   rn   r   r5   rp   rr   rt   rv   r   rw   rx   r   ry   rz   r   r{   r}   r   r   r   r   r   r   r   r   r   r   r   r   rq   rs   ru   r|   r~   r   r   rm   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r   r[  r\  r;  r<  r_  r   rd  r  r  rf  r   r   r   r   r   r   G   s    
7








o






















<
















$
'








.8
}
2


	


5


Z
%
 
#r   c                   @  sj   e Zd Zd#ddZd$ddZd$d	d
Zd$ddZd%ddZd$ddZd&d'ddZ	d(d)ddZ
d*d d!Zd"S )+r   rG   r	   r   rH   c                 G  sZ   |   r|   |   s|   t| jdkr+|sdS |D ]}t| jd |r* dS qdS rI   )rJ   rK   _gather_commentsr.   r4   rL   rM   r   r   r   rO     s   zRoundTripScanner.check_tokenc                 C  s<   |   r|   |   s|   t| jdkr| jd S d S rP   )rJ   rK   r~  r.   r4   r0   r   r   r   rQ     s   
zRoundTripScanner.peek_tokenc                 C  s   g }| j s|S t| j d t jr"| j d}|  jd7  _|| |  rN|   | j s/|S t| j d t jrJ|  jd7  _| j d}|| |  s&t|dkr\| j d 	| | j
slt| j dk rn|   dS dS dS )zCcombine multiple comment lines and assign to next non-comment-tokenr   rS   r  N)r4   rL   r$  rT   r6   r   rJ   rK   r.   r!  r3   )r'   r"  rX   r   r   r   r~    s*   

	z!RoundTripScanner._gather_commentsc                 C  s  |   r|   |   s|   t| jdkrHt| jdkrt| jd tjtjtjtj	frt| jd tj
r| jd jj| jd jjkr|  jd7  _| jd}|   t| jdkrt| jd tj
r|  jd7  _| jd}|jd|jj  |j |_|   t| jdkrt| jd tj
sg| jd | nt| jdkr;t| jd tjr;t| jd tj
r;| jd jj| jd jjkr;|  jd7  _| jd}d|jj| jd jj  d|jj  |j |_| jd | |   t| jdkr;t| jd tj
r;|  jd7  _| jd}|jd|jj  |j |_|   t| jdkr;t| jd tj
s|  jd7  _| jdS d S )Nr   rS   r   r  )rJ   rK   r~  r.   r4   rL   r  r   r   r   r$  r   r#   r   r6   rT   r   r$   r%  )r'   cc1r   r   r   rU     sf     
$$zRoundTripScanner.get_tokenrX   r&   c                 C  sP   |\}}}|r|d dkr|d d }|r|d dks| j t ||| d S )Nr2   r   )r4   r   r$  )r'   rX   r   r   r   r   r   r   rZ   )  s
   
zRoundTripScanner.fetch_commentc           	      C  s  | j j}| j j}| j jdkr| dkr|  d}| jdkrdnd}|s| |v r0|  | |v s(| }|dkr| j  }|}|  |tvr\| }|dkrQ|d7 }n||7 }|  |tvsE|  }t|dkrt||7 }|  }t|dksf| j  }| jsd	| _	|||fS |  d
kr| j  }| jsd	| _	| }|dkr| j  }d
}|r| jd	d}||7 }|s| dkr|
ddd d }| j  }|||fS nd	}|r#d S )Nr   r   Fr   r   r   r[   r  Tr  )
empty_linerS   )rB   ro   r   r!   r1   r   r   r   r.   r9   rsplit)	r'   r   r   r   r   r   r   rX   r   r   r   r   rm   3  sh   









-z#RoundTripScanner.scan_to_next_tokenFr  r   c                 C  st   | j  }|dv r | j ddkr| j d dS | j   dS |dv r+| j   |S |r8|dv r8| j   |S dS )Nrp  r  rq  r  rr  z	 r  rs  )r'   r  r   r   r   r   r   {  s   
	


z RoundTripScanner.scan_line_breakTr   r  r  c                 C  s   t j| ||dS )N)r  )r   r   )r'   r   r  r   r   r   r     r   z"RoundTripScanner.scan_block_scalarr   r   c              
   C  s   | j j}| j j}g }d}| j  }| dkrY|d7 }|  tdD ]}||dvr;td||d||| j  q!|t| j dd || j d7 }|d | dksz
t	|
d}	W |S  ty{ }
 ztd||t|
|d	}
~
ww )
z>
        The roundtripscanner doesn't do URI escaping
        r  r\   r  rX  r	  rg  rZ  rh  Nri  )r'   r   r   r   r   rn  chunkr%   r`  rP  ro  r   r   r   rf    s<   


z!RoundTripScanner.scan_uri_escapesNrv  ru  rx  rz  )r  rH   r   r   )Tr{  r|  )r   r   r   rO   rQ   r~  rU   rZ   rm   r   r   rf  r   r   r   r   r     s    


	

6

Hr   c                   @  sN   e Zd ZdZddd	ZddddZdddZdddZdddZdddZ	dS )CommentBase)r   r#   r$   usedfunctionflineufunuliner   r	   r#   r$   r   r&   c                 C  sb   || _ || _|| _d| _tdkr/dd l}|| d d }|j| _|j	| _
d | _d | _d S d S )Nr   r   r   )r   r#   r$   r  r   inspectgetframeinfostackr  linenor  r  r  )r'   r   r#   r$   r  infor   r   r   r(     s   
zCommentBase.__init__r5  rD  c                 C  sD   || _ tdkr dd l}|| d d }|j| _|j| _d S d S rR   )	r  r   r  r  r  r  r  r  r  )r'   rD  r  r  r   r   r   set_used  s   zCommentBase.set_usedc                 C  s
   d| _ d S )Nri   )r  r0   r   r   r   set_assigned     
zCommentBase.set_assignedrm  c                 C  s   | j  S r   r   r0   r   r   r   __str__     zCommentBase.__str__c                 C  s   | j S r   r  r0   r   r   r   __repr__  r  zCommentBase.__repr__c                 C  sZ   | j d }| j}| | j d| jdd| jdd|dd| j d| j d| j d| j S )Nrl   r   2re   z<2z "40s)	r   r   r  r#   r$   r  r  r  r  )r'   xvr   r   r   r   r    s   
(zCommentBase.infoNr   r	   r#   r	   r$   r	   r   r&   )r5  )rD  r	   r   r&   rt  r   rm  )
r   r   r   	__slots__r(   r  r  r  r  r  r   r   r   r   r    s    

	

r  c                      "   e Zd ZdZd
 fdd	Z  ZS )
EOLCommentEOLCr   r	   r#   r$   r   r&   c                      t  ||| d S r   superr(   r'   r   r#   r$   	__class__r   r   r(     r   zEOLComment.__init__r  r   r   r   r   r(   __classcell__r   r   r  r   r        r  c                      r  )FullLineCommentFULLr   r	   r#   r$   r   r&   c                   r  r   r  r  r  r   r   r(     r   zFullLineComment.__init__r  r  r   r   r  r   r    r  r  c                      r  )BlankLineCommentBLNKr   r	   r#   r$   r   r&   c                   r  r   r  r  r  r   r   r(     r   zBlankLineComment.__init__r  r  r   r   r  r   r    r  r  c                   @  s   e Zd Zd*ddZd+d
dZd+ddZd+ddZd,ddZd-ddZd.ddZ	d/ddZ
d0d1ddZd2d d!Zd3d#d$Zd2d%d&Zd-d'd(Zd)S )4ScannedCommentsr'   r	   r   r&   c                 C  s   i | _ g | _d S r   )r"  unusedr0   r   r   r   r(      s   
zScannedComments.__init__rX   r$   r#   c                 C  sZ   | ddkr|d dksJ nd|vsJ t|d d || | j|< }| j| |S Nr  rS   r2   )countr  r"  r  r   r'   rX   r$   r#   retvalr   r   r   add_eol_comment  s   zScannedComments.add_eol_commentc                 C  sZ   | ddkr|d dksJ || jvsJ t|d d || | j|< }| j| |S r  )r  r"  r  r  r   r  r   r   r   r#    s
   zScannedComments.add_blank_linec                 C  sL   | ddkr|d dksJ t|d d || | j|< }| j| |S r  )r  r  r"  r  r   r  r   r   r   add_full_line_comment  s   z%ScannedComments.add_full_line_commentidxc                 C  s
   | j | S r   )r"  )r'   r  r   r   r   __getitem__   r  zScannedComments.__getitem__c                 C  s"   dd dd | j D  d S )NzParsedComments:
  z
  c                 s  s(    | ]\}}|d d|   V  qdS )r  r   N)r  ).0r  r3  r   r   r   	<genexpr>&  s   & z*ScannedComments.__str__.<locals>.<genexpr>r  r   r"  itemsr0   r   r   r   r  #  s   zScannedComments.__str__rm  c                 C  s,   t | j d \}}|dd|  dS )Nr2   r  r   r  )r   r"  r  r  )r'   r  r3  r   r   r   last*  s   zScannedComments.lastrH   c                 C  s   t | jdkS rP   )r.   r  r0   r   r   r   any_unprocessed.  s   zScannedComments.any_unprocessedFusec                 c  s    t | jdkrPtdkr6dd l}|r| jdn| jd }|| d d }td|| j| j	|j
|j || j| fV  |rG| j|   t | jdksd S d S )Nr   rS   using)r.   r  r   r  rT   r  r  r   r"  r   r  r  r  )r'   r  r  firstr  r   r   r   unprocessed6  s   zScannedComments.unprocessedr1  c                 C     |j j}tdkr"dd l}|| d d }td|| j|j|j	 d}| jrU| jd |k rUd}| j
d}tdkr?td| | j|   || | jrU| jd |k s.|S )Nr   rS   
assign_preFTzassign_pre < )r   r#   r   r  r  r  r   r  r  r  rT   r"  r  add_comment_prer'   r1  
token_liner  r  gobbledr  r   r   r   r  B     

zScannedComments.assign_prer4   c                 C  sp  z| j d }W n
 ty   Y d S w t| j| tsd S d}||  jj|ks0t||  |jrF|d7 }||  jj|ks0t||  |js0tdkrOt	d| t
||krkt||  |jrkt||d   |jrkd S zEt||  |jrt||d   |jrz%| j d}| j|   tdkrt	d||t ||  |t W W d S  ty   tw W n ty   tdkrt	d Y nw z=t||  |jrt||d   |j|jfrz| j d}| j|   ||  |t W W d S  ty   tw W n ty   tdkrt	d Y nw |D ]}t	d| qtdkr-t	dt||   dd l}|d d S )	Nr   rS   idx1z>>>>>aIndexError1IndexError2ztt-znot implemented EOL)r  r   rL   r"  r  r   r#   r   r   r   r.   r  r   rT   r  KEYCMNTadd_comment_eolrY   r   	VALUECMNTtypesysexit)r'   r4   comment_liner  eol_idxrA  r  r   r   r   
assign_eolS  s   


zScannedComments.assign_eolc                 C  r  )Nr   rS   assign_postFTzassign_post < )r   r#   r   r  r  r  r   r  r  r  rT   r"  r  add_comment_postr  r   r   r   r    r  zScannedComments.assign_postc                 C  s   d dd | j D S )Nr  c                 s  s6    | ]\}}|j d krd|dd |  dV  qdS )r   z  r  r  N)r  r  )r  indr3  r   r   r   r    s   4 z2ScannedComments.str_unprocessed.<locals>.<genexpr>r  r0   r   r   r   str_unprocessed  s   zScannedComments.str_unprocessedN)r'   r	   r   r&   )rX   r	   r$   r	   r#   r	   r   r	   )r  r	   r   r	   ru  r  rw  rz  )r  r	   r   r	   )r1  r	   r   r	   )r4   r	   r   r	   )r   r   r   r(   r  r#  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r    s    












<r  c                      sP   e Zd Zd fddZddd	ZdddZdddZdddZdddZ  Z	S )RoundTripScannerSCargr	   r   r   r&   c                   s*   t  j|i | | jd usJ d | _d S r   )r  r(   r)   r"  )r'   r  r   r  r   r   r(     s   
zRoundTripScannerSC.__init__c                 C  s|   |   r|   |   st| jdkr<t| jd tjr&| j| jd  n	| j| jd  |  j	d7  _	| j
dS d S rR   )rJ   rK   r.   r4   rL   r   r"  r  r  r6   rT   r0   r   r   r   rU     s   zRoundTripScannerSC.get_tokenrH   c                 C  s   | j d u rt  | j_| _ | jrdS t| jdkrdS |   |  | j	kr(dS t| jdk r1dS | jd j
j| jd j
jkrAdS 	 tdkr_tdt| j | jD ]}t| qQt| j   | j | jd  | j | j dS )NFr   Tr  r2   z-x--)r"  r  r)   parsed_commentsr3   r.   r4   rV   rW   r6   r   r#   r   r   r  r  r  )r'   rA  r   r   r   rJ     s,   


z#RoundTripScannerSC.need_more_tokensc           	      C  s0  | j j}| j j}| j jdkr| dkr|  | j  }d}|s| dkr,|  | dks$| }|dkr| j  }|}|  |tvrX| }|dkrM|d7 }n||7 }|  |tvsA|jdkrh| j||j|j	 n| j
||j|j	 d}|   | js~d	| _d S t|  r| jsd	| _|   d S d	}|rd S )
Nr   r   Fr   r   r[   r  r  T)rB   ro   r   r!   r   r   r$   r"  r  r#   r   scan_empty_or_full_line_commentsr1   r9   rH   r   r  )	r'   r   r   r   r   r   comment_start_markrX   rP  r   r   r   rm     sV   






5z%RoundTripScannerSC.scan_to_next_tokenc                 C  s  | j  }|jdksJ d}d }d }| j  }	 |dv r`| j ddkr+| j d n| j   |d urE|d7 }| j||j|j d }n|d7 }| j	||j|j d}| j  }| j  }q|d u r{|dv rm||7 }n|d	kry| j  }d	}nd S ||7 }| j   | j  }q)
Nr   r  Tr:  r  rq  r  r   r   )
rB   r   r$   ro   r   r   r"  r  r#   r#  )r'   blmarkblanksrX   r%   r   r   r   r   r  	  s@   








z3RoundTripScannerSC.scan_empty_or_full_line_commentsr   c                 C  s   | j j}| j j}d}d }| dkr|| 7 }|  | dks| dkr@d}| j  }| tvr<|| 7 }|  | tvs/|d7 }| }|tvrTtd|d|| j  |d urb| j||j|j	 | 
  d S )Nr  r   r   r  r7  r  )rB   ro   r   r   r   r   r"  r  r$   r#   r   )r'   r   r   r   r   rX   r%   r   r   r   r   r  ;	  s8   







z1RoundTripScannerSC.scan_block_scalar_ignored_line)r  r	   r   r	   r   r&   ru  rw  rt  ry  )
r   r   r   r(   rU   rJ   rm   r  r  r  r   r   r  r   r    s    



?'r  )r   r	   r   r	   r   r	   )'
__future__r   ruamel.yaml.errorr   ruamel.yaml.tokensyamlr4   ruamel.yaml.docinfor   ruamel.yaml.compatr   r   r   r   typingr	   r
   r   r   r   r   r   __all__r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r   r   r   r   <module>   sN   
             
 u, (