ó
    Ð]j1  ã                   óÄ   • S SK r S SKrS SKrS SKrS SKJr  S SKJr  S SKJ	r	  S r
S rSS jrS rS	 rS
 rS rS rS rS r " S S\5      r\S 5       rSS jrS rS rg)é    N)Úchain)Úcontextmanager)Útreec                 ó  • U R                   nSU;   d  SU;   a  g[        R                  R                  [        R
                  SS5      n[        [        R                  " [        R                  " U5      S-   [        U 5      5      5      $ )Nzdist-packageszsite-packagesFÚlibÚpythonz\d.\d)ÚpartsÚosÚpathÚjoinÚsysÚprefixÚboolÚreÚmatchÚescapeÚstr)r   r	   Ú	base_paths      ÚS/home/mande/repo/quber/.venv/lib/python3.13/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                 ó$  • [         R                   " U 5      n/ nU R                   Ha  n[        U[        R                  5      (       a  [         R                   " U5      nXl        O[        U5      nXl        UR                  U5        Mc     X!l        U$ )zG
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      sv   € ô
 �iŠi˜‹n€Gð €LØ—”ˆÜ�eœTŸY™Y×'Ñ'ÜŸ	š	 %Ó(ˆIØ&Õä% eÓ,ˆIØ&ÔØ×Ñ˜IÖ&ñ ð $Ôà€Nr   c                 ó  • UR                   nUR                  S:X  a!  SSKJn  UR	                  U R
                  5      $ UR                  S:w  d!  XR                  S   UR                  S   4;  a@  US:X  a  SSKJn  U$ UR                  S:X  a  U R                  U5      $ U R                  U5      $ UR                   nUR                  R                  U5      nU(       a  UnOUS	-   nUR                  S
:X  a=  Un	 U	S	-  n	UR                  U	   n
U
R                  S:w  a  OM'  UR                  U	S	-   U nOUR                  S   n
UR                  S	U nU
S:X  a
  US   n
US	S nU R                  U
5      nSSKJn  U H  nU" XU5      nM     U$ )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                 ó¶   •  U R                   n[        [        R                  " S U 5       5      5      $ ! [         a    U R
                  S:X  a  U /s $ / s $ f = f)Nc              3   ó8   #   • U  H  n[        U5      v •  M     g 7f©N)Úget_names_of_node)Ú.0Úcs     r   Ú	<genexpr>Ú$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   ‚4 ´AÁAÁAc                 ój   • U R                  5       =(       a    [        U R                  S S9[        5      $ ©N)Údefault)Úis_compiledr   Úget_safe_valuer   ©Úvalues    r   Ú	is_stringrW   {   s,   € Ø×ÑÓ×V¤:¨e×.BÑ.BÈ4Ð.BÐ.PÔRUÓ#VÐVr   c                 ó<   • [        U 5      =(       d    [        U 5      $ rE   )Ú	is_numberrW   rU   s    r   Ú
is_literalrZ      s   € Ü�UÓ×/œy¨Ó/Ð/r   c                 óF   • U R                  S S9n [        X5      (       a  U $ g rQ   )rT   r   )rV   Úaccepts     r   Ú_get_safe_value_or_noner]   ƒ   s*   € Ø× Ñ ¨Ð Ð.€EÜ�%× Ñ Øˆð !r   c                 ó"   • [        U [        5      $ rE   )r]   ÚintrU   s    r   Úget_int_or_noner`   ‰   ó   € Ü" 5¬#Ó.Ð.r   c                 ó"   • [        U [        5      $ rE   )r]   r   rU   s    r   Úget_str_or_nonerc   �   ra   r   c                 ó2   • [        U [        [        45      S L$ rE   )r]   r_   ÚfloatrU   s    r   rY   rY   ‘   s   € Ü" 5¬3´¨,Ó7¸tÐCÐCr   c                   ó   • \ rS rSrSrg)ÚSimpleGetItemNotFoundé•   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__ri   r   r   rg   rg   •   s   † Úr   rg   c               '   óH   #   •  S v •  g ! U  a  n[        U5      eS nAff = f7frE   )rg   )Úexception_classesÚes     r   Úreraise_getitem_errorsrr   ™   s'   é € ð'ÜøØó 'Ü# AÓ&Ð&ûð'üs   ‚"„	 ˆ"‰�šŸ"c                 ó†  • Sn/ nU SS   H²  nUS;   a#  U(       d  U[        UR                  5      -  nM*  M,  UR                  S:X  a6  UR                  S S S2    H  nUR	                  U5        XbL d  M    O   Mn    X44$ UR                  S:X  a  UR	                  U5        XRL a    X44$ M�  US:X  a  U(       d  / nM®  M°    X44$    X44$ )Nr   r-   )Ú.z...Údotted_nameé   rK   Ú,)ÚlenrV   r1   r   r   )ÚnodesÚis_import_fromÚ
until_nodeÚlevelÚnamesrO   Úns          r   Úparse_dotted_namesr   ¡   sã   € Ø€EØ€EØ�a�b“	ˆØ�<ÓÞØœ˜TŸZ™Z›Ñ(’ñ à�Y‰Y˜-Ó'Ø—]‘]¡3 Q 3Ô'�Ø—‘˜Q”Ø”?Ùñ (ñ
 Øð ˆ<Ðð �Y‰Y˜&Ó Ø�L‰L˜ÔØÒ!Øð ˆ<Ðñ "à�S‹[Þ!Ø’ñ "ð
 Øˆ<Ðñ/ ð. ˆ<Ðr   c                 óN   • U R                  US S 5      R                  US   5      $ )Nr)   )Úimport_moduleÚpy__getattribute__)r4   r}   s     r   Úvalues_from_qualified_namesrƒ   ¾   s(   € Ø×(Ñ(¨¨s°¨Ó4×GÑGÈÈbÉ	ÓRÐRr   c                 óN   • U R                  5       R                  nUc  gUS   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   rW   rZ   r]   r`   rc   rY   Ú	Exceptionrg   rr   r   rƒ   r‹   ri   r   r   Ú<module>r�      s‚   ðÛ Û 
Û 	Û 	Ý Ý %å ò	Fòô,?òD	QòWò0òò/ò/òDô	˜Iô 	ð ñ'ó ð'ôò:SóNr   