Ë
    ¬;j1  ã                   óÀ   — d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	 d„ Z
d„ Zdd„Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Z G d„ de«      Zed„ «       Zdd„Zd„ Zd„ Zy)é    N)Úchain)Úcontextmanager)Útreec                 ó  — | j                   }d|v sd|v ryt        j                  j                  t        j
                  dd«      }t        t        j                  t        j                  |«      dz   t        | «      «      «      S )Nzdist-packageszsite-packagesFÚlibÚpythonz\d.\d)ÚpartsÚosÚpathÚjoinÚsysÚprefixÚboolÚreÚmatchÚescapeÚstr)r   r	   Ú	base_paths      úg/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/jedi/inference/helpers.pyÚis_stdlib_pathr      sa   € ð �J‰J€EØ˜%Ñ ?°eÑ#;Øä—‘—‘œSŸZ™Z¨°Ó9€IÜ”—‘œŸ™ 9Ó-°Ñ8¼#¸d»)ÓDÓEÐEó    c                 ó  — t        j                   | «      }g }| j                  D ]\  }t        |t        j                  «      rt        j                   |«      }||_        nt        |«      }||_        |j                  |«       Œ^ ||_        |S )zO
    Much, much faster than copy.deepcopy, but just for parser tree nodes.
    )ÚcopyÚchildrenÚ
isinstancer   ÚLeafÚparentÚdeep_ast_copyÚappend)ÚobjÚnew_objÚnew_childrenÚchildÚ	new_childs        r   r   r      sy   € ô
 �i‰i˜‹n€Gð €LØ—”ˆÜ�eœTŸY™YÔ'ÜŸ	™	 %Ó(ˆIØ&ˆIÕä% eÓ,ˆIØ&ˆIÔØ×Ñ˜IÕ&ð ð $€GÔà€Nr   c                 óø  — |j                   }|j                  dk(  r!ddlm} |j	                  | j
                  «      S |j                  dk7  s ||j                  d   |j                  d   fvr>|dk(  rddlm} |S |j                  dk(  r| j                  |«      S | j                  |«      S |j                   }|j                  j                  |«      }|r|}n|d	z   }|j                  d
k(  r;|}		 |	d	z  }	|j                  |	   }
|
j                  dk7  rnŒ%|j                  |	d	z   | }n|j                  d   }
|j                  d	| }|
dk(  r
|d   }
|d	d }| j                  |
«      }ddlm} |D ]  } || ||«      }Œ |S )a®  
    Creates a "call" node that consist of all ``trailer`` and ``power``
    objects.  E.g. if you call it with ``append``::

        list([]).append(3) or None

    You would get a node with the content ``list([]).append`` back.

    This generates a copy of the original ast node.

    If you're using the leaf, e.g. the bracket `)` it will return ``list([])``.

    We use this function for two purposes. Given an expression ``bar.foo``,
    we may want to
      - infer the type of ``foo`` to offer completions after foo
      - infer the type of ``bar`` to be able to jump to the definition of foo
    The option ``cut_own_trailer`` must be set to true for the second purpose.
    Úfstringr   )ÚcompiledÚtraileréÿÿÿÿÚ:)Ú	NO_VALUESÚatomé   Ú
error_nodeÚawaitN)Úinfer_trailer)r   ÚtypeÚjedi.inferencer'   Úget_string_value_setÚinference_stater   Újedi.inference.base_valuer+   Ú
infer_nodeÚindexÚjedi.inference.syntax_treer0   )ÚcontextÚleafÚcut_own_trailerr(   r'   r+   Úpowerr7   ÚcutÚstartÚbaseÚtrailersÚvaluesr0   s                 r   Úinfer_call_of_leafrB   -   sŽ  € ð& �k‰k€GØ‡|�|�yÒ Ý+Ø×,Ñ,¨W×-DÑ-DÓEÐEð
 ‡|�|�yÒ  D°×1AÑ1AÀ!Ñ1DÀg×FVÑFVÐWYÑFZÐ0[Ñ$[Ø�3Š;å;ØÐØ�<‰<˜6Ò!Ø×%Ñ% gÓ.Ð.Ø×!Ñ! $Ó'Ð'à�N‰N€EØ�N‰N× Ñ  Ó)€EÙØ‰à�a‰iˆà‡z�z�\Ò!ØˆØØ�Q‰JˆEØ—>‘> %Ñ(ˆDØ�y‰y˜IÒ%Øð	 ð
 —>‘> %¨!¡)¨CÐ0‰à�~‰~˜aÑ ˆØ—>‘> ! CÐ(ˆàˆw‚Ø˜‰{ˆØ˜A˜B�<ˆà×Ñ Ó%€FÝ8ÛˆÙ˜w¨°Ó8‰ð à€Mr   c                 ó°   — 	 | j                   }t        t        j                  d„ |D «       «      «      S # t        $ r | j
                  dk(  r| gcY S g cY S w xY w)Nc              3   ó2   K  — | ]  }t        |«      –— Œ y ­w©N)Úget_names_of_node)Ú.0Úcs     r   Ú	<genexpr>z$get_names_of_node.<locals>.<genexpr>x   s   è ø€ Ð'OÁhÀÔ(9¸!×(<Áhùs   ‚Úname)r   Úlistr   Úfrom_iterableÚAttributeErrorr1   )Únoder   s     r   rF   rF   o   sX   € ðQØ—=‘=ˆô ”E×'Ñ'Ñ'OÁhÓ'OÓOÓPÐPøô ò Ø�9‰9˜ÒØ�6ŠMàŠIð	ús   ‚3 ³AÁAÁAc                 óf   — | j                  «       xr  t        | j                  d ¬«      t        «      S ©N)Údefault)Úis_compiledr   Úget_safe_valuer   ©Úvalues    r   Ú	is_stringrV   {   s,   € Ø×ÑÓÒV¤:¨e×.BÑ.BÈ4Ð.BÓ.PÔRUÓ#VÐVr   c                 ó2   — t        | «      xs t        | «      S rE   )Ú	is_numberrV   rT   s    r   Ú
