Ë
    ¬;jn,  ã                   ó˜  — d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ dd	lmZ dd
lmZmZmZ ddlmZ ddlmZmZ ddlmZmZ ddlmZ ddlmZm Z m!Z!  e"«       Z# G d„ de«      Z$ G d„ dee!«      Z% G d„ de e%«      Z& G d„ de«      Z' G d„ dejP                  «      Z) e«       d„ «       Z*d„ Z+d„ Z, e«       d„ «       Z-y)z 
Used only for REPL Completion.
é    N)ÚPath)Úget_cached_code_lines)Úsettings)Úmemoize_method)Úcompiled)ÚFileIO)ÚNameWrapper)ÚValueSetÚValueWrapperÚ	NO_VALUES)ÚModuleValue)Úinference_state_function_cacheÚinference_state_method_cache)ÚALLOWED_GETITEM_TYPESÚget_api_type)Úto_stub)ÚCompiledContextÚCompiledModuleContextÚTreeContextMixinc                   ó„   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Z ee¬«      d„ «       Z	e
fd„Zed„ «       Zd	„ Zd
„ Zd„ Zd„ Zd„ Zˆ xZS )ÚMixedObjecta»  
    A ``MixedObject`` is used in two ways:

    1. It uses the default logic of ``parser.python.tree`` objects,
    2. except for getattr calls and signatures. The names dicts are generated
       in a fashion like ``CompiledValue``.

    This combined logic makes it possible to provide more powerful REPL
    completion. It allows side effects that are not noticable with the default
    parser structure to still be completable.

    The biggest difference from CompiledValue to MixedObject is that we are
    generally dealing with Python code and not with C code. This will generate
    fewer special cases, because we in Python you don't have the same freedoms
    to modify the runtime.
    c                 óT   •— t         ‰| �  |«       || _        |j                  | _        y ©N)ÚsuperÚ__init__Úcompiled_valueÚaccess_handle)Úselfr   Ú
tree_valueÚ	__class__s      €ún/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/jedi/inference/compiled/mixed.pyr   zMixedObject.__init__,   s&   ø€ Ü‰Ñ˜Ô$Ø,ˆÔØ+×9Ñ9ˆÕó    c              /   óf   K  — t        | j                  | j                  | j                  «      –— y ­wr   )ÚMixedObjectFilterÚinference_stater   Ú_wrapped_value)r   ÚargsÚkwargss      r!   Úget_filterszMixedObject.get_filters1   s.   è ø€ ÜØ× Ñ  $×"5Ñ"5°t×7JÑ7JóLó 	Lùs   ‚/1c                 ó6   — | j                   j                  «       S r   )r   Úget_signatures©r   s    r!   r+   zMixedObject.get_signatures5   s   € ð ×"Ñ"×1Ñ1Ó3Ð3r"   )Údefaultc                 ój   — t        | j                  «      }|s| j                  }|j                  |«      S r   )r   r&   Ú
py__call__)r   Ú	argumentsÚvaluess      r!   r/   zMixedObject.py__call__:   s3   € ô ˜×,Ñ,Ó-ˆÙØ×(Ñ(ˆFØ× Ñ  Ó+Ð+r"   c                 ó|   — |t         u r| j                  j                  «       S | j                  j                  |«      S r   )Ú	_sentinelr   Úget_safe_value)r   r-   s     r!   r4   zMixedObject.get_safe_valueB   s6   € Ø”iÑØ×&Ñ&×5Ñ5Ó7Ð7à×&Ñ&×5Ñ5°gÓ>Ð>r"   c                 ó.   — | j                   j                  S r   )r   Ú
array_typer,   s    r!   r6   zMixedObject.array_typeH   s   € à×"Ñ"×-Ñ-Ð-r"   c                 ó6   — | j                   j                  «       S r   )r   Úget_key_valuesr,   s    r!   r8   zMixedObject.get_key_valuesL   s   € Ø×"Ñ"×1Ñ1Ó3Ð3r"   c                 óä   — | j                   j                  j                  j                  }t	        |«      t
        v r| j                   j                  |«      S | j                  j                  |«      S r   )r   r   ÚaccessÚ_objÚtyper   Úpy__simple_getitem__r&   )r   ÚindexÚpython_objects      r!   r=   z MixedObject.py__simple_getitem__O   s[   € Ø×+Ñ+×9Ñ9×@Ñ@×EÑEˆÜ�ÓÔ"7Ñ7Ø×&Ñ&×;Ñ;¸EÓBÐBØ×"Ñ"×7Ñ7¸Ó>Ð>r"   c                 ó6   — | j                   j                  «       S r   )r   Únegater,   s    r!   rA   zMixedObject.negateU   s   € Ø×"Ñ"×)Ñ)Ó+Ð+r"   c                 óF   — | j                   €t        | «      S t        | «      S r   )Úparent_contextÚMixedModuleContextÚMixedContextr,   s    r!   Ú_as_contextzMixedObject._as_contextX   s$   € Ø×ÑÐ&Ü% dÓ+Ð+Ü˜DÓ!Ð!r"   c                 ó„   — dt        | «      j                  ›d| j                  j                  «       ›d| j                  ›d�S )NÚ<z: z; Ú>)r<   Ú__name__r   Úget_reprr&   r,   s    r!   Ú__repr__zMixedObject.__repr__]   s4   � ä�‹J×ÓØ×Ñ×'Ñ'Õ)Ø×Óð
