o
    j\                    @  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   T/var/www/html/Deteccion_Ine/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_scannerZ
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_directivesr/   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)Z_scanner_readerAttributeErrorhasattrr)   reader_readerr/   r   r   r   r@      s   

zScanner.readerc                 C  s   t | jdr| jjjS | jjS r<   )r?   r)   resolverZprocessing_versionr/   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-   r3   
isinstancer'   rD   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   )rG   rH   r-   r3   r/   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      )rG   rH   r-   r3   r5   popr/   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)r2   r-   r3   stale_possible_simple_keysnext_possible_simple_keyr5   r/   r   r   r   rG      s   zScanner.need_more_tokenscommentc                 C  s   t r   )NotImplementedError)r'   rU   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_tokenrW   rS   unwind_indentr@   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_tagr0   fetch_literalfetch_foldedfetch_singlefetch_doublecheck_plainfetch_plainr   get_mark)r'   rU   chr   r   r   rH      sh   

	
zScanner.fetch_more_tokensc                 C  s6   d }| j D ]}| j | }|d u s|j|k r|j}q|S r   )r9   r   )r'   Zmin_token_numberlevelkeyr   r   r   rT   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 ':')	listr9   r#   r@   r!   r    r   r%   r   )r'   r   r   r   r   r   rS   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   )r0   r6   r@   r$   r8   remove_possible_simple_keyr5   r-   r3   r   r!   r#   r   r9   )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   )r0   r9   r    r   r%   r@   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   )
rE   r0   r6   r@   r   r7   rQ   r3   appendBlockEndToken)r'   r$   r%   r   r   r   rk     s   


zScanner.unwind_indentc                 C  s&   | j |k r| j| j  || _ dS dS )NTF)r6   r7   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)r@   r   r3   r   ZStreamStartTokenr   r'   r%   r   r   r   r4     s   
 zScanner.fetch_stream_startc                 C  sF   |  d |   d| _i | _| j }| jt|| d| _	d S )Nr1   FT)
rk   r   r8   r9   r@   r   r3   r   ZStreamEndTokenr2   r   r   r   r   rm     s   


zScanner.fetch_stream_endc                 C  s,   |  d |   d| _| j|   d S )Nr1   F)rk   r   r8   r3   r   scan_directiver/   r   r   r   ro     s   
zScanner.fetch_directivec                 C     |  tj d S r   )fetch_document_indicatorr3   ZDocumentStartTokenr/   r   r   r   rq        zScanner.fetch_document_startc                 C  r   r   )r   r3   ZDocumentEndTokenr/   r   r   r   rs     r   zScanner.fetch_document_end
TokenClassc                 C  sN   |  d |   d| _| j }| jd | j }| j||| d S )Nr1   F   )rk   r   r8   r@   r   forwardr3   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_startr3   ZFlowSequenceStartTokenr/   r   r   r   rt        z!Scanner.fetch_flow_sequence_startc                 C  r   )Nr]   r   )r   r3   ZFlowMappingStartTokenr/   r   r   r   ru     r   z Scanner.fetch_flow_mapping_startr   r   c                 C  sN   |    | j| d| _| j }| j  | j }| j||| d S NT)r   r.   r   r8   r@   r   r   r3   )r'   r   r   r   r   r   r   r   r     s   


