3
QfX                 @   sL   d dgZ ddlmZmZ ddlZddlZG dd deZG dd  d eZdS )ReaderReaderError   )	YAMLErrorMark    Nc               @   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   T/home/psgendb/BIRCHDEV/pkg/SPAdes-3.15.4/linux-x86_64/share/spades/pyyaml3/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   bytesr
   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               @   sf   e Zd Zdd ZdddZdddZdd	d
Zdd Zdd Ze	j
dZdd Zdd ZdddZdS )r   c             C   s   d | _ d | _d| _d| _d| _d| _d | _d | _d | _d| _	d| _
d| _t|trnd| _ | j| |d | _nHt|trd| _ || _| j  n(|| _t|dd| _ d	| _d | _| j  d S )
Nr   T z<unicode string> z<byte string>r   z<file>F)r   streamstream_pointereofbufferpointer
raw_buffer
raw_decoder
   indexlinecolumnr   strcheck_printabler   determine_encodinggetattr)r   r   r   r   r   r   ;   s2    



zReader.__init__r   c             C   sD   y| j | j|  S  tk
r>   | j|d  | j | j|  S X d S )Nr   )r   r   
IndexErrorupdate)r   r    r   r   r   peekW   s
    zReader.peekr   c             C   s4   | j | t| jkr| j| | j| j | j |  S )N)r   lenr   r(   )r   lengthr   r   r   prefix^   s    
zReader.prefixc             C   s   | j | d t| jkr&| j|d  x|r| j| j  }|  j d7  _ |  jd7  _|dkst|dkr| j| j  dkr|  jd7  _d| _n|dkr|  jd7  _|d8 }q(W d S )Nr   u	   
  
r   u   ﻿)r   r*   r   r(   r    r!   r"   )r   r+   Zchr   r   r   forwardc   s    zReader.forwardc             C   sF   | j d kr(t| j| j| j| j| j| jS t| j| j| j| jd d S d S )N)r   r   r   r    r!   r"   r   r   )r   r   r   r   get_markr   s
    
zReader.get_markc             C   s   x,| j  r,| jd ks"t| jdk r,| j  qW t| jtr| jjtjrXtj	| _
d| _n,| jjtjrvtj| _
d| _ntj| _
d| _| jd d S )N   z	utf-16-lez	utf-16-bezutf-8r   )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_decoder(   )r   r   r   r   r%   z   s    "zReader.determine_encodingu   [^	
 -~ -퟿-�]c             C   sP   | j j|}|rL|j }| jt| j| j  |j  }t| j	|t
|ddd S )NZunicodez"special characters are not allowed)NON_PRINTABLEsearchgroupr    r*   r   r   startr   r   r   )r   datamatchr   r	   r   r   r   r$      s    zReader.check_printablec             C   s6  | j d krd S | j| jd  | _d| _xt| j|k r0| jsH| j  | jd k	ry| j| j d| j\}}W q tk
r } zP| j |j }| j	d k	r| j
t| j  |j }n|j}t| j|||j|jW Y d d }~X qX n| j }t|}| j| |  j|7  _| j |d  | _ | jr*|  jd7  _d | _ P q*W d S )Nr   strictr   )r   r   r   r*   r   r2   r   UnicodeDecodeErrorr=   r   r   r   r   r
   r   r$   )r   r+   r>   Z	convertedexcr   r	   r   r   r   r(      s6    



 
zReader.update   c             C   sL   | j j|}| jd kr|| _n|  j|7  _|  jt|7  _|sHd| _d S )NT)r   readr   r   r*   r   )r   sizer>   r   r   r   r2      s    
zReader.update_rawN)r   )r   )r   )rC   )r   r   r   r   r)   r,   r/   r0   r%   recompiler:   r$   r(   r2   r   r   r   r   r   -   s   



)	__all__errorr   r   r4   rF   r   objectr   r   r   r   r   <module>   s   