python-rope / rope

a python refactoring library
GNU Lesser General Public License v3.0
1.95k stars 164 forks source link

Add support for python3.8 #277

Closed jonringer closed 4 years ago

jonringer commented 4 years ago

Trying to run the test suite in python3.8 results in the following errors:

Test failures ``` ====================================================================== ERROR: test_changing_signature_for_constructors_when_using_super (ropetest.refactor.change_signature_test.ChangeSignatureTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/build/rope-0.14.0/ropetest/refactor/change_signature_test.py", line 403, in test_changing_signature_for_constructors_when_using_super signature.get_changes([change_signature.ArgumentRemover(1)]).do() File "/build/rope-0.14.0/rope/refactor/change_signature.py", line 140, in get_changes return self._change_calls(function_changer, in_hierarchy, File "/build/rope-0.14.0/rope/refactor/change_signature.py", line 65, in _change_calls changed_file = change_calls.get_changed_module() File "/build/rope-0.14.0/rope/refactor/change_signature.py", line 304, in get_changed_module for occurrence in self.occurrence_finder.find_occurrences( File "/build/rope-0.14.0/rope/refactor/change_signature.py", line 349, in find_occurrences all_occurrences.extend(finder.find_occurrences(resource, pymodule)) File "/build/rope-0.14.0/rope/refactor/occurrences.py", line 78, in find_occurrences result = filter(occurrence) File "/build/rope-0.14.0/rope/refactor/occurrences.py", line 215, in __call__ if same_pyname(self.pyname, occurrence.get_pyname()): File "/build/rope-0.14.0/rope/base/utils/__init__.py", line 12, in _wrapper setattr(self, name, func(self, *args, **kwds)) File "/build/rope-0.14.0/rope/refactor/occurrences.py", line 137, in get_pyname return self.tools.name_finder.get_pyname_at(self.offset) File "/build/rope-0.14.0/rope/base/evaluate.py", line 77, in get_pyname_at return self.get_primary_and_pyname_at(offset)[1] File "/build/rope-0.14.0/rope/base/evaluate.py", line 114, in get_primary_and_pyname_at return eval_str2(holding_scope, name) File "/build/rope-0.14.0/rope/base/evaluate.py", line 47, in eval_str2 return eval_node2(holding_scope, node) File "/build/rope-0.14.0/rope/base/evaluate.py", line 32, in eval_node2 ast.walk(node, evaluator) File "/build/rope-0.14.0/rope/base/ast.py", line 41, in walk walk(child, walker) File "/build/rope-0.14.0/rope/base/ast.py", line 41, in walk walk(child, walker) File "/build/rope-0.14.0/rope/base/ast.py", line 39, in walk return method(node) File "/build/rope-0.14.0/rope/base/evaluate.py", line 152, in _Attribute pyname = eval_node(self.scope, node.value) File "/build/rope-0.14.0/rope/base/evaluate.py", line 27, in eval_node return eval_node2(scope, node)[1] File "/build/rope-0.14.0/rope/base/evaluate.py", line 32, in eval_node2 ast.walk(node, evaluator) File "/build/rope-0.14.0/rope/base/ast.py", line 39, in walk return method(node) File "/build/rope-0.14.0/rope/base/evaluate.py", line 189, in _Call pyobject=_get_returned(pyfunction)) File "/build/rope-0.14.0/rope/base/evaluate.py", line 170, in _get_returned return pyobject.get_returned_object(args) File "/build/rope-0.14.0/rope/base/builtins.py", line 108, in get_returned_object return self.function(_CallContext(self.argnames, args)) File "/build/rope-0.14.0/rope/base/builtins.py", line 746, in _super_function passed_class, passed_self = args.get_arguments(['type', 'self']) File "/build/rope-0.14.0/rope/base/builtins.py", line 209, in get_arguments return self.args.get_arguments(argnames) File "/build/rope-0.14.0/rope/base/arguments.py", line 24, in get_arguments result.append(pyname.get_object()) File "/build/rope-0.14.0/rope/base/pynamesdef.py", line 42, in get_object result = self.pyfunction.get_parameter(self.index) File "/build/rope-0.14.0/rope/base/pyobjectsdef.py", line 69, in get_parameter if index < len(self.parameter_pyobjects.get()): File "/build/rope-0.14.0/rope/base/utils/__init__.py", line 29, in newfunc return func(self, *args, **kwds) File "/build/rope-0.14.0/rope/base/pynames.py", line 188, in get self.set(self.get_inferred(*args, **kwds)) File "/build/rope-0.14.0/rope/base/pyobjectsdef.py", line 40, in _infer_parameters pyobjects = rope.base.oi.soi.infer_parameter_objects(self) File "/build/rope-0.14.0/rope/base/utils/__init__.py", line 41, in newfunc return func(*args, **kwds) File "/build/rope-0.14.0/rope/base/oi/soi.py", line 47, in infer_parameter_objects result = _parameter_objects(pyfunction) File "/build/rope-0.14.0/rope/base/oi/soi.py", line 130, in _parameter_objects type_ = hint_param(pyobject, name) File "/build/rope-0.14.0/rope/base/oi/type_hinting/providers/inheritance.py", line 21, in __call__ result = self._delegate(superfunc, param_name) File "/build/rope-0.14.0/rope/base/oi/type_hinting/providers/composite.py", line 19, in __call__ result = delegate(pyfunc, param_name) File "/build/rope-0.14.0/rope/base/oi/type_hinting/providers/docstrings.py", line 46, in __call__ type_strs = self._parse_docstring(pyfunc.get_doc(), param_name) File "/build/rope-0.14.0/rope/base/pyobjects.py", line 224, in get_doc isinstance(expr.value, ast.Str): AttributeError: module 'rope.base.ast' has no attribute 'Str' -------------------- >> begin captured logging << -------------------- root: DEBUG: Using /dev/shm/sample_project as root of the project. --------------------- >> end captured logging << --------------------- ====================================================================== ERROR: test_static_oi_for_lists_per_object_for_fields (ropetest.advanced_oi_test.NewStaticOITest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/build/rope-0.14.0/ropetest/advanced_oi_test.py", line 515, in test_static_oi_for_lists_per_object_for_fields self.pycore.analyze_module(self.mod) File "/build/rope-0.14.0/rope/base/pycore.py", line 209, in analyze_module rope.base.oi.soa.analyze_module( File "/build/rope-0.14.0/rope/base/oi/soa.py", line 15, in analyze_module _analyze_node(pycore, pymodule, should_analyze, File "/build/rope-0.14.0/rope/base/oi/soa.py", line 23, in _analyze_node _analyze_node(pycore, scope.pyobject, should_analyze, File "/build/rope-0.14.0/rope/base/oi/soa.py", line 23, in _analyze_node _analyze_node(pycore, scope.pyobject, should_analyze, File "/build/rope-0.14.0/rope/base/oi/soa.py", line 38, in _analyze_node rope.base.ast.walk(child, visitor) File "/build/rope-0.14.0/rope/base/ast.py", line 41, in walk walk(child, walker) File "/build/rope-0.14.0/rope/base/ast.py", line 39, in walk return method(node) File "/build/rope-0.14.0/rope/base/oi/soa.py", line 58, in _Call primary, pyname = evaluate.eval_node2(self.scope, node.func) File "/build/rope-0.14.0/rope/base/evaluate.py", line 32, in eval_node2 ast.walk(node, evaluator) File "/build/rope-0.14.0/rope/base/ast.py", line 39, in walk return method(node) File "/build/rope-0.14.0/rope/base/evaluate.py", line 152, in _Attribute pyname = eval_node(self.scope, node.value) File "/build/rope-0.14.0/rope/base/evaluate.py", line 27, in eval_node return eval_node2(scope, node)[1] File "/build/rope-0.14.0/rope/base/evaluate.py", line 32, in eval_node2 ast.walk(node, evaluator) File "/build/rope-0.14.0/rope/base/ast.py", line 39, in walk return method(node) File "/build/rope-0.14.0/rope/base/evaluate.py", line 156, in _Attribute if pyname.get_object() != rope.base.pyobjects.get_unknown(): File "/build/rope-0.14.0/rope/base/pynamesdef.py", line 42, in get_object result = self.pyfunction.get_parameter(self.index) File "/build/rope-0.14.0/rope/base/pyobjectsdef.py", line 69, in get_parameter if index < len(self.parameter_pyobjects.get()): File "/build/rope-0.14.0/rope/base/utils/__init__.py", line 29, in newfunc return func(self, *args, **kwds) File "/build/rope-0.14.0/rope/base/pynames.py", line 188, in get self.set(self.get_inferred(*args, **kwds)) File "/build/rope-0.14.0/rope/base/pyobjectsdef.py", line 40, in _infer_parameters pyobjects = rope.base.oi.soi.infer_parameter_objects(self) File "/build/rope-0.14.0/rope/base/utils/__init__.py", line 41, in newfunc return func(*args, **kwds) File "/build/rope-0.14.0/rope/base/oi/soi.py", line 47, in infer_parameter_objects result = _parameter_objects(pyfunction) File "/build/rope-0.14.0/rope/base/oi/soi.py", line 130, in _parameter_objects type_ = hint_param(pyobject, name) File "/build/rope-0.14.0/rope/base/oi/type_hinting/providers/inheritance.py", line 21, in __call__ result = self._delegate(superfunc, param_name) File "/build/rope-0.14.0/rope/base/oi/type_hinting/providers/composite.py", line 19, in __call__ result = delegate(pyfunc, param_name) File "/build/rope-0.14.0/rope/base/oi/type_hinting/providers/docstrings.py", line 46, in __call__ type_strs = self._parse_docstring(pyfunc.get_doc(), param_name) File "/build/rope-0.14.0/rope/base/pyobjects.py", line 224, in get_doc isinstance(expr.value, ast.Str): AttributeError: module 'rope.base.ast' has no attribute 'Str' -------------------- >> begin captured logging << -------------------- root: DEBUG: Using /dev/shm/sample_project as root of the project. --------------------- >> end captured logging << --------------------- ====================================================================== FAIL: test_textual_transformations (ropetest.advanced_oi_test.DynamicOITest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/build/rope-0.14.0/ropetest/advanced_oi_test.py", line 241, in test_textual_transformations self.assertEquals(to_textual.transform(var), AssertionError: Tuples differ: ('unknown',) != ('none',) First differing element 0: 'unknown' 'none' - ('unknown',) ? --- - + ('none',) ? + -------------------- >> begin captured logging << -------------------- root: DEBUG: Using /dev/shm/sample_project as root of the project. --------------------- >> end captured logging << --------------------- ====================================================================== FAIL: test_call_function_and_parameters (ropetest.advanced_oi_test.NewStaticOITest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/build/rope-0.14.0/ropetest/advanced_oi_test.py", line 674, in test_call_function_and_parameters self.assertTrue(isinstance(p_object.get_type(), AssertionError: False is not true -------------------- >> begin captured logging << -------------------- root: DEBUG: Using /dev/shm/sample_project as root of the project. --------------------- >> end captured logging << --------------------- ---------------------------------------------------------------------- Ran 100 tests in 1.689s FAILED (SKIP=2, errors=2, failures=2) builder for '/nix/store/y6ngan74xq6vvy04arf13xir33cpkf0v-python3.8-rope-0.14.0.drv' failed with exit code 1 error: build of '/nix/store/y6ngan74xq6vvy04arf13xir33cpkf0v-python3.8-rope-0.14.0.drv' failed ```
lucomsky commented 4 years ago

