o
    =GeB                     @   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   N/var/www/bmteknikk.ddns.net/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<    ($%