
    Mh,                         d dl Z d dlZd dlmZ d dlmZ d dlmZmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ d	Zd
Z	 dZ	 ddZd Zd Zd Zd Zd Zd dZd Zd Zd ZddZddZd Z d Z!	 d!dZ"	 d"dZ#dS )#    N)python_bytes_to_unicode)dbg)KnownContentFileIOFolderIO)SubModuleName)load_module_from_path)ParserTreeFilter)convert_names)z.toxz.venvz.mypy_cachevenv__pycache__i      c              #      K   | D ]S}||v rt          |t                    s|V  |j        dk    r(t          |                                |           E d {V  Td S )Nmodule)
isinstancer   api_type_resolve_namesgoto)definition_namesavoid_namesnames      Y/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/jedi/inference/references.pyr   r      s        E E; $.. 	 JJJ=H$$%diikk3CDDDDDDDDDE E    c                 4    t          d | D                       S )Nc              3   :   K   | ]}|j         |n|j         |fV  d S N)	tree_name.0ns     r   	<genexpr>z _dictionarize.<locals>.<genexpr>.   sH         k!q{A6     r   )dict)namess    r   _dictionarizer$   -   s0           r   c           	          t          | |          }t          |          D ]J}|t          t          |g|                                                                 d                    z  }K|t          t          ||j                            z  }t          |          D ]T}|j        dk    s|j	        |j	        j
        j        dk    r*|t          t          |j        |j                            z  }Ut          t          |                    S )NF)
only_stubsprefer_stub_to_compiledparamtrailer)_find_nameslistsetr
   get_root_contextis_stub_find_global_variablesvaluer   r   parenttype_add_names_in_same_contextparent_contextstring_namer   )module_contextr   found_namesr   s       r   _find_defining_namesr8   4   s   ni88K[!!  s=F0022::<<<$)
 
 
   	 3-k9?KKLLLK[!! ^ ^=G##t~'=>(-::s5d6I4K[\\]]]~k**+++r   c                     |                      |          }t          |                                          }|                    |           t          t	          |                    S r   )create_namer,   r   addr   )r6   r   r   r7   s       r   r*   r*   H   sR    %%i00Ddiikk""KOOD~k**+++r   c              #      K   | j         d S d }	 t          | |          }t          |                    |                    }|sd S |E d {V  t	          |d           }|d         j        }_)NT)r4   until_positionc                     | j         S r   )	start_pos)xs    r   <lambda>z,_add_names_in_same_context.<locals>.<lambda>^   s    ak r   )keyr   )	tree_noder	   r,   getsortedr?   )contextr5   r=   filter_r#   ordereds         r   r3   r3   P   s       N
."")
 
 
 GKK,,-- 	E$9$9::: -
.r   c              #   .  K   | D ]}|j         
|                                }	 |j        } |                                |          D ];}|V  |                    |j                   }t          ||j                  E d {V  <# t          $ r Y w xY wd S r   )r   r-   get_global_filterrD   create_contextr3   r5   AttributeError)r#   search_namer   r6   methodglobal_namecs          r   r/   r/   b   s       R R>!..00	R#5F  &vxx||K88 R R!!!!"11+2GHH5a9PQQQQQQQQQQR  	 	 	H	R Rs   B
BBFc                      j         }|j        }	 d|_        t           |          }d|_        n# d|_        w xY wt	          |           g}|sct          d |D                       D ]I}| k    rA|j        :|j        j        |	                                j
        v r|                    |           J|st          d |D                       r|}nt          |||          }i }	|D ]  j                                                            |g           D ]}
