a
   ]9]n                	   @   s  d dl Z d dlZddlmZmZ erPd dlmZmZmZm	Z	m
Z
mZmZmZmZ d3ddZedZedej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ZzZd dlZe	ddejfde fgZ!e	ddej
ej fdej
ej fde!fde"fgZ#W n@ e$e%fyr   d dl&m'Z' e'dddgZ!e'dg d Z#Y n0 G d!d" d"Z(G d#d$ d$e)Z*G d%d& d&Z+d'd( Z,d)d* Z-d+d, Z.d-d. Z/d/d0 Z0d1d2 Z1dS )4    N   )IS_TYPE_CHECKINGto_text)	IOIteratorMatch
NamedTupleOptionalPatternSequenceTextTuplec                 C   s   t t| t j|B S N)recompiler   UNICODE)stringextra_flags r   1/usr/lib/python3.9/site-packages/dotenv/parser.py
make_regex   s    r   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\\[\\']Originalr   lineBindingkeyvalueoriginalerror)
namedtupler   r   r   r   c                   @   s0   e Zd Zdd Zedd Zdd Zdd Zd	S )
Positionc                 C   s   || _ || _d S r   charsr   )selfr"   r   r   r   r   __init__O   s    zPosition.__init__c                 C   s   | dddS )Nr   r   r!   r   )clsr   r   r   startT   s    zPosition.startc                 C   s   |j | _ |j| _d S r   r!   )r#   otherr   r   r   setY   s    zPosition.setc                 C   s0   |  j t|7  _ |  jttt|7  _d S r   )r"   lenr   r   findall_newline)r#   r   r   r   r   advance^   s    zPosition.advanceN)__name__
__module____qualname__r$   classmethodr&   r(   r,   r   r   r   r   r    N   s
   
r    c                   @   s   e Zd ZdS )ErrorN)r-   r.   r/   r   r   r   r   r1   d   s   r1   c                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )Readerc                 C   s"   |  | _t | _t | _d S r   )readr   r    r&   positionmark)r#   streamr   r   r   r$   i   s    

zReader.__init__c                 C   s   | j jt| jk S r   )r4   r"   r)   r   r#   r   r   r   has_nexto   s    zReader.has_nextc                 C   s   | j | j d S r   )r5   r(   r4   r7   r   r   r   set_marks   s    zReader.set_markc                 C   s"   t | j| jj| jj | jjdS )N)r   r   )r   r   r5   r"   r4   r   r7   r   r   r   
get_markedw   s    zReader.get_markedc                 C   s   | j | jj| jj|  S r   )r   r4   r"   )r#   countr   r   r   peek~   s    zReader.peekc                 C   s>   | j | jj| jj|  }t||k r.td| j| |S )Nzread: End of string)r   r4   r"   r)   r1   r,   )r#   r;   resultr   r   r   r3      s
    zReader.readc                 C   sH   | | j| jj}|d u r"td| j| j| |   | S )Nzread_regex: Pattern not found)	matchr   r4   r"   r1   r,   r&   endgroups)r#   regexr>   r   r   r   
read_regex   s
    zReader.read_regexN)
r-   r.   r/   r$   r8   r9   r:   r<   r3   rB   r   r   r   r   r2   h   s   r2   c                 C   s   dd }|  ||S )Nc                 S   s   t | ddS )Nr   zunicode-escape)codecsdecodegroup)r>   r   r   r   decode_match   s    z$decode_escapes.<locals>.decode_match)sub)rA   r   rF   r   r   r   decode_escapes   s    rH   c                 C   s<   |  d}|dkrd S |dkr,| t\}n| t\}|S )Nr   #')r<   rB   _single_quoted_key_unquoted_key)readercharr   r   r   r   	parse_key   s    
rO   c                 C   s   |  t\}tdd| S )Nz\s+#.* )rB   _unquoted_valuer   rG   rstrip)rM   partr   r   r   parse_unquoted_value   s    rT   c                 C   s^   |  d}|dkr(| t\}tt|S |dkrF| t\}tt|S |dv rRdS t| S d S )Nr   rJ   ")rP   
rP   )r<   rB   _single_quoted_valuerH   _single_quote_escapes_double_quoted_value_double_quote_escapesrT   )rM   rN   r   r   r   r   parse_value   s    


r\   c              	   C   s   |    z| t |  s2td d |  ddW S | t t| }| t | 	ddkrp| t
 t| }nd }| t | t t|||  ddW S  ty   | t td d |  dd Y S 0 d S )NFr   r   =T)r9   rB   _multiline_whitespacer8   r   r:   _exportrO   _whitespacer<   _equal_signr\   _comment_end_of_liner1   _rest_of_line)rM   r   r   r   r   r   parse_binding   sB    







re   c                 c   s    t | }| rt|V  qd S r   )r2   r8   re   )r6   rM   r   r   r   parse_stream   s    rf   )r   )2rC   r   compatr   r   typingr   r   r   r   r	   r
   r   r   r   r   r+   	MULTILINEr^   r`   r_   rK   rL   ra   rX   rZ   rQ   rb   rc   rd   r[   rY   intr   boolr   ImportErrorAttributeErrorcollectionsr   r    	Exceptionr1   r2   rH   rO   rT   r\   re   rf   r   r   r   r   <module>   sr   ,
	
+	&