
                         n   d dl Z d dlZd dlmZmZmZmZmZmZm	Z	m
Z
 d-dededee   fdZ ed      Z edej                  	      Z ed
      Z ed      Z ed      Z ed      Z ed      Z ed      Z ed      Z ed      Z ed      Z ed      Z ed      Z ed      Z ed      Z eddefdefg      Z eddee   fdee   fdefdefg      Z  G d d      Z! G d  d!e"      Z# G d" d#      Z$d$ee   dedefd%Z%d&e$dee   fd'Z&d&e$defd(Z'd&e$defd)Z(d&e$de fd*Z)d+ee   dee    fd,Z*y).    N)IOIteratorMatch
NamedTupleOptionalPatternSequenceTuplestringextra_flagsreturnc                 P    t        j                  | t         j                  |z        S N)recompileUNICODE)r   r   s      lib/third_party/dotenv/parser.py
make_regexr      s    ::fbjj;677    z(\r\n|\n|\r)z\s*)r   z
[^\S\r\n]*z(?:export[^\S\r\n]+)?z	'([^']+)'z([^=\#\s]+)z(=[^\S\r\n]*)z'((?:\\'|[^'])*)'z"((?:\\"|[^"])*)"z
([^\r\n]*)z(?:[^\S\r\n]*#[^\r\n]*)?z[^\S\r\n]*(?:\r\n|\n|\r|$)z[^\r\n]*(?:\r|\n|\r\n)?z\\[\\'\"abfnrtv]z\\[\\']OriginallineBindingkeyvalueoriginalerrorc                   J    e Zd ZdededdfdZed
d       ZddZdeddfd	Z	y)Positioncharsr   r   Nc                      || _         || _        y r   r   r   )selfr   r   s      r   __init__zPosition.__init__0   s    
	r   c                      | dd      S )Nr      r!    )clss    r   startzPosition.start4   s    ##r   c                 H    |j                   | _         |j                  | _        y r   r!   )r"   others     r   setzPosition.set8   s    [[
JJ	r   r   c                     | xj                   t        |      z  c_         | xj                  t        t        j                  t
        |            z  c_        y r   )r   lenr   r   findall_newline)r"   r   s     r   advancezPosition.advance<   s2    

c&k!
		SHf566	r   )r   r   )r*   r   r   N)
__name__
__module____qualname__intr#   classmethodr(   r+   strr0   r&   r   r   r   r   /   sH    c    $ $7c 7d 7r   r   c                       e Zd Zy)ErrorN)r1   r2   r3   r&   r   r   r8   r8   A   s    r   r8   c                   ~    e Zd Zdee   ddfdZdefdZddZde	fdZ
dedefd	Zdedefd
Zdee   dee   fdZy)Readerstreamr   Nc                     |j                         | _        t        j                         | _        t        j                         | _        y r   )readr   r   r(   positionmark)r"   r;   s     r   r#   zReader.__init__F   s+    kkm (NN$	r   c                 Z    | j                   j                  t        | j                        k  S r   )r>   r   r-   r   r"   s    r   has_nextzReader.has_nextK   s     }}""S%555r   c                 N    | j                   j                  | j                         y r   )r?   r+   r>   rA   s    r   set_markzReader.set_markN   s    		dmm$r   c                     t        | j                  | j                  j                  | j                  j                   | j                  j
                        S )N)r   r   )r   r   r?   r   r>   r   rA   s    r   
get_markedzReader.get_markedQ   s:    ;;tyyt}}/B/BC
 	
