U
    e*                     @   s|   d dl mZ d dlZd dlmZmZmZmZ d dlm	Z	m
Z
mZmZ d dlmZ ddgZG dd deZG d	d deZdS )
    )absolute_importN)	YAMLErrorFileMark
StringMarkYAMLStreamError)	text_typebinary_typePY3UNICODE_SIZE)RegExpReaderReaderErrorc                   @   s   e Zd Zdd Zdd ZdS )r   c                 C   s"   || _ || _|| _|| _|| _d S N)name	characterpositionencodingreason)selfr   r   r   r   r    r   1lib/python3.8/site-packages/ruamel_yaml/reader.py__init__&   s
    zReaderError.__init__c                 C   sH   t | jtr,d| jt| j| j| j| jf S d| j| j| j| jf S d S )Nz>'%s' codec can't decode byte #x%02x: %s
  in "%s", position %dz8unacceptable character #x%04x: %s
  in "%s", position %d)
isinstancer   r   r   ordr   r   r   r   r   r   r   __str__.   s    zReaderError.__str__N)__name__
__module____qualname__r   r   r   r   r   r   r   %   s   c                   @   s   e Zd Zd+ddZdd Zedd Zejdd Zd,d
dZd-ddZ	d.ddZ
d/ddZdd Zdd Zedkr~edZnedZddeeedd dZedd  Zed!d" Zed#d$ Zd%d& Zd'd( Zd0d)d*ZdS )1r   Nc                 C   s<   || _ | j d k	r*t| j dd d kr*| | j _|   || _d S )N_reader)loadergetattrr   reset_readerstream)r   r#   r    r   r   r   r   O   s
    zReader.__init__c                 C   sF   d | _ d| _d| _d| _d| _d | _d | _d | _d| _d| _	d| _
d S )Nr   T )r   stream_pointereofbufferpointer
raw_buffer
raw_decoder   indexlinecolumnr   r   r   r   r"   W   s    zReader.reset_readerc                 C   s*   z| j W S  tk
r$   tdY nX d S )Nzinput stream needs to specified)_streamAttributeErrorr   r   r   r   r   r#   e   s    zReader.streamc                 C   s   |d krd S d | _ t|tr8d| _| | |d | _n\t|trXd| _|| _|   n<t	|dsjt
d|| _ t| jdd| _d| _d | _|   d S )	Nz<unicode string> z<byte string>readz-stream argument needs to have a read() methodr   z<file>F)r.   r   r   r   check_printabler'   r   r)   determine_encodinghasattrr   r!   r#   r&   )r   valr   r   r   r#   m   s$    




r   c                 C   sJ   z| j | j|  W S  tk
rD   | |d  | j | j|   Y S X d S )N   )r'   r(   
IndexErrorupdate)r   r+   r   r   r   peek   s
    zReader.peekr6   c                 C   s4   | j | t| jkr| | | j| j | j |  S r   )r(   lenr'   r8   )r   lengthr   r   r   prefix   s    
zReader.prefixc                 C   s   | j | d t| jkr&| |d  |dkr| j| j  }|  j d7  _ |  jd7  _|dksv|dkr| j| j  dkr|  jd7  _d| _n|dkr|  jd7  _|d8 }q&d S )Nr6   r   u	   
  
   ﻿r(   r:   r'   r8   r+   r,   r-   r   r;   Zchr   r   r   forward_1_1   s     zReader.forward_1_1c                 C   s   | j | d t| jkr&| |d  |dkr| j| j  }|  j d7  _ |  jd7  _|dksv|dkr| j| j  dkr|  jd7  _d| _n|dkr|  jd7  _|d8 }q&d S )Nr6   r   r>   r=   r?   r@   rA   r   r   r   forward   s     zReader.forwardc                 C   sB   | j d kr(t| j| j| j| j| j| jS t| j| j| j| jS d S r   )	r#   r   r   r+   r,   r-   r'   r(   r   r   r   r   r   get_mark   s    
     zReader.get_markc                 C   s   | j s(| jd kst| jdk r(|   q t| jtr~| jtjrRtj	| _
d| _n,| jtjrptj| _
d| _ntj| _
d| _| d d S )N   z	utf-16-lez	utf-16-bezutf-8r6   )r&   r)   r:   
update_rawr   r   
startswithcodecsBOM_UTF16_LEutf_16_le_decoder*   r   BOM_UTF16_BEutf_16_be_decodeutf_8_decoder8   r   r   r   r   r3      s    
zReader.determine_encodingrE   u   [^	
 -~ -퟿-�]u!   [^	
 -~ -퟿-�𐀀-􏿿]z	
r$          asciic                 C   s@   | d}|d | j}|s d S |d d }|||dfS )NrP   r6   )encode	translate_printable_asciir+   decode)clsdataZascii_bytesZnon_printablesZnon_printabler   r   r   _get_non_printable_ascii   s    
zReader._get_non_printable_asciic                 C   s(   | j |}t|sd S | | fS r   )NON_PRINTABLEsearchboolstartgroup)rU   rV   matchr   r   r   _get_non_printable_regex   s    zReader._get_non_printable_regexc                 C   s0   z|  |W S  tk
r*   | | Y S X d S r   )rW   UnicodeEncodeErrorr^   )rU   rV   r   r   r   _get_non_printable   s    zReader._get_non_printablec                 C   sN   |  |}|d k	rJ|\}}| jt| j| j  | }t| j|t|ddd S )NZunicodez"special characters are not allowed)r`   r+   r:   r'   r(   r   r   r   )r   rV   Znon_printable_matchr[   r   r   r   r   r   r2      s    
zReader.check_printablec              
   C   sj  | j d krd S | j| jd  | _d| _t| j|k rf| jsD|   | jd k	rz| | j d| j\}}W n tk
r } ztr| j |j	 }n|j
|j	 }| jd k	r| jt| j  |j	 }n(| jd k	r| jt| j  |j	 }n|j	}t| j|||j|jW 5 d }~X Y nX n| j }t|}| | |  j|7  _| j |d  | _ | jr&|  jd7  _d | _ qfq&d S )Nr   strictr0   )r)   r'   r(   r:   r&   rF   r*   UnicodeDecodeErrorr	   r[   objectr#   r%   r   r   r   r   r2   )r   r;   rV   Z	convertedexcr   r   r   r   r   r8     s:    


*
zReader.updatec                 C   s`   |d krt rdnd}| j|}| jd kr2|| _n|  j|7  _|  jt|7  _|s\d| _d S )Ni   i   T)r	   r#   r1   r)   r%   r:   r&   )r   sizerV   r   r   r   rF   %  s    
zReader.update_raw)N)r   )r6   )r6   )r6   )N)r   r   r   r   r"   propertyr#   setterr9   r<   rB   rC   rD   r3   r
   r   rX   joinmapchrrangerQ   rS   classmethodrW   r^   r`   r2   r8   rF   r   r   r   r   r   A   s:   






	 
	

#)Z
__future__r   rH   Zruamel_yaml.errorr   r   r   r   Zruamel_yaml.compatr   r   r	   r
   Zruamel_yaml.utilr   ZAnyZDictZOptionalZListZUnionZTextZTupleZStreamTextType__all__r   rc   r   r   r   r   r   <module>   s   