§
    ŒŸj
  ã            	       ód  — d dl Z d dlZd dlZd dlmZmZmZ d dlmZmZ d dl	m
Z
mZmZmZmZmZmZmZ d dlmZ  ed¦  «        Z ed¦  «        Zdefd	„Zd
ee         dee         fd„Zdede j        deeef         fd„Zdee         de
eeef                  fd„Zdedefd„Zeedœd„Zdeeef         defd„Zdeeef         de
eeef                  fd„Z deeef         deeef         fd„Z!dee         deegef         deeee         f         fd„Z" G d„ de#¦  «        Z$d„ Z%d#d!„Z&d"„ Z'dS )$é    N)ÚOrderedDictÚCounterÚdefaultdict)Ú	FrameTypeÚTracebackType)ÚIteratorÚListÚTupleÚIterableÚCallableÚUnionÚTypeVarÚMapping)ÚASTTextÚTÚRÚ
max_lengthc                 ó²   — t          | ¦  «        |k    rC|t          |¦  «        z
  dz  }|t          |¦  «        z
  |z
  }| d |…         |z   | | d …         z   } | S )Né   )Úlen)Úseqr   ÚmiddleÚrightÚlefts        ú]/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/stack_data/utils.pyÚtruncater      sc   € Ý
ˆ3�x„x�*ÒÐØ�c &™kœkÑ)¨aÑ/ˆØ�C ™KœKÑ'¨%Ñ/ˆØ�%�4�%Œj˜6Ñ! C¨¨¨¨¤LÑ0ˆØ€Jó    ÚitÚreturnc                 óD   — t          t          j        | ¦  «        ¦  «        S ©N)Úlistr   Úfromkeys)r   s    r   Úunique_in_orderr$      s   € Ý•Ô$ RÑ(Ô(Ñ)Ô)Ð)r   ÚatokÚnodec                 ó  — t          |t          t          dd¦  «        ¦  «        r:t          | |j        ¦  «        \  }}t          | |j        d         ¦  «        \  }}||fS |                      |d¬¦  «        \  \  }}\  }}||dz   fS )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      s�   € õ �$�¥ \°2Ñ6Ô6Ñ7Ô7ð Ý   t¤|Ñ4Ô4‰ˆˆtÝ   t¤y°¤}Ñ5Ô5‰ˆ�Ø�cˆzÐà#×6Ò6°tÀEÐ6ÑJÔJÑ‰
ˆ�‘H�S˜!Ø�c˜A‘gˆ~Ðr   Úlstc              #   óœ  ‡‡‡‡‡K  — t          | ¦  «        Št          j        | ˆfd„¬¦  «        D ]›\  }Š|rjt          ‰¦  «        Šdgt	          ‰¦  «        z  Šˆfd„}t          ‰¦  «        D ]2Š |ˆˆfd„¦  «        Š‰� |ˆˆˆfd„¦  «          |ˆˆfd„¦  «         Œ3nt          j        d¦  «        Št          ‰‰¦  «        E d {V —† Œœd S )	Nc                 ó   •— ‰|          dk    S )Né   r)   )ÚxÚcountss    €r   ú<lambda>z"highlight_unique.<locals>.<lambda>/   s   ø€ ÀÈÄÈQÂ€ r   ©ÚkeyFc                 óL   •— 	  | ¦   «         }n# t           $ r Y d S w xY wd‰|<   |S )NT)Ú
ValueError)ÚfÚiÚhighlighteds     €r   Úhighlight_indexz)highlight_unique.<locals>.highlight_index4   sE   ø€ ð Ø˜™œ�A�AøÝ!ð  ð  ð  Ø˜4˜4ð øøøà!%�˜A‘Ø�s   ƒ
 Ž
›c                  ó.   •— ‰                       ‰¦  «        S r!   ©Úindex©ÚgroupÚitems   €€r   r?   z"highlight_unique.<locals>.<lambda>=   s   ø€ °·²¸DÑ0AÔ0A€ r   c                  ó6   •— ‰                      ‰‰ dz   ¦  «        S ©Nr,   rI   )ÚfirstrL   rM   s   €€€r   r?   z"highlight_unique.<locals>.<lambda>?   s   ø€ ¨E¯KªK¸¸eÀa¹iÑ,HÔ,H€ r   c                  óF   •— d‰ d d d…                               ‰¦  «        z
  S )Nr*   rI   rK   s   €€r   r?   z"highlight_unique.<locals>.<lambda>@   s$   ø€ ¨¨U°4°4°R°4¬[×->Ò->¸tÑ-DÔ-DÑ(D€ r   T)r   Ú	itertoolsÚgroupbyr"   r   ÚsetÚrepeatÚzip)r9   Ú	is_commonrG   r>   rP   rL   rF   rM   s      @@@@@r   Úhighlight_uniquerX   ,   sD  øøøøøè è € Ý�S‰\Œ\€Få%Ô-¨cÐ7NÐ7NÐ7NÐ7NÐOÑOÔOð +ð +Ñˆ	�5Øð 	1Ý˜‘K”KˆEØ ˜'¥C¨¡J¤JÑ.ˆKðð ð ð ð õ ˜E™