r   countc                 v    | j                   | j                  j                  | j                  j                  |z    S r   )r   r>   r   )r"   rG   s     r   peekzReader.peekW   s,    {{4==..t}}/B/BU/JKKr   c                     | j                   | j                  j                  | j                  j                  |z    }t        |      |k  rt	        d      | j                  j                  |       |S )Nzread: End of string)r   r>   r   r-   r8   r0   )r"   rG   results      r   r=   zReader.readZ   sZ    T]]001D1Du1LMv;-..f%r   regexc                 $   |j                  | j                  | j                  j                        }|t	        d      | j                  j                  | j                  |j                         |j                                 |j                         S )Nzread_regex: Pattern not found)	matchr   r>   r   r8   r0   r(   endgroups)r"   rL   rN   s      r   
read_regexzReader.read_regexa   sf    DKK)<)<==788dkk%++-		DE||~r   )r   N)r1   r2   r3   r   r6   r#   boolrB   rD   r   rF   r4   rI   r=   r   r	   rQ   r&   r   r   r:   r:   E   sz    %r#w %4 %
6$ 6%
H 
L# L# L# #  # r   r:   rL   c                 T    dt         t           dt        fd}| j                  ||      S )NrN   r   c                 L    t        j                  | j                  d      d      S )Nr   zunicode-escape)codecsdecodegroup)rN   s    r   decode_matchz$decode_escapes.<locals>.decode_matchj   s    }}U[[^-=>>r   )r   r6   sub)rL   r   rX   s      r   decode_escapesrZ   i   s,    ?E#J ?3 ? 99\6**r   readerc                     | j                  d      }|dk(  ry |dk(  r| j                  t              \  }|S | j                  t              \  }|S )Nr%   #')rI   rQ   _single_quoted_key_unquoted_key)r[   charr   s      r   	parse_keyrb   p   sS    ;;q>Ds{	""#56 J ""=1Jr   c                 z    | j                  t              \  }t        j                  dd|      j	                         S )Nz\s+#.* )rQ   _unquoted_valuer   rY   rstrip)r[   parts     r   parse_unquoted_valuerh   {   s0    0GT66)R&--//r   c                     | j                  d      }|dk(  r'| j                  t              \  }t        t        |      S |dk(  r'| j                  t
              \  }t        t        |      S |dv ryt        |       S )Nr%   r^   ")rd   
rd   )rI   rQ   _single_quoted_valuerZ   _single_quote_escapes_double_quoted_value_double_quote_escapesrh   )r[   ra   r   s      r   parse_valuerq      sv    ;;q>Dt|$$%9:3U;;	$$%9:3U;;	$	$#F++r   c                    | j                          	 | j                  t               | j                         st	        d d | j                         d      S | j                  t               t        |       }| j                  t               | j                  d      dk(  r!| j                  t               t        |       }nd }| j                  t               | j                  t               t	        ||| j                         d      S # t        $ r5 | j                  t               t	        d d | j                         d      cY S w xY w)NF)r   r   r   r   r%   =T)rD   rQ   _multiline_whitespacerB   r   rF   _exportrb   _whitespacerI   _equal_signrq   _comment_end_of_liner8   _rest_of_line)r[   r   r   s      r   parse_bindingr{      s    
OO 
/0 **,	  	'"+&;;q>S k*'EE(#,'&&(	
 	
  
-(&&(	
 	

s   AD B2D ;EEr;   c              #      K   t        |       }|j                         rt        |       |j                         ry y wr   )r:   rB   r{   )r;   r[   s     r   parse_streamr}      s0     F^F
//
F## //
s   9>>)r   )+rU   r   typingr   r   r   r   r   r   r	   r
   r6   r4   r   r/   	MULTILINErt   rv   ru   r_   r`   rw   rm   ro   re   rx   ry   rz   rp   rn   r   rR   r   r   	Exceptionr8   r:   rZ   rb   rh   rq   r{   r}   r&   r   r   <module>r      s    	. . .8s 8 8WS\ 8 o&"6r||D '
-
.- >*)*!"67 !"67 ]+127856"#67 ":.  	3	 		(3- 	X	$	7 7$	I 	! !H+'#, + + +f # 0 0C 0
, ,3 ,"
& "
W "
J$C $Xg%6 $r   