vscode-python: Refactor errors with Rope
Environment data
VS Code version: Version 1.19.1 (1.19.1) Python Extension version: 0.9.1 Python Version: 3.6.3 (conda-forge) OS and version: macOS 10.12.6
Actual behavior
While trying to refactor, an error pops up and a file list with a lot of files that are not part of the project
Expected behavior
Refactor executes.
Steps to reproduce:
- git clone git@github.com:michaelaye/planet4.git
- find planet4/markings.py in that repo
- find
data_root
variable in line 26 - Use F2 to start refactor, while cursor is on
data_root
- Type ‘DATA_ROOT’ to replace with upper case and press RETURN
- Some calculation happens, after a few seconds, an error pops up:
Refactor failed. expected string or bytes-like object
Logs
Output from Python
output panel
No panel is popping up
Output from Console window
(Help->Developer Tools menu)
Refactor failed. expected string or bytes-like object
[<FrameSummary file refactor.py, line 271 in watch>, <FrameSummary file refactor.py, line 252 in _process_request>, <FrameSummary file refactor.py, line 183 in _rename>, <FrameSummary file refactor.py, line 94 in refactor>, <FrameSummary file refactor.py, line 116 in onRefactor>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/refactor/rename.py, line 101 in get_changes>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/refactor/rename.py, line 117 in _is_renaming_a_module>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/pynamesdef.py, line 22 in get_object>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/utils/__init__.py, line 29 in newfunc>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/pynames.py, line 188 in get>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/utils/__init__.py, line 29 in newfunc>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/pynamesdef.py, line 19 in _get_inferred>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/utils/__init__.py, line 41 in newfunc>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/oi/soi.py, line 71 in infer_assigned_object>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/utils/__init__.py, line 41 in newfunc>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/oi/soi.py, line 142 in _infer_assignment>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/utils/__init__.py, line 41 in newfunc>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/oi/soi.py, line 175 in _follow_pyname>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/evaluate.py, line 27 in eval_node>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/evaluate.py, line 32 in eval_node2>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/ast.py, line 39 in walk>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/evaluate.py, line 188 in _Call>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/evaluate.py, line 169 in _get_returned>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/pyobjectsdef.py, line 73 in get_returned_object>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/utils/__init__.py, line 29 in newfunc>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/pynames.py, line 188 in get>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/pyobjectsdef.py, line 45 in _infer_returned>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/utils/__init__.py, line 41 in newfunc>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/oi/soi.py, line 25 in infer_returned_object>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/oi/soi.py, line 114 in _infer_returned>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/pynamesdef.py, line 22 in get_object>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/utils/__init__.py, line 29 in newfunc>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/pynames.py, line 188 in get>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/utils/__init__.py, line 29 in newfunc>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/pynamesdef.py, line 19 in _get_inferred>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/utils/__init__.py, line 41 in newfunc>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/oi/soi.py, line 71 in infer_assigned_object>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/utils/__init__.py, line 41 in newfunc>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/oi/soi.py, line 142 in _infer_assignment>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/utils/__init__.py, line 41 in newfunc>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/oi/soi.py, line 175 in _follow_pyname>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/evaluate.py, line 27 in eval_node>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/evaluate.py, line 32 in eval_node2>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/ast.py, line 39 in walk>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/evaluate.py, line 174 in _Call>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/evaluate.py, line 169 in _get_returned>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/pyobjectsdef.py, line 73 in get_returned_object>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/utils/__init__.py, line 29 in newfunc>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/pynames.py, line 188 in get>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/pyobjectsdef.py, line 45 in _infer_returned>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/utils/__init__.py, line 41 in newfunc>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/oi/soi.py, line 22 in infer_returned_object>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/oi/objectinfo.py, line 90 in get_exact_returned>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/oi/objectinfo.py, line 96 in _args_to_textual>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/arguments.py, line 20 in get_arguments>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/arguments.py, line 33 in get_pynames>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/arguments.py, line 41 in _evaluate>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/evaluate.py, line 27 in eval_node>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/evaluate.py, line 32 in eval_node2>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/ast.py, line 39 in walk>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/evaluate.py, line 292 in _Subscript>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/evaluate.py, line 301 in _call_function>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/evaluate.py, line 27 in eval_node>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/evaluate.py, line 32 in eval_node2>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/ast.py, line 39 in walk>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/evaluate.py, line 292 in _Subscript>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/evaluate.py, line 316 in _call_function>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/pyobjectsdef.py, line 73 in get_returned_object>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/utils/__init__.py, line 29 in newfunc>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/pynames.py, line 188 in get>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/pyobjectsdef.py, line 45 in _infer_returned>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/utils/__init__.py, line 41 in newfunc>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/oi/soi.py, line 25 in infer_returned_object>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/oi/soi.py, line 111 in _infer_returned>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/evaluate.py, line 27 in eval_node>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/evaluate.py, line 32 in eval_node2>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/ast.py, line 39 in walk>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/evaluate.py, line 292 in _Subscript>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/evaluate.py, line 303 in _call_function>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/pynamesdef.py, line 22 in get_object>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/utils/__init__.py, line 29 in newfunc>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/pynames.py, line 188 in get>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/utils/__init__.py, line 29 in newfunc>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/pynamesdef.py, line 19 in _get_inferred>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/utils/__init__.py, line 41 in newfunc>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/oi/soi.py, line 71 in infer_assigned_object>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/utils/__init__.py, line 41 in newfunc>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/oi/soi.py, line 142 in _infer_assignment>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/utils/__init__.py, line 41 in newfunc>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/oi/soi.py, line 175 in _follow_pyname>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/evaluate.py, line 27 in eval_node>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/evaluate.py, line 32 in eval_node2>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/ast.py, line 39 in walk>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/evaluate.py, line 162 in _Call>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/evaluate.py, line 283 in _get_primary_and_object_for_node>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/evaluate.py, line 32 in eval_node2>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/ast.py, line 39 in walk>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/evaluate.py, line 155 in _Attribute>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/pynamesdef.py, line 42 in get_object>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/pyobjectsdef.py, line 69 in get_parameter>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/utils/__init__.py, line 29 in newfunc>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/pynames.py, line 188 in get>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/pyobjectsdef.py, line 40 in _infer_parameters>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/utils/__init__.py, line 41 in newfunc>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/oi/soi.py, line 47 in infer_parameter_objects>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/oi/soi.py, line 130 in _parameter_objects>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/oi/type_hinting/providers/inheritance.py, line 21 in __call__>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/oi/type_hinting/providers/composite.py, line 19 in __call__>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/oi/type_hinting/providers/docstrings.py, line 46 in __call__>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/rope/base/oi/type_hinting/providers/numpydocstrings.py, line 20 in __call__>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/site-packages/numpydoc/docscrape.py, line 123 in __init__>, <FrameSummary file /Users/klay6683/miniconda3/envs/stable/lib/python3.6/textwrap.py, line 430 in dedent>]
About this issue
- Original URL
- State: closed
- Created 7 years ago
- Reactions: 10
- Comments: 26 (7 by maintainers)
@brettcannon FYI I think I figured out why you were unable to reproduce this bug earlier and why your error message in your comment on Mar 29 is different from the above users’. As noted in the bug report I just filed on rope’s issue page, the error the OP experienced occurs in rope only if your environment has numpydoc installed.
Uninstalling numpydoc with “pip uninstall numpydoc” worked for me immediately; didn’t even need to re-launch anything.
uninstalled numpydoc, it works.
problem still exists in Anaconda3-5.1.0-Windows-x86_64 (VS Code 1.20.1, rope 0.10.7) on Win10_x64.
Thanks for the clarification, that makes sense. Considering the general title it looked like you wouldn’t care about making refactoring work, but I guess that’s one of the reasons why you built your own language server and features, I guess. Thanks again!
@michaelaye we can’t fix rope, so if you’re using Jedi (and thus Rope) we can’t really do much about it. If you use the language server instead of Jedi you get refactoring support provided by us directly. So I think the answer is “yes” to your last question.
I can confirm that removing numpydoc from the environment fixes the issue.
While the
a0
example from @petar-andrejic didn’t trigger for me, theb
refactor did:I’m very quickly starting to suspect this is not our direct doing but a bug in rope.