Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PR: Second round: clean imports and qualifiers #584

Merged
merged 17 commits into from Dec 10, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
8 changes: 7 additions & 1 deletion rope/base/builtins.py
Expand Up @@ -3,7 +3,13 @@
import io

import rope.base.evaluate
from rope.base import ast, pynames, pyobjects, arguments, utils
from rope.base import (
arguments,
ast,
pynames,
pyobjects,
utils,
)


try:
Expand Down
40 changes: 21 additions & 19 deletions rope/base/oi/soi.py
Expand Up @@ -4,14 +4,18 @@
package.

"""
import rope.base.builtins
import rope.base.pynames
import rope.base.pyobjects
from rope.base import arguments, evaluate, utils
import rope.base.builtins # Use full qualification for clarity.
from rope.base import (
arguments,
evaluate,
pynames,
pyobjects,
utils,
)
from rope.base.oi.type_hinting.factory import get_type_hinting_factory


_ignore_inferred = utils.ignore_exception(rope.base.pyobjects.IsBeingInferredError)
_ignore_inferred = utils.ignore_exception(pyobjects.IsBeingInferredError)


@_ignore_inferred
Expand All @@ -35,7 +39,7 @@ def infer_returned_object(pyfunction, args):
).make_return_provider()
type_ = hint_return(pyfunction)
if type_ is not None:
return rope.base.pyobjects.PyObject(type_)
return pyobjects.PyObject(type_)


@_ignore_inferred
Expand All @@ -56,9 +60,9 @@ def _handle_first_parameter(pyobject, parameters):
if not parameters:
if not pyobject.get_param_names(special_args=False):
return
parameters.append(rope.base.pyobjects.get_unknown())
parameters.append(pyobjects.get_unknown())
if kind == "method":
parameters[0] = rope.base.pyobjects.PyObject(pyobject.parent)
parameters[0] = pyobjects.PyObject(pyobject.parent)
if kind == "classmethod":
parameters[0] = pyobject.parent

Expand All @@ -74,7 +78,7 @@ def infer_assigned_object(pyname):
and result.get_name() == "NotImplementedType"
):
break
elif result == rope.base.pyobjects.get_unknown():
elif result == pyobjects.get_unknown():
break
elif result is not None:
return result
Expand All @@ -84,7 +88,7 @@ def infer_assigned_object(pyname):
).make_assignment_provider()
hinting_result = hint_assignment(pyname)
if hinting_result is not None:
return rope.base.pyobjects.PyObject(hinting_result)
return pyobjects.PyObject(hinting_result)
return result


Expand Down Expand Up @@ -117,13 +121,13 @@ def _infer_returned(pyobject, args):
if resulting_pyname is None:
continue
pyobject = resulting_pyname.get_object()
if pyobject == rope.base.pyobjects.get_unknown():
if pyobject == pyobjects.get_unknown():
continue
if not scope._is_generator():
return pyobject
else:
return rope.base.builtins.get_generator(pyobject)
except rope.base.pyobjects.IsBeingInferredError:
except pyobjects.IsBeingInferredError:
pass


Expand All @@ -134,9 +138,9 @@ def _parameter_objects(pyobject):
for name in params:
type_ = hint_param(pyobject, name)
if type_ is not None:
result.append(rope.base.pyobjects.PyObject(type_))
result.append(pyobjects.PyObject(type_))
else:
result.append(rope.base.pyobjects.get_unknown())
result.append(pyobjects.get_unknown())
return result


Expand Down Expand Up @@ -185,9 +189,7 @@ def _follow_pyname(assignment, pymodule, lineno=None):
isinstance(result.get_type(), rope.base.builtins.Property)
and holding_scope.get_kind() == "Class"
):
arg = rope.base.pynames.UnboundName(
rope.base.pyobjects.PyObject(holding_scope.pyobject)
)
arg = pynames.UnboundName(pyobjects.PyObject(holding_scope.pyobject))
return pyname, result.get_type().get_property_object(
arguments.ObjectArguments([arg])
)
Expand All @@ -208,15 +210,15 @@ def _follow_evaluations(assignment, pyname, pyobject):
if new_pyname is not None:
pyobject = new_pyname.get_object()
if pyobject is not None and call:
if isinstance(pyobject, rope.base.pyobjects.AbstractFunction):
if isinstance(pyobject, pyobjects.AbstractFunction):
args = arguments.ObjectArguments([pyname])
pyobject = pyobject.get_returned_object(args)
else:
pyobject = None
if pyobject is None:
break
if pyobject is not None and assignment.assign_type:
return rope.base.pyobjects.PyObject(pyobject)
return pyobjects.PyObject(pyobject)
return pyobject


Expand Down
2 changes: 1 addition & 1 deletion rope/base/oi/transform.py
Expand Up @@ -2,7 +2,7 @@
import os
import re

import rope.base.builtins
import rope.base.builtins # Use full qualification for clarity.
from rope.base import exceptions


Expand Down
5 changes: 1 addition & 4 deletions rope/base/oi/type_hinting/utils.py
@@ -1,9 +1,6 @@
import logging
from typing import Union, Optional

try:
from typing import Union, Optional
except ImportError:
pass
import rope.base.utils as base_utils
from rope.base import evaluate
from rope.base.exceptions import AttributeNotFoundError
Expand Down
12 changes: 9 additions & 3 deletions rope/base/project.py
Expand Up @@ -3,12 +3,18 @@
import sys
import warnings

import rope.base.fscommands
import rope.base.resourceobserver as resourceobserver
from rope.base import exceptions, history, pycore, taskhandle, utils
import rope.base.fscommands # Use full qualification for clarity.
from rope.base import (
exceptions,
history,
pycore,
taskhandle,
utils,
)
from rope.base.exceptions import ModuleNotFoundError
from rope.base.prefs import Prefs, get_config
from rope.base.resources import File, Folder, _ResourceMatcher
import rope.base.resourceobserver as resourceobserver

try:
import cPickle as pickle
Expand Down
19 changes: 10 additions & 9 deletions rope/base/pyscopes.py
@@ -1,7 +1,11 @@
import rope.base.builtins
import rope.base.codeanalyze
import rope.base.pynames
from rope.base import ast, exceptions, utils
import rope.base.builtins # Use full qualification for clarity.
from rope.base import (
ast,
codeanalyze,
exceptions,
pynames,
utils,
)
from rope.refactor import patchedast


Expand Down Expand Up @@ -249,10 +253,7 @@ def get_kind(self):

def invalidate_data(self):
for pyname in self.get_names().values():
if isinstance(
pyname,
(rope.base.pynames.AssignedName, rope.base.pynames.EvaluatedName),
):
if isinstance(pyname, (pynames.AssignedName, pynames.EvaluatedName)):
pyname.invalidate()


Expand All @@ -272,7 +273,7 @@ def __init__(self, pymodule):
self.pymodule = pymodule

def get_indents(self, lineno):
return rope.base.codeanalyze.count_line_indents(self.lines.get_line(lineno))
return codeanalyze.count_line_indents(self.lines.get_line(lineno))

def _get_scope_indents(self, scope):
return self.get_indents(scope.get_start())
Expand Down
9 changes: 4 additions & 5 deletions rope/contrib/codeassist.py
Expand Up @@ -2,10 +2,9 @@
import sys
import warnings

import rope.base.codeanalyze
import rope.base.evaluate
from rope.base import (
builtins,
evaluate,
exceptions,
libutils,
pynames,
Expand Down Expand Up @@ -178,7 +177,7 @@ def mux(self, x):
"""
# Retrieve the PyName.
pymod = project.get_pymodule(resource)
pyname = rope.base.evaluate.eval_location(pymod, offset)
pyname = evaluate.eval_location(pymod, offset)

