Source

rope / rope / base / pynamesdef.py

Full commit
Ali Gholami Rudi 07efce3 
Ali Gholami Rudi 208ca7c 















Ali Gholami Rudi 07efce3 
Ali Gholami Rudi 208ca7c 




























Ali Gholami Rudi 07efce3 
Ali Gholami Rudi 208ca7c 




import rope.base.oi.soi
from rope.base import pynames
from rope.base.pynames import *


class AssignedName(pynames.AssignedName):

    def __init__(self, lineno=None, module=None, pyobject=None):
        self.lineno = lineno
        self.module = module
        self.assignments = []
        self.pyobject = _Inferred(self._get_inferred,
                                  pynames._get_concluded_data(module))
        self.pyobject.set(pyobject)

    def _get_inferred(self):
        if self.module is not None:
            return rope.base.oi.soi.infer_assigned_object(self)

    def get_object(self):
        return self.pyobject.get()

    def get_definition_location(self):
        """Returns a (module, lineno) tuple"""
        if self.lineno is None and self.assignments:
            self.lineno = self.assignments[0].get_lineno()
        return (self.module, self.lineno)

    def invalidate(self):
        """Forget the `PyObject` this `PyName` holds"""
        self.pyobject.set(None)


class ParameterName(pynames.ParameterName):

    def __init__(self, pyfunction, index):
        self.pyfunction = pyfunction
        self.index = index

    def get_object(self):
        result = self.pyfunction.get_parameter(self.index)
        if result is None:
            result = rope.base.pyobjects.get_unknown()
        return result

    def get_objects(self):
        """Returns the list of objects passed as this parameter"""
        return rope.base.oi.soi.get_passed_objects(
            self.pyfunction, self.index)

    def get_definition_location(self):
        return (self.pyfunction.get_module(), self.pyfunction.get_ast().lineno)

_Inferred = pynames._Inferred