Beispiel #1
0
def inferClass(fullPath, origSource, origLineNo, PYSMELLDICT, vim=None):
    klass, parents = getClassAndParents(origSource, origLineNo)

    # replace POINTERS with their full reference
    for index, parent in enumerate(parents[:]):
        parents[index] = _qualify(parent, PYSMELLDICT)

    pathParts = _getPathParts(fullPath)
    fullKlass = klass
    while pathParts:
        fullKlass = "%s.%s" % (pathParts.pop(), fullKlass)
        if fullKlass in PYSMELLDICT['CLASSES'].keys():
            break
    else:
        # we don't know about this class, look in the file system
        path, filename = os.path.split(fullPath)
        packages = findRootPackageList(path, filename)
        fullKlass = "%s.%s.%s" % (".".join(packages), filename[:-3], klass)
        
    return fullKlass, parents
Beispiel #2
0
def inferInstance(fullPath, AST, lineNo, var, PYSMELLDICT):
    names, klasses = getNames(AST)
    assignment = names.get(var, None)
    klass = None
    parents = []
    if assignment:
        possibleMatch = funcCellRE.match(assignment)
        if possibleMatch:
            klass = possibleMatch.groups(1)[0]
            if klass in klasses:
                path, filename = os.path.split(fullPath)
                packages = findRootPackageList(path, filename)
                if packages:
                    packagesStr = (".".join(packages)) + "."
                else:
                    packagesStr = ""
                klass = "%s%s.%s" % (packagesStr, filename[:-3], klass)
            else:
                klass = _qualify(names.get(klass, klass), PYSMELLDICT)
            parents = PYSMELLDICT['CLASSES'].get(klass, {'bases': []})['bases']

    return klass, parents
Beispiel #3
0
def inferInstance(fullPath, AST, lineNo, var, PYSMELLDICT):
    names, klasses = getNames(AST)
    assignment = names.get(var, None)
    klass = None
    parents = []
    if assignment:
        possibleMatch = funcCellRE.match(assignment)
        if possibleMatch:
            klass = possibleMatch.groups(1)[0]
            if klass in klasses:
                path, filename = os.path.split(fullPath)
                packages = findRootPackageList(path, filename)
                if packages:
                    packagesStr = (".".join(packages)) + "."
                else:
                    packagesStr = ""
                klass = "%s%s.%s" % (packagesStr, filename[:-3], klass)
            else:
                klass = _qualify(names.get(klass, klass), PYSMELLDICT)
            parents = PYSMELLDICT['CLASSES'].get(klass, {'bases': []})['bases']

    return klass, parents
Beispiel #4
0
def inferClass(fullPath, AST, origLineNo, PYSMELLDICT, vim=None):
    klass, parents = getClassAndParents(AST, origLineNo)

    # replace POINTERS with their full reference
    for index, parent in enumerate(parents[:]):
        parents[index] = _qualify(parent, PYSMELLDICT)

    pathParts = _getPathParts(fullPath)
    fullKlass = klass
    while pathParts:
        fullKlass = "%s.%s" % (pathParts.pop(), fullKlass)
        if fullKlass in list(PYSMELLDICT['CLASSES'].keys()):
            break
    else:
        # we don't know about this class, look in the file system
        path, filename = os.path.split(fullPath)
        packages = findRootPackageList(path, filename)
        if packages:
            packagesStr = (".".join(packages)) + "."
        else:
            packagesStr = ""
        fullKlass = "%s%s.%s" % (packagesStr, filename[:-3], klass)

    return fullKlass, parents