o
    ûÞhB  ã                   @   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	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ÚTupleÚstringÚextra_flagsÚreturnc                 C   s   t  | t j|B ¡S ©N)ÚreÚcompileÚUNICODE)r
   r   © r   úM/var/www/html/premium_crap/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__)   s   
zPosition.__init__c                 C   s   | ddd�S )Nr   é   r%   r   )Úclsr   r   r   Ústart-   s   zPosition.startÚotherc                 C   s   |j | _ |j| _d S r   r%   )r&   r+   r   r   r   Úset1   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   Úadvance5   s   zPosition.advance)r   r#   )r+   r#   r   N)
r   r   r   r   r'   Úclassmethodr*   r,   r   r0   r   r   r   r   r#   (   s    
r#   c                   @   s   e Zd ZdS )ÚErrorN)r   r   r   r   r   r   r   r2   :   s    r2   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&   r4   r   r   r   r'   ?   s   

zReader.__init__c                 C   s   | j jt| jƒk S r   )r6   r$   r-   r
   ©r&   r   r   r   Úhas_nextD   r   zReader.has_nextc                 C   s   | j  | j¡ d S r   )r7   r,   r6   r8   r   r   r   Úset_markG   r   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_markedJ   s   þzReader.get_markedÚcountc                 C   s   | j | jj| jj| … S r   )r
   r6   r$   )r&   r<   r   r   r   ÚpeekP   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-   r2   r0   )r&   r<   Úresultr   r   r   r5   S   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
   r6   r$   r2   r0   r*   ÚendÚgroups)r&   r?   r@   r   r   r   Ú
read_regexZ   s
   zReader.read_regex)r   N)r   r   r   r   r   r'   r"   r9   r:   r   r;   r   r=   r5   r   r   rC   r   r   r   r   r3   >   s    
r3   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_matchc   r   z$decode_escapes.<locals>.decode_match)r   r   Úsub)r?   r
   rG   r   r   r   Údecode_escapesb   s   rI   Úreaderc                 C   s>   |   d¡}|dkrd S |dkr|  t¡\}|S |  t¡\}|S )Nr(   ú#ú')r=   rC   Ú_single_quoted_keyÚ_unquoted_key)rJ   Úcharr   r   r   r   Ú	parse_keyi   s   
ÿrP   c                 C   s   |   t¡\}t dd|¡ ¡ S )Nz\s+#.*Ú )rC   Ú_unquoted_valuer   rH   Úrstrip)rJ   Úpartr   r   r   Úparse_unquoted_valuet   s   rU   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(   rL   ú")rQ   Ú
úrQ   )r=   rC   Ú_single_quoted_valuerI   Ú_single_quote_escapesÚ_double_quoted_valueÚ_double_quote_escapesrU   )rJ   rO   r   r   r   r   Úparse_valuey   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)r:   rC   Ú_multiline_whitespacer9   r   r;   Ú_exportrP   Ú_whitespacer=   Ú_equal_signr]   Ú_commentÚ_end_of_liner2   Ú_rest_of_line)rJ   r   r   r   r   r   Úparse_binding‡   sD   
ü





ü

üþrf   r4   c                 c   s,   � t | ƒ}| ¡ rt|ƒV  | ¡ s	d S d S r   )r3   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   r/   Ú	MULTILINEr_   ra   r`   rM   rN   rb   rY   r[   rR   rc   rd   re   r\   rZ   r   r   r#   Ú	Exceptionr2   r3   rI   rP   rU   r]   rf   rg   r   r   r   r   Ú<module>   s<    ($%