z#Scanner.fetch_flow_collection_startc                 C  r   r   )fetch_flow_collection_endr3   FlowSequenceEndTokenr/   r   r   r   rv     r   zScanner.fetch_flow_sequence_endc                 C  r   r   )r   r3   FlowMappingEndTokenr/   r   r   r   rw     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.   rQ   
IndexErrorr8   r@   r   r   r3   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   )r8   r   r@   r   r   r3   r   ZFlowEntryToken)r'   r   r   r   r   r   rx     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)r0   r8   r   r@   r   r   r$   r3   r   ZBlockSequenceStartTokenr   r   BlockEntryTokenr'   r%   r   r   r   r   r   rz     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)r0   r8   r   r@   r   r   r$   r3   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)r0   r9   r3   insertr   r5   r   r%   r   r$   r   r8   r   r@   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   r8   r3   r   scan_anchorZ
AliasTokenr/   r   r   r   r        zScanner.fetch_aliasc                 C  r   r   )r   r8   r3   r   r   ZAnchorTokenr/   r   r   r   r     r   zScanner.fetch_anchorc                 C  "   |    d| _| j|   d S r   )r   r8   r3   r   scan_tagr/   r   r   r   r     s   zScanner.fetch_tagc                 C     | j dd d S )Nrf   stylefetch_block_scalarr/   r   r   r   r     r   zScanner.fetch_literalc                 C  r   )Nrg   r   r   r/   r   r   r   r     r   zScanner.fetch_foldedr   c                 C  s$   d| _ |   | j| | d S r   )r8   r   r3   r   scan_block_scalarr'   r   r   r   r   r     s   zScanner.fetch_block_scalarc                 C  r   )Nrh   r   fetch_flow_scalarr/   r   r   r   r     r   zScanner.fetch_singlec                 C  r   )Nri   r   r   r/   r   r   r   r     r   zScanner.fetch_doublec                 C  s$   |    d| _| j| | d S r   )r   r8   r3   r   scan_flow_scalarr   r   r   r   r     s   zScanner.fetch_flow_scalarc                 C  r   r   )r   r8   r3   r   
scan_plainr/   r   r   r   r     s   zScanner.fetch_plainc                 C  s   | j jdkrdS d S )Nr   T)r@   r$   r/   r   r   r   rn     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r@   r$   prefixrl   _THE_END_SPACE_TABr/   r   r   r   rp         zScanner.check_document_startc                 C  r   )Nr   r   ...Tr   r/   r   r   r   rr     r   zScanner.check_document_endc                 C  s   | j dtv S )NrP   )r@   rl   r   r/   r   r   r   ry     s   zScanner.check_block_entryc                 C  s   t | jrdS | jdtv S )NTrP   )rE   r0   r@   rl   r   r/   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rP   rP   Tr1   r\   rP   F)
rC   rE   r0   r.   r@   rl   r   r3   rI   r   r/   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      	
  -?:,[]{}#&*!|>'"%@`rP   rZ   z?:Trb   )r@   rl   rC   r   r0   rE   
_SPACE_TAB)r'   srpr   Z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)r@   rl   r   r!   _THE_ENDr0   scan_line_breakr8   )r'   r   srffoundZ_the_endwhite_spacer   r   r   rj   %  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YAMLZTAG)r@   rl   r   r   scan_directive_namescan_yaml_directive_valuescan_tag_directive_valuer   scan_directive_ignored_liner3   Z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-_:.rP   while scanning a directive4expected alphabetic or numeric character, but found      
  )r@   rl   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   r1   )r@   rl   r   scan_yaml_directive_numberr   r   r:   r   r)   Z	doc_infosZ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   rP   )r@   rl   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   )r@   rl   r   scan_tag_directive_handlescan_tag_directive_prefixr;   r   )r'   r   r   r   handler   Z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_handler@   rl   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_urir@   rl   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 r@   rl   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 )	Nrc   aliasanchorr   rP   while scanning an r   u     	
  ?:,[]{}%@`)r@   rl   r   r   r   r   r   )
r'   r   r   r   Z	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 )NrP   re   z!!<   tagrg   zwhile parsing a tagzexpected '>' but found Fr   Tzwhile scanning a tagr   )
r@   rl   r   r   r   r   r   r   r3   ZTagToken)r'   r   r   r   Zshort_handler   suffixr   Z
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 )Nrg   TFrP   z|>r   Z0top_level_block_style_scalar_no_indent_error_1_1 rX   r   r   
r   r   r   comment_handlingr1   ) r@   rl   r   r   scan_block_scalar_indicatorsscan_block_scalar_ignored_liner6   rC   r+   r)   scan_block_scalar_indentationmaxscan_block_scalar_breaksr$   extendr   r   r   r   rp   rr   r3   ScalarTokenjoinadd_pre_commentsr-   r#   commentsadd_blank_linerj   CommentTokenadd_post_comment)r'   r   r   r   foldedchunksr   chomping	incrementZblock_scalar_commentZ
min_indentbreaks
max_indentr   r6   
line_breakZleading_non_spacer   Ztrailingtokencomment_handlerr#   xrU   Z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 )r@   rl   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   r  r   r   )r'   r   r   r   r   rU   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 )Nr1   r       
  r   z9more indented follow up line than first in a block scalar)r@   rl   r   r   r$   r   r   r   )r'   r   r   r  Zfirst_indentr  r   r   r   r   r   r    s,   






z%Scanner.scan_block_scalar_indentationr6   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   
   
  )r@   rl   r   r   r$   r   r   )r'   r6   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 )Nri   TFr   )
r@   rl   r   r   r  scan_flow_scalar_non_spacesscan_flow_scalar_spacesr3   r  r  )r'   r   doubler   r  r   quoter   r   r   r   r   ;  s    





zScanner.scan_flow_scalarr   rX   r   r   bt	nr   vfrer   ri   /\N   _    Lu    Pu    r         )r  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    
'"\ 	  rP   rh   r   z"\r-  0123456789ABCDEFabcdefz%while scanning a double-quoted scalarzexpected escape sequence of dz hexdecimal numbers, but found    u
   
  zfound unknown escape character )r@   rl   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   rP   rX   while scanning a quoted scalarzfound unexpected end of streamr  r   r   )
r@   rl   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  )	r@   rl   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 )NrP   Tr   r   Frb   r`   ra   r   z,:?[]{}u     	
  ,[]{}zwhile scanning a plain scalarzfound unexpected ':'zGPlease check http://pyyaml.org/wiki/YAMLColonInFlowContext for details.r   r   r   )r@   rl   r   r   r6   r   rC   r0   r   r8   r  r   r   scan_plain_spacesr$   r3   r  r  r)   r+   r
  r  r#   r  r	  )r'   r   r   r  r   r   r6   spacesr   r   r  r  rU   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   rP   r  Tr   r   r   r  r   )	r@   rl   r   r   r   r8   r   r   r  )r'   r6   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 )Nre   r   zexpected '!', but found rP   r   r   r   r   r   r   r   z-_zexpected '!' but found )r@   rl   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   rY   rP   zwhile parsing an zexpected URI, but found r   )