t	          t!           |
                    }t          fd|D                       r]                    |           |D ]D}|	                    |g           D ]}                    |           	 |	|= 5# t$          $ r Y Aw xY w|D ]+}|	                    |g                               |           ,ƌ                                }|r fd|D             S |S )NFTc              3   >   K   | ]}|                                 V  d S r   r-   )r   ds     r   r!   z"find_references.<locals>.<genexpr>   s.      ??aQ''))??????r   c              3   ,   K   | ]}|j         d k    V  dS )r(   N)r   r   s     r   r!   z"find_references.<locals>.<genexpr>   s)      HHqQZ72HHHHHHr   c              3       K   | ]}|v V  	d S r   r   )r   r   found_names_dcts     r   r!   z"find_references.<locals>.<genexpr>   s(      EEI9/EEEEEEr   c                 D    g | ]}|                                 k    |S r   rS   )r   r    r6   s     r   
<listcomp>z#find_references.<locals>.<listcomp>   s/    LLLaQ%7%7%9%9^%K%K%K%K%Kr   )inference_stater0   flow_analysis_enabledr8   r$   r,   rC   projectpath
py__file__parentsappendany#get_module_contexts_containing_nameget_used_namesrD   r*   updateKeyError
setdefaultvalues)r6   r   only_in_moduleinfrM   r7   module_contextsmpotential_modulesnon_matching_reference_maps	name_leafnewdctr   resultrW   s   `              @r   find_referencesrr   r   s   

(C/K)$)!*>9EE$(!!D!((((#K00O%&O *??;????? 	* 	*AN""q{'>(ALLNN,BBB&&q))) 
HHKHHHHH 
+?
 
 #%+ Q Q'1@@BBFF{TVWW 	Q 	QINI F FGGCEEEEEEEEE Q&&s+++!$  I:>>y"MM 4 4 (..s33337	BB#      Q QD/::4DDKKCPPPPQ	Q  ##%%F MLLLL6LLLLMs   1 	:F
F)	(F)	c                 >   	 |                                 }n# t          $ r Y d S w xY wt          |d          }|                    |          sd S t	          |j        |          }t          | |          }|                                rd S |                                S )Nreplace)errors)	readFileNotFoundErrorr   searchr   r]   r   is_compiled
as_context)rZ   file_ioregexcodenew_file_iork   s         r   	_check_fsr      s    ||~~   tt"4	:::D<< t$W\488Ko{;;A}} t<<>>s    
%%c                 (   t                      }t                      }|                                                                D ]}|r.|                    d          s|                    d          sd|v r3|                    dd                              d          }d|v rN|                    d          }|                    t          j	        
                    | j	        |                     |}|                    | j	        |f           ||fS )N   #   !   *zutf-8ignore/)r,   rv   
splitlines
startswithdecoderstriplstripr;   osr]   join)	folder_ior{   ignored_paths_absignored_paths_rellpr   s          r   gitignored_pathsr      s   \\^^&&(( 
: 
: 	ALL&& 	!,,t*<*< 			HHWh''..s33!8888C==D!!"',,y~t"D"DEEEED!!9>4"89999///r   c                 .    | j         fd|D             S )Nc                     h | ]C}                     |d                    t          j                            |d                   DS )r      )r   r   r]   r   )r   r   	curr_paths     r   	<setcomp>z/expand_relative_ignore_paths.<locals>.<setcomp>   sG    ```aYEYEYZ[\]Z^E_E_`BGLLAaD))```r   )r]   )r   relative_pathsr   s     @r   expand_relative_ignore_pathsr      s$    I````>````r   c              #   j  
K   t                    t                      }|                                 D ]|\  }}}|D ]D}|j        }|j        dv r
|vrd |fV  |j        dk    rt          ||          \  }}	|z  ||	z  }Et          ||          