œ
ð Fð F�Ø'˜Ð(AÐ(AÐ(AÐ(AÐ(AÑBÔB�ØÐ$Ø#�OÐ$HÐ$HÐ$HÐ$HÐ$HÐ$HÑIÔIÐIØ�Ð DÐ DÐ DÐ DÐ DÑEÔEÐEÐEð	Fõ $Ô*¨4Ñ0Ô0ˆKå�u˜kÑ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ð++ð +r   r=   c                 ó   — | S r!   r)   )r=   s    r   ÚidentityrZ   G   s   € Ø€Hr   )ÚmapperrA   c             #   óf  K  — t          t          || ¦  «        ¦  «        }t          j        t	          | t          |¦  «        ¦  «        d„ ¬¦  «        D ]^\  }}t	          |Ž \  }}|rt          ||¦  «        E d {V —† Œ*t	          |Ž \  }	}
 |t          |¦  «        t          |	¦  «        ¦  «        V — Œ_d S )Nc                 ó   — | d         d         S rO   r)   )Úts    r   r?   z#collapse_repeated.<locals>.<lambda>O   s   € ˜!˜Aœ$˜qœ'€ r   r@   )r"   ÚmaprR   rS   rV   rX   )r9   Ú	collapserr[   rA   ÚkeyedÚis_highlightedrL   Úoriginal_groupÚhighlighted_groupÚkeyed_groupr8   s              r   Úcollapse_repeatedrf   K   sä   è è € Ý•�S˜#‘”ÑÔ€EÝ!*Ô!2Ý�Õ% eÑ,Ô,Ñ-Ô-Ø!Ð!ð"ñ "ô "ð 	Eð 	EÑˆ˜õ -0°¨KÑ)ˆÐ)Øð 	EÝ˜6 >Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2å Ð"3Ð4‰NˆK˜Ø�)�D Ñ0Ô0µ$°{Ñ2CÔ2CÑDÔDÐDÐDÐDÐDð	Eð 	Er   Úframe_or_tbc                 óž   — t          t          | t          j        t          j        f¦  «        ¦  «         t          | t          j        f¦  «        S r!   )Úassert_r-   Útypesr   r   ©rg   s    r   Úis_framerl   Y   s9   € Ý�J�{¥U¤_µeÔ6IÐ$JÑKÔKÑLÔLÐLÝ�k¥E¤OÐ#5Ñ6Ô6Ð6r   c              #   ó^   K  — | }|r&|V — t          |¦  «        r|j        }n|j        }|°$d S d S r!   )rl   Úf_backÚtb_next)rg   Úcurrents     r   Ú
