
    |*                         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e      Z G d	 de      Zy)
    )absolute_importN)	YAMLErrorFileMark
StringMarkYAMLStreamError)	text_typebinary_typePY3UNICODE_SIZE)RegExpReaderReaderErrorc                       e Zd Zd Zd Zy)r   c                 J    || _         || _        || _        || _        || _        y N)name	characterpositionencodingreason)selfr   r   r   r   r   s         %lib/third_party/ruamel/yaml/reader.py__init__zReaderError.__init__&   s%    	"      c                 "   t        | j                  t              rEd| j                  t	        | j                        | j
                  | j                  | j                  fz  S d| j                  | j
                  | j                  | j                  fz  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   s    r   __str__zReaderError.__str__.   s}    dnnk2WDNN#		[   R			U  r   N)__name__
__module____qualname__r   r    r   r   r   r   %   s    r   c            
       L   e Zd ZddZd Zed        Zej                  d        ZddZddZ	ddZ
dd	Zd
 Zd Zedk(  r	 ed      Zn ed      Zddj#                   ee edd                  z   j+                  d      Zed        Zed        Zed        Zd Zd ZddZy)r   Nc                     || _         | j                   (t        | j                   dd       | | j                   _        | j                          || _        y )N_reader)loadergetattrr&   reset_readerstream)r   r*   r'   s      r   r   zReader.__init__O   sD    ;;"wt{{It'L'T"&DKKr   c                     d | _         d| _        d| _        d| _        d| _        d | _        d | _        d | _        d| _        d| _	        d| _
        y )Nr   T )r   stream_pointereofbufferpointer
raw_buffer
raw_decoder   indexlinecolumnr   s    r   r)   zReader.reset_readerW   sP    	
	r   c                 L    	 | j                   S # t        $ r t        d      w xY w)Nzinput stream needs to specified)_streamAttributeErrorr   r   s    r   r*   zReader.streame   s/    	E<< 	E!"CDD	Es    #c                    |y d | _         t        |t              r#d| _        | j	                  |       |dz   | _        y t        |t              rd| _        || _        | j                          y t        |d      st        d      || _         t        | j                  dd      | _        d| _        d | _        | j                          y )	Nz<unicode string> z<byte string>readz-stream argument needs to have a read() methodr   z<file>F)r7   r   r   r   check_printabler/   r	   r1   determine_encodinghasattrr   r(   r*   r.   )r   vals     r   r*   zReader.streamm   s     ;c9%*DI  %+DK[)'DI!DO##%3'%&UVVDLVX>DIDH"DO##%r   c                     	 | j                   | j                  |z      S # t        $ r3 | j                  |dz          | j                   | j                  |z      cY S w xY w)N   )r/   r0   
IndexErrorupdate)r   r3   s     r   peekzReader.peek   sV    	5;;t||e344 	5KK	";;t||e344	5s    9AAc                     | j                   |z   t        | j                        k\  r| j                  |       | j                  | j                   | j                   |z    S r   )r0   lenr/   rC   )r   lengths     r   prefixzReader.prefix   sF    <<& C$44KK{{4<<$,,*?@@r   c                    | j                   |z   dz   t        | j                        k\  r| j                  |dz          |dk7  r| j                  | j                      }| xj                   dz  c_         | xj                  dz  c_        |dv s!|dk(  r9| j                  | j                      dk7  r| xj
                  dz  c_        d| _        n|dk7  r| xj                  dz  c_        |dz  }|dk7  ry y )NrA   r   u	   
  
   ﻿r0   rF   r/   rC   r3   r4   r5   r   rG   chs      r   forward_1_1zReader.forward_1_1   s    <<& 1$DKK(88KK
#kT\\*BLLALJJ!OJ**eDLL 9U B		Q	yq aKF kr   c                    | j                   |z   dz   t        | j                        k\  r| j                  |dz          |dk7  r| j                  | j                      }| xj                   dz  c_         | xj                  dz  c_        |dk(  s!|dk(  r9| j                  | j                      dk7  r| xj
                  dz  c_        d| _        n|dk7  r| xj                  dz  c_        |dz  }|dk7  ry y )NrA   r   rK   rJ   rL   rM   rN   s      r   forwardzReader.forward   s    <<& 1$DKK(88KK
#kT\\*BLLALJJ!OJU{rU{t{{4<</HE/Q		Q	yq aKF kr   c                    | j                   Lt        | j                  | j                  | j                  | j
                  | j                  | j                        S t        | j                  | j                  | j                  | j
                        S r   )	r*   r   r   r3   r4   r5   r/   r0   r   r   s    r   get_markzReader.get_mark   sa    ;;		4::tyy$++t{{DLL  DIItzz499dkkJJr   c                    | j                   sf| j                  t        | j                        dk  rB| j                          | j                   s&| j                  )t        | j                        dk  rBt	        | j                  t
              r| j                  j                  t        j                        rt        j                  | _
        d| _        nb| j                  j                  t        j                        rt        j                  | _
        d| _        nt        j                  | _
        d| _        | j                  d       y )N   z	utf-16-lez	utf-16-bezutf-8rA   )r.   r1   rF   
