ó
    Ð]jn,  ã                   ó˜  • S r SSKrSSKJr  SSKJr  SSKJr  SSKJ	r	  SSK
Jr  SSKJr  SS	KJr  SS
KJrJrJr  SSKJr  SSKJrJr  SSKJrJr  SSKJr  SSKJrJ r J!r!  \"" 5       r# " S S\5      r$ " S S\\!5      r% " S S\ \%5      r& " S S\5      r' " S S\RP                  5      r)\" 5       S 5       r*S r+S r,\" 5       S 5       r-g)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                   óŠ   ^ • \ rS rSrSrU 4S jrS rS r\" \	S9S 5       r
\4S jr\S	 5       rS
 rS rS rS rS rSrU =r$ )ÚMixedObjecté   a‹  
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                 óR   >• [         TU ]  U5        Xl        UR                  U l        g ©N)ÚsuperÚ__init__Úcompiled_valueÚaccess_handle)Úselfr   Ú
tree_valueÚ	__class__s      €ÚZ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/jedi/inference/compiled/mixed.pyr   ÚMixedObject.__init__,   s$   ø€ Ü‰Ñ˜Ô$Ø,ÔØ+×9Ñ9ˆÕó    c              /   óf   #   • [        U R                  U R                  U R                  5      v •  g 7fr   )ÚMixedObjectFilterÚinference_stater   Ú_wrapped_value)r   ÚargsÚkwargss      r"   Úget_filtersÚMixedObject.get_filters1   s-   é € ÜØ× Ñ  $×"5Ñ"5°t×7JÑ7JóLó 	Lùs   ‚/1c                 ó6   • U R                   R                  5       $ r   )r   Úget_signatures©r   s    r"   r.   ÚMixedObject.get_signatures5   s   € ð ×"Ñ"×1Ñ1Ó3Ð3r$   )Údefaultc                 ót   • [        U R                  5      nU(       d  U R                  nUR                  U5      $ r   )r   r(   Ú
py__call__)r   Ú	argumentsÚvaluess      r"   r3   ÚMixedObject.py__call__:   s3   € ô ˜×,Ñ,Ó-ˆÞØ×(Ñ(ˆFØ× Ñ  Ó+Ð+r$   c                 ó~   • U[         L a  U R                  R                  5       $ U R                  R                  U5      $ r   )Ú	_sentinelr   Úget_safe_value)r   r1   s     r"   r9   ÚMixedObject.get_safe_valueB   s6   € Ø”iÒØ×&Ñ&×5Ñ5Ó7Ð7à×&Ñ&×5Ñ5°gÓ>Ð>r$   c                 ó.   • U R                   R                  $ r   )r   Ú
array_typer/   s    r"   r<   ÚMixedObject.array_typeH   s   € à×"Ñ"×-Ñ-Ð-r$   c                 ó6   • U R                   R                  5       $ r   )r   Úget_key_valuesr/   s    r"   r?   ÚMixedObject.get_key_valuesL   s   € Ø×"Ñ"×1Ñ1Ó3Ð3r$   c                 óè   • U R                   R                  R                  R                  n[	        U5      [
        ;   a  U R                   R                  U5      $ U R                  R                  U5      $ r   )r   r   ÚaccessÚ_objÚtyper   Úpy__simple_getitem__r(   )r   ÚindexÚpython_objects      r"   rE   Ú MixedObject.py__simple_getitem__O   s[   € Ø×+Ñ+×9Ñ9×@Ñ@×EÑEˆÜ�ÓÔ"7Ó7Ø×&Ñ&×;Ñ;¸EÓBÐBØ×"Ñ"×7Ñ7¸Ó>Ð>r$   c                 ó6   • U R                   R                  5       $ r   )r   Únegater/   s    r"   rJ   ÚMixedObject.negateU   s   € Ø×"Ñ"×)Ñ)Ó+Ð+r$   c                 óH   • U R                   c  [        U 5      $ [        U 5      $ r   )Úparent_contextÚMixedModuleContextÚMixedContextr/   s    r"   Ú_as_contextÚMixedObject._as_contextX   s$   € Ø×ÑÑ&Ü% dÓ+Ð+Ü˜DÓ!Ð!r$   c                 óŠ   • S[        U 5      R                  < SU R                  R                  5       < SU R                  < S3$ )NÚ<z: z; Ú>)rD   Ú__name__r   Úget_reprr(   r/   s    r"   Ú__repr__ÚMixedObject.__repr__]   s4   � ä�‹J×ÔØ×Ñ×'Ñ'Ö)Ø×Ôð
ð 	
r$   )r   r   )rU   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r+   r.   r   r   r3   r8   r9   Úpropertyr<   r?   rE   rJ   rP   rW   Ú__static_attributes__Ú__classcell__©r!   s   @r"   r   r      sm   ø† ñõ :ò
Lò4ñ
 "¨)Ñ4ñ,ó 5ð,ð &/ô ?ð ñ.ó ð.ò4ò?ò,ò"÷