ð 	
r"   )rJ   Ú
__module__Ú__qualname__Ú__doc__r   r)   r+   r   r   r/   r3   r4   Úpropertyr6   r8   r=   rA   rF   rL   Ú__classcell__©r    s   @r!   r   r      sh   ø„ ñô :ò
Lò4ñ
 "¨)Ô4ñ,ó 5ð,ð &/ó ?ð ñ.ó ð.ò4ò?ò,ò"ö

r"   r   c                   ó   — e Zd Zed„ «       Zy)rE   c                 ó.   — | j                   j                  S r   )Ú_valuer   r,   s    r!   r   zMixedContext.compiled_valuef   s   € à�{‰{×)Ñ)Ð)r"   N)rJ   rM   rN   rP   r   © r"   r!   rE   rE   e   s   „ Øñ*ó ñ*r"   rE   c                   ó   — e Zd Zy)rD   N)rJ   rM   rN   rV   r"   r!   rD   rD   k   s   „ Ør"   rD   c                   óB   ‡ — e Zd ZdZˆ fd„Zed„ «       Zed„ «       Zˆ xZ	S )Ú	MixedNamezB
    The ``CompiledName._compiled_value`` is our MixedObject.
    c                 ó2   •— t         ‰| �  |«       || _        y r   )r   r   Ú_parent_tree_value)r   Úwrapped_nameÚparent_tree_valuer    s      €r!   r   zMixedName.__init__s   s   ø€ Ü‰Ñ˜Ô&Ø"3ˆÕr"   c                 ól   — t        | j                  «       «      }|sy|d   j                  j                  S )N)r   r   r   )ÚlistÚinferÚnameÚ	start_pos)r   r1   s     r!   rb   zMixedName.start_posw   s,   € ä�d—j‘j“lÓ#ˆÙàØ�a‰y�~‰~×'Ñ'Ð'r"   c           	      ó‚  — | j                   j                  «       }| j                  }|j                  «       s|j	                  «       rN|j                  | j                  «      }|j                  «       r#t        |D �ch c]  }t        ||«      ’Œ c}«      S |j                  «       }t        | j                  ||«      S c c}w r   )Ú_wrapped_nameÚinfer_compiled_valuer[   Úis_instanceÚis_classÚpy__getattribute__Ústring_nameÚis_functionr
   r   Úget_root_contextÚ_createÚ_inference_state)r   r   r   Útree_valuesÚvÚmodule_contexts         r!   r`   zMixedName.infer   s¤   € à×+Ñ+×@Ñ@ÓBˆØ×,Ñ,ˆ
Ø×!Ñ!Ô# z×':Ñ':Ô'<Ø$×7Ñ7¸×8HÑ8HÓIˆKØ×)Ñ)Ô+ÜÉÓ UÉÀA¤¨^¸QÕ!?ÈÑ UÓVÐVà#×4Ñ4Ó6ˆÜ�t×,Ñ,¨n¸nÓMÐMùò !Vs   Á;B<)
rJ   rM   rN   rO   r   rP   rb   r   r`   rQ   rR   s   @r!   rY   rY   o   s7   ø„ ñô4ð ñ(ó ð(ð ñ	Nó ô	Nr"   rY   c                   ó(   ‡ — e Zd Zˆ fd„Zˆ fd„Zˆ xZS )r$   c                 ó4   •— t         ‰| �  ||«       || _        y r   )r   r   Ú_tree_value)r   r%   r   r   r    s       €r!   r   zMixedObjectFilter.__init__�   s   ø€ Ü‰Ñ˜¨.Ô9Ø%ˆÕr"   c                 óJ   •— t        t        ‰| �  |i |¤Ž| j                  «      S r   )rY   r   Ú_create_namers   )r   r'   r(   r    s      €r!   ru   zMixedObjectFilter._create_name‘   s+   ø€ ÜÜ‰GÑ  $Ð1¨&Ñ1Ø×Ñó
ð 	
r"   )rJ   rM   rN   r   ru   rQ   rR   s   @r!   r$   r$   Œ   s   ø„ ô&÷
ð 
r"   r$   c                 ó€   — | j                  |dt        j                  t        j                  ¬«      j	                  «       S )NT)ÚpathÚcacheÚ
diff_cacheÚ
cache_path)Úparser   Úfast_parserÚcache_directoryÚget_root_node)r%   rw   s     r!   Ú_load_moduler   ˜   s;   € à× Ñ ØØÜ×'Ñ'Ü×+Ñ+ð	 !ó ÷
 �mƒoðr"   c                 ó¶  — 	 t        j                  | «      } t        j                  | «      s~t        j                  | «      sit        j
                  | «      sTt        j                  | «      s?t        j                  | «      s*t        j                  | «      st        j                  | «      r| S 	 | j                  S # t        $ r Y Œ­w xY w# t        $ r t        ‚w xY w)z9Check if inspect.getfile has a chance to find the source.)ÚinspectÚunwrapÚ