r@   rl   rC   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 )NrY   r   r8  r   @expected URI escape sequence of 2 hexdecimal numbers, but found r:  utf-8r@   rl   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   r@   rl   r   r   )r'   r   r   r   r   r     s   
	

zScanner.scan_line_breakr   )r)   r	   r   r&   )r   r"   r   r&   r   r	   rD   r	   r   rE   r   rE   rU   r	   r   r&   )r$   r	   r   r&   )r$   r"   r   rE   )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	   )r6   r"   r   r	   )r   r	   r   r	   )r  r	   r   r	   r   r	   )r6   r	   r   r	   r   r	   r   r	   r   r	   r   r	   )Rr   r   r   r(   propertyr0   r,   r@   rC   rL   rN   rR   rG   rW   rH   rT   rS   r   r   rk   r   r4   rm   ro   rq   rs   r   rt   ru   r   rv   rw   r   rx   rz   r|   r~   r   r   r   r   r   r   r   r   r   r   rn   rp   rr   ry   r{   r}   r   rj   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   rD   r	   r   rE   c                 G  sZ   |   r|   |   s|   t| jdkr+|sdS |D ]}t| jd |r* dS qdS rF   )rG   rH   _gather_commentsr-   r3   rI   rJ   r   r   r   rL     s   zRoundTripScanner.check_tokenc                 C  s<   |   r|   |   s|   t| jdkr| jd S d S rM   )rG   rH   r^  r-   r3   r/   r   r   r   rN     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   rP   r   N)r3   rI   r
  rQ   r5   r   rG   rH   r-   r  r2   )r'   r  rU   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   rP   r   r   )rG   rH   r^  r-   r3   rI   r  r   r   r   r
  r   r#   r   r5   rQ   r   r$   r  )r'   cc1r   r   r   rR     sf     
$$zRoundTripScanner.get_tokenrU   r&   c                 C  sP   |\}}}|r|d dkr|d d }|r|d dks| j t ||| d S )Nr1   r   )r3   r   r
  )r'   rU   r   r   r   r   r   r   rW   )  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   rX   r   Tr   )
empty_linerP   )r@   rl   r   r!   r0   r   r   r   r-   r8   rsplit)	r'   r   r   r   r   r   r   rU   r   r   r   r   rj   3  sh   









-z#RoundTripScanner.scan_to_next_tokenFra  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'   ra  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   rY   r   r8  r   rG  r:  rH  NrI  )r'   r   r   r   r   rN  chunkr%   r@  r0  rO  r   r   r   rF    s<   


z!RoundTripScanner.scan_uri_escapesNrV  rU  rX  rZ  )ra  rE   r   r   )Tr[  r\  )r   r   r   rL   rN   r^  rR   rW   rj   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$   re  r   inspectgetframeinfostackrf  linenorg  rh  ri  )r'   r   r#   r$   rj  infor   r   r   r(     s   
zCommentBase.__init__r  r$  c                 C  sD   || _ tdkr dd l}|| d d }|j| _|j| _d S d S rO   )	re  r   rj  rk  rl  rf  rh  rm  ri  )r'   r$  rj  rn  r   r   r   set_used  s   zCommentBase.set_usedc                 C  s
   d| _ d S )Nrf   )re  r/   r   r   r   set_assigned     