iter_stackrq   ^   sZ   è è € Ø5@€GØ
ð &ØˆˆˆÝ�GÑÔð 	&Ø”nˆGˆGà”oˆGð ð &ð &ð &ð &ð &r   c                 óN   — t          | ¦  «        r	| | j        fS | j        | j        fS r!   )rl   Úf_linenoÚtb_frameÚ	tb_linenork   s    r   Úframe_and_linenorv   h   s1   € Ý�ÑÔð ;Ø˜KÔ0Ð0Ð0àÔ# [Ô%:Ð:Ð:r   ÚiterableÚkey_funcc                 ó€   — t          t          ¦  «        }| D ]&}| ||¦  «                                      |¦  «         Œ'|S )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)rw   rx   ÚresultrM   s       r   Úgroup_by_key_funcr|   o   sI   € õ �ÑÔ€FØð ,ð ,ˆØˆxˆx˜‰~Œ~Ô×%Ò% dÑ+Ô+Ð+Ð+Ø€Mr   c                   ó"   — e Zd ZdZd„ Zd„ ZeZdS )Úcached_propertyzù
    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                 ó,   — |j         | _         || _        d S r!   )Ú__doc__Úfunc)Úselfr�   s     r   Ú__init__zcached_property.__init__‰   s   € Ø”|ˆŒØˆŒ	ˆ	ˆ	r   c                 ó`   — |€| S |                       |¦  «        x}|j        | j         j        <   |S r!   )r�   Ú__dict__Ú__name__)r‚   ÚobjÚ_clsÚvalues       r   Úcached_property_wrapperz'cached_property.cached_property_wrapper�   s1   € Øˆ;ØˆKà37·9²9¸S±>´>ÐAˆ�”˜TœYÔ/Ñ0Øˆr   N)r†   Ú
__module__Ú__qualname__r€   rƒ   rŠ   Ú__get__r)   r   r   r~   r~   �   s=   € € € € € ðð ðð ð ðð ð ð &€G€G€Gr   r~   c           	      óú   ‡— dd l }ddlm}  G ˆfd„dt           |d¦  «        ¦  «        ¦  «        } |d¬¦  «        }	 |                     ||| ¦  «        }n# t
          $ r |}Y nw xY w|                     ¦   «         S )Nr   )Úget_lexer_by_namec                   ó"   •‡ — e Zd Zˆ ˆfd„Zˆ xZS )ú'_pygmented_with_ranges.<locals>.MyLexerc              3   óÔ   •‡K  — dŠt          ¦   «                              |¦  «        D ]?\  }}t          ˆfd„‰D ¦   «         ¦  «        r|j        }‰t	          |¦  «        z  Š||fV — Œ@d S )Nr   c              3   ó>   •K  — | ]\  }}|‰cxk    o|k     nc V — Œd S r!   r)   )Ú.0r4   r7   Úlengths      €r   ú	<genexpr>zE_pygmented_with_ranges.<locals>.MyLexer.get_tokens.<locals>.<genexpr>Ÿ   sC   øè è € ÐFÐF±°¸�u Ð,Ð,Ò,Ð,¨Ò,Ð,Ð,Ð,ÐFÐFÐFÐFÐFÐFr   )ÚsuperÚ
get_tokensÚanyÚExecutingNoder   )r‚   ÚtextÚttyper‰   r•   Ú	__class__Úrangess       @€€r   r˜   z2_pygmented_with_ranges.<locals>.MyLexer.get_tokensœ   sŒ   øøè è € ØˆFÝ %¡¤× 2Ò 2°4Ñ 8Ô 8ð #ð #‘��uÝÐFÐFÐFÐF¸vÐFÑFÔFÑFÔFð 0Ø!Ô/�EØ�#˜e™*œ*Ñ$�Ø˜U�lÐ"Ð"Ð"Ð"ð	#ð #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    ÚlexerrF   s     `     r   Ú_pygmented_with_rangesr¬   —   sÐ   ø€ Ø€O€O€OØ1Ð1Ð1Ð1Ð1Ð1ð#ð #ð #ð #ð #ð #ð #•$Ð(Ð(¨Ñ3Ô3Ñ4Ô4ñ #ô #ð #ð ˆG˜EÐ"Ñ"Ô"€EðØ×(Ò(¨¨u°iÑ@Ô@ˆˆøÝð ð ð àˆˆˆðøøøð ×!Ò!Ñ#Ô#Ð#s   ¿A ÁA&Á%A&Ú c                 óV   — | s&t          |t          ¦  «        rt          |¦  «        }|‚d S r!   )r-   ÚstrÚAssertionError)Ú	conditionÚerrors     r   ri   ri   ­   s8   € Øð Ý�e�SÑ!Ô!ð 	*Ý" 5Ñ)Ô)ˆEØˆðð r   c                 ó^   — 	 t          | ¦  «        S #  dt          | ¦  «        j        z  cY S xY w)Nz<unprintable %s object>)r¯   r¥   r†   )r‰   s    r   Úsome_strr´   µ   s8   € ð@Ý�5‰zŒzÐøð@Ø(­4°©;¬;Ô+?Ñ?Ð?Ð?Ð?øøøs   ‚ ‘,)r­   )(r/   rR   rj   Úcollectionsr   r   r   r   r   Útypingr   r	   r
   r   r   r   r   r   Ú	asttokensr   r   r   Úintr   r$   ÚASTr0   ÚboolrX   rZ   rf   rl   rq   rv   r|   Úobjectr~   r¬   ri   r´   r)   r   r   ú<module>r¼      s0  ðØ 
€
€
€
Ø Ð Ð Ð Ø €€€Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð
 Ð Ð Ð Ð Ð à€GˆC�L„L€Ø€GˆC�L„L€ð˜cð ð ð ð ð*˜ œð *¨¨Q¬ð *ð *ð *ð *ð�Wð  C¤Gð °°c¸3°h´ð ð ð ð ð+˜$˜qœ'ð + h¨u°Q¸°W¬~Ô&>ð +ð +ð +ð +ð6�ð �að ð ð ð ð 19¸hð Eð Eð Eð Eð Eð7˜% 	¨=Ð 8Ô9ð 7¸dð 7ð 7ð 7ð 7ð
&˜E )¨]Ð":Ô;ð &ÀÈÈyÐZgÐOgÔIhÔ@ið &ð &ð &ð &ð; %¨	°=Ð(@Ô"Að ;ÀeÈIÐWZÈNÔF[ð ;ð ;ð ;ð ;ð ¨¤ð °xÀÀÀQÀÔ7Gð ÈGÐTUÐW[Ð\]ÔW^ÐT^ÔL_ð ð ð ð ð$&ð &ð &ð &ð &�fñ &ô &ð &ð,$ð $ð $ð,ð ð ð ð@ð @ð @ð @ð @r   