
    1`                     
   d Z ddlZddlmZmZmZ ddlmZ ddlm	Z	 ddl
mZmZ ddlmZ d ej        d	          cZZd
 ej        d          cZZd ej        d          cZZ eeeeeeei          Zd ej        d          fZd ej        d          fZ e eeeg                    ZdedefdZ	 d dededededef
dZdedefdZede	dededee         fd            Z ede	dededee         fd            Z!dS )!zpyls-spyder main plugin.    N)ListDictTuple)hookimpl)Config)	WorkspaceDocument)RegexEvaluatorCELL_PERCENTAGEz^[\t ]*# ?(%%+)(.*)?$CELL_CODECELLz^[\t ]*# ?(<codecell>)(.*)?$CELL_INz!^[\t ]*# ?(In\[)([^\]\r\n]*)?\]?$
BLOCK_DASHz^[\t ]*# ?-{4}([^-\n\r].*)?$
BLOCK_HASHz^[\t ]*##{3}([^\#\n\r].*)?$listreturnc                 <    t          |           dk    r| d         S dS )Nr   )Nr    )len)r   s    2lib/python3.11/site-packages/pyls_spyder/plugin.pypeek_symbolr   3   s    
4yy1}}Aw{    Tnamedocument
start_lineend_linec                 `    |rdnd}| d|j         |ddt          |dz
  d          dddd|d	S )
N      r   r   )line	character   )startend)urirange)r   containerNamelocationkind)r$   max)r   r   r   r   cellr(   s         r   create_symbolr+   :   sw     33CD| !+%& 
 !$HqL! 4 4%& 	 	  !
 
 
r   c                     | |dS )N)	startLineendLine )r   r   s     r   create_fold_regionr0   R   s      r   config	workspacec           
      p   |                      d          }|                    dd          }|                    dd          }|j        }g }g }g }	d}
d}t          |          D ]
\  }}t                              |          \  }}t                              |          \  }}|L|                    d          }|                    d                                          }|dk    rd		                    |
          }|
dz  }
|r|t          k    r)|                    t          ||||dz                        t          |	          \  }}}t          |          dz
  }||k    r|	                    d
|||f           ||k    rS|	                    d
           |                    t          ||||                     t          |	          \  }}}||k    S|	                    d
|||f           |y|rw|                    d          }|d}n|                                }|dk    rd	                    |          }|dz  }|                    t          ||||dz   d                     |	D ].\  }}}|                    t          ||||dz                        /||z   }t#          |d           }|S )z"Cell and block comment extraction.pyls_spydergroup_cellsTenable_block_commentsr!   N   r   zUnnamed cell {0}r   zUnnamed comment {0}Fc                 6    | d         d         d         d         S )Nr'   r%   r"   r   r/   xs    r   <lambda>z(pylsp_document_symbols.<locals>.<lambda>   s    a
mG&<W&Ef&M r   key)plugin_settingsgetlines	enumerate
CELL_REGEXmatchBLOCK_REGEXgroupstripformatr   appendr+   r   r   insertpopsorted)r1   r2   r   settingsr5   r6   r@   cellsblocks
cell_stackunnamed_cellunnamed_blockline_numr   	cell_rule
cell_match
block_ruleblock_matchpercentages	cell_namecurrent_linecurrent_levelcurrent_name
cell_level
block_name_r   spyder_symbolss                               r   pylsp_document_symbolsr`   Y   sP    %%m44H,,}d33K$LL)@$GGNEEFJLM#E** (F (F$ * 0 0 6 6	:"-"3"3D"9"9
K!$**1--K"((++1133IB.55lCC	! L)">">]x8a<A A B B B B =H=  = 9m\ --1
--%%a(J	)JKKKK':55"q)))]((L(&L &L M M M -8
,C,C*}( (:55 %%a(J	)JKKKK$)>$$**1--J!

'--//
R299-HH
"MM-Hh1eE E F F F $ H Ha]44AFFGGGGV^NMMO O ONr   c                    |j         }g }g }t          |          D ]\  }}t                              |          \  }}	|	|	                    d          }
t          |          \  }}}|t          k    r|dz   }nt          |
          dz
  }||k    r|                    d||df           ||k    rT|	                    d           |
                    t          ||dz
                       t          |          \  }}}||k    T|                    d||df           |D ])\  }}}|
                    t          ||                     *t          |d           }|S )Nr!   r   r   c                     | d         S )Nr-   r/   r9   s    r   r;   z%pylsp_folding_range.<locals>.<lambda>   s
    + r   r<   )r@   rA   rB   rC   rE   r   r   r   rI   rJ   rH   r0   rK   )r1   r2   r   r@   rO   rM   rR   r   rS   rT   rW   rY   rZ   r^   r\   r   s                   r   pylsp_folding_rangerc      s   
 NEJE#E** A A$ * 0 0 6 6	:!$**1--K-8-D-D*L-O++*Q.

 --1
M))!!!h
B%?@@@@#z11NN1%%%LL!3L(Q,!O!OPPP5@5L5L2L- $z11 !!!h
B%?@@@# 9 9a'h778888566777ELr   )T)"__doc__retypingr   r   r   pylspr   pylsp.config.configr   pylsp.workspacer   r	   pyls_spyder.utilsr
   compiler   CELL_PERCENTAGE_REGEXr   CELL_CODECELL_REGEXr   CELL_IN_REGEXrB   r   r   dictrD   r   strintr+   r0   r`   rc   r/   r   r   <module>rr      s     
			 $ $ $ $ $ $ $ $ $ $       & & & & & & / / / / / / / / - , , , , ,
 zrz":;; '& ZRZ ?@@ #" zrz>??  ^*&]  
 *"*<==?
 *"*;<<>
 nTT:z":;;<<d u     
 
 
x 
!
-0
 $
 
 
 
03 #     
@6 @%.@$,@15d@ @ @ 
@F 
   $Dz   
  r   