zCommentBase.set_assignedrM  c                 C  s   | j  S r   r   r/   r   r   r   __str__     zCommentBase.__str__c                 C  s   | j S r   rr  r/   r   r   r   __repr__  rt  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 )Nri   r   2rb   z<2z "Z40s)	r   r   re  r#   r$   rf  rg  rh  ri  )r'   Zxvr   r   r   r   rn    s   
(zCommentBase.infoNr   r	   r#   r	   r$   r	   r   r&   )r  )r$  r	   r   r&   rT  r   rM  )
r   r   r   	__slots__r(   ro  rp  rs  ru  rn  r   r   r   r   rd    s    

	

rd  c                      "   e Zd ZdZd
 fdd	Z  ZS )
EOLCommentZEOLCr   r	   r#   r$   r   r&   c                      t  ||| d S r   superr(   r'   r   r#   r$   	__class__r   r   r(     r   zEOLComment.__init__rw  r   r   r   r   r(   __classcell__r   r   r  r   r{        r{  c                      rz  )FullLineCommentZFULLr   r	   r#   r$   r   r&   c                   r|  r   r}  r  r  r   r   r(     r   zFullLineComment.__init__rw  r  r   r   r  r   r    r  r  c                      rz  )BlankLineCommentZBLNKr   r	   r#   r$   r   r&   c                   r|  r   r}  r  r  r   r   r(     r   zBlankLineComment.__init__rw  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  unusedr/   r   r   r   r(      s   
zScannedComments.__init__rU   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   rP   r1   )countr{  r  r  r   r'   rU   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__   rq  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 )rv  r   N)rn  ).0rm  r  r   r   r   	<genexpr>&  s   & z*ScannedComments.__str__.<locals>.<genexpr>r   r  r  itemsr/   r   r   r   rs  #  s   zScannedComments.__str__rM  c                 C  s,   t | j d \}}|dd|  dS )Nr1   rv  r   r   )r   r  r  rn  )r'   rm  r  r   r   r   last*  s   zScannedComments.lastrE   c                 C  s   t | jdkS rM   )r-   r  r/   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   rP   using)r-   r  r   rj  rQ   rk  rl  r   r  r   rf  rm  ro  )r'   r  rj  firstrn  r   r   r   unprocessed6  s   zScannedComments.unprocessedr  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   rP   
assign_preFTzassign_pre < )r   r#   r   rj  rk  rl  r   r  rf  rm  rQ   r  ro  Zadd_comment_prer'   r  Z
token_linerj  rn  Zgobbledr  r   r   r   r  B     

zScannedComments.assign_prer3   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   rP   Zidx1z>>>>>aZIndexError1ZIndexError2ztt-znot implemented EOL)r  r   rI   r  r{  r   r#   r   r   r   r-   r  r   rQ   ro  KEYCMNTZadd_comment_eolrV   r   	VALUECMNTtypesysexit)r'   r3   Zcomment_liner  Zeol_idxr!  r  r   r   r   
assign_eolS  s   


zScannedComments.assign_eolc                 C  r  )Nr   rP   assign_postFTzassign_post < )r   r#   r   rj  rk  rl  r   r  rf  rm  rQ   r  ro  Z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  rv  r   N)re  rn  )r  indr  r   r   r   r    s   4 z2ScannedComments.str_unprocessed.<locals>.<genexpr>r  r/   r   r   r   str_unprocessed  s   zScannedComments.str_unprocessedN)r'   r	   r   r&   )rU   r	   r$   r	   r#   r	   r   r	   )r  r	   r   r	   rU  rx  rW  rZ  )r  r	   r   r	   )r  r	   r   r	   )r3   r	   r   r	   )r   r   r   r(   r  r	  r  r  rs  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 rO   )rG   rH   r-   r3   rI   r   r  r  r  r5   rQ   r/   r   r   r   rR     s   zRoundTripScannerSC.get_tokenrE   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   r1   z-x--)r  r  r)   Zparsed_commentsr2   r-   r3   rS   rT   r5   r   r#   r   r   r  r  r  )r'   r!  r   r   r   rG     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   rX   r   r   T)r@   rl   r   r!   r   r   r$   r  r  r#   r   scan_empty_or_full_line_commentsr0   r8   rE   r   rb  )	r'   r   r   r   r   r   Zcomment_start_markrU   r0  r   r   r   rj     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   )
r@   r   r$   rl   r   r   r  r  r#   r	  )r'   ZblmarkZblanksrU   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   r  r   )r@   rl   r   r   r   r   r  r  r$   r#   r   )r'   r   r   r   r   rU   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(   rR   rG   rj   r  r   r  r   r   r  r   r    s    



?'r  )r   r	   r   r	   r   r	   )'
__future__r   Zruamel.yaml.errorr   Zruamel.yaml.tokensyamlr3   Zruamel.yaml.docinfor   Zruamel.yaml.compatr   r   r   r   typingr	   r
   r   r   r   r   r   __all__r   r   r   r   r   r   r   r   r  r  rd  r{  r  r  r  r  r   r   r   r   <module>   sN   
             
 u, (