update_rawr   r	   
startswithcodecsBOM_UTF16_LEutf_16_le_decoder2   r   BOM_UTF16_BEutf_16_be_decodeutf_8_decoderC   r   s    r   r=   zReader.determine_encoding   s    (( 73t;ORS;SOO (( 73t;ORS;Sdoo{3))&*=*=>"("9"9 +++F,?,?@"("9"9 +"("5"5 'Ar   rV   u   [^	
 -~ -퟿-�]u!   [^	
 -~ -퟿-�𐀀-􏿿]z	
r,          asciic                     |j                  d      }|j                  d | j                        }|sy |d d }|j                  |      |j	                  d      fS )Nra   rA   )encode	translate_printable_asciir3   decode)clsdataascii_bytesnon_printablesnon_printables        r   _get_non_printable_asciizReader._get_non_printable_ascii   s]     kk'*$..tS5I5IJ&r*  /1E1Eg1NNNr   c                     | j                   j                  |      }t        |      sy |j                         |j	                         fS r   )NON_PRINTABLEsearchboolstartgroup)rg   rh   matchs      r   _get_non_printable_regexzReader._get_non_printable_regex   s;     !!((.E{{{}ekkm++r   c                 f    	 | j                  |      S # t        $ r | j                  |      cY S w xY wr   )rl   UnicodeEncodeErrorrt   )rg   rh   s     r   _get_non_printablezReader._get_non_printable   s8    	6//55! 	6//55	6s    00c                     | j                  |      }|Y|\  }}| j                  t        | j                        | j                  z
  z   |z   }t        | j                  |t        |      dd      y )Nunicodez"special characters are not allowed)rw   r3   rF   r/   r0   r   r   r   )r   rh   non_printable_matchrq   r   r   s         r   r<   zReader.check_printable   sq    "55d;*2E9zzS%5%DEMH		I4  +r   c                 ^   | j                   y | j                  | j                  d  | _        d| _        t        | j                        |k  r| j                  s| j                          | j                  ,	 | j                  | j                   d| j                        \  }}n| j                   }t        |      }| j#                  |       | xj                  |z  c_        | j                   |d  | _         | j                  r| xj                  dz  c_        d | _         y t        | j                        |k  ry y # t        $ r}t        r| j                   |j                     }n|j                  |j                     }| j                  0| j                  t        | j                         z
  |j                  z   }nH| j                  0| j                  t        | j                         z
  |j                  z   }n|j                  }t        | j                  |||j                  |j                         d }~ww xY w)Nr   strictr:   )r1   r/   r0   rF   r.   rW   r2   UnicodeDecodeErrorr
   rq   objectr*   r-   r   r   r   r   r<   )r   rG   rh   	convertedexcr   r   s          r   rC   zReader.update  s   ??"kk$,,.1$++'88!*`&*oodooxQUQYQY&ZOD) I	  &KK4K"ooij9DOxxt#"&7 $++' * `$(OOCII$>	$'JJsyy$9	{{.#'#6#6T__9M#MPSPYPY#Y0#'#6#6T__9M#MPSPYPY#Y#&99%dii9cllTWT^T^__`s   4*D4 4	H,=C*H''H,c                     |
t         rdnd}| j                  j                  |      }| j                  || _        n| xj                  |z  c_        | xj                  t        |      z  c_        |sd| _        y y )Ni   i   T)r
   r*   r;   r1   r-   rF   r.   )r   sizerh   s      r   rW   zReader.update_raw%  sg    <4DD{{%??""DOOOt#Os4y(DH r   r   )r   )rA   )r    r!   r"   r   r)   propertyr*   setterrD   rH   rP   rR   rT   r=   r   r   rn   joinmapchrrangerc   re   classmethodrl   rt   rw   r<   rC   rW   r#   r   r   r   r   A   s     E E ]]& &,5A"K  qO
 
 'S%d:K1L)MMUUV]^O O , , 6 6!Fr   )
__future__r   rY   ruamel.yaml.errorr   r   r   r   ruamel.yaml.compatr   r	   r
   r   ruamel.yaml.utilr   typingAnyDictOptionalListUnionTextTuple__all__r   r~   r   r#   r   r   <module>r      sG    '*  N N H H # ]
#) 8oV or   