ValueErrorÚismoduleÚisclassÚismethodÚ
isfunctionÚistracebackÚisframeÚiscoder    ÚAttributeErrorÚ	TypeError)r?   s    r!   Ú_get_object_to_checkr�   ¢   s³   € ðÜŸ™ }Ó5ˆô
 	×Ñ˜Ô'Ü�‰˜}Ô-Ü×Ñ Ô.Ü×!Ñ! -Ô0Ü×"Ñ" =Ô1Ü�‰˜}Ô-Ü�~‰~˜mÔ,ØÐðØ×&Ñ&Ð&øô ò áðûô ò Üˆðús   ‚B9 Â-C Â9	CÃCÃCc                 ó¶  — |}	 t        |«      }t        j                  |«      }|€d n
t        |«      }	 |�|j                  «       sy 	 t        |«      }t        | |«      }t        j                  |«      rt        | j                  |«      }||||fS 	 |j                  }|dk(  ry |j                  «       j                  |g «      }|D �	cg c]5  }	|	j                   j"                  dv r|	j                   j$                  |	k(  r|	‘Œ7 }}	|sy 	 |j&                  }
|
j(                  }|D �cg c]  }|j*                  d   |k(  sŒ|‘Œ }}|r|}	 t        | j                  |«      }|d   j                   }|j"                  dk(  rt-        |«      dk(  ry ||||fS # t        t        f$ r Y y w xY w# t        $ r Y y w xY w# t        $ r Y y w xY wc c}	w c c}w # t        $ r Y Œ‘w xY w)Nz<lambda>)ÚfuncdefÚclassdefr   éÿÿÿÿr�   Úinstance)r�   r�   ÚgetsourcefileÚOSErrorrŒ   r   Úexistsr   r   r„   r   ÚgrammarrJ   r‹   Úget_used_namesÚgetÚparentr<   ra   Ú__code__Úco_firstlinenorb   r   )r%   r?   Úoriginal_objectrw   Úfile_ioÚmodule_nodeÚ
code_linesÚname_strÚnamesÚnÚcodeÚline_nrra   Ú
line_namesÚ	tree_nodes                  r!   Ú_find_syntax_node_namer§   ¹   s  € Ø#€OðÜ,¨]Ó;ˆÜ×$Ñ$ ]Ó3ˆð �<‰4¤T¨$£Z€Dð	Øˆ<˜tŸ{™{œ}àð  -ô �T‹l€GÜ˜°Ó5€Kä×Ñ˜Ô&ô +¨?×+BÑ+BÀDÓIˆ
Ø˜K¨°*Ð<Ð<ðØ ×)Ñ)ˆð
 �:ÒØð ×&Ñ&Ó(×,Ñ,¨X°rÓ:€Eñ
 óÙˆaØ�8‰8�=‰=Ð3Ñ3¸¿¹¿¹ÈÒ8Jò 	
�5ð 
ð ñ ØðØ×%Ñ%ˆð
 ×%Ñ%ˆñ (-ÓM¡u˜t°·±¸qÑ0AÀWÓ0L’d uˆ
ÐMñ Ø‰Eä& ×'>Ñ'>ÀÓE€Jð �b‘	× Ñ €IØ‡~�~˜Ò"¤|°OÓ'DÈ
Ò'Rð Ø˜	 7¨JÐ6Ð6øôU ”YÐò áðûô ò ñ
 ðûô& ò áðüòùò" Nøô ò ÙðúsX   „ F ´F$ ÂF3 Ã:GÄG Ä#GÄ;GÆF!Æ F!Æ$	F0Æ/F0Æ3	F?Æ>F?Ç	GÇGc           	      ó  ‡— ‰j                   j                  j                  }t        | |«      }|€Bt	        |«      t
        t        t        fv rt        ‰h«      S t        ‰«      }|�st        ‰h«      S |\  }}}}	|�|j                  |k7  rŸ‰j                  «       j                  «       }
