Fix inputhook integration - Pass inputhook as an argument to Promptsesion.run().#14241
Conversation
2f93c6f to
04b60c6
Compare
04b60c6 to
3bbe0e4
Compare
|
I you know that you will update the code in prompt toolkit for 3.0.41, then I can help you rewrite this with a conditional on the prompt toolkit version. If it's older prompt_toolkit and python 3.12, we can print a warning. This way I can release IPython 8.18 at the end of the month (or earlier if you wish). |
|
@Carreau: Thank you! To be clear, prompt_toolkit==3.0.40, which was released last Friday is breaking IPython inputhooks right now. I merged prompt-toolkit/python-prompt-toolkit#1810 . I can already release 3.0.41, this won't make a difference, except for Python <3.10 where inputhooks currently still work, those will be broken as well, assuming inputhooks need to be passed as a parameter. |
|
@Carreau : I merged a workaround in prompt_toolkit, which detects whether it's called from IPython and no inputhook argument is being passed: prompt-toolkit/python-prompt-toolkit#1811 This fixes the %gui integrations again. It's released as 3.0.41 |
|
Ok, let's get that at least in the main branch. I'll do a release on Friday. |
See: prompt-toolkit/python-prompt-toolkit#1809
To summarize:
set_event_loop()on Python 3.12. It looks like IPython did had a workaround for the deprecation warning, but Xonsh for instance did not. Now, the code that was fixed in prompt_toolkit breaks input hooks in IPython.It's not well tested (I'm not using IPython with inputhooks myself). I'm also not very familiar myself with IPython's code base.
I think it requires some coordination. I'm not sure if there's a way to be backward compatible. I guess if I push a new prompt_toolkit version with the fix on my side, nothing will break, but input hooks will for sure not work on any Python version until this is merged.
We should probably set the minimum prompt_toolkit version after merging this.