ipython / ipykernel

IPython Kernel for Jupyter
https://ipykernel.readthedocs.io/en/stable/
BSD 3-Clause "New" or "Revised" License
649 stars 367 forks source link

Correctly handle with_cell_id in async do_execute #1227

Closed ianthomas23 closed 7 months ago

ianthomas23 commented 7 months ago

This fixes the minimum dependency tests following the switch to AnyIO (#1079).

In IPythonKernel.do_execute we determine if cell_id is supported using

with_cell_id = _accepts_parameters(run_cell, ["cell_id"])

or similar. This returns a dict, either {"cell_id", True} or {"cell_id", False}.

But when testing this we use

if with_cell_id:

which gives the correct answer if cell_id is supported but the wrong one otherwise. It needs to be

if with_cell_id and with_cell_id["cell_id"]:

instead, which is all this PR does.

It happened to work for IPython >= 8.3.0 because of ipython/ipython#13600 so that cell_id is always accepted, but failed for IPython <= 8.2.0.