|
j                  «       }t        |j                  d«      «      }t        | ||||	|
j!                  «       ¬«      }|�&| j"                  j%                  |t        |g«      «       |j'                  «       }t        |j)                  |«      h«      }|j                  dk(  r ‰j+                  «       s|j-                  «       }t        ˆfd„|D «       «      S )NÚ.)r�   Ústring_namesrŸ   Ú
is_packager�   c              3   ó8   •K  — | ]  }t        ‰|¬ «      –— Œ y­w))r   N)r   )Ú.0r   r   s     €r!   Ú	<genexpr>z_create.<locals>.<genexpr>2  s#   øè ø€ ð á%ˆJô 	�N¨z×:Ð:Ù%ùs   ƒ)r   r:   r;   r§   r<   Údictr_   Útupler
   r   r¦   rk   Ú	get_valueÚ
py__name__Úsplitr   r«   Úmodule_cacheÚaddÚ
as_contextÚcreate_valuerg   Úexecute_with_values)r%   r   rp   r?   Úresultrn   rž   r¦   r�   rŸ   Úroot_compiled_valuera   rª   Úmodule_values    `            r!   rl   rl     sr  ø€ ð #×0Ñ0×7Ñ7×<Ñ<€MÜ# O°]ÓC€FØ€~ä�Ó¤4¬¬uÐ"5Ñ5Ü˜^Ð,Ó-Ð-ä˜nÓ-ˆÚÜ˜^Ð,Ó-Ð-à6<Ñ3ˆ�Y ¨àÐ! ^×%=Ñ%=ÀÒ%LØ"0×"AÑ"AÓ"C×"MÑ"MÓ"OÐà&×1Ñ1Ó3ˆDÜ  §¡¨C£Ó1ˆLÜ&Ø ØØ)Ø%Ø.×9Ñ9Ó;ôˆLð ÐØ×,Ñ,×0Ñ0°¼xÈÈÓ?WÔXØ)×4Ñ4Ó6ˆNä × ;Ñ ;¸IÓ FÐGÓHˆØ�>‰>˜ZÒ'Ø!×*Ñ*Ô,à)×=Ñ=Ó?�äó á%óó ð r"   ).rO   r�   Úpathlibr   Újedi.parser_utilsr   Újedir   Ú
jedi.cacher   Újedi.inferencer   Újedi.file_ior   Újedi.inference.namesr	   Újedi.inference.base_valuer
   r   r   Újedi.inference.valuer   Újedi.inference.cacher   r   Újedi.inference.compiled.accessr   r   Ú!jedi.inference.gradual.conversionr   Újedi.inference.contextr   r   r   Úobjectr3   r   rE   rD   rY   ÚCompiledValueFilterr$   r   r�   r§   rl   rV   r"   r!   Ú<module>rË      sÒ   ðñó Ý å 3å Ý %Ý #Ý Ý ,ß GÑ GÝ ,÷!ç NÝ 5÷ñ ñ ‹H€	ôG
�,ô G
ôT*�?Ð$4ô *ô	Ð.°ô 	ôN�ô Nô:	
˜×4Ñ4ô 	
ñ  Ó!ñó "ðòò.O7ñd  Ó!ñ)ó "ñ)r"   