
    h
              	          S SK r S SKrS SKrS SKJrJrJr  S SKJrJr  S SK	J
r
JrJrJrJrJrJrJr  S SKJr  \" S5      r\" S5      rS\4S	 jrS
\\   S\\   4S jrS\S\ R2                  S\\\4   4S jrS\\   S\
\\\4      4S jrS\S\4S jr\\S.S jrS\\\4   S\4S jrS\\\4   S\
\\\4      4S jr S\\\4   S\\\4   4S jr!S\\   S\\/\4   S\\\\   4   4S jr" " S S\#5      r$S r%S"S  jr&S! r'g)#    N)OrderedDictCounterdefaultdict)	FrameTypeTracebackType)IteratorListTupleIterableCallableUnionTypeVarMapping)ASTTextTR
max_lengthc                     [        U 5      U:  a0  U[        U5      -
  S-  nU[        U5      -
  U-
  nU S U U-   X* S  -   n U $ )N   )len)seqr   middlerightlefts        cC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\stack_data/utils.pytruncater      sT    
3x*c&k)a/CK'%/%4j6!CL0J    itreturnc                 @    [        [        R                  " U 5      5      $ N)listr   fromkeys)r   s    r   unique_in_orderr$      s    $$R())r   atoknodec                     [        U[        [        SS5      5      (       a4  [        XR                  5      u  p#[        XR
                  S   5      u  pEX%4$ U R                  USS9u  u  p&u  pVX%S-   4$ )z
Returns a pair of numbers representing a half open range
(i.e. suitable as arguments to the `range()` builtin)
of line numbers of the given AST nodes.

match_case F)padded   )
isinstancegetattrast
line_rangepatternbodyget_text_positions)r%   r&   start_end_startend_s          r   r0   r0      sp     $\2677 ||4 yy}5z#66tE6J
HSAg~r   lstc              #     ^^^^^#    [        U 5      m[        R                  " U U4S jS9 H  u  nmU(       a^  [        T5      mS/[	        T5      -  mU4S jn[        T5       H.  mU" UU4S j5      mTb  U" UUU4S j5        U" UU4S j5        M0     O[        R                  " S5      m[        TT5       S h  vN   M     g  N	7f)	Nc                    > TU    S:  $ )N   r)   )xcountss    r   <lambda>"highlight_unique.<locals>.<lambda>/   s    Qr   keyFc                 B   >  U " 5       nSTU'   U$ ! [          a     g f = f)NT)
ValueError)fihighlighteds     r   highlight_index)highlight_unique.<locals>.highlight_index4   s3     A "&A "   s    
c                  &   > T R                  T5      $ r!   indexgroupitems   r   r?   r@   =   s    D0Ar   c                  .   > TR                  TT S-   5      $ Nr,   rK   )firstrN   rO   s   r   r?   r@   ?   s    EKKeai,Hr   c                  8   > ST S S S2   R                  T5      -
  $ )Nr*   rK   rM   s   r   r?   r@   @   s    U4R4[->->t-D(Dr   T)r   	itertoolsgroupbyr"   r   setrepeatzip)r9   	is_commonrH   r>   rR   rN   rG   rO   s      @@@@@r   highlight_uniquerZ   ,   s     S\F%--c7NO	5KE 'CJ.K E
'(AB$#$HI DE	 # $**40Kuk***+ P* 	+s   B5C<C=
Cr=   c                     U $ r!   r)   )r=   s    r   identityr\   G   s    Hr   )mapperrB   c             #   6  #    [        [        X05      5      n[        R                  " [	        U [        U5      5      S S9 HR  u  pV[	        U6 u  pxU(       a  [        X'5       S h  vN   M+  [	        U6 u  pU" [        U5      [        U	5      5      v   MT     g  N27f)Nc                     U S   S   $ rQ   r)   )ts    r   r?   #collapse_repeated.<locals>.<lambda>O   s    !A$q'r   rA   )r"   maprT   rU   rX   rZ   )r9   	collapserr]   rB   keyedis_highlightedrN   original_grouphighlighted_groupkeyed_groupr8   s              r   collapse_repeatedri   K   s     SE!*!2!2%e,-!" -0K)6222 "34NKD0${2CDD" 3s   A"B$B%3Bframe_or_tbc                     [        [        U [        R                  [        R                  45      5        [        U [        R                  45      $ r!   )assert_r-   typesr   r   rj   s    r   is_framero   Y   s4    J{U__e6I6I$JKLkEOO#566r   c              #      #    U nU(       a7  Uv   [        U5      (       a  UR                  nOUR                  nU(       a  M6  g g 7fr!   )ro   f_backtb_next)rj   currents     r   
iter_stackrt   ^   s6     5@G
GnnGooG 's   >AAc                 l    [        U 5      (       a  X R                  4$ U R                  U R                  4$ r!   )ro   f_linenotb_frame	tb_linenorn   s    r   frame_and_linenory   h   s3    0000##[%:%:::r   iterablekey_funcc                 h    [        [        5      nU  H  nX!" U5         R                  U5        M     U$ )a  
Create a dictionary from an iterable such that the keys are the result of evaluating a key function on elements
of the iterable and the values are lists of elements all of which correspond to the key.

