ITADN

`RecursionError` in ipython autocomplete

#2085Openjokasimr 创建于 2026-01-29
J
jokasimrcommented
Steps to reproduce: ``` mamba create -n jedi-repro python=3.11 jedi ipython mamba activate jedi-repro cat << EOF > test.py def test(x, **kwargs): if isinstance(x, int): return test((x,), **kwargs) EOF ``` then open `ipython` repl and type: ``` from test import <tab> ``` and after a short delay you should see a stack trace like: <details> <summary> <pre> RecursionError: maximum recursion depth exceeded </pre> </summary> <pre> File "/home/johannes/.local/share/mamba/envs/jedi-repro/lib/python3.11/site-packages/jedi/inference/star_args.py", line 125, in process_params kwarg_callables = list(_iter_nodes_for_param(p)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/johannes/.local/share/mamba/envs/jedi-repro/lib/python3.11/site-packages/jedi/inference/star_args.py", line 44, in _iter_nodes_for_param if _goes_to_param_name(param_name, context, name): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/johannes/.local/share/mamba/envs/jedi-repro/lib/python3.11/site-packages/jedi/inference/star_args.py", line 61, in _goes_to_param_name found = TreeNameDefinition(context, potential_name).goto() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/johannes/.local/share/mamba/envs/jedi-repro/lib/python3.11/site-packages/jedi/inference/names.py", line 213, in goto return context.goto(name, position=stmt.start_pos) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/johannes/.local/share/mamba/envs/jedi-repro/lib/python3.11/site-packages/jedi/inference/context.py", line 34, in goto names = finder.filter_name(filters, name_or_str) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/johannes/.local/share/mamba/envs/jedi-repro/lib/python3.11/site-packages/jedi/inference/finder.py", line 36, in filter_name names = filter.get(string_name) ^^^^^^^^^^^^^^^^^^^^^^^ File "/home/johannes/.local/share/mamba/envs/jedi-repro/lib/python3.11/site-packages/jedi/inference/filters.py", line 109, in get return self._convert_names(self._filter( ^^^^^^^^^^^^^ File "/home/johannes/.local/share/mamba/envs/jedi-repro/lib/python3.11/site-packages/jedi/inference/filters.py", line 145, in _filter return list(self._check_flows(names)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/johannes/.local/share/mamba/envs/jedi-repro/lib/python3.11/site-packages/jedi/inference/filters.py", line 156, in _check_flows check = flow_analysis.reachability_check( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/johannes/.local/share/mamba/envs/jedi-repro/lib/python3.11/site-packages/jedi/inference/flow_analysis.py", line 54, in reachability_check origin_flow_scopes = list(_get_flow_scopes(origin_scope)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/johannes/.local/share/mamba/envs/jedi-repro/lib/python3.11/site-packages/jedi/inference/flow_analysis.py", line 41, in _get_flow_scopes node = get_parent_scope(node, include_flows=True) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/johannes/.local/share/mamba/envs/jedi-repro/lib/python3.11/site-packages/jedi/parser_utils.py", line 261, in get_parent_scope and any(n.start_pos <= node.start_pos < n.end_pos ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/johannes/.local/share/mamba/envs/jedi-repro/lib/python3.11/site-packages/jedi/parser_utils.py", line 261, in <genexpr> and any(n.start_pos <= node.start_pos < n.end_pos ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/johannes/.local/share/mamba/envs/jedi-repro/lib/python3.11/site-packages/parso/python/tree.py", line 706, in get_test_nodes if c in ('elif', 'if'): ^^^^^^^^^^^^^^^^^^^ RecursionError: maximum recursion depth exceeded </pre> </details>
0 条评论