o
    DDi$                  
   @   s  d dl mZmZmZmZmZ d dlmZmZm	Z	m
Z
mZmZmZmZmZ d dlmZ d dlmZ dededefdd	Zd
ddededee dee	 fddZdededefddZdededeeef fddZd
ddededee dee	 fddZd
ddededee defddZdededee fddZdededee
 fddZdededee fddZdededee fddZ d
S )    )ListOptionalSequenceTupleUnion)	Comment
COMMENT_RE	EmptyLineNewline
NEWLINE_REParenthesizedWhitespaceSIMPLE_WHITESPACE_RESimpleWhitespaceTrailingWhitespace)BaseWhitespaceParserConfig)WhitespaceStateconfigstatereturnc                 C   s   | j }t||jd  |jd}|g}d|v r;| jd7  _d|_t||jd  |jd}|| d|v s| jt|7  _td	|S )N   r   \ )
linesr   matchlinecolumngroupappendlenr   join)r   r   r   ws_linews_line_list r"   \/var/www/Datamplify/venv/lib/python3.10/site-packages/libcst/_parser/py_whitespace_parser.pyparse_simple_whitespace   s   
r$   Noverride_absolute_indentr&   c                C   s   t |j|j|j|j}g }	 t| ||d}|d u rn|||f t |j|j|j|j}q|d urQtt|d ddD ]}|| d j	rN|d |d  } nq;g }|ra|d d }|j|_|j|_dd |D S )NTr%   r   r   c                 S   s   g | ]}|d  qS )r   r"   ).0rr"   r"   r#   
<listcomp>b   s    z%parse_empty_lines.<locals>.<listcomp>)
Stater   r   absolute_indentis_parenthesized_parse_empty_liner   ranger   indent)r   r   r&   state_for_liner   elifinal_stater"   r"   r#   parse_empty_lines2   s<   r5   c                 C   s   t | |}|d u rtd|S )NzInternal Error: Failed to parse TrailingWhitespace. This should never happen because a TrailingWhitespace is never optional in the grammar, so this error should've been caught by parso first.)_parse_trailing_whitespace	Exception)r   r   trailing_whitespacer"   r"   r#   parse_trailing_whitespacee   s   
r9   c                 C   s&   |j rt| |}|d ur|S t| |S N)r-   _parse_parenthesized_whitespacer$   )r   r   parenthesized_whitespacer"   r"   r#    parse_parenthesizable_whitespacer   s
   

r=   c                C   s   t |j|j|j|j}z	t| ||d}W n
 ty   Y d S w t| |}t| |}t	| |}|d u r4d S |j|_|j|_t
||||S )Nr%   )r+   r   r   r,   r-   _parse_indentr7   r$   _parse_comment_parse_newliner	   )r   r   r&   speculative_stater0   
whitespacecommentnewliner"   r"   r#   r.      s$   



r.   c                C   s~   |dur|n|j }| j|jd  }|jdkr+|jt|kr'|jt| jkr'dS td|||jr=| jt|7  _dS dS )zA
    Returns True if indentation was found, otherwise False.
    Nr   r   Fz:Internal Error: Column should be 0 when parsing an indent.T)r,   r   r   r   r   r7   
startswith)r   r   r&   r,   line_strr"   r"   r#   r>      s   
r>   c                 C   sJ   t | j|jd  |j}|d u rd S |d}| jt|7  _t|S )Nr   r   )r   r   r   r   r   r   r   r   )r   r   comment_matchrC   r"   r"   r#   r?      s   
r?   c                 C   s   | j |jd  }t||j}|d urJ|d}| jt|7  _|jt|kr,td|jt| j k r>| jd7  _d|_|| jkrFt	 S t	|S d S )Nr   r   z7Internal Error: Found a newline, but it wasn't the EOL.)
r   r   r   r   r   r   r   r7   default_newliner
   )r   r   rF   newline_matchnewline_strr"   r"   r#   r@      s   

r@   c                 C   s\   t |j|j|j|j}t| |}t| |}t| |}|d u r d S |j|_|j|_t|||S r:   )	r+   r   r   r,   r-   r$   r?   r@   r   )r   r   rA   rB   rC   rD   r"   r"   r#   r6      s   


r6   c                 C   s^   t | |}|d u rd S d}	 t| |}|d u rn||f }qt| |}t| |}t||||S )Nr"   )r6   r.   r>   r$   r   )r   r   
first_lineempty_lines
empty_liner0   	last_liner"   r"   r#   r;      s   




r;   )!typingr   r   r   r   r   libcst._nodes.whitespacer   r   r	   r
   r   r   r   r   r   libcst._parser.types.configr   %libcst._parser.types.whitespace_stater   r+   r$   strr5   r9   r=   r.   boolr>   r?   r@   r6   r;   r"   r"   r"   r#   <module>   s   ,

3



"



