/* Ċ Ġ* ĠCopyright Ġ 2 0 0 0 - 2 0 1 6 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . jetbrains . python . psi . resolve Ċ Ċ import Ġcom . intellij . openapi . module . Module Ċ import Ġcom . intellij . openapi . project Roots . Sdk Ċ import Ġcom . intellij . psi . Psi Directory Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . Psi Manager Ċ import Ġcom . jetbrains . python . Py Names Ċ import Ġcom . jetbrains . python . console . Py dev Console Runner Ċ import Ġcom . jetbrains . python . psi . Py Util Ċ Ċ data Ġclass ĠPy QualifiedName Resolve Context Impl ( private Ġval Ġpsi Manager : ĠPsi Manager , Ġprivate Ġval Ġmodule : ĠModule ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġfoo th old : ĠPsi Element ?, Ġprivate Ġval Ġsdk : ĠS dk ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġrelative Level Ġ: ĠInt Ġ= Ġ- 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġwithout Roots Ġ: ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġwithout Foreign : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġwith Members Ġ: ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġwith Plain Directories Ġ: ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġwithout Stub s : ĠBoolean Ġ= Ġfalse ) Ġ: ĠPy QualifiedName Resolve Context Ġ{ ĊĠ Ġoverride Ġfun Ġget F ooth old () Ġ= Ġfoo th old ĊĊĠ Ġoverride Ġfun Ġget Relative Level () Ġ= Ġrelative Level ĊĊĠ Ġoverride Ġfun Ġget Sdk () Ġ= Ġsdk ĊĊĠ Ġoverride Ġfun Ġget Module () Ġ= Ġmodule ĊĊĠ Ġoverride Ġfun Ġget Project () Ġ= Ġpsi Manager . project ĊĊĠ Ġoverride Ġfun Ġget Without Roots () Ġ= Ġwithout Roots ĊĊĠ Ġoverride Ġfun Ġget Without Foreign () Ġ= Ġwithout Foreign ĊĊĠ Ġoverride Ġfun Ġget Psi Manager () Ġ= Ġpsi Manager ĊĊĠ Ġoverride Ġfun Ġget With Members () Ġ= Ġwith Members ĊĊĠ Ġoverride Ġfun Ġget With Plain Directories () Ġ= Ġwith Plain Directories ĊĊĠ Ġoverride Ġfun Ġget Without Stub s () Ġ= Ġwithout Stub s ĊĊĠ Ġoverride Ġfun Ġget Effective Sdk () Ġ= Ġif Ġ( visit All Modules ) ĠPy dev Console Runner . get Console Sdk ( foo th old ) Ġelse Ġsdk ĊĊĠ Ġoverride Ġfun ĠisValid () Ġ= Ġfoo th old File ?. isValid Ġ?: Ġtrue ĊĊĠ Ġoverride Ġfun Ġcopy Without Foreign () Ġ= Ġcopy ( without Foreign Ġ= Ġtrue ) ĊĊĠ Ġoverride Ġfun Ġcopy With Members () Ġ= Ġcopy ( with Members Ġ= Ġtrue ) ĊĊĠ Ġoverride Ġfun Ġcopy With Plain Directories () Ġ= Ġcopy ( with Plain Directories Ġ= Ġtrue ) ĊĊĠ Ġoverride Ġfun Ġcopy With Relative ( relative Level Ġ: ĠInt ) Ġ= Ġcopy ( relative Level Ġ= Ġrelative Level ) ĊĊĠ Ġoverride Ġfun Ġcopy Without Roots () Ġ= Ġcopy ( without Roots Ġ= Ġtrue ) ĊĊĠ Ġoverride Ġfun Ġcopy With Roots () Ġ= Ġcopy ( without Roots Ġ= Ġfalse ) ĊĊĠ Ġoverride Ġfun Ġcopy Without Stub s () Ġ= Ġcopy ( without Stub s Ġ= Ġtrue ) ĊĊĠ Ġoverride Ġfun Ġget Containing Directory (): ĠPsi Directory ? Ġ{ ĊĠĠĠ Ġval Ġfile Ġ= Ġfoo th old File Ġ?: Ġreturn Ġnull ĊĠĠĠ Ġreturn Ġif Ġ( relative Level Ġ> Ġ 0 ) ĠResolve Import Util . step Back From ( file , Ġrelative Level ) Ġelse Ġfile . containing Directory ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget F ooth old File () Ġ= Ġwhen Ġ( foo th old ) Ġ{ ĊĠĠĠ Ġis ĠPsi Directory Ġ-> Ġfoo th old . find File ( Py Names . INIT _ DOT _ PY ) ĊĠĠĠ Ġelse Ġ-> Ġfoo th old ?. containing File ?. original File ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Visit All Modules (): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġfile Ġ= Ġfoo th old ĊĠĠĠ Ġreturn Ġfile Ġ!= Ġnull Ġ&& Ġ( Py dev Console Runner . isIn Py dev Console ( file ) Ġ|| ĠPy Util . isIn Scratch File ( file )) ĊĠ Ġ} Ċ }