o
    xi8I                     @   s  d Z ddlZddlmZ ddlmZ ddlmZ dgZej	j
ZejjZejjZej	jZejjZejZejjZejZejZejZej	jZej Z!d5dd	Z"G d
d deZ#G dd de$Z%G dd de$Z&G dd de$Z'G dd de$Z(G dd de(ZG dd de(Z)G dd de(Z*G dd de)Z+G dd de+Z,G dd de(ZG dd  d e(Z-G d!d" d"e$Z.G d#d$ d$e(Z/G d%d& d&e(Z0G d'd( d(e$Z1G d)d* d*e1Z2G d+d, d,e1Z3G d-d. d.e1Z4G d/d0 d0e1Z5G d1d2 d2e5Z6G d3d4 d4Z7dS )6z
    pygments.lexers.robotframework
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Lexer for Robot Framework.

    :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)Lexer)Token)	text_typeRobotFrameworkLexer c                 C   s.   |   } |d D ]}|| v r| |d} q| S )N r   )lowerreplace)stringremovechar r   _/home/ubuntu/.local/lib/python3.10/site-packages/wandb/vendor/pygments/lexers/robotframework.py	normalize1   s   r   c                   @   s8   e Zd ZdZdZdgZddgZdgZdd Zd	d
 Z	dS )r   z
    For `Robot Framework <http://robotframework.org>`_ test data.

    Supports both space and pipe separated plain text formats.

    .. versionadded:: 1.6
    RobotFrameworkrobotframeworkz*.txtz*.robotztext/x-robotframeworkc                 K   s&   d|d< d|d< t j| fi | d S )N   tabsizezUTF-8encoding)r   __init__)selfoptionsr   r   r   r   F   s   zRobotFrameworkLexer.__init__c                 c   sn    t  }t }d}| D ]'}||D ]\}}|||D ]\}}|r2||t|fV  |t|7 }qqqd S Nr   )RowTokenizerVariableTokenizer
splitlinestokenizer   len)r   textrow_tokenizervar_tokenizerindexrowvaluetokenr   r   r   get_tokens_unprocessedK   s   z*RobotFrameworkLexer.get_tokens_unprocessedN)
__name__
__module____qualname____doc__namealiases	filenames	mimetypesr   r%   r   r   r   r   r   9   s    c                   @      e Zd Zdd Zdd ZdS )r   c                 c   s\    t |dd}|jdk s|ttfv r||fV  d S | |||D ]\}}|r+||fV  q d S )Nz$@%&identifiersr   )VariableSplitterstartCOMMENTERROR	_tokenize)r   r
   r$   varr#   r   r   r   r   Y   s   

zVariableTokenizer.tokenizec                 c   s    |d |j  }||fV  |jd tfV  | |jtD ]	\}}||fV  qdtfV  |jrIdtfV  | |jtD ]	\}}||fV  q:dtfV  | ||jd  |D ]	\}}||fV  qTd S )N{}[])r2   
identifierSYNTAXr   baseVARIABLEr!   end)r   r6   r
   
orig_tokenbeforer#   r$   r   r   r   r5   b   s   



zVariableTokenizer._tokenizeN)r&   r'   r(   r   r5   r   r   r   r   r   W   s    	r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
r   c                 C   sN   t  | _t | _t }t|j}t }t }|||||||||||d| _	d S )N)settingssettingmetadata	variablesvariable	testcasestestcasekeywordskeyworduserkeywordsuserkeyword)
UnknownTable_tableRowSplitter	_splitterTestCaseTableSettingTableset_default_templateVariableTableKeywordTable_tables)r   rG   rB   rE   rI   r   r   r   r   t   s   
zRowTokenizer.__init__c                 c   s    d}d}t | j|D ]9\}}t|d d\}}|dr"d}n|dkr3|dr3| || _d}| |||||D ]	\}}||fV  q<q| j  d S )NF   r   #Tr   *)		enumeraterP   splitdivmod
startswith_start_tablerN   r5   end_row)r   r"   	commentedheadingr!   r#   	separatorr$   r   r   r   r      s    

zRowTokenizer.tokenizec                 C   s   t |dd}| j|t S )NrY   r   )r   rV   getrM   )r   headerr*   r   r   r   r^      s   zRowTokenizer._start_tablec                 c   s^    |r
|t fV  d S |r|tfV  d S |r|tfV  d S | j||D ]	\}}||fV  q#d S N)r3   	SEPARATORHEADINGrN   r   )r   r#   r!   r`   rb   ra   r$   r   r   r   r5      s   zRowTokenizer._tokenizeN)r&   r'   r(   r   r   r^   r5   r   r   r   r   r   r   s
    r   c                   @   s8   e Zd ZedZedZdd Zdd Zdd Z	d	S )
