a
    Ò�é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	 d/e
eee
 dœ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"ee
 e
e
d œd!d"„Z#e"ee
 d#œd$d%„Z$e"e
d#œd&d'„Z%e"e
d#œd(d)„Z&e"ed#œd*d+„Z'ee
 ee d,œd-d.„Z(dS )0é    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   ú=/home/Claro/venv/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\\[\\']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                   @   sP   e Zd Zeeddœdd„Zed dœdd„ƒZd ddœd	d
„Zeddœdd„Z	dS )ÚPositionN)Úcharsr   r   c                 C   s   || _ || _d S r   ©r"   r   )Úselfr"   r   r   r   r   Ú__init__0   s    zPosition.__init__©r   c                 C   s   | ddd�S )Nr   é   r#   r   )Úclsr   r   r   Ústart4   s    zPosition.start)Úotherr   c                 C   s   |j | _ |j| _d S r   r#   )r$   r*   r   r   r   Úset8   s    zPosition.set)r	   r   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%   Ú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ee ddœdd„Zedœdd„Zddœdd	„Ze	dœd
d„Z
eedœdd„Zeedœdd„Zee ee dœdd„ZdS )ÚReaderN©Ústreamr   c                 C   s"   |  ¡ | _t ¡ | _t ¡ | _d S r   )Úreadr	   r!   r)   ÚpositionÚmark)r$   r4   r   r   r   r%   F   s    

zReader.__init__r&   c                 C   s   | j jt| jƒk S r   )r6   r"   r,   r	   ©r$   r   r   r   Úhas_nextK   s    zReader.has_nextc                 C   s   | j  | j¡ d S r   )r7   r+   r6   r8   r   r   r   Úset_markN   s    zReader.set_markc                 C   s"   t | j| jj| jj… | jjd�S )N)r	   r   )r   r	   r7   r"   r6   r   r8   r   r   r   Ú
get_markedQ   s    þzReader.get_marked)Úcountr   c                 C   s   | j | jj| jj| … S r   )r	   r6   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	   r6   r"   r,   r1   r/   )r$   r<   Úresultr   r   r   r5   Z   s
    zReader.read)Úregexr   c                 C   sH   |  | j| jj¡}|d u r"tdƒ‚| j | j| ¡ | ¡ … ¡ | ¡ S )Nzread_regex: Pattern not found)	Úmatchr	   r6   r"   r1   r/   r)   ÚendÚgroups)r$   r?   r@   r   r   r   Ú
read_regexa   s
    zReader.read_regex)r   r   r   r   r   r%   r    r9   r:   r   r;   r   r=   r5   r   r   rC   r   r   r   r   r2   E   s   r2   )r?   r	   r   c                 C   s    t t tdœdd„}|  ||¡S )N)r@   r   c                 S   s   t  |  d¡d¡S )Nr   zunicode-escape)ÚcodecsÚdecodeÚgroup)r@   r   r   r   Údecode_matchj   s    z$decode_escapes.<locals>.decode_match)r   r   Úsub)r?   r	   rG   r   r   r   Údecode_escapesi   s    rI   )Úreaderr   c                 C   s<   |   d¡}|dkrd S |dkr,|  t¡\}n|  t¡\}|S )Nr'   ú#ú')r=   rC   Ú_single_quoted_keyÚ_unquoted_key)rJ   Úcharr   r   r   r   Ú	parse_keyp   s    
rP   c                 C   s   |   t¡\}t dd|¡ ¡ S )Nz\s+#.*Ú )rC   Ú_unquoted_valuer   rH   Úrstrip)rJ   Úpartr   r   r   Úparse_unquoted_value{   s    rU   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'   rL   ú")rQ   Ú
úrQ   )r=   rC   Ú_single_quoted_valuerI   Ú_single_quote_escapesÚ_double_quoted_valueÚ_double_quote_escapesrU   )rJ   rO   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 )NF)r   r   r   r   r'   ú=T)r:   rC   Ú_multiline_whitespacer9   r   r;   Ú_exportrP   Ú_whitespacer=   Ú_equal_signr]   Ú_commentÚ_end_of_liner1   Ú_rest_of_line)rJ   r   r   r   r   r   Úparse_bindingŽ   sB    
ü





ü
ürf   r3   c                 c   s    t | ƒ}| ¡ rt|ƒV  qd S r   )r2   r9   rf   )r4   rJ   r   r   r   Úparse_stream³   s    rg   )r   ))rD   r   Útypingr   r   r   r   r   r   r   r   r   r   r.   Ú	MULTILINEr_   ra   r`   rM   rN   rb   rY   r[   rR   rc   rd   re   r\   rZ   r   r   r!   Ú	Exceptionr1   r2   rI   rP   rU   r]   rf   rg   r   r   r   r   Ú<module>   s:   $$%