diff --git a/rope/base/arguments.py b/rope/base/arguments.py index 12a626816..3bc2afcd8 100644 --- a/rope/base/arguments.py +++ b/rope/base/arguments.py @@ -100,7 +100,7 @@ def _is_method_call(primary, pyfunction): pyobject = primary.get_object() if ( isinstance(pyobject.get_type(), rope.base.pyobjects.PyClass) - and isinstance(pyfunction, rope.base.pyobjects.PyFunction) + and isinstance(pyfunction, rope.base.pyobjects.PyFunctionStub) and isinstance(pyfunction.parent, rope.base.pyobjects.PyClass) ): return True diff --git a/rope/base/builtins.py b/rope/base/builtins.py index a5c3bc981..09b707083 100644 --- a/rope/base/builtins.py +++ b/rope/base/builtins.py @@ -7,6 +7,7 @@ arguments, ast, pynames, + pynamesdef, pyobjects, utils, ) @@ -172,7 +173,7 @@ def __init__(self, argnames, args): self.args = args def _get_scope_and_pyname(self, pyname): - if pyname is not None and isinstance(pyname, pynames.AssignedName): + if pyname is not None and isinstance(pyname, pynamesdef.AssignedName): pymodule, lineno = pyname.get_definition_location() if pymodule is None: return None, None diff --git a/rope/base/evaluate.py b/rope/base/evaluate.py index f079bac7f..120f7e1a6 100644 --- a/rope/base/evaluate.py +++ b/rope/base/evaluate.py @@ -9,6 +9,7 @@ ast, nameanalyze, exceptions, + pynamesdef, pyobjects, pyobjectsdef, worder, @@ -102,7 +103,7 @@ def get_primary_and_pyname_at( parameter_name = pyobject.get_parameters().get(keyword_name, None) return (None, parameter_name) elif isinstance(pyobject, pyobjects.AbstractFunction): - parameter_name = rope.base.pynames.ParameterName() + parameter_name = rope.base.pynames.ParameterNameStub() return (None, parameter_name) # class body if self._is_defined_in_class_body(holding_scope, offset, lineno): @@ -367,7 +368,7 @@ def _get_evaluated_names(targets, assigned, module, evaluation, lineno): for name, levels in nameanalyze.get_name_levels(targets): assignment = rope.base.pynames.AssignmentValue(assigned, levels, evaluation) # XXX: this module should not access `rope.base.pynamesdef`! - pyname = rope.base.pynamesdef.AssignedName(lineno, module) + pyname = pynamesdef.AssignedName(lineno, module) pyname.assignments.append(assignment) result[name] = pyname return result diff --git a/rope/base/oi/soa.py b/rope/base/oi/soa.py index ba28449ea..fc3fabb03 100644 --- a/rope/base/oi/soa.py +++ b/rope/base/oi/soa.py @@ -75,7 +75,7 @@ def _args_with_self(self, primary, self_pyname, pyfunction, node): return arguments.MixedArguments(self_pyname, base_args, self.scope) def _call(self, pyfunction, args): - if isinstance(pyfunction, pyobjects.PyFunction): + if isinstance(pyfunction, pyobjects.PyFunctionStub): if self.follow is not None: before = self._parameter_objects(pyfunction) self.pycore.object_info.function_called( diff --git a/rope/base/oi/transform.py b/rope/base/oi/transform.py index 968e70b25..f839d2f45 100644 --- a/rope/base/oi/transform.py +++ b/rope/base/oi/transform.py @@ -271,7 +271,7 @@ def defined_to_pyobject(self, textual): result = self._function_to_pyobject(textual) else: result = self._class_to_pyobject(textual) - if not isinstance(result, rope.base.pyobjects.PyModule): + if not isinstance(result, rope.base.pyobjects.PyModuleStub): return result def _find_occurrence(self, name, source): diff --git a/rope/base/oi/type_hinting/utils.py b/rope/base/oi/type_hinting/utils.py index 37a2568b6..587a32d52 100644 --- a/rope/base/oi/type_hinting/utils.py +++ b/rope/base/oi/type_hinting/utils.py @@ -4,7 +4,7 @@ import rope.base.utils as base_utils from rope.base import evaluate from rope.base.exceptions import AttributeNotFoundError -from rope.base.pyobjects import PyClass, PyDefinedObject, PyFunction, PyObject +from rope.base.pyobjects import PyClass, PyDefinedObject, PyFunctionStub, PyObject def get_super_func(pyfunc): @@ -18,7 +18,7 @@ def get_super_func(pyfunc): except AttributeNotFoundError: pass else: - if isinstance(superfunc, PyFunction): + if isinstance(superfunc, PyFunctionStub): return superfunc @@ -48,7 +48,7 @@ def get_class_with_attr_name(pyname): pyobject = holding_scope.pyobject if isinstance(pyobject, PyClass): pyclass = pyobject - elif isinstance(pyobject, PyFunction) and isinstance(pyobject.parent, PyClass): + elif isinstance(pyobject, PyFunctionStub) and isinstance(pyobject.parent, PyClass): pyclass = pyobject.parent else: return diff --git a/rope/base/pynames.py b/rope/base/pynames.py index 84a6e2389..e749ac23f 100644 --- a/rope/base/pynames.py +++ b/rope/base/pynames.py @@ -34,7 +34,7 @@ def get_definition_location(self): return (self.pyobject.get_module(), lineno) -class AssignedName(PyName): +class AssignedNameStub(PyName): """Only a placeholder""" @@ -99,7 +99,7 @@ def invalidate(self): self.pyobject.set(None) -class ParameterName(PyName): +class ParameterNameStub(PyName): """Only a placeholder""" diff --git a/rope/base/pynamesdef.py b/rope/base/pynamesdef.py index ffbfb8e3c..5476325fb 100644 --- a/rope/base/pynamesdef.py +++ b/rope/base/pynamesdef.py @@ -1,15 +1,16 @@ -import rope.base.oi.soi -from rope.base import pynames -from rope.base.pynames import * +import rope.base +from rope.base import pynames, utils +from rope.base.pynames import _get_concluded_data, _Inferred -class AssignedName(pynames.AssignedName): +class AssignedName(pynames.AssignedNameStub): 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._get_inferred, + _get_concluded_data(module), ) self.pyobject.set(pyobject) @@ -35,7 +36,7 @@ def invalidate(self): self.pyobject.set(None) -class ParameterName(pynames.ParameterName): +class ParameterName(pynames.ParameterNameStub): def __init__(self, pyfunction, index): self.pyfunction = pyfunction self.index = index @@ -52,6 +53,3 @@ def get_objects(self): def get_definition_location(self): return (self.pyfunction.get_module(), self.pyfunction.get_ast().lineno) - - -_Inferred = pynames._Inferred diff --git a/rope/base/pyobjects.py b/rope/base/pyobjects.py index 62702e7a3..82a34d89d 100644 --- a/rope/base/pyobjects.py +++ b/rope/base/pyobjects.py @@ -258,11 +258,11 @@ def _create_scope(self): pass -class PyFunction(PyDefinedObject, AbstractFunction): +class PyFunctionStub(PyDefinedObject, AbstractFunction): """Only a placeholder""" -class PyComprehension(PyDefinedObject, PyObject): +class PyComprehensionBase(PyDefinedObject, PyObject): """Only a placeholder""" def get_name(self): @@ -316,11 +316,11 @@ def get_resource(self): return self.resource -class PyModule(_PyModule): +class PyModuleStub(_PyModule): """Only a placeholder""" -class PyPackage(_PyModule): +class PyPackageStub(_PyModule): """Only a placeholder""" diff --git a/rope/base/pyobjectsdef.py b/rope/base/pyobjectsdef.py index b87d2462a..fde8d0db8 100644 --- a/rope/base/pyobjectsdef.py +++ b/rope/base/pyobjectsdef.py @@ -5,6 +5,7 @@ import rope.base.oi.soi import rope.base.pyscopes from rope.base import ( + pynames, pynamesdef, exceptions, ast, @@ -16,15 +17,15 @@ ) -class PyFunction(pyobjects.PyFunction): +class PyFunction(pyobjects.PyFunctionStub): def __init__(self, pycore, ast_node, parent): rope.base.pyobjects.AbstractFunction.__init__(self) rope.base.pyobjects.PyDefinedObject.__init__(self, pycore, ast_node, parent) self.arguments = self.ast_node.args - self.parameter_pyobjects = pynamesdef._Inferred( + self.parameter_pyobjects = pynames._Inferred( self._infer_parameters, self.get_module()._get_concluded_data() ) - self.returned = pynamesdef._Inferred(self._infer_returned) + self.returned = pynames._Inferred(self._infer_returned) self.parameter_pynames = None def _create_structural_attributes(self): @@ -111,7 +112,7 @@ def decorators(self): return getattr(self.ast_node, "decorators", None) -class PyComprehension(pyobjects.PyComprehension): +class PyComprehension(pyobjects.PyComprehensionBase): def __init__(self, pycore, ast_node, parent): self.visitor_class = _ComprehensionVisitor rope.base.pyobjects.PyObject.__init__(self, type_="Comp") @@ -164,7 +165,7 @@ def _create_scope(self): return rope.base.pyscopes.ClassScope(self.pycore, self) -class PyModule(pyobjects.PyModule): +class PyModule(pyobjects.PyModuleStub): def __init__(self, pycore, source=None, resource=None, force_errors=False): ignore = pycore.project.prefs.get("ignore_syntax_errors", False) syntax_errors = force_errors or not ignore @@ -230,7 +231,7 @@ def get_name(self): return rope.base.libutils.modname(self.resource) if self.resource else "" -class PyPackage(pyobjects.PyPackage): +class PyPackage(pyobjects.PyPackageStub): def __init__(self, pycore, resource=None, force_errors=False): self.resource = resource init_dot_py = self._get_init_dot_py() @@ -251,7 +252,7 @@ def _create_structural_attributes(self): if self.resource is None: return result for name, resource in self._get_child_resources().items(): - result[name] = pynamesdef.ImportedModule(self, resource=resource) + result[name] = pynames.ImportedModule(self, resource=resource) return result def _create_concluded_attributes(self): @@ -307,7 +308,7 @@ def _assigned(self, name, assignment=None): self.scope_visitor._assigned(name, assignment) def _Name(self, node): - assignment = pynamesdef.AssignmentValue( + assignment = pynames.AssignmentValue( self.assigned_ast, assign_type=True, type_hint=self.type_hint ) self._assigned(node.id, assignment) @@ -317,7 +318,7 @@ def _Tuple(self, node): for name, levels in names: assignment = None if self.assigned_ast is not None: - assignment = pynamesdef.AssignmentValue(self.assigned_ast, levels) + assignment = pynames.AssignmentValue(self.assigned_ast, levels) self._assigned(name, assignment) def _Annotation(self, node): @@ -377,7 +378,7 @@ def _assigned(self, name, assignment=None): def _Name(self, node): assignment = None if self.assigned_ast is not None: - assignment = pynamesdef.AssignmentValue(self.assigned_ast) + assignment = pynames.AssignmentValue(self.assigned_ast) self._assigned(node.id, assignment) def _Tuple(self, node): @@ -385,7 +386,7 @@ def _Tuple(self, node): for name, levels in names: assignment = None if self.assigned_ast is not None: - assignment = pynamesdef.AssignmentValue(self.assigned_ast, levels) + assignment = pynames.AssignmentValue(self.assigned_ast, levels) self._assigned(name, assignment) def _Attribute(self, node): @@ -414,7 +415,7 @@ def get_module(self): def _ClassDef(self, node): pyclass = PyClass(self.pycore, node, self.owner_object) - self.names[node.name] = pynamesdef.DefinedName(pyclass) + self.names[node.name] = pynames.DefinedName(pyclass) self.defineds.append(pyclass) def _FunctionDef(self, node): @@ -423,7 +424,7 @@ def _FunctionDef(self, node): if isinstance(decorator, ast.Name) and decorator.id == "property": if isinstance(self, _ClassVisitor): type_ = rope.base.builtins.Property(pyfunction) - arg = pynamesdef.UnboundName( + arg = pynames.UnboundName( rope.base.pyobjects.PyObject(self.owner_object) ) @@ -434,12 +435,12 @@ def _eval(type_=type_, arg=arg): lineno = utils.guess_def_lineno(self.get_module(), node) - self.names[node.name] = pynamesdef.EvaluatedName( + self.names[node.name] = pynames.EvaluatedName( _eval, module=self.get_module(), lineno=lineno ) break else: - self.names[node.name] = pynamesdef.DefinedName(pyfunction) + self.names[node.name] = pynames.DefinedName(pyfunction) self.defineds.append(pyfunction) def _AsyncFunctionDef(self, node): @@ -476,12 +477,12 @@ def _update_evaluated( ): result = {} if isinstance(targets, str): - assignment = pynamesdef.AssignmentValue(assigned, [], evaluation, eval_type) + assignment = pynames.AssignmentValue(assigned, [], evaluation, eval_type) self._assigned(targets, assignment) else: names = nameanalyze.get_name_levels(targets) for name, levels in names: - assignment = pynamesdef.AssignmentValue( + assignment = pynames.AssignmentValue( assigned, levels, evaluation, eval_type ) self._assigned(name, assignment) @@ -519,11 +520,11 @@ def _Import(self, node): alias = import_pair.asname first_package = module_name.split(".")[0] if alias is not None: - imported = pynamesdef.ImportedModule(self.get_module(), module_name) + imported = pynames.ImportedModule(self.get_module(), module_name) if not self._is_ignored_import(imported): self.names[alias] = imported else: - imported = pynamesdef.ImportedModule(self.get_module(), first_package) + imported = pynames.ImportedModule(self.get_module(), first_package) if not self._is_ignored_import(imported): self.names[first_package] = imported @@ -531,7 +532,7 @@ def _ImportFrom(self, node): level = 0 if node.level: level = node.level - imported_module = pynamesdef.ImportedModule( + imported_module = pynames.ImportedModule( self.get_module(), node.module or "", level, @@ -547,7 +548,7 @@ def _ImportFrom(self, node): alias = imported_name.asname if alias is not None: imported = alias - self.names[imported] = pynamesdef.ImportedName( + self.names[imported] = pynames.ImportedName( imported_module, imported_name.name ) @@ -636,7 +637,7 @@ def _Attribute(self, node): pyname = self.scope_visitor.names[node.attr] if isinstance(pyname, pynamesdef.AssignedName): pyname.assignments.append( - pynamesdef.AssignmentValue(self.assigned_ast) + pynames.AssignmentValue(self.assigned_ast) ) def _Tuple(self, node): @@ -670,5 +671,5 @@ def get_names(self): imported = self.imported_module.get_object() for name in imported: if not name.startswith("_"): - result[name] = pynamesdef.ImportedName(self.imported_module, name) + result[name] = pynames.ImportedName(self.imported_module, name) return result diff --git a/rope/base/pyscopes.py b/rope/base/pyscopes.py index f3c093d1a..082f0263c 100644 --- a/rope/base/pyscopes.py +++ b/rope/base/pyscopes.py @@ -4,6 +4,7 @@ codeanalyze, exceptions, pynames, + pynamesdef, utils, ) from rope.refactor import patchedast @@ -253,7 +254,7 @@ def get_kind(self): def invalidate_data(self): for pyname in self.get_names().values(): - if isinstance(pyname, (pynames.AssignedName, pynames.EvaluatedName)): + if isinstance(pyname, (pynamesdef.AssignedName, pynames.EvaluatedName)): pyname.invalidate() diff --git a/rope/contrib/autoimport/pickle.py b/rope/contrib/autoimport/pickle.py index ef733947a..369587436 100644 --- a/rope/contrib/autoimport/pickle.py +++ b/rope/contrib/autoimport/pickle.py @@ -17,6 +17,7 @@ exceptions, libutils, pynames, + pynamesdef, pyobjects, resourceobserver, resources, @@ -196,7 +197,7 @@ def _add_names(self, pymodule, modname, underlined): for name, pyname in attributes.items(): if not underlined and name.startswith("_"): continue - if isinstance(pyname, (pynames.AssignedName, pynames.DefinedName)): + if isinstance(pyname, (pynamesdef.AssignedName, pynames.DefinedName)): globals.append(name) if isinstance(pymodule, builtins.BuiltinModule): globals.append(name) diff --git a/rope/contrib/codeassist.py b/rope/contrib/codeassist.py index 32547891e..2c4a1ab15 100644 --- a/rope/contrib/codeassist.py +++ b/rope/contrib/codeassist.py @@ -424,7 +424,7 @@ def _dotted_completions(self, module_scope, holding_scope): if found_pyname is not None: element = found_pyname.get_object() compl_scope = "attribute" - if isinstance(element, (pyobjectsdef.PyModule, pyobjectsdef.PyPackage)): + if isinstance(element, (pyobjects.PyModuleStub, pyobjects.PyPackageStub)): compl_scope = "imported" for name, pyname in element.get_attributes().items(): if name.startswith(self.starting): @@ -606,7 +606,7 @@ def get_calltip(self, pyobject, ignore_unknown=False, remove_self=False): pyobject = pyobject["__call__"].get_object() except exceptions.AttributeNotFoundError: return None - if ignore_unknown and not isinstance(pyobject, pyobjects.PyFunction): + if ignore_unknown and not isinstance(pyobject, pyobjects.PyFunctionStub): return if isinstance(pyobject, pyobjects.AbstractFunction): result = self._get_function_signature(pyobject, add_module=True) @@ -644,7 +644,7 @@ def _get_function_docstring(self, pyfunction): ) def _is_method(self, pyfunction): - return isinstance(pyfunction, pyobjects.PyFunction) and isinstance( + return isinstance(pyfunction, pyobjectsdef.PyFunction) and isinstance( pyfunction.parent, pyobjects.PyClass ) @@ -665,7 +665,7 @@ def _get_super_methods(self, pyclass, name): def _get_function_signature(self, pyfunction, add_module=False): location = self._location(pyfunction, add_module) - if isinstance(pyfunction, pyobjects.PyFunction): + if isinstance(pyfunction, pyobjects.PyFunctionStub): info = functionutils.DefinitionInfo.read(pyfunction) return location + info.to_string() else: @@ -682,7 +682,7 @@ def _location(self, pyobject, add_module=False): location.append(".") parent = parent.parent if add_module: - if isinstance(pyobject, pyobjects.PyFunction): + if isinstance(pyobject, pyobjects.PyFunctionStub): location.insert(0, self._get_module(pyobject)) if isinstance(parent, builtins.BuiltinModule): location.insert(0, parent.get_name() + ".") diff --git a/rope/contrib/findit.py b/rope/contrib/findit.py index c586f266f..8f347d912 100644 --- a/rope/contrib/findit.py +++ b/rope/contrib/findit.py @@ -62,7 +62,7 @@ def find_implementations( if pyname is not None: pyobject = pyname.get_object() if ( - not isinstance(pyobject, pyobjects.PyFunction) + not isinstance(pyobject, pyobjects.PyFunctionStub) or pyobject.get_kind() != "method" ): raise exceptions.BadIdentifierError("Not a method!") diff --git a/rope/contrib/generate.py b/rope/contrib/generate.py index e1cadd99d..6b6e5ec22 100644 --- a/rope/contrib/generate.py +++ b/rope/contrib/generate.py @@ -299,7 +299,7 @@ def get_package(self): primary = self.primary if self.primary is None: return self.pycore.project.get_source_folders()[0] - if isinstance(primary.get_object(), pyobjects.PyPackage): + if isinstance(primary.get_object(), pyobjects.PyPackageStub): return primary.get_object().get_resource() raise exceptions.RefactoringError( "A module/package can be only created in a package." diff --git a/rope/refactor/change_signature.py b/rope/refactor/change_signature.py index 42d6082f1..43b8b5fd5 100644 --- a/rope/refactor/change_signature.py +++ b/rope/refactor/change_signature.py @@ -22,7 +22,7 @@ def __init__(self, project, resource, offset): if ( self.pyname is None or self.pyname.get_object() is None - or not isinstance(self.pyname.get_object(), pyobjects.PyFunction) + or not isinstance(self.pyname.get_object(), pyobjects.PyFunctionStub) ): raise rope.base.exceptions.RefactoringError( "Change method signature should be performed on functions" @@ -42,7 +42,7 @@ def _set_name_and_pyname(self): self.others = None if ( self.name == "__init__" - and isinstance(pyobject, pyobjects.PyFunction) + and isinstance(pyobject, pyobjects.PyFunctionStub) and isinstance(pyobject.parent, pyobjects.PyClass) ): pyclass = pyobject.parent diff --git a/rope/refactor/encapsulate_field.py b/rope/refactor/encapsulate_field.py index ba18b2b54..2e3f0b455 100644 --- a/rope/refactor/encapsulate_field.py +++ b/rope/refactor/encapsulate_field.py @@ -2,7 +2,7 @@ evaluate, exceptions, libutils, - pynames, + pynamesdef, taskhandle, utils, worder, @@ -70,7 +70,7 @@ def get_field_name(self): return self.name def _is_an_attribute(self, pyname): - if pyname is not None and isinstance(pyname, pynames.AssignedName): + if pyname is not None and isinstance(pyname, pynamesdef.AssignedName): pymodule, lineno = self.pyname.get_definition_location() scope = pymodule.get_scope().get_inner_scope_for_line(lineno) if scope.get_kind() == "Class": diff --git a/rope/refactor/functionutils.py b/rope/refactor/functionutils.py index 0be3f22c7..04733075a 100644 --- a/rope/refactor/functionutils.py +++ b/rope/refactor/functionutils.py @@ -144,13 +144,17 @@ def _is_class(pyname): @staticmethod def _is_method(pyname): - if pyname is not None and isinstance(pyname.get_object(), pyobjects.PyFunction): + if pyname is not None and isinstance( + pyname.get_object(), pyobjects.PyFunctionStub + ): return pyname.get_object().get_kind() == "method" return False @staticmethod def _is_classmethod(pyname): - if pyname is not None and isinstance(pyname.get_object(), pyobjects.PyFunction): + if pyname is not None and isinstance( + pyname.get_object(), pyobjects.PyFunctionStub + ): return pyname.get_object().get_kind() == "classmethod" return False diff --git a/rope/refactor/importutils/actions.py b/rope/refactor/importutils/actions.py index ff408085b..c31247015 100644 --- a/rope/refactor/importutils/actions.py +++ b/rope/refactor/importutils/actions.py @@ -257,7 +257,7 @@ def visitFromImport(self, import_stmt, import_info): try: result = pymodule[name].get_object() if ( - isinstance(result, pyobjects.PyModule) + isinstance(result, pyobjects.PyModuleStub) and result.get_resource() == self.resource ): imported = name diff --git a/rope/refactor/inline.py b/rope/refactor/inline.py index cfc14e5af..61a1938be 100644 --- a/rope/refactor/inline.py +++ b/rope/refactor/inline.py @@ -26,6 +26,7 @@ exceptions, libutils, pynames, + pynamesdef, pyobjects, taskhandle, utils, @@ -66,11 +67,11 @@ def create_inline(project, resource, offset): raise exceptions.RefactoringError(message) if isinstance(pyname, pynames.ImportedName): pyname = pyname._get_imported_pyname() - if isinstance(pyname, pynames.AssignedName): + if isinstance(pyname, pynamesdef.AssignedName): return InlineVariable(project, resource, offset) - if isinstance(pyname, pynames.ParameterName): + if isinstance(pyname, pynamesdef.ParameterName): return InlineParameter(project, resource, offset) - if isinstance(pyname.get_object(), pyobjects.PyFunction): + if isinstance(pyname.get_object(), pyobjects.PyFunctionStub): return InlineMethod(project, resource, offset) else: raise exceptions.RefactoringError(message) diff --git a/rope/refactor/localtofield.py b/rope/refactor/localtofield.py index 56a383b8d..0f6b127b4 100644 --- a/rope/refactor/localtofield.py +++ b/rope/refactor/localtofield.py @@ -1,7 +1,7 @@ from rope.base import ( evaluate, exceptions, - pynames, + pynamesdef, worder, ) from rope.refactor.rename import Rename @@ -49,7 +49,7 @@ def _is_a_method_local(self, pyname): holding_scope = pymodule.get_scope().get_inner_scope_for_line(lineno) parent = holding_scope.parent return ( - isinstance(pyname, pynames.AssignedName) + isinstance(pyname, pynamesdef.AssignedName) and pyname in holding_scope.get_names().values() and holding_scope.get_kind() == "Function" and parent is not None diff --git a/rope/refactor/method_object.py b/rope/refactor/method_object.py index cada6fcc8..addf88cc1 100644 --- a/rope/refactor/method_object.py +++ b/rope/refactor/method_object.py @@ -16,7 +16,9 @@ def __init__(self, project, resource, offset): self.project = project this_pymodule = self.project.get_pymodule(resource) pyname = evaluate.eval_location(this_pymodule, offset) - if pyname is None or not isinstance(pyname.get_object(), pyobjects.PyFunction): + if pyname is None or not isinstance( + pyname.get_object(), pyobjects.PyFunctionStub + ): raise exceptions.RefactoringError( "Replace method with method object refactoring should be " "performed on a function." diff --git a/rope/refactor/move.py b/rope/refactor/move.py index 7feacb1c8..33126538a 100644 --- a/rope/refactor/move.py +++ b/rope/refactor/move.py @@ -10,6 +10,7 @@ exceptions, libutils, pynames, + pynamesdef, pyobjects, taskhandle, worder, @@ -34,18 +35,18 @@ def create_move(project, resource, offset=None): pyname = evaluate.eval_location(this_pymodule, offset) if pyname is not None: pyobject = pyname.get_object() - if isinstance(pyobject, pyobjects.PyModule) or isinstance( - pyobject, pyobjects.PyPackage + if isinstance(pyobject, pyobjects.PyModuleStub) or isinstance( + pyobject, pyobjects.PyPackageStub ): return MoveModule(project, pyobject.get_resource()) - if isinstance(pyobject, pyobjects.PyFunction) and isinstance( + if isinstance(pyobject, pyobjects.PyFunctionStub) and isinstance( pyobject.parent, pyobjects.PyClass ): return MoveMethod(project, resource, offset) if ( isinstance(pyobject, pyobjects.PyDefinedObject) - and isinstance(pyobject.parent, pyobjects.PyModule) - or isinstance(pyname, pynames.AssignedName) + and isinstance(pyobject.parent, pyobjects.PyModuleStub) + or isinstance(pyname, pynamesdef.AssignedName) ): return MoveGlobal(project, resource, offset) raise exceptions.RefactoringError( @@ -296,7 +297,7 @@ def _is_global(self, pyobject): return pyobject.get_scope().parent == pyobject.get_module().get_scope() def _is_variable(self, pyname): - return isinstance(pyname, pynames.AssignedName) + return isinstance(pyname, pynamesdef.AssignedName) def get_changes( self, dest, resources=None, task_handle=taskhandle.NullTaskHandle() diff --git a/rope/refactor/occurrences.py b/rope/refactor/occurrences.py index 53705e93f..35b55546c 100644 --- a/rope/refactor/occurrences.py +++ b/rope/refactor/occurrences.py @@ -42,6 +42,7 @@ from rope.base import evaluate from rope.base import exceptions from rope.base import pynames +from rope.base import pynamesdef from rope.base import pyobjects from rope.base import utils from rope.base import worder @@ -112,7 +113,7 @@ def create_finder( filters.append(NoImportsFilter()) if not keywords: filters.append(NoKeywordsFilter()) - if isinstance(instance, pynames.ParameterName): + if isinstance(instance, pynamesdef.ParameterName): for pyobject in instance.get_objects(): try: pynames_.add(pyobject[name]) diff --git a/rope/refactor/rename.py b/rope/refactor/rename.py index aa4066724..c018aa793 100644 --- a/rope/refactor/rename.py +++ b/rope/refactor/rename.py @@ -4,6 +4,7 @@ exceptions, pyobjects, pynames, + pynamesdef, taskhandle, evaluate, worder, @@ -144,7 +145,7 @@ def is_method(self): pyname = self.old_pyname return ( isinstance(pyname, pynames.DefinedName) - and isinstance(pyname.get_object(), pyobjects.PyFunction) + and isinstance(pyname.get_object(), pyobjects.PyFunctionStub) and isinstance(pyname.get_object().parent, pyobjects.PyClass) ) @@ -257,5 +258,5 @@ def _is_local(pyname): return ( scope.get_kind() == "Function" and pyname in scope.get_names().values() - and isinstance(pyname, pynames.AssignedName) + and isinstance(pyname, pynamesdef.AssignedName) ) diff --git a/rope/refactor/usefunction.py b/rope/refactor/usefunction.py index 255e33fe8..43974d44d 100644 --- a/rope/refactor/usefunction.py +++ b/rope/refactor/usefunction.py @@ -4,7 +4,7 @@ evaluate, exceptions, libutils, - pynames, + pynamesdef, pyobjects, taskhandle, ) @@ -22,8 +22,8 @@ def __init__(self, project, resource, offset): if pyname is None: raise exceptions.RefactoringError("Unresolvable name selected") self.pyfunction = pyname.get_object() - if not isinstance(self.pyfunction, pyobjects.PyFunction) or not isinstance( - self.pyfunction.parent, pyobjects.PyModule + if not isinstance(self.pyfunction, pyobjects.PyFunctionStub) or not isinstance( + self.pyfunction.parent, pyobjects.PyModuleStub ): raise exceptions.RefactoringError( "Use function works for global functions, only." @@ -144,7 +144,7 @@ def find_temps(project, code): result = [] function_scope = pymodule.get_scope().get_scopes()[0] for name, pyname in function_scope.get_names().items(): - if isinstance(pyname, pynames.AssignedName): + if isinstance(pyname, pynamesdef.AssignedName): result.append(name) return result diff --git a/ropetest/pycoretest.py b/ropetest/pycoretest.py index 514b34a86..366a74adb 100644 --- a/ropetest/pycoretest.py +++ b/ropetest/pycoretest.py @@ -5,8 +5,8 @@ from rope.base import exceptions, libutils from rope.base.builtins import File, BuiltinClass from rope.base.pycore import _TextChangeDetector -from rope.base.pyobjects import get_base_type, AbstractFunction from rope.base.pynamesdef import AssignedName +from rope.base.pyobjects import get_base_type, AbstractFunction from ropetest import testutils