rO   z( {2,})z((?:^| +)\|(?: +|$))c                 c   s6    | dr	| jp| j}||D ]}|V  qdV  d S )Nz| 
)r]   _split_from_pipes_split_from_spaces)r   r"   splitterr#   r   r   r   r[      s   
zRowSplitter.splitc                 c   s$    dV  | j |D ]}|V  q
d S )Nr   )_space_splitterr[   )r   r"   r#   r   r   r   rk      s
   zRowSplitter._split_from_spacesc                 c   s^    | j |d\}}}|V  | j |r*| j |d\}}}|V  |V  | j |s|V  d S NrW   )_pipe_splitterr[   search)r   r"   _rb   restcellr   r   r   rj      s   
zRowSplitter._split_from_pipesN)
r&   r'   r(   recompilerm   ro   r[   rk   rj   r   r   r   r   rO      s    

rO   c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 ZdS )
	TokenizerNc                 C   s
   d| _ d S r   )_indexr   r   r   r   r      s   
zTokenizer.__init__c                 C   s8   |  || j}|  jd7  _t|ttr||fg}|S rn   )r5   rw   
isinstancetyper   )r   r#   values_and_tokensr   r   r   r      s
   
zTokenizer.tokenizec                 C   s   t |t| jd }| j| S rn   )minr   _tokensr   r#   r!   r   r   r   r5      s   
zTokenizer._tokenizec                 C   s>   | dr|d d  }t|dd}|jdko|jt|kS )N=z$@&r/   r   )endswithstripr1   r2   r?   r   )r   r#   r6   r   r   r   
_is_assign   s   
zTokenizer._is_assign)r&   r'   r(   r}   r   r   r5   r   r   r   r   r   rv      s    rv   c                   @      e Zd ZefZdS )CommentN)r&   r'   r(   r3   r}   r   r   r   r   r          
r   c                   @   s6   e Zd ZeefZdZdZdZdZ	d	ddZ
dd ZdS )
Setting)	
suitesetupsuitepreconditionsuiteteardownsuitepostcondition	testsetuptestpreconditiontestteardowntestpostconditiontesttemplate)libraryresourcerE   )documentationrD   	forcetagsdefaulttagstesttimeoutNc                 C   s   t |  || _d S rf   )rv   r   _template_setter)r   template_setterr   r   r   r         

zSetting.__init__c                 C   s   |dkr| j r|  | |dkr2t|}|| jv r tdd| _n|| jv r*t | _n|| jvr1tS n	| jr;| j	|S t
| ||S )NrW   r   F)support_assign)r   r   _keyword_settingsKeywordCall_custom_tokenizer_import_settingsImportSetting_other_settingsr4   r   rv   r5   )r   r#   r!   
normalizedr   r   r   r5      s   




zSetting._tokenizerf   )r&   r'   r(   SETTINGARGUMENTr}   r   r   r   r   r   r5   r   r   r   r   r      s    
r   c                   @   s   e Zd ZeefZdS )r   N)r&   r'   r(   IMPORTr   r}   r   r   r   r   r      s    r   c                   @   s    e Zd ZdZdZdZdd ZdS )TestCaseSetting)setuppreconditionteardownpostconditiontemplater   )r   tagstimeoutc                 C   sJ   |dkrt | |dd |}dtf|dd |fdtfgS t | ||S )Nr   rW   r   r9   r:   )r   r5   r<   )r   r#   r!   rz   r   r   r   r5      s   zTestCaseSetting._tokenizeN)r&   r'   r(   r   r   r   r5   r   r   r   r   r      s
    r   c                   @   s   e Zd ZdZdZdS )KeywordSetting)r   )r   	argumentsreturnr   r   N)r&   r'   r(   r   r   r   r   r   r   r     s    r   c                   @   s   e Zd ZeefZdd ZdS )Variablec                 C   s$   |dkr|  |stS t| ||S r   )r   r4   rv   r5   r~   r   r   r   r5     s   zVariable._tokenizeN)r&   r'   r(   r<   r   r}   r5   r   r   r   r   r     s    r   c                   @   s&   e Zd ZeefZdddZdd ZdS )r   Tc                 C   s   t |  | | _d| _d S r   )rv   r   _keyword_found_assigns)r   r   r   r   r   r     s   

zKeywordCall.__init__c                 C   sP   | j s| |r|  jd7  _tS | j rt| ||| j S d| _ t |tS )NrW   T)	r   r   r   r<   rv   r5   GherkinTokenizerr   KEYWORDr~   r   r   r   r5     s   zKeywordCall._tokenizeN)T)r&   r'   r(   r   r   r}   r   r5   r   r   r   r   r     s    
r   c                   @   s"   e Zd ZedejZdd ZdS )r   z^(Given|When|Then|And) c                 C   sB   | j |}|s||fgS | }|d | tf||d  |fgS rf   )_gherkin_prefixmatchr?   GHERKIN)r   r#   r$   r   r?   r   r   r   r   *  s
   
 zGherkinTokenizer.tokenizeN)r&   r'   r(   rt   ru   