>>> def si(d): return sorted(d.items())
>>> si(group_by_key_func("a bb ccc d ee fff".split(), len))
[(1, ['a', 'd']), (2, ['bb', 'ee']), (3, ['ccc', 'fff'])]
>>> si(group_by_key_func([-1, 0, 1, 3, 6, 8, 9, 2], lambda x: x % 2))
[(0, [0, 6, 8, 2]), (1, [-1, 1, 3, 9])]
)r   r"   append)rz   r{   resultrO   s       r   group_by_key_funcr   o   s4     Fx~%%d+ Mr   c                   (    \ rS rSrSrS rS r\rSrg)cached_property   z
A property that is only computed once per instance and then replaces itself
with an ordinary attribute. Deleting the attribute resets the property.

Based on https://github.com/pydanny/cached-property/blob/master/cached_property.py
c                 2    UR                   U l         Xl        g r!   __doc__func)selfr   s     r   __init__cached_property.__init__   s    ||	r   c                 v    Uc  U $ U R                  U5      =o1R                  U R                   R                  '   U$ r!   )r   __dict____name__)r   obj_clsvalues       r   cached_property_wrapper'cached_property.cached_property_wrapper   s4    ;K3799S>ATYY//0r   r   N)	r   
__module____qualname____firstlineno__r   r   r   __get____static_attributes__r)   r   r   r   r      s     &Gr   r   c           	         ^ SS K nSSKJn   " U4S jS[        U" S5      5      5      nU" SS9n UR	                  XU 5      nUR                  5       $ ! [
         a    Un UR                  5       $ f = f)Nr   )get_lexer_by_namec                   ,   >^  \ rS rSrU U4S jrSrU =r$ )'_pygmented_with_ranges.<locals>.MyLexer   c              3      >^#    Sm[         TU ]  U5       H>  u  p#[        U4S jT 5       5      (       a  UR                  nT[	        U5      -  mX#4v   M@     g 7f)Nr   c              3   R   >#    U  H  u  pUTs=:*  =(       a    U:  Os  v   M     g 7fr!   r)   ).0r4   r7   lengths      r   	<genexpr>E_pygmented_with_ranges.<locals>.MyLexer.get_tokens.<locals>.<genexpr>   s#     Fvu,,,,vs   $')super
get_tokensanyExecutingNoder   )r   textttyper   r   	__class__rangess       @r   r   2_pygmented_with_ranges.<locals>.MyLexer.get_tokens   sS     F % 24 8FvFFF!//E#e*$l"	 !9s   AAr)   )r   r   r   r   r   r   __classcell__)r   r   s   @r   MyLexerr      s    	# 	#r   r   python3F)stripnl)pygmentspygments.lexersr   type	highlight	Exception
splitlines)	formattercoder   r   r   r   lexerrG   s     `     r   _pygmented_with_rangesr      sy    1#$(34 # E"E((i@ !!##  !!##s   A A0/A0c                 V    U (       d"  [        U[        5      (       a  [        U5      nUeg r!   )r-   strAssertionError)	conditionerrors     r   rl   rl      s&    eS!!"5)E r   c                 X     [        U 5      $ !   S[        U 5      R                  -  s $ = f)Nz<unprintable %s object>)r   r   r   )r   s    r   some_strr      s/    @5z@(4;+?+???s   
 )) )(r/   rT   rm   collectionsr   r   r   r   r   typingr   r	   r
   r   r   r   r   r   	asttokensr   r   r   intr   r$   ASTr0   boolrZ   r\   ri   ro   rt   ry   r   objectr   r   rl   r   r)   r   r   <module>r      s   
   9 9 *  
 CLCLc * *Q *W CGG c3h +$q' +huQW~&> +6 a  19h E7%	= 89 7d 7
&E)]":; &yZgOgIh@i &;%	=(@"A ;eIWZNF[ ; xQ7G GTUW[\]W^T^L_ $&f &,$,@r   