o
    —6Wj;  ã                   @   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   ú\/home/esfera/Documents/content_generation/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<    $$%