spyder-ide / spyder-kernels

Jupyter Kernels for the Spyder console
MIT License
39 stars 40 forks source link

Handle async do_complete. #520

Open Carreau opened 1 week ago

Carreau commented 1 week ago

A number of methods of ipykernel can optinally return awaitable[T] instead of just T, this is the case for do_complete.

I think it's a mistake ; see ipython/ipykernel#1295 ; in particular because it's easy to forget / hard to properly type-check, and I'd like to make it mandatory in the long term to have await.

Spyder seem to not handle the case where do_completer return an awaitable (or more partiularly is do_complete is a coroutine function.

This tries to handle it – and as of course do_completer can be async, all caller must be async. So I try to do all the required updates.

Note: I also add explict imports in some test, to get better error message in case those deps are not installed.

Carreau commented 1 week ago

This is more to start a discussion than a "this must be merged". It's mostly to start some discussion also with upstream as we sort of disagree that having def f(...): -> T | Awaitable[T] is a good thing.