U
    å“r^Š  ã                   @   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   ú-/usr/lib/python3/dist-packages/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	   Ú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	 
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| _ |  |¡ |d | _nHt|tƒrŽd| _ || _|  ¡  n(|| _t|ddƒ| _ d	| _d | _|  ¡  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   sJ   z| j | j|  W S  tk
rD   |  |d ¡ | j | j|   Y 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 | … S r   )r   Úlenr   r*   )r   Úlengthr   r   r   Úprefix^   s    
zReader.prefixc                 C   s¬   | j | d t| jƒkr&|  |d ¡ |r¨| j| j  }|  j d7  _ |  jd7  _|dksr|dkrˆ| j| j  dkrˆ|  jd7  _d| _n|dkrž|  jd7  _|d8 }q&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 r   )r   r   r   r"   r#   r$   r   r   r   r   r   r   Úget_markr   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-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  |¡}|rL| ¡ }| jt| 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   s2  | j d krd S | j| jd … | _d| _t| jƒ|k �r.| jsD|  ¡  | jd k	rØz|  | j d| j¡\}}W qæ tk
rÔ } zN| j |j }| j	d k	r¨| j
t| j ƒ |j }n|j}t| j|||j|jƒ‚W 5 d }~X Y qæX n| j }t|ƒ}|  |¡ |  j|7  _| j |d … | _ | jr&|  jd7  _d | _ �q.q&d S )Nr   Ústrictr   )r    r   r   r,   r   r4   r!   ÚUnicodeDecodeErrorr?   r   r   r   r   r   r   r&   )r   r-   r@   Z	convertedÚexcr	   r
   r   r   r   r*   ’   s>    

 ÿ

 ÿ
zReader.updateé   c                 C   sL   | 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   r4   ±   s    
zReader.update_rawN)r   )r   )r   )rE   )r   r   r   r   r+   r.   r1   r2   r'   ÚreÚcompiler<   r&   r*   r4   r   r   r   r   r   -   s   



)	Ú__all__Úerrorr   r   r6   rH   r   Úobjectr   r   r   r   r   Ú<module>   s   