We need to fix the #247 first. After that fix Python 3.8 tests failing (#284).

mcepl commented 4 years ago

Help on https://github.com/python-rope/rope/pull/283 first and we can move ahead.

lucomsky commented 4 years ago

@mcepl, how can I help? It looks like you wait for review...

mcepl commented 4 years ago

@mcepl, how can I help? It looks like you wait for review...

Yes, thorough review (i.e., somebody really going behind and rethinking what stupid ideas I had) would be very helpful. I am a wee afraid just let this go in without anybody thinking about it.

seasonedgeek commented 4 years ago

I attempted the Quickstart: Make a Project as suggested:

import rope.base.project
myproject = = rope.base.project.Project('.')

which resulted in a similar issue identified by jonringer (see #277 above):

File "~/Library/Python/3.8/lib/python/site-packages/rope/base/pyobjects.py", line 224, in get_doc
    isinstance(expr.value, ast.Str):
AttributeError: module 'rope.base.ast' has no attribute 'Str'

I suppose this is rather dangerous, but I added (+) the following code to the local copy of pyobjects.py. My edit allow me to continue on and try out some of rope's features.

    def get_doc(self):
        if len(self.get_ast().body) > 0:
            expr = self.get_ast().body[0]
   +        try:
                if isinstance(expr, ast.Expr) and isinstance(expr.value, ast.Str):
                    docstring = expr.value.s
                    coding = self.get_module().coding
                    return _decode_data(docstring, coding)
    +       except AttributeError as e:
    +           if hasattr(e, 'message'):
    +               print(e.message)
    +           else:
    +               print(e)
mcepl commented 4 years ago

@jonringer, can you reproduce with the latest master (commit d46aa2dcf34c6baf57b37930f5db7dc962b770b6)?

DrShushen commented 4 years ago

Running pytest -v with latest master (commit d46aa2d), using python 3.8.2, all tests pass for me:

Tests output ```bash =============================================================================== test session starts ================================================================================ platform linux -- Python 3.8.2, pytest-5.4.1, py-1.8.1, pluggy-0.13.1 -- /home/ess/miniconda3/envs/py38_rope/bin/python cachedir: .pytest_cache rootdir: /home/ess/repos/rope collected 194 items ropetest/advanced_oi_test.py::DynamicOITest::test_a_function_with_different_returns PASSED [ 0%] ropetest/advanced_oi_test.py::DynamicOITest::test_a_function_with_different_returns2 PASSED [ 1%] ropetest/advanced_oi_test.py::DynamicOITest::test_arguments_with_keywords PASSED [ 1%] ropetest/advanced_oi_test.py::DynamicOITest::test_class_dti PASSED [ 2%] ropetest/advanced_oi_test.py::DynamicOITest::test_class_from_another_module_dti PASSED [ 2%] ropetest/advanced_oi_test.py::DynamicOITest::test_classes_with_the_same_name PASSED [ 3%] ropetest/advanced_oi_test.py::DynamicOITest::test_dict_keys_and_dynamicoi PASSED [ 3%] ropetest/advanced_oi_test.py::DynamicOITest::test_dict_keys_and_dynamicoi2 PASSED [ 4%] ropetest/advanced_oi_test.py::DynamicOITest::test_dict_objects_and_dynamicoi PASSED [ 4%] ropetest/advanced_oi_test.py::DynamicOITest::test_dti_and_concluded_data_invalidation PASSED [ 5%] ropetest/advanced_oi_test.py::DynamicOITest::test_for_loops_and_dynamicoi PASSED [ 5%] ropetest/advanced_oi_test.py::DynamicOITest::test_function_argument_dti PASSED [ 6%] ropetest/advanced_oi_test.py::DynamicOITest::test_function_argument_dti2 PASSED [ 6%] ropetest/advanced_oi_test.py::DynamicOITest::test_ignoring_double_star_args PASSED [ 7%] ropetest/advanced_oi_test.py::DynamicOITest::test_ignoring_star_args PASSED [ 7%] ropetest/advanced_oi_test.py::DynamicOITest::test_instance_dti PASSED [ 8%] ropetest/advanced_oi_test.py::DynamicOITest::test_invalidating_data_after_changing PASSED [ 8%] ropetest/advanced_oi_test.py::DynamicOITest::test_invalidating_data_after_moving PASSED [ 9%] ropetest/advanced_oi_test.py::DynamicOITest::test_list_objects_and_dynamicoi PASSED [ 9%] ropetest/advanced_oi_test.py::DynamicOITest::test_method_dti PASSED [ 10%] ropetest/advanced_oi_test.py::DynamicOITest::test_module_dti PASSED [ 10%] ropetest/advanced_oi_test.py::DynamicOITest::test_nested_classes PASSED [ 11%] ropetest/advanced_oi_test.py::DynamicOITest::test_simple_dti PASSED [ 11%] ropetest/advanced_oi_test.py::DynamicOITest::test_strs_and_dynamicoi PASSED [ 12%] ropetest/advanced_oi_test.py::DynamicOITest::test_textual_transformations PASSED [ 12%] ropetest/advanced_oi_test.py::NewStaticOITest::test_a_function_with_different_returns PASSED [ 13%] ropetest/advanced_oi_test.py::NewStaticOITest::test_always_returning_containing_class_for_selfs PASSED [ 13%] ropetest/advanced_oi_test.py::NewStaticOITest::test_call_function_and_parameters PASSED [ 14%] ropetest/advanced_oi_test.py::NewStaticOITest::test_following_function_calls_when_asked_to PASSED [ 14%] ropetest/advanced_oi_test.py::NewStaticOITest::test_handling_generator_functions_for_strs PASSED [ 15%] ropetest/advanced_oi_test.py::NewStaticOITest::test_invalidating_concluded_data_in_a_function PASSED [ 15%] ropetest/advanced_oi_test.py::NewStaticOITest::test_not_reporting_out_of_date_information PASSED [ 16%] ropetest/advanced_oi_test.py::NewStaticOITest::test_not_saving_unknown_function_returns PASSED [ 17%] ropetest/advanced_oi_test.py::NewStaticOITest::test_properties_and_calling_get_property PASSED [ 17%] ropetest/advanced_oi_test.py::NewStaticOITest::test_report_change_in_libutils PASSED [ 18%] ropetest/advanced_oi_test.py::NewStaticOITest::test_report_libutils_and_analyze_all_modules PASSED [ 18%] ropetest/advanced_oi_test.py::NewStaticOITest::test_soi_on_constructors PASSED [ 19%] ropetest/advanced_oi_test.py::NewStaticOITest::test_soi_on_literal_assignment PASSED [ 19%] ropetest/advanced_oi_test.py::NewStaticOITest::test_soi_on_typed_assignment PASSED [ 20%] ropetest/advanced_oi_test.py::NewStaticOITest::test_static_oi_class_methods PASSED [ 20%] ropetest/advanced_oi_test.py::NewStaticOITest::test_static_oi_for_dicts_depending_on_append_function PASSED [ 21%] ropetest/advanced_oi_test.py::NewStaticOITest::test_static_oi_for_dicts_depending_on_for_loops PASSED [ 21%] ropetest/advanced_oi_test.py::NewStaticOITest::test_static_oi_for_dicts_depending_on_update PASSED [ 22%] ropetest/advanced_oi_test.py::NewStaticOITest::test_static_oi_for_dicts_depending_on_update_on_seqs PASSED [ 22%] ropetest/advanced_oi_test.py::NewStaticOITest::test_static_oi_for_infer_return_typs_from_funcs_based_on_params PASSED [ 23%] ropetest/advanced_oi_test.py::NewStaticOITest::test_static_oi_for_lists_depending_on_append_function PASSED [ 23%] ropetest/advanced_oi_test.py::NewStaticOITest::test_static_oi_for_lists_per_object_for_extending_lists PASSED [ 24%] ropetest/advanced_oi_test.py::NewStaticOITest::test_static_oi_for_lists_per_object_for_fields PASSED [ 24%] ropetest/advanced_oi_test.py::NewStaticOITest::test_static_oi_for_lists_per_object_for_get_item PASSED [ 25%] ropetest/advanced_oi_test.py::NewStaticOITest::test_static_oi_for_lists_per_object_for_iters PASSED [ 25%] ropetest/advanced_oi_test.py::NewStaticOITest::test_static_oi_for_lists_per_object_for_set_item PASSED [ 26%] ropetest/advanced_oi_test.py::NewStaticOITest::test_static_oi_for_nested_calls PASSED [ 26%] ropetest/advanced_oi_test.py::NewStaticOITest::test_static_oi_for_sets_per_object_for_set_item PASSED [ 27%] ropetest/advanced_oi_test.py::NewStaticOITest::test_static_oi_for_simple_function_calls PASSED [ 27%] ropetest/advanced_oi_test.py::NewStaticOITest::test_static_oi_not_failing_when_callin_callables PASSED [ 28%] ropetest/advanced_oi_test.py::NewStaticOITest::test_static_oi_preventing_soi_maximum_recursion_exceptions PASSED [ 28%] ropetest/advanced_oi_test.py::NewStaticOITest::test_using_the_best_callinfo PASSED [ 29%] ropetest/advanced_oi_test.py::NewStaticOITest::test_validation_problems_for_changing_builtin_types PASSED [ 29%] ropetest/advanced_oi_test.py::NewStaticOITest::test_validation_problems_for_objectdb_retrievals PASSED [ 30%] ropetest/type_hinting_test.py::DocstringParamHintingTest::test_hierarchical_hint_param PASSED [ 30%] ropetest/type_hinting_test.py::DocstringParamHintingTest::test_hint_param PASSED [ 31%] ropetest/type_hinting_test.py::DocstringReturnHintingTest::test_hierarchical_hint_rtype PASSED [ 31%] ropetest/type_hinting_test.py::AbstractAssignmentHintingTest::test_hierarchical_hint_attr PASSED [ 32%] ropetest/type_hinting_test.py::AbstractAssignmentHintingTest::test_hierarchical_hint_attr_redefined_by_constructor PASSED [ 32%] ropetest/type_hinting_test.py::AbstractAssignmentHintingTest::test_hint_attr PASSED [ 33%] ropetest/type_hinting_test.py::AbstractAssignmentHintingTest::test_hint_attr_for_post_defined_type PASSED [ 34%] ropetest/type_hinting_test.py::AbstractAssignmentHintingTest::test_hint_attr_for_pre_defined_type PASSED [ 34%] ropetest/type_hinting_test.py::AbstractAssignmentHintingTest::test_hint_attr_redefined_by_constructor PASSED [ 35%] ropetest/type_hinting_test.py::AbstractAssignmentHintingTest::test_hint_defined_by_constructor PASSED [ 35%] ropetest/type_hinting_test.py::AbstractAssignmentHintingTest::test_hint_invalid_syntax PASSED [ 36%] ropetest/type_hinting_test.py::AbstractAssignmentHintingTest::test_hint_nonexistent PASSED [ 36%] ropetest/type_hinting_test.py::AbstractAssignmentHintingTest::test_hint_or PASSED [ 37%] ropetest/type_hinting_test.py::AbstractAssignmentHintingTest::test_hint_parametrized_dict_key PASSED [ 37%] ropetest/type_hinting_test.py::AbstractAssignmentHintingTest::test_hint_parametrized_dict_value PASSED [ 38%] ropetest/type_hinting_test.py::AbstractAssignmentHintingTest::test_hint_parametrized_iterable PASSED [ 38%] ropetest/type_hinting_test.py::AbstractAssignmentHintingTest::test_hint_parametrized_iterator PASSED [ 39%] ropetest/type_hinting_test.py::AbstractAssignmentHintingTest::test_hint_parametrized_list PASSED [ 39%] ropetest/type_hinting_test.py::AbstractAssignmentHintingTest::test_hint_parametrized_nested_tuple_list PASSED [ 40%] ropetest/type_hinting_test.py::AbstractAssignmentHintingTest::test_hint_parametrized_set PASSED [ 40%] ropetest/type_hinting_test.py::AbstractAssignmentHintingTest::test_hint_parametrized_tuple PASSED [ 41%] ropetest/type_hinting_test.py::DocstringNoneAssignmentHintingTest::test_hierarchical_hint_attr PASSED [ 41%] ropetest/type_hinting_test.py::DocstringNoneAssignmentHintingTest::test_hierarchical_hint_attr_redefined_by_constructor PASSED [ 42%] ropetest/type_hinting_test.py::DocstringNoneAssignmentHintingTest::test_hint_attr PASSED [ 42%] ropetest/type_hinting_test.py::DocstringNoneAssignmentHintingTest::test_hint_attr_for_post_defined_type PASSED [ 43%] ropetest/type_hinting_test.py::DocstringNoneAssignmentHintingTest::test_hint_attr_for_pre_defined_type PASSED [ 43%] ropetest/type_hinting_test.py::DocstringNoneAssignmentHintingTest::test_hint_attr_redefined_by_constructor PASSED [ 44%] ropetest/type_hinting_test.py::DocstringNoneAssignmentHintingTest::test_hint_defined_by_constructor PASSED [ 44%] ropetest/type_hinting_test.py::DocstringNoneAssignmentHintingTest::test_hint_invalid_syntax PASSED [ 45%] ropetest/type_hinting_test.py::DocstringNoneAssignmentHintingTest::test_hint_nonexistent PASSED [ 45%] ropetest/type_hinting_test.py::DocstringNoneAssignmentHintingTest::test_hint_or PASSED [ 46%] ropetest/type_hinting_test.py::DocstringNoneAssignmentHintingTest::test_hint_parametrized_dict_key PASSED [ 46%] ropetest/type_hinting_test.py::DocstringNoneAssignmentHintingTest::test_hint_parametrized_dict_value PASSED [ 47%] ropetest/type_hinting_test.py::DocstringNoneAssignmentHintingTest::test_hint_parametrized_iterable PASSED [ 47%] ropetest/type_hinting_test.py::DocstringNoneAssignmentHintingTest::test_hint_parametrized_iterator PASSED [ 48%] ropetest/type_hinting_test.py::DocstringNoneAssignmentHintingTest::test_hint_parametrized_list PASSED [ 48%] ropetest/type_hinting_test.py::DocstringNoneAssignmentHintingTest::test_hint_parametrized_nested_tuple_list PASSED [ 49%] ropetest/type_hinting_test.py::DocstringNoneAssignmentHintingTest::test_hint_parametrized_set PASSED [ 50%] ropetest/type_hinting_test.py::DocstringNoneAssignmentHintingTest::test_hint_parametrized_tuple PASSED [ 50%] ropetest/type_hinting_test.py::DocstringNotImplementedAssignmentHintingTest::test_hierarchical_hint_attr PASSED [ 51%] ropetest/type_hinting_test.py::DocstringNotImplementedAssignmentHintingTest::test_hierarchical_hint_attr_redefined_by_constructor PASSED [ 51%] ropetest/type_hinting_test.py::DocstringNotImplementedAssignmentHintingTest::test_hint_attr PASSED [ 52%] ropetest/type_hinting_test.py::DocstringNotImplementedAssignmentHintingTest::test_hint_attr_for_post_defined_type PASSED [ 52%] ropetest/type_hinting_test.py::DocstringNotImplementedAssignmentHintingTest::test_hint_attr_for_pre_defined_type PASSED [ 53%] ropetest/type_hinting_test.py::DocstringNotImplementedAssignmentHintingTest::test_hint_attr_redefined_by_constructor PASSED [ 53%] ropetest/type_hinting_test.py::DocstringNotImplementedAssignmentHintingTest::test_hint_defined_by_constructor PASSED [ 54%] ropetest/type_hinting_test.py::DocstringNotImplementedAssignmentHintingTest::test_hint_invalid_syntax PASSED [ 54%] ropetest/type_hinting_test.py::DocstringNotImplementedAssignmentHintingTest::test_hint_nonexistent PASSED [ 55%] ropetest/type_hinting_test.py::DocstringNotImplementedAssignmentHintingTest::test_hint_or PASSED [ 55%] ropetest/type_hinting_test.py::DocstringNotImplementedAssignmentHintingTest::test_hint_parametrized_dict_key PASSED [ 56%] ropetest/type_hinting_test.py::DocstringNotImplementedAssignmentHintingTest::test_hint_parametrized_dict_value PASSED [ 56%] ropetest/type_hinting_test.py::DocstringNotImplementedAssignmentHintingTest::test_hint_parametrized_iterable PASSED [ 57%] ropetest/type_hinting_test.py::DocstringNotImplementedAssignmentHintingTest::test_hint_parametrized_iterator PASSED [ 57%] ropetest/type_hinting_test.py::DocstringNotImplementedAssignmentHintingTest::test_hint_parametrized_list PASSED [ 58%] ropetest/type_hinting_test.py::DocstringNotImplementedAssignmentHintingTest::test_hint_parametrized_nested_tuple_list PASSED [ 58%] ropetest/type_hinting_test.py::DocstringNotImplementedAssignmentHintingTest::test_hint_parametrized_set PASSED [ 59%] ropetest/type_hinting_test.py::DocstringNotImplementedAssignmentHintingTest::test_hint_parametrized_tuple PASSED [ 59%] ropetest/type_hinting_test.py::PEP0484CommentNoneAssignmentHintingTest::test_hierarchical_hint_attr PASSED [ 60%] ropetest/type_hinting_test.py::PEP0484CommentNoneAssignmentHintingTest::test_hierarchical_hint_attr_redefined_by_constructor PASSED [ 60%] ropetest/type_hinting_test.py::PEP0484CommentNoneAssignmentHintingTest::test_hint_attr PASSED [ 61%] ropetest/type_hinting_test.py::PEP0484CommentNoneAssignmentHintingTest::test_hint_attr_for_post_defined_type PASSED [ 61%] ropetest/type_hinting_test.py::PEP0484CommentNoneAssignmentHintingTest::test_hint_attr_for_pre_defined_type PASSED [ 62%] ropetest/type_hinting_test.py::PEP0484CommentNoneAssignmentHintingTest::test_hint_attr_redefined_by_constructor PASSED [ 62%] ropetest/type_hinting_test.py::PEP0484CommentNoneAssignmentHintingTest::test_hint_defined_by_constructor PASSED [ 63%] ropetest/type_hinting_test.py::PEP0484CommentNoneAssignmentHintingTest::test_hint_invalid_syntax PASSED [ 63%] ropetest/type_hinting_test.py::PEP0484CommentNoneAssignmentHintingTest::test_hint_nonexistent PASSED [ 64%] ropetest/type_hinting_test.py::PEP0484CommentNoneAssignmentHintingTest::test_hint_or PASSED [ 64%] ropetest/type_hinting_test.py::PEP0484CommentNoneAssignmentHintingTest::test_hint_parametrized_dict_key PASSED [ 65%] ropetest/type_hinting_test.py::PEP0484CommentNoneAssignmentHintingTest::test_hint_parametrized_dict_value PASSED [ 65%] ropetest/type_hinting_test.py::PEP0484CommentNoneAssignmentHintingTest::test_hint_parametrized_iterable PASSED [ 66%] ropetest/type_hinting_test.py::PEP0484CommentNoneAssignmentHintingTest::test_hint_parametrized_iterator PASSED [ 67%] ropetest/type_hinting_test.py::PEP0484CommentNoneAssignmentHintingTest::test_hint_parametrized_list PASSED [ 67%] ropetest/type_hinting_test.py::PEP0484CommentNoneAssignmentHintingTest::test_hint_parametrized_nested_tuple_list PASSED [ 68%] ropetest/type_hinting_test.py::PEP0484CommentNoneAssignmentHintingTest::test_hint_parametrized_set PASSED [ 68%] ropetest/type_hinting_test.py::PEP0484CommentNoneAssignmentHintingTest::test_hint_parametrized_tuple PASSED [ 69%] ropetest/type_hinting_test.py::PEP0484CommentNotImplementedAssignmentHintingTest::test_hierarchical_hint_attr PASSED [ 69%] ropetest/type_hinting_test.py::PEP0484CommentNotImplementedAssignmentHintingTest::test_hierarchical_hint_attr_redefined_by_constructor PASSED [ 70%] ropetest/type_hinting_test.py::PEP0484CommentNotImplementedAssignmentHintingTest::test_hint_attr PASSED [ 70%] ropetest/type_hinting_test.py::PEP0484CommentNotImplementedAssignmentHintingTest::test_hint_attr_for_post_defined_type PASSED [ 71%] ropetest/type_hinting_test.py::PEP0484CommentNotImplementedAssignmentHintingTest::test_hint_attr_for_pre_defined_type PASSED [ 71%] ropetest/type_hinting_test.py::PEP0484CommentNotImplementedAssignmentHintingTest::test_hint_attr_redefined_by_constructor PASSED [ 72%] ropetest/type_hinting_test.py::PEP0484CommentNotImplementedAssignmentHintingTest::test_hint_defined_by_constructor PASSED [ 72%] ropetest/type_hinting_test.py::PEP0484CommentNotImplementedAssignmentHintingTest::test_hint_invalid_syntax PASSED [ 73%] ropetest/type_hinting_test.py::PEP0484CommentNotImplementedAssignmentHintingTest::test_hint_nonexistent PASSED [ 73%] ropetest/type_hinting_test.py::PEP0484CommentNotImplementedAssignmentHintingTest::test_hint_or PASSED [ 74%] ropetest/type_hinting_test.py::PEP0484CommentNotImplementedAssignmentHintingTest::test_hint_parametrized_dict_key PASSED [ 74%] ropetest/type_hinting_test.py::PEP0484CommentNotImplementedAssignmentHintingTest::test_hint_parametrized_dict_value PASSED [ 75%] ropetest/type_hinting_test.py::PEP0484CommentNotImplementedAssignmentHintingTest::test_hint_parametrized_iterable PASSED [ 75%] ropetest/type_hinting_test.py::PEP0484CommentNotImplementedAssignmentHintingTest::test_hint_parametrized_iterator PASSED [ 76%] ropetest/type_hinting_test.py::PEP0484CommentNotImplementedAssignmentHintingTest::test_hint_parametrized_list PASSED [ 76%] ropetest/type_hinting_test.py::PEP0484CommentNotImplementedAssignmentHintingTest::test_hint_parametrized_nested_tuple_list PASSED [ 77%] ropetest/type_hinting_test.py::PEP0484CommentNotImplementedAssignmentHintingTest::test_hint_parametrized_set PASSED [ 77%] ropetest/type_hinting_test.py::PEP0484CommentNotImplementedAssignmentHintingTest::test_hint_parametrized_tuple PASSED [ 78%] ropetest/type_hinting_test.py::EvaluateTest::test_parser PASSED [ 78%] ropetest/type_hinting_test.py::RegressionHintingTest::test_hierarchical_hint_for_mutable_attr_type PASSED [ 79%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_adding_arguments_for_norm_args_chang_calls_with_kwords PASSED [ 79%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_adding_arguments_for_norm_args_chang_calls_with_no_value PASSED [ 80%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_adding_arguments_for_normal_args_changing_calls PASSED [ 80%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_adding_arguments_for_normal_args_changing_definition PASSED [ 81%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_adding_arguments_for_normal_args_with_defaults PASSED [ 81%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_adding_duplicate_parameter_and_raising_exceptions PASSED [ 82%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_change_order_for_only_one_parameter PASSED [ 82%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_change_order_for_two_parameter PASSED [ 83%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_changing_order_with_static_params PASSED [ 84%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_changing_signature_for_constructors PASSED [ 84%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_changing_signature_for_constructors2 PASSED [ 85%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_changing_signature_for_constructors_when_using_super PASSED [ 85%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_changing_signature_in_subclasses PASSED [ 86%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_differentiating_class_accesses_from_instance_accesses PASSED [ 86%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_doing_multiple_changes PASSED [ 87%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_doing_multiple_changes2 PASSED [ 87%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_inlining_default_arguments PASSED [ 88%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_inlining_default_arguments2 PASSED [ 88%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_normalizing_functions_from_other_modules PASSED [ 89%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_normalizing_parameters_for_args_parameter PASSED [ 89%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_normalizing_parameters_for_args_parameter_and_keywords PASSED [ 90%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_normalizing_parameters_for_keyword_parameters PASSED [ 90%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_normalizing_parameters_for_trivial_case PASSED [ 91%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_normalizing_parameters_for_trivial_case2 PASSED [ 91%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_normalizing_parameters_for_unneeded_keyword PASSED [ 92%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_normalizing_parameters_for_unneeded_keyword_for_methods PASSED [ 92%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_normalizing_parameters_for_unsorted_keyword PASSED [ 93%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_preserving_args_and_keywords_order PASSED [ 93%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_raising_exceptions_for_non_functions PASSED [ 94%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_redordering_arguments_reported_by_mft PASSED [ 94%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_removing_arguments PASSED [ 95%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_removing_arguments_passed_as_keywords PASSED [ 95%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_removing_arguments_star_args PASSED [ 96%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_removing_arguments_with_defaults PASSED [ 96%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_removing_arguments_with_multiple_args PASSED [ 97%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_removing_keyword_arg PASSED [ 97%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_removing_keyword_arg2 PASSED [ 98%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_reordering_and_automatic_defaults PASSED [ 98%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_reordering_multi_line_function_headers PASSED [ 99%] ropetest/refactor/change_signature_test.py::ChangeSignatureTest::test_resources_parameter PASSED [100%] ================================================================================= warnings summary ================================================================================= rope/refactor/extract.py:561 /home/ess/repos/rope/rope/refactor/extract.py:561: DeprecationWarning: invalid escape sequence \S start = start + re.search('\S', self.info.extracted).start() rope/refactor/similarfinder.py:91 /home/ess/repos/rope/rope/refactor/similarfinder.py:91: DeprecationWarning: invalid escape sequence \e """Search for `code` in source and return a list of `Match`\es ropetest/advanced_oi_test.py: 59 tests with warnings ropetest/type_hinting_test.py: 76 tests with warnings ropetest/refactor/change_signature_test.py: 40 tests with warnings /home/ess/repos/rope/rope/base/project.py:224: DeprecationWarning: Delete once deprecated functions are gone self._init_source_folders() ropetest/advanced_oi_test.py: 139 tests with warnings /home/ess/repos/rope/rope/base/libutils.py:36: DeprecationWarning: relative is deprecated return relative(project.address, path) -- Docs: https://docs.pytest.org/en/latest/warnings.html ======================================================================== 194 passed, 316 warnings in 3.55s ========================================================================= ```

For reference:

Full list of packages in the environment ```bash # Name Version Build Channel _libgcc_mutex 0.1 main attrs 19.3.0 pypi_0 pypi ca-certificates 2020.1.1 0 certifi 2020.4.5.1 py38_0 ld_impl_linux-64 2.33.1 h53a641e_7 libedit 3.1.20181209 hc058e9b_0 libffi 3.2.1 hd88cf55_4 libgcc-ng 9.1.0 hdf63c60_0 libstdcxx-ng 9.1.0 hdf63c60_0 more-itertools 8.2.0 pypi_0 pypi ncurses 6.2 he6710b0_1 openssl 1.1.1g h7b6447c_0 packaging 20.3 pypi_0 pypi pip 20.0.2 py38_1 pluggy 0.13.1 pypi_0 pypi py 1.8.1 pypi_0 pypi pyparsing 2.4.7 pypi_0 pypi pytest 5.4.1 pypi_0 pypi python 3.8.2 hcf32534_0 readline 8.0 h7b6447c_0 rope 0.16.0 dev_0 setuptools 46.1.3 py38_0 six 1.14.0 pypi_0 pypi sqlite 3.31.1 h62c20be_1 tk 8.6.8 hbc83047_0 wcwidth 0.1.9 pypi_0 pypi wheel 0.34.2 py38_0 xz 5.2.5 h7b6447c_0 zlib 1.2.11 h7b6447c_3 ```
mcepl commented 4 years ago

Thanks a lot.