ð 
r$   r   c                   ó$   • \ rS rSr\S 5       rSrg)rO   ée   c                 ó.   • U R                   R                  $ r   )Ú_valuer   r/   s    r"   r   ÚMixedContext.compiled_valuef   s   € à�{‰{×)Ñ)Ð)r$   © N)rU   rY   rZ   r[   r]   r   r^   rf   r$   r"   rO   rO   e   s   † Øñ*ó ó*r$   rO   c                   ó   • \ rS rSrSrg)rN   ék   rf   N)rU   rY   rZ   r[   r^   rf   r$   r"   rN   rN   k   s   † Úr$   rN   c                   óL   ^ • \ rS rSrSrU 4S jr\S 5       r\S 5       r	Sr
U =r$ )Ú	MixedNameéo   z:
The ``CompiledName._compiled_value`` is our MixedObject.
c                 ó0   >• [         TU ]  U5        X l        g r   )r   r   Ú_parent_tree_value)r   Úwrapped_nameÚparent_tree_valuer!   s      €r"   r   ÚMixedName.__init__s   s   ø€ Ü‰Ñ˜Ô&Ø"3Õr$   c                 óv   • [        U R                  5       5      nU(       d  gUS   R                  R                  $ )N)r   r   r   )ÚlistÚinferÚnameÚ	start_pos)r   r5   s     r"   ru   ÚMixedName.start_posw   s,   € ä�d—j‘j“lÓ#ˆÞàØ�a‰y�~‰~×'Ñ'Ð'r$   c           	      ó¢  • U R                   R                  5       nU R                  nUR                  5       (       d  UR	                  5       (       aU  UR                  U R                  5      nUR                  5       (       a%  [        U Vs1 s H  n[        X5      iM     sn5      $ UR                  5       n[        U R                  X5      $ s  snf r   )Ú_wrapped_nameÚinfer_compiled_valuerm   Ú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"   rs   ÚMixedName.infer   s©   € à×+Ñ+×@Ñ@ÓBˆØ×,Ñ,ˆ
Ø×!Ñ!×#Ñ# z×':Ñ':×'<Ñ'<Ø$×7Ñ7¸×8HÑ8HÓIˆKØ×)Ñ)×+Ñ+ÜÉÓ UÊÀA¤¨^Ö!?ÉÑ UÓVÐVà#×4Ñ4Ó6ˆÜ�t×,Ñ,¨nÓMÐMùò !Vs   Â
C)rm   )rU   rY   rZ   r[   r\   r   r]   ru   r   rs   r^   r_   r`   s   @r"   rj   rj   o   s7   ø† ñõ4ð ñ(ó ð(ð ñ	Nó ö	Nr$   rj   c                   ó4   ^ • \ rS rSrU 4S jrU 4S jrSrU =r$ )r&   éŒ   c                 ó0   >• [         TU ]  X5        X0l        g r   )r   r   Ú_tree_value)r   r'   r   r    r!   s       €r"   r   ÚMixedObjectFilter.__init__�   s   ø€ Ü‰Ñ˜Ô9Ø%Õr$   c                 óL   >• [        [        TU ]  " U0 UD6U R                  5      $ r   )rj   r   Ú_create_namer‰   )r   r)   r*   r!   s      €r"   rŒ   ÚMixedObjectFilter._create_name‘   s+   ø€ ÜÜ‰GÒ  $Ð1¨&Ñ1Ø×Ñó
ð 	
r$   )r‰   )rU   rY   rZ   r[   r   rŒ   r^   r_   r`   s   @r"   r&   r&   Œ   s   ø† õ&÷
ó 
r$   r&   c                 óz   • U R                  US[        R                  [        R                  S9R	                  5       $ )NT)ÚpathÚcacheÚ
diff_cacheÚ
cache_path)Úparser   Úfast_parserÚcache_directoryÚget_root_node)r'   r�   s     r"   Ú_load_moduler—   ˜   s;   € à× Ñ ØØÜ×'Ñ'Ü×+Ñ+ð	 !ð ÷
 �mƒoðr$   c                 ó  •  [         R                  " U 5      n [         R                  " U 5      (       d¢  [         R                  " U 5      (       d‡  [         R
                  " U 5      (       dl  [         R                  " U 5      (       dQ  [         R                  " U 5      (       d6  [         R                  " U 5      (       d  [         R                  " U 5      (       a  U $  U R                  $ ! [         a     NØf = f! [         a    [        ef = f)z9Check if inspect.getfile has a chance to find the source.)ÚinspectÚunwrapÚ
ValueErrorÚismoduleÚisclassÚismethodÚ
isfunctionÚistracebackÚisframeÚiscoder!   ÚAttributeErrorÚ	TypeError)rG   s    r"   Ú_get_object_to_checkr¥   ¢   sÈ   € ðÜŸš }Ó5ˆô
 	×Ò˜×'Ñ'Ü�Š˜}×-Ñ-Ü×Ò ×.Ñ.Ü×!Ò! -×0Ñ0Ü×"Ò" =×1Ñ1Ü�Š˜}×-Ñ-Ü�~Š~˜m×,Ñ,ØÐðØ×&Ñ&Ð&øô ó áðûô ó Üˆðús   ‚C$ ÃC4 Ã$
C1Ã0C1Ã4Dc                 ó  • Un [        U5      n[        R                  " U5      nUc  S O
[        U5      n Ub  UR                  5       (       d  g  [        U5      n[        X5      n[        R                  " U5      (       a  [        U R                  U5      nXUXF4$  UR                  nUS:X  a  g UR                  5       R                  U/ 5      nU V	s/ s H=  n	U	R                   R"                  S;   d  M  U	R                   R$                  U	:X  d  M;  U	PM?     nn	U(       d  g  UR&                  n
U
R(                  nU Vs/ s H  oÌR*                  S   U:X  d  M  UPM     nnU(       a  Un[        U R                  U5      nUS   R                   nUR"                  S:X  a  [-        U5      S:X  a  g X^XF4$ ! [        [        4 a     g f = f! [         a     g f = f! [         a     g f = fs  sn	f s  snf ! [         a     N•f = f)Nz<lambda>)ÚfuncdefÚclassdefr   éÿÿÿÿr§   Úinstance)r¥   r™   ÚgetsourcefileÚOSErrorr¤   r   Úexistsr   r—   rœ   r   ÚgrammarrU   r£   Úget_used_namesÚgetÚparentrD   rt   Ú__code__Úco_firstlinenoru   r   )r'   rG   Úoriginal_objectr�   Úfile_ioÚmodule_nodeÚ
code_linesÚname_strÚnamesÚnÚcodeÚline_nrrt   Ú
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ˆ
Ø¨Ð<Ð<ðØ ×)Ñ)ˆð
 �:ÓØð ×&Ñ&Ó(×,Ñ,¨X°rÓ:€Eñ
 óÚˆaØ�8‰8�=‰=Ð3Ñ3ó 	
Ø89¿¹¿¹ÈÑ8J÷ 	
‘5ð 
ð ö ØðØ×%Ñ%ˆð
 ×%Ñ%ˆñ (-ÓM¢u˜t·±¸qÑ0AÀWÑ0L—d¡uˆ
ÐMö ØˆEä& ×'>Ñ'>ÀÓE€Jð �b‘	× Ñ €IØ‡~�~˜Ó"¤|°OÓ'DÈ
Ó'Rð Ø 7Ð6Ð6øôU ”YÐó áðûô ó ñ
 ðûô& ó áðüòùò" Nøô ó Ùðúsd   „!F2 ¶G ÂG ÃG(Ã5G(ÄG(Ä"G2 Ä>G-ÅG-Æ2GÇGÇ
GÇGÇ
G%Ç$G%Ç2
G?Ç>G?c           	      ó&  ^• TR                   R                  R                  n[        X5      nUcJ  [	        U5      [
        [        [        4;   a  [        T15      $ [        T5      nU(       d  [        T15      $ GOUu  pgp‰Ub  UR                  U:w  aœ  TR                  5       R                  5       n
U
R                  5       n[        UR                  S5      5      n[        XUUU	U
R!                  5       S9nUb&  U R"                  R%                  U[        U/5      5        UR'                  5       n[        UR)                  U5      15      nUR                  S:X  a%  TR+                  5       (       d  UR-                  5       n[        U4S jU 5       5      $ )NÚ.)rµ   Ústring_namesr·   Ú
is_packager¨   c              3   ó8   >#   • U  H  n[        TUS 9v •  M     g7f))r    N)r   )Ú.0r    r   s     €r"   Ú	<genexpr>Ú_create.<locals>.<genexpr>2  s   øé € ð â%ˆJô 	�N¨zÖ:Ú%ùs   ƒ)r   rB   rC   r¿   rD   Údictrr   Útupler
   r   r¾   r   Ú	get_valueÚ
py__name__Úsplitr   rÃ   Úmodule_cacheÚaddÚ
as_contextÚcreate_valuer{   Úexecute_with_values)r'   r   r„   rG   Úresultr‚   r¶   r¾   rµ   r·   Úroot_compiled_valuert   rÂ   Úmodule_values    `            r"   r€   r€     st  ø€ ð #×0Ñ0×7Ñ7×<Ñ<€MÜ# OÓC€FØ�~ä�Ó¤4¬¬uÐ"5Ó5Ü˜^Ð,Ó-Ð-ä˜nÓ-ˆÞÜ˜^Ð,Ó-Ð-ñ ð 7=Ñ3ˆ àÑ! ^×%=Ñ%=ÀÓ%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$   ).r\   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   Úobjectr8   r   rO   rN   rj   ÚCompiledValueFilterr&   r—   r¥   r¿   r€   rf   r$   r"   Ú<module>rä      sÒ   ðñó Ý å 3å Ý %Ý #Ý Ý ,ß GÑ GÝ ,÷!ç NÝ 5÷ñ ñ ‹H€	ôG
�,ô G
ôT*�?Ð$4ô *ô	Ð.°ô 	ôN�ô Nô:	
˜×4Ñ4ô 	
ñ  Ó!ñó "ðòò.O7ñd  Ó!ñ)ó "ñ)r$   