IGNORECASEr   r   r   r   r   r   r   '  s    r   c                   @   r   )TemplatedKeywordCallN)r&   r'   r(   r   r}   r   r   r   r   r   2  r   r   c                   @   r.   )ForLoopc                 C   s   t |  d| _d S NF)rv   r   _in_argumentsrx   r   r   r   r   8  r   zForLoop.__init__c                 C   s$   | j rtpt}| dv rd| _ |S )N)INzIN RANGET)r   r   r<   upper)r   r#   r!   r$   r   r   r   r5   <  s   zForLoop._tokenizeN)r&   r'   r(   r   r5   r   r   r   r   r   6  s    r   c                   @   sB   e Zd ZdZdddZdd Zdd Zdd	 Zd
d Zdd Z	dS )_TableNc                 C   s   |   | _|| _g | _d S rf   )_tokenizer_class
_tokenizer_prev_tokenizer_prev_values_on_row)r   prev_tokenizerr   r   r   r   F  s   

z_Table.__init__c                 c   sJ    |  ||r| j| _|tfV  n| ||D ]}|V  q| j| d S rf   )
_continuesr   r   r<   r5   r   append)r   r#   r!   value_and_tokenr   r   r   r   K  s   z_Table.tokenizec                    s    |dkot  fdd jD S )Nz...c                 3   s    | ]}  |V  qd S rf   )	_is_empty).0trx   r   r   	<genexpr>U  s    z$_Table._continues.<locals>.<genexpr>)allr   r~   r   rx   r   r   T  s   z_Table._continuesc                 C   s   |dv S )N)r   \r   r   r#   r   r   r   r   X  s   z_Table._is_emptyc                 C   s   | j |S rf   )r   r   r~   r   r   r   r5   [     z_Table._tokenizec                 C   s   | j | jd d S N)r   )r   r   rx   r   r   r   r_   ^  s   z_Table.end_rowrf   )
r&   r'   r(   r   r   r   r   r   r5   r_   r   r   r   r   r   C  s    
	r   c                   @   s   e Zd ZeZdd ZdS )rM   c                 C      dS r   r   r~   r   r   r   r   e     zUnknownTable._continuesN)r&   r'   r(   r   r   r   r   r   r   r   rM   b  s    rM   c                   @   s   e Zd ZeZdS )rT   N)r&   r'   r(   r   r   r   r   r   r   rT   i  s    rT   c                   @   s*   e Zd ZeZdddZdd Zdd ZdS )	rR   Nc                 C   s   t | | || _d S rf   )r   r   r   )r   r   r   r   r   r   r   p  s   
zSettingTable.__init__c                 C   s.   |dkrt |dkrt| j| _t| ||S )Nr   r   )r   r   r   r   r   r5   r~   r   r   r   r5   t  s   zSettingTable._tokenizec                 C   s   | j | j| jd d S r   )r   r   r   rx   r   r   r   r_   y     zSettingTable.end_rowrf   )r&   r'   r(   r   r   r   r5   r_   r   r   r   r   rR   m  s
    
rR   c                   @   sd   e Zd ZeZdZdZedd Zdd Z	dd Z
dd	 Zd
d Zdd Zdd Zdd Zdd ZdS )rQ   Nc                 C   s   | j s| jr| j durtS tS r   )_test_template_default_templater   r   rx   r   r   r   r     s   
zTestCaseTable._tokenizer_classc                 C   s   |dko
t | ||S r   )r   r   r~   r   r   r   r     r   zTestCaseTable._continuesc                 C   s   |dkr|r	d | _ t |tS |dkr.| |r.| |r)d| _ | | j| _n|  | _|dkr;| 	|r;t
 | _|dkrI| |rI|tfgS t| ||S )Nr   rW   F)r   r   r   
TC_KW_NAME_is_setting_is_template_setting_classset_test_templater   _is_for_loopr   r   r<   r   r5   r~   r   r   r   r5     s   


zTestCaseTable._tokenizec                 C   s   | do	|dS )Nr9   r:   )r]   r   r   r   r   r   r     s   zTestCaseTable._is_settingc                 C   s   t |dkS )Nz
[template]r   r   r   r   r   r     r   zTestCaseTable._is_templatec                 C   s   | dot|dddkS )N:rc   for)r]   r   r   r   r   r   r     s   zTestCaseTable._is_for_loopc                 C      |  || _d S rf   )_is_template_setr   r   r   r   r   r   r        zTestCaseTable.set_test_templatec                 C   r   rf   )r   r   r   r   r   r   rS     r   z"TestCaseTable.set_default_templatec                 C   s   t |dvS )N)r   r   nonez${empty}r   r   r   r   r   r     r   zTestCaseTable._is_template_set)r&   r'   r(   r   r   r   r   propertyr   r   r5   r   r   r   r   rS   r   r   r   r   r   rQ   }  s    
rQ   c                   @   s   e Zd ZeZeZdd ZdS )rU   c                 C   r   r   r   r   r   r   r   r     r   zKeywordTable._is_templateN)r&   r'   r(   r   r   r   r   r   r   r   r   r   rU     s    rU   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd ZdS ) r1   c                 C   sZ   d | _ d | _d | _d| _d| _|| _d| _z| | W n
 ty&   Y d S w | 	  d S )Nr   F)