fd|D             |d d <   |D ]} | d fV  	}d S )N)z.pyz.pyiz
.gitignorec                 n    g | ]1}|j         vr&|j         vr|                                t          v/|2S r   )r]   get_base_name_IGNORE_FOLDERS)r   r   except_pathsexcept_paths_relative_expandeds     r   rY   z9recurse_find_python_folders_and_files.<locals>.<listcomp>   sX     
 
 
~\11&DDD''))@@	  A@@r   )r,   walkr]   suffixr   r   r   )r   r   except_paths_relativeroot_folder_io
folder_iosfile_iosr{   r]   r   r   r   s    `        @r   %recurse_find_python_folders_and_filesr      s=     |$$LEE090@0@ " ",
H 	; 	;G<D{o--|++-'''yL((7G"G8 84!#4  11%)::%)E1*
 *
&
 
 
 
 
'
 
 

111 $ 	" 	"IT/!!!!	"5" "r   c              #   B   K   t          | |          D ]\  } }||V  d S r   )r   )r   r   r{   s      r   recurse_find_python_filesr      s>      CI|\\  	7MMM r   c              #     K   |                                  }t                      }d |D             }|D ]}|                                j        }||                                }	 |j        t          fd|D                       r|v rnJt          ||          D ]}|j        |vr|V  |                               |                                }qd S )Nc                 6    g | ]}|                                 S r   r^   r   rk   s     r   rY   z2_find_python_files_in_sys_path.<locals>.<listcomp>   s     ===Q\\^^===r   Tc              3   B   K   | ]}                     |          V  d S r   )r   )r   r   r]   s     r   r!   z1_find_python_files_in_sys_path.<locals>.<genexpr>  s/      <<atq))<<<<<<r   )	get_sys_pathr,   	get_valuer{   get_parent_folderr]   ra   r   r;   )	rZ   rj   sys_pathr   yielded_pathsr6   r{   r   r]   s	           @r   _find_python_files_in_sys_pathr      s     ++--H55L==_===M) 6 6 **,,4?--//		6>D<<<<8<<<<< @T@T4YMM " "<}44!MMMT"""!3355I	6 6 6r   c              #   |   K   d |D             }t          t          | j        j                  |          E d {V  d S )Nc                 6    g | ]}|                                 S r   r   r   s     r   rY   z)_find_project_modules.<locals>.<listcomp>  s     777!q||~~777r   )r   r   r\   r]   )rZ   rj   except_s      r   _find_project_modulesr     sP      77777G(/2I2N)O)OQXYYYYYYYYYYYr   r   c              #      K   |D ]}|                                 r|V  t          |          dk    rdS t          | |          }t          | |||          E d{V  dS )z
    Search a name in the directories of modules.

    :param limit_reduction: Divides the limits on opening/parsing files by this
        factor.
       N)limit_reduction)ry   lenr   search_in_file_ios)rZ   rj   r   r   r6   file_io_iterators         r   rb   rb     s       *  %%'' 	 4yyA~~
 -_oNN!/3CT2AC C C C C C C C C C C Cr   c              #   J  K   t           |z  }t          |z  }d}d}t          j        dt          j        |          z   |rdndz             }	|D ]U}
|dz  }t          | |
|	          }|"|dz  }|V  ||k    rt          d|            d S ||k    rt          d|            d S Vd S )Nr   z\b r   zHit limit of parsed files: %szHit limit of opened files: %s)_PARSED_FILE_LIMIT_OPENED_FILE_LIMITrecompileescaper   r   )rZ   r   r   r   completeparse_limit
open_limitfile_io_countparsed_file_countr|   r{   rk   s               r   r   r   ,  s      $6K#o5JMJury.2L##uMNNE#  ow66="GGG K//3[AAAJ&&/<<<EE ' r   )r   )F)r   )r   F)$r   r   parsor   
jedi.debugr   jedi.file_ior   r   jedi.inference.namesr   jedi.inference.importsr   jedi.inference.filtersr	   !jedi.inference.gradual.conversionr
   r   r   r   r   r$   r8   r*   r3   r/   rr   r   r   r   r   r   r   r   rb   r   r   r   r   <module>r      s   				 				 ) ) ) ) ) )       5 5 5 5 5 5 5 5 . . . . . . 8 8 8 8 8 8 3 3 3 3 3 3 ; ; ; ; ; ;I   E E E E   , , ,(, , ,. . .$R R R 3 3 3 3l  0 0 0&a a a
" " " "D   6 6 6*Z Z Z 9:C C C C8 49     r   