is_literalrY      s   € Ü�UÓÒ/œy¨Ó/Ð/r   c                 óD   — | j                  d ¬«      } t        | |«      r| S y rP   )rS   r   )rU   Úaccepts     r   Ú_get_safe_value_or_noner\   ƒ   s)   € Ø× Ñ ¨Ð Ó.€EÜ�%˜Ô Øˆð !r   c                 ó"   — t        | t        «      S rE   )r\   ÚintrT   s    r   Úget_int_or_noner_   ‰   ó   € Ü" 5¬#Ó.Ð.r   c                 ó"   — t        | t        «      S rE   )r\   r   rT   s    r   Úget_str_or_nonerb   �   r`   r   c                 ó2   — t        | t        t        f«      d uS rE   )r\   r^   ÚfloatrT   s    r   rX   rX   ‘   s   € Ü" 5¬3´¨,Ó7¸tÐCÐCr   c                   ó   — e Zd Zy)ÚSimpleGetItemNotFoundN)Ú__name__Ú
__module__Ú__qualname__© r   r   rf   rf   •   s   „ Ør   rf   c               '   óF   K  — 	 d –— y # | $ r}t        |«      ‚d }~ww xY w­wrE   )rf   )Úexception_classesÚes     r   Úreraise_getitem_errorsrn   ™   s(   è ø€ ð'ÜøØò 'Ü# AÓ&Ð&ûð'üs   ‚!„	 ˆ!‰Ž™ž!c                 ó^  — d}g }| dd  D ]ž  }|dv r|rŒ
|t        |j                  «      z  }Œ#|j                  dk(  r4|j                  d d d…   D ]  }|j	                  |«       ||u sŒ n Œa ||fS |j                  dk(  r|j	                  |«       ||u sŒ‹ ||fS |dk(  r|rŒ˜g }Œ› ||fS  ||fS )Nr   r-   )Ú.z...Údotted_nameé   rJ   Ú,)ÚlenrU   r1   r   r   )ÚnodesÚis_import_fromÚ
until_nodeÚlevelÚnamesrN   Úns          r   Úparse_dotted_namesr{   ¡   sâ   € Ø€EØ€EØ�a�b“	ˆØ�<ÑÚØœ˜TŸZ™Z›Ñ(‘Ø�Y‰Y˜-Ò'Ø—]‘]¡3 Q 3Ô'�Ø—‘˜Q”Ø˜
’?Ùð (ð
 Øð �%ˆ<Ðð �Y‰Y˜&Ò Ø�L‰L˜ÔØ�zÒ!Øð �%ˆ<Ðð �SŠ[Ú!Ø‘ð Ø�%ˆ<Ðð/ ð. �%ˆ<Ðr   c                 óN   — | j                  |d d «      j                  |d   «      S )Nr)   )Úimport_moduleÚpy__getattribute__)r4   ry   s     r   Úvalues_from_qualified_namesr   ¾   s(   € Ø×(Ñ(¨¨s°¨Ó4×GÑGÈÈbÉ	ÓRÐRr   c                 óJ   — | j                  «       j                  }|€y|d   dv S )NFr   )ÚpandasÚnumpyÚ
tensorflowÚ
matplotlib)Úget_root_contextÚstring_names)r9   r†   s     r   Úis_big_annoying_libraryr‡   Â   s1   € Ø×+Ñ+Ó-×:Ñ:€LØÐØð
 ˜‰?ÐMÐMÐMr   )FrE   )r   r   r   r
   Ú	itertoolsr   Ú
contextlibr   Úparsor   r   r   rB   rF   rV   rY   r\   r_   rb   rX   Ú	Exceptionrf   rn   r{   r   r‡   rj   r   r   Ú<module>rŒ      s‚   ðÛ Û 
Û 	Û 	Ý Ý %å ò	Fòó,?òD	QòWò0òò/ò/òDô	˜Iô 	ð ñ'ó ð'óò:SóNr   