r;   r=   r!   r2   r?   _identifiers_may_have_internal_variables_split
ValueError	_finalize)r   r
   r0   r   r   r   r     s   zVariableSplitter.__init__c                 C   s   | j r	|| jS | jS rf   )r   replace_stringr=   )r   rE   r   r   r   get_replaced_base  s   z"VariableSplitter.get_replaced_basec                 C   sn   | j d | _d| j dd | _| jt| j  | _|  r5d| jdd | _	|  jt| j7  _d S d S )Nr   r   r   r   rW   )
_variable_charsr;   joinr=   r2   r   r?    _has_list_or_dict_variable_index#_list_and_dict_variable_index_charsr!   rx   r   r   r   r     s   zVariableSplitter._finalizec                 C   s   | j o	| j d dkS )Nr   r:   )r   rx   r   r   r   r     s   z1VariableSplitter._has_list_or_dict_variable_indexc              	   C   s   |  |\}}|| _d| _| j| _|| dg| _g | _|| _|d7 }t||d  D ]'\}}||7 }z| || W n t	yE   Y  d S w ||krQ| 
 sQ d S q*d S )NrW   r7   r   )_find_variabler2   _open_curly_variable_state_stater   r   _stringrZ   StopIteration_scanning_list_variable_index)r   r
   start_index	max_indexr!   r   r   r   r   r     s&   zVariableSplitter._splitc                 C   s   | j | j| jfv S rf   )r   "_waiting_list_variable_index_state_list_variable_index_staterx   r   r   r   r     s   z.VariableSplitter._scanning_list_variable_indexc                 C   s^   | d}|dkrtd| ||r| |d | S | |d|}|dkr+td||fS )Nr8   r   zNo variable end foundrW   zNo variable start found)rfindr   _is_escapedr   _find_start_index)r   r
   max_end_indexr   r   r   r   r     s   
zVariableSplitter._find_variablec                 C   s@   | d||d }|dk rdS | ||r|S | ||d |S )Nr7   rW   r   r   r   )find_start_index_is_okr   )r   r
   r2   r?   r!   r   r   r   r     s   z"VariableSplitter._find_start_indexc                 C   s   || | j v o| || S rf   )r   r   )r   r
   r!   r   r   r   r     s   z#VariableSplitter._start_index_is_okc                 C   sF   d}|dkr!||d  dkr!|d8 }| }|dkr!||d  dks|S )NFr   rW   r   r   )r   r
   r!   escapedr   r   r   r   	  s   zVariableSplitter._is_escapedc                 C   sp   | j | |dkr+| | j|s+|  jd8  _| jdkr)|  s#t| j| _d S d S || j	v r6| j
| _d S d S )Nr8   rW   r   )r   r   r   r   r   _is_list_or_dict_variabler   r   r   r   _internal_variable_start_stater   r   r!   r   r   r   r     s   

z VariableSplitter._variable_statec                 C   s   | j d dv S )Nr   )@&)r   rx   r   r   r   r    s   z*VariableSplitter._is_list_or_dict_variablec                 C   sD   | j | _|dkr| j| |  jd7  _d| _d S |  || d S )Nr7   rW   T)r   r   r   r   r   r   r  r   r   r   r    s   
z/VariableSplitter._internal_variable_start_statec                 C   s$   |dkrt | j| | j| _d S )Nr9   )r   r   r   r   r   r  r   r   r   r   '  s   z3VariableSplitter._waiting_list_variable_index_statec                 C   s   | j | |dkrtd S )Nr:   )r   r   r   r  r   r   r   r   -  s   z+VariableSplitter._list_variable_index_stateN)r&   r'   r(   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r   r   r   r   r   r1     s     	r1   )r   )8r)   rt   pygments.lexerr   pygments.tokenr   pygments.utilr   __all__GenericHeadingrh   Keyword	Namespacer   Namer   
Subheadingr   Functionr   Stringr   r   r>   r   r3   Punctuationrg   r<   Emphr   Errorr4   r   r   objectr   r   rO   rv   r   r   r   r   r   r   r   r   r   rM   rT   rR   rQ   rU   r1   r   r   r   r   <module>   sR   
0	3
