1
# queries to do with module/class/function relationships
2
from __future__ import generators
3
from bike.globals import *
4
from getTypeOf import getTypeOf, getTypeOfExpr
5
from bike.parsing.newstuff import generateModuleFilenamesInPythonPath, generateModuleFilenamesInPackage, getPythonPath
6
from bike.parsing.pathutils import getPackageBaseDirectory
7
from bike.query.common import MatchFinder, walkLinesContainingStrings, getScopeForLine
9
from bike.parsing.fastparserast import Module
12
def getRootClassesOfHierarchy(klass):
13
if klass is None: # i.e. dont have base class in our ast
15
if klass.getBaseClassNames() == []: # i.e. is a root class
19
for base in klass.getBaseClassNames():
20
baseclass = getTypeOf(klass,base)
21
rootclass = getRootClassesOfHierarchy(baseclass)
22
if rootclass is None: # base class not in our ast
24
rootclasses+=rootclass