uBFj,ddlZddlZddlmZddlmZddlmZmZddl m Z ddl m Z ddl mZddlmZd Zd Z d Z dd ZdZdZdZdZdZd dZdZdZdZddZddZdZ dZ! d!dZ" d"dZ#dS)#N)python_bytes_to_unicode)dbg)KnownContentFileIOFolderIO) SubModuleName)load_module_from_path)ParserTreeFilter) convert_names)z.toxz.venvz .mypy_cachevenv __pycache__ic#K|D]S}||vrt|ts|V|jdkr(t||Ed{VTdS)Nmodule) isinstancerapi_type_resolve_namesgoto)definition_names avoid_namesnames GC:\PYTHON\_runtimes\venv\Lib\site-packages\jedi/inference/references.pyrrs E E ;   $ .. JJJ =H $ $%diikk3CDD D D D D D D D E Ec4td|DS)Nc3:K|]}|j|n|j|fVdSN) tree_name.0ns r z _dictionarize...sH k!q{A6r)dict)namess r _dictionarizer$-s0   rc  t||}t|D]J}|tt|g| dz}K|tt ||jz}t|D]T}|jdks|j |j j j dkr*|tt|j |jz}Utt|S)NF) only_stubsprefer_stub_to_compiledparamtrailer) _find_nameslistsetr get_root_contextis_stub_find_global_variablesvaluerrparenttype_add_names_in_same_contextparent_context string_namer)module_contextr found_namesrs r_find_defining_namesr84sni88K[!!  s= F0022::<<<$)      3-k9?KKLLLK[!!^^ =G # #t~'=>(-:: s5d6I4K[\\]]] ~k** + ++rc||}t|}||tt |Sr) create_namer,raddr)r6rrr7s rr*r*HsR  % %i 0 0Ddiikk""KOOD ~k** + ++rc#K|jdSd} t||}t||}|sdS|Ed{Vt |d}|dj}_)NT)r4until_positionc|jSr) start_pos)xs rz,_add_names_in_same_context..^sakr)keyr) tree_noder r,getsortedr?)contextr5r=filter_r#ordereds rr3r3Ps N ."")   GKK ,,--  E$9$9::: - .rc#.K|D]}|j |} |j}||D];}|V||j}t ||jEd{V<#t$rYwxYwdSr)rr-get_global_filterrDcreate_contextr3r5AttributeError)r# search_namerr6method global_namecs rr/r/bs R R > ! ..00 R#5F &vxx||K88 R R !!!!"11+2GHH5a9PQQQQQQQQQQ R    H  R RsB BBFcj}|j} d|_t|}d|_n #d|_wxYwt |g}|sct d|DD]I}|krA|j:|jj| j vr| |J|std|Dr|}nt|||}i} |D]j|gD]} t t!| } tfd| Dr]| | D]D}| |gD]} |  | |=5#t$$rYAwxYw| D]+} | | g | ,ƌ}|rfd|DS|S)NFTc3>K|]}|VdSrr-)rds rr!z"find_references..s.??aQ''))??????rc3,K|]}|jdkVdS)r(N)rrs rr!z"find_references..s)HHqQZ72HHHHHHrc3 K|]}|vV dSrr)rrfound_names_dcts rr!z"find_references..s(EEI9/EEEEEErcDg|]}|k|SrrS)rr r6s r z#find_references..s/LLLaQ%7%7%9%9^%K%K%K%K%Kr)inference_stater0flow_analysis_enabledr8r$r,rCprojectpath py__file__parentsappendany#get_module_contexts_containing_nameget_used_namesrDr*updateKeyError setdefaultvalues)r6ronly_in_moduleinfrMr7module_contextsmpotential_modulesnon_matching_reference_maps name_leafnewdctrresultrWs` @rfind_referencesrrrs  (C/K)$)!*>9EE $(!!D!((((#K00O%&O *??;????? * *AN""q{'> (ALLNN,BBB&&q))) HHKHHHHH +?      #%+QQ'1@@BBFF{TVWW Q QI NI F FGGCEEEEEEEEE Q&&s+++!$I:>>y"MM44(..s33337 BB# QQD/::4DDKKCPPPPQ Q  # # % %FMLLLL6LLLL Ms1 :F F) (F) c> |}n#t$rYdSwxYwt|d}||sdSt |j|}t ||}|rdS|S)Nreplace)errors) readFileNotFoundErrorrsearchrr]r is_compiled as_context)rZfile_ioregexcode new_file_iorks r _check_fsrs||~~ tt "4 : : :D <<  t$W\488Ko{;;A}}t <<>>s  %%c(t}t}|D]}|r.|ds|dsd|vr3|ddd}d|vrN|d}|tj |j ||}||j |f||fS)N#!*zutf-8ignore/) r,rv splitlines startswithdecoderstriplstripr;osr]join) folder_ior{ignored_paths_absignored_paths_rellprs rgitignored_pathsrs \\^^ & & ( ( : : ALL&& !,,t*<*<   HHWh ' ' . .s 3 3 !8888C==D  ! !"',,y~t"D"D E E E ED  ! !9>4"8 9 9 9 9 / //rc.|jfd|DS)Nch|]C}|dtj|dDS)r)rrr]r)rr curr_paths r z/expand_relative_ignore_paths..sG ` ` `aYEYEYZ[\]Z^E_E_ `BGLLAaD ) ) ` ` `r)r])rrelative_pathsrs @rexpand_relative_ignore_pathsrs$I ` ` ` `> ` ` ``rc#j Ktt}|D]|\}}}|D]D}|j}|jdvr |vrd|fV|jdkrt ||\}} |z|| z}Et ||  fd|D|dd<|D]}|dfV }dS)N)z.pyz.pyiz .gitignorecng|]1}|jvr&|jvr|tv/|2Sr)r] get_base_name_IGNORE_FOLDERS)rr except_pathsexcept_paths_relative_expandeds rrYz9recurse_find_python_folders_and_files..sX   ~\11&DDD''))@@ A@@r)r,walkr]suffixrrr) rrexcept_paths_relativeroot_folder_io folder_iosfile_iosr{r]rrrs ` @r%recurse_find_python_folders_and_filesrs=|$$LEE090@0@"", H ; ;GCI|\\ 7  MMMrc#K|}t}d|D}|D]}|j}||} |jt fd|Dr|vrnJt||D]}|j|vr|V||}qdS)Nc6g|]}|Srr^rrks rrYz2_find_python_files_in_sys_path..s ===Q\\^^===rTc3BK|]}|VdSr)r)rrr]s rr!z1_find_python_files_in_sys_path..s/<D<<<<8<<<<<  @T@T4Y MM " "<}44!MMM   T " " "!3355I 666rc#|Kd|D}tt|jj|Ed{VdS)Nc6g|]}|Srrrs rrYz)_find_project_modules.. s 777!q||~~777r)rrr\r])rZrjexcept_s r_find_project_modulesr sP77777G(/2I2N)O)OQXYYYYYYYYYYYrrc#K|D]}|r|Vt|dkrdSt||}t||||Ed{VdS)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)rylenrsearch_in_file_ios)rZrjrrr6file_io_iterators rrbrbs*  % % ' '   4yyA~~ -_oNN!/3CT2ACCCCCCCCCCCCrc#JKt|z }t|z }d}d}tjdtj|z|rdndz} |D]U} |dz }t || | } | "|dz }| V||krt d|dS||krt d|dSVdS)Nrz\brzHit limit of parsed files: %szHit limit of opened files: %s)_PARSED_FILE_LIMIT_OPENED_FILE_LIMITrecompileescaperr) rZrrrcomplete parse_limit open_limit file_io_countparsed_file_countr|r{rks rrr,s$6K#o5JM Jury.2L##uM N NE#   ow 6 6 =  " GGG K//3[AAA J & & / < < < EE '  r)r)F)r)rF)$rrparsor jedi.debugr jedi.file_iorrjedi.inference.namesrjedi.inference.importsrjedi.inference.filtersr !jedi.inference.gradual.conversionr rrrrr$r8r*r3r/rrrrrrrrrrbrrrrrs ))))))55555555......888888333333;;;;;;I  E E E E ,,,(,,,...$ R R R 3333l   000&aaa """"D 666*ZZZ 9:CCCC849r