
    \c                        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*dS ).    N)IOIteratorMatch
NamedTupleOptionalPatternSequenceTuplestringextra_flagsreturnc                 F    t          j        | t           j        |z            S N)recompileUNICODE)r   r   s     -lib/python3.11/site-packages/dotenv/parser.py
make_regexr      s    :fbj;67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                   R    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	dS )Positioncharsr   r   Nc                 "    || _         || _        d S 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    s####r   otherc                 6    |j         | _         |j        | _        d S r   r!   )r"   r)   s     r   setzPosition.set8   s    [
J			r   r   c                     | xj         t          |          z  c_         | xj        t          t          j        t
          |                    z  c_        d S r   )r   lenr   r   findall_newline)r"   r   s     r   advancezPosition.advance<   s@    

c&kk!

		SHf55666				r   )r   r   )r)   r   r   N)
__name__
__module____qualname__intr#   classmethodr(   r+   strr0   r&   r   r   r   r   /   s        c       $ $ $ [$   7c 7d 7 7 7 7 7 7r   r   c                       e Zd ZdS )ErrorN)r1   r2   r3   r&   r   r   r8   r8   A   s        Dr   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dS )Readerstreamr   Nc                     |                                 | _        t                                          | _        t                                          | _        d S r   )readr   r   r(   positionmark)r"   r;   s     r   r#   zReader.__init__F   s7    kkmm ((NN$$			r   c                 F    | j         j        t          | j                  k     S r   )r>   r   r-   r   r"   s    r   has_nextzReader.has_nextK   s    }"S%5%555r   c                 D    | j                             | j                   d S r   )r?   r+   r>   rA   s    r   set_markzReader.set_markN   s    	dm$$$$$r   c                 z    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   s8    ;tyt}/BBC
 
 
 	
r   countc                 N    | j         | j        j        | j        j        |z            S r   )r   r>   r   )r"   rG   s     r   peekzReader.peekW   s#    {4=.t}/BU/JJKKr   c                     | j         | j        j        | j        j        |z            }t          |          |k     rt	          d          | j                            |           |S )Nzread: End of string)r   r>   r   r-   r8   r0   )r"   rG   results      r   r=   zReader.readZ   s_    T]01Du1LLMv;; 	/-...f%%%r   regexc                 ,   |                     | j        | j        j                  }|t	          d          | 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   ss    DK)<== 	97888dk%++--		*CDEE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   s        %r#w %4 % % % %
6$ 6 6 6 6% % % %
H 
 
 
 
L# L# L L L L# #     #      r   r:   rL   c                 h    dt           t                   dt          fd}|                     ||          S )NrN   r   c                 R    t          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                     |                      d          }|dk    rd S |dk    r|                     t                    \  }n|                     t                    \  }|S )Nr%   #')rI   rQ   _single_quoted_key_unquoted_key)r[   charr   s      r   	parse_keyrb   p   s`    ;;q>>Ds{ 2t	 2""#566""=11Jr   c                     |                      t                    \  }t          j        dd|                                          S )Nz\s+#.* )rQ   _unquoted_valuer   rY   rstrip)r[   parts     r   parse_unquoted_valuerh   {   s7    00GT6)R&&--///r   c                 2   |                      d          }|dk    r1|                     t                    \  }t          t          |          S |dk    r1|                     t
                    \  }t          t          |          S |dv rdS 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      s    ;;q>>Dt| 	,$$%9::3U;;;	 ,$$%9::3U;;;	$	$ ,s#F+++r   c                 2   |                                   	 |                     t                     |                                 s%t	          d d |                                 d          S |                     t                     t          |           }|                     t                     | 	                    d          dk    r*|                     t                     t          |           }nd }|                     t                     |                     t                     t	          |||                                 d          S # t          $ rB |                     t                     t	          d d |                                 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00   	**,,	    	'"""+&&&;;q>>S  	k***''EEE(###,'''&&((	
 
 
 	
  
 
 
-(((&&((	
 
 
 	
 	
 	

s   AE
 )C E
 
A	FFr;   c              #      K   t          |           }|                                r't          |          V  |                                %d S d S r   )r:   rB   r{   )r;   r[   s     r   parse_streamr}      s_      F^^F
//

 $F##### //

 $ $ $ $ $r   )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      sz    				. . . . . . . . . . . . . . . . . . . .8 8s 8 8WS\ 8 8 8 8 :o&&"
6r|DDD j''
*-
.
.Z-- 
>**j)**!z"677 !z"677 *]++:122z788
566"
#677 "
:..  :	3	  *		(3- 	X	$	 7 7 7 7 7 7 7 7$	 	 	 	 	I 	 	 	! ! ! ! ! ! ! !H+'#, + + + + + +f #    0 0C 0 0 0 0
, ,3 , , , ,"
& "
W "
 "
 "
 "
J$C $Xg%6 $ $ $ $ $ $r   