Inspection of arguments in function cause inspection of surrounding function
- Lenguaje dominante
- Python
- Estrellas
- 734
- Forks
- 412
- Merge medio
- 1 d 5 h
- PR fusionados (30 d)
- 8
Descripción
At the moment inspection of arguments in function calls is not possible as the function is inspected instead. This is because `do_inspect` relies on `IPython.utils.tokenutil.generate_tokens`:
https://github.com/ipython/ipykernel/blob/c24b252dc4fc81e6cf6354f8d64ea06ed1ce3496/ipykernel/ipkernel.py#L544-L546
The behaviour of `generate_tokens` has changed in https://github.com/ipython/ipython/commit/240eef90ab769a25100eb9f2c4247d775e6c160c . Before it would return the tokens of names, including parameters and names, even if they were inside a function call. Not all edge cases were handled correctly, but for most day-to-day inspection tasks were served fine. Now `generate_tokens` returns function names if the cursor is positioned inside the parentheses:
```
from IPython.utils.tokenutil import generate_tokens, token_at_cursor
from io import StringIO
code = 'func(param1, param2=arg)'
tokens = list(generate_tokens(StringIO(code).readline))
pos = dict(func=3, param1=8, param2=15, arg=22)
# Current behaviour
dict((k, token_at_cursor(code, v) for k, v in pos.items())
# Output: {'func': 'func', 'param1': 'func', 'param2': 'func', 'arg': 'func'}
```
Guía de contribución
Evaluación
Este issue todavía no se ha evaluado.