# Now get the location of the definition and its containing scope.
defmod, lineno = pyname.get_definition_location()
Expand Down Expand Up @@ -421,7 +420,7 @@ def __call__(self):

def _dotted_completions(self, module_scope, holding_scope):
result = {}
found_pyname = rope.base.evaluate.eval_str(holding_scope, self.expression)
found_pyname = evaluate.eval_str(holding_scope, self.expression)
if found_pyname is not None:
element = found_pyname.get_object()
compl_scope = "attribute"
Expand Down Expand Up @@ -511,7 +510,7 @@ def _keyword_parameters(self, pymodule, scope):
function_parens = word_finder.find_parens_start_from_inside(offset - 1)
primary = word_finder.get_primary_at(function_parens - 1)
try:
function_pyname = rope.base.evaluate.eval_str(scope, primary)
function_pyname = evaluate.eval_str(scope, primary)
except exceptions.BadIdentifierError:
return {}
if function_pyname is not None:
Expand Down
19 changes: 11 additions & 8 deletions rope/contrib/findit.py
@@ -1,7 +1,10 @@
import rope.base.codeanalyze
import rope.base.evaluate
import rope.base.pyobjects
from rope.base import exceptions, taskhandle, worder
from rope.base import (
exceptions,
evaluate,
pyobjects,
taskhandle,
worder,
)
from rope.contrib import fixsyntax
from rope.refactor import occurrences

Expand All @@ -26,7 +29,7 @@ def find_occurrences(
"""
name = worder.get_name_at(resource, offset)
this_pymodule = project.get_pymodule(resource)
primary, pyname = rope.base.evaluate.eval_location2(this_pymodule, offset)
primary, pyname = evaluate.eval_location2(this_pymodule, offset)

def is_match(occurrence):
return unsure
Expand Down Expand Up @@ -55,11 +58,11 @@ def find_implementations(
"""
name = worder.get_name_at(resource, offset)
this_pymodule = project.get_pymodule(resource)
pyname = rope.base.evaluate.eval_location(this_pymodule, offset)
pyname = evaluate.eval_location(this_pymodule, offset)
if pyname is not None:
pyobject = pyname.get_object()
if (
not isinstance(pyobject, rope.base.pyobjects.PyFunction)
not isinstance(pyobject, pyobjects.PyFunction)
or pyobject.get_kind() != "method"
):
raise exceptions.BadIdentifierError("Not a method!")
Expand Down Expand Up @@ -92,7 +95,7 @@ def find_definition(project, code, offset, resource=None, maxfixes=1):
pyname = fixer.pyname_at(offset)
if pyname is not None:
module, lineno = pyname.get_definition_location()
name = rope.base.worder.Worder(code).get_word_at(offset)
name = worder.Worder(code).get_word_at(offset)
if lineno is not None:
start = module.lines.get_line_start(lineno)

Expand Down
14 changes: 6 additions & 8 deletions rope/contrib/fixsyntax.py
@@ -1,7 +1,7 @@
import rope.base.codeanalyze
import rope.base.evaluate
from rope.base import (
codeanalyze,
exceptions,
evaluate,
libutils,
utils,
worder,
Expand Down Expand Up @@ -59,13 +59,13 @@ def old_pyname():
expression = expression.replace("\\\n", " ").replace("\n", " ")
lineno = self.code.count("\n", 0, offset)
scope = pymodule.get_scope().get_inner_scope_for_line(lineno)
return rope.base.evaluate.eval_str(scope, expression)
return evaluate.eval_str(scope, expression)

new_code = pymodule.source_code

def new_pyname():
newoffset = self.commenter.transferred_offset(offset)
return rope.base.evaluate.eval_location(pymodule, newoffset)
return evaluate.eval_location(pymodule, newoffset)

if new_code.startswith(self.code[: offset + 1]):
return new_pyname()
Expand Down Expand Up @@ -131,9 +131,7 @@ def _fix_incomplete_try_blocks(self, lineno, indents):
last_indents = indents
while block_start > 0:
block_start = (
rope.base.codeanalyze.get_block_start(
ArrayLinesAdapter(self.lines), block_start
)
codeanalyze.get_block_start(ArrayLinesAdapter(self.lines), block_start)
- 1
)
if self.lines[block_start].strip().startswith("try:"):
Expand Down Expand Up @@ -188,4 +186,4 @@ def _logical_start(lines, lineno, check_prev=False):


def _get_line_indents(line):
return rope.base.codeanalyze.count_line_indents(line)
return codeanalyze.count_line_indents(line)
4 changes: 2 additions & 2 deletions rope/contrib/generate.py
@@ -1,7 +1,7 @@
import rope.base.evaluate
from rope.base import (
change,
codeanalyze,
evaluate,
exceptions,
libutils,
pynames,
Expand Down Expand Up @@ -210,7 +210,7 @@ def __init__(self, pycore, resource, offset, goal_resource=None):
self.offset = offset
self.goal_resource = goal_resource
self.source_pymodule = self.pycore.project.get_pymodule(resource)
finder = rope.base.evaluate.ScopeNameFinder(self.source_pymodule)
finder = evaluate.ScopeNameFinder(self.source_pymodule)
self.primary, self.pyname = finder.get_primary_and_pyname_at(offset)
self._init_fields()

Expand Down