o
    a                     @   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
 d4d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eddefdefgZeddee fdee fdefdefg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/d0Z)d1ee dee  fd2d3Z*dS )5    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   //usr/lib/python3/dist-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\\[\\']OriginallineBindingkeyvalueoriginalerrorc                   @   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)
__name__
__module____qualname__intr    classmethodr#   r%   strr)   r   r   r   r   r   /   s    
r   c                   @   s   e Zd ZdS )ErrorN)r*   r+   r,   r   r   r   r   r0   A   s    r0   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   r2   r   r   r   r    F   s   

zReader.__init__c                 C   s   | j jt| jk S r   )r4   r   r&   r
   r   r   r   r   has_nextK   r   zReader.has_nextc                 C   s   | j | j d S r   )r5   r%   r4   r6   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
   r5   r   r4   r   r6   r   r   r   
get_markedQ   s   zReader.get_markedcountc                 C   s   | j | jj| jj|  S r   )r
   r4   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
   r4   r   r&   r0   r)   )r   r:   resultr   r   r   r3   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
   r4   r   r0   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    boolr7   r8   r   r9   r-   r;   r3   r   r   rA   r   r   r   r   r1   E   s    
r1   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;   rA   _single_quoted_key_unquoted_key)rI   charr   r   r   r   	parse_keyp   s   
rO   c                 C   s   |  t\}tdd| S )Nz\s+#.* )rA   _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;   rA   _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)r8   rA   _multiline_whitespacer7   r   r9   _exportrO   _whitespacer;   _equal_signr\   _comment_end_of_liner0   _rest_of_line)rI   r   r   r   r   r   parse_binding   sD   








re   r2   c                 c   s,    t | }| rt|V  | s	d S d S r   )r1   r7   re   )r2   rI   r   r   r   parse_stream   s
   
rf   )r   )+rC   r   typingr   r   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   rB   r   r   	Exceptionr0   r1   rH   rO   rT   r\   re   rf   r   r   r   r   <module>   sT    (

$%