o
    +i;                     @   s  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	 d1de
dedee
 fd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G dd deZG dd deZG dd dZG dd de Z!G d d! d!Z"d"ee
 de
de
fd#d$Z#d%e"dee
 fd&d'Z$d%e"de
fd(d)Z%d%e"de
fd*d+Z&d%e"defd,d-Z'd.ee
 dee fd/d0Z(dS )2    N)IOIteratorMatch
NamedTupleOptionalPatternSequencestringextra_flagsreturnc                 C   s   t | t j|B S N)recompileUNICODE)r	   r
    r   @/var/www/html/venv/lib/python3.10/site-packages/dotenv/parser.py
make_regex      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\\[\\']c                   @   s   e Zd ZU eed< eed< dS )Originalr	   lineN)__name__
__module____qualname__str__annotations__intr   r   r   r   r   #   s   
 r   c                   @   s6   e Zd ZU ee ed< ee ed< eed< eed< dS )BindingkeyvalueoriginalerrorN)r   r   r   r   r   r   r   boolr   r   r   r   r   (   s
   
 r   c                   @   sL   e Zd ZdededdfddZedddZdd
dZdeddfddZ	dS )Positioncharsr   r   Nc                 C   s   || _ || _d S r   r#   r   )selfr#   r   r   r   r   __init__0   s   
zPosition.__init__c                 C   s   | dddS )Nr      r$   r   )clsr   r   r   start4   s   zPosition.startotherc                 C   s   |j | _ |j| _d S r   r$   )r%   r*   r   r   r   set8   s   zPosition.setr	   c                 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.advance)r   r"   )r*   r"   r   N)
r   r   r   r   r&   classmethodr)   r+   r   r/   r   r   r   r   r"   /   s    
r"   c                   @   s   e Zd ZdS )ErrorN)r   r   r   r   r   r   r   r1   A   s    r1   c                   @   s   e Zd Zdee ddfddZdefddZddd	Zde	fd
dZ
dedefddZdedefddZdee dee fddZdS )Readerstreamr   Nc                 C   s"   |  | _t | _t | _d S r   )readr	   r"   r)   positionmark)r%   r3   r   r   r   r&   F   s   

zReader.__init__c                 C   s   | j jt| jk S r   )r5   r#   r,   r	   r%   r   r   r   has_nextK   r   zReader.has_nextc                 C   s   | j | j d S r   )r6   r+   r5   r7   r   r   r   set_markN   r   zReader.set_markc                 C   s"   t | j| jj| jj | jjdS )N)r	   r   )r   r	   r6   r#   r5   r   r7   r   r   r   
get_markedQ   s   zReader.get_markedcountc                 C   s   | j | jj| jj|  S r   )r	   r5   r#   )r%   r;   r   r   r   peekW   s   zReader.peekc                 C   s>   | j | jj| jj|  }t||k rtd| j| |S )Nzread: End of string)r	   r5   r#   r,   r1   r/   )r%   r;   resultr   r   r   r4   Z   s
   zReader.readregexc                 C   sH   | | j| jj}|d u rtd| j| j| |   | S )Nzread_regex: Pattern not found)	matchr	   r5   r#   r1   r/   r)   endgroups)r%   r>   r?   r   r   r   
read_regexa   s
   zReader.read_regex)r   N)r   r   r   r   r   r&   r!   r8   r9   r   r:   r   r<   r4   r   r   rB   r   r   r   r   r2   E   s    
r2   r>   c                 C   s"   dt t dtfdd}| ||S )Nr?   r   c                 S   s   t | ddS )Nr   zunicode-escape)codecsdecodegroup)r?   r   r   r   decode_matchj   r   z$decode_escapes.<locals>.decode_match)r   r   sub)r>   r	   rF   r   r   r   decode_escapesi   s   rH   readerc                 C   s>   |  d}|dkrd S |dkr| t\}|S | t\}|S )Nr'   #')r<   rB   _single_quoted_key_unquoted_key)rI   charr   r   r   r   	parse_keyp   s   
rO   c                 C   s   |  t\}tdd| S )Nz\s+#.* )rB   _unquoted_valuer   rG   rstrip)rI   partr   r   r   parse_unquoted_value{   s   rT   c                 C   sZ   |  d}|dkr| t\}tt|S |dkr#| t\}tt|S |dv r)dS t| S )Nr'   rK   ")rP   
rP   )r<   rB   _single_quoted_valuerH   _single_quote_escapes_double_quoted_value_double_quote_escapesrT   )rI   rN   r   r   r   r   parse_value   s   


r\   c              	   C   s   |    zJ| t |  std d |  ddW S | t t| }| t | 	ddkr8| t
 t| }nd }| t | t t|||  ddW S  tyf   | t td d |  dd Y S w )NF)r   r   r   r    r'   =T)r9   rB   _multiline_whitespacer8   r   r:   _exportrO   _whitespacer<   _equal_signr\   _comment_end_of_liner1   _rest_of_line)rI   r   r   r   r   r   parse_binding   sD   








re   r3   c                 c   s,    t | }| rt|V  | s	d S d S r   )r2   r8   re   )r3   rI   r   r   r   parse_stream   s
   
rf   )r   ))rC   r   typingr   r   r   r   r   r   r   r   r   r   r.   	MULTILINEr^   r`   r_   rL   rM   ra   rX   rZ   rQ   rb   rc   rd   r[   rY   r   r   r"   	Exceptionr1   r2   rH   rO   rT   r\   re   rf   r   r   r   r   <module>   s<    $$%