{"record":{"id":"006a687132e5829d","repo":"apache/beam","slug":"interactive-support-will-come-later","errorCode":null,"errorMessage":"interactive support will come later!","messagePattern":"interactive support will come later!","errorType":"exception","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"sdks/python/apache_beam/runners/dask/dask_runner.py","lineNumber":230,"sourceCode":"                    si._view_options(),\n                    DaskBagWindowedIterator(si_asbag, si._window_mapping_fn)))\n\n          op_kws[\"side_inputs\"] = bag_side_inputs\n\n        self.bags[transform_node] = op.apply(**op_kws)\n\n    return DaskBagVisitor()\n\n  @staticmethod\n  def is_fnapi_compatible():\n    return False\n\n  def run_pipeline(self, pipeline, options):\n    import dask\n\n    # TODO(alxmrs): Create interactive notebook support.\n    if is_in_notebook():\n      raise NotImplementedError('interactive support will come later!')\n\n    try:\n      import dask.distributed as ddist\n    except ImportError:\n      raise ImportError(\n          'DaskRunner is not available. Please install apache_beam[dask].')\n\n    dask_options = options.view_as(DaskOptions).get_all_options(\n        drop_default=True, current_only=True)\n    bag_kwargs = DaskOptions._extract_bag_kwargs(dask_options)\n    client = ddist.Client(**dask_options)\n\n    pipeline.replace_all(dask_overrides())\n\n    dask_visitor = self.to_dask_bag_visitor(bag_kwargs)\n    pipeline.visit(dask_visitor)\n    # The dictionary in this visitor keeps a mapping of every Beam\n    # PTransform to the equivalent Bag operation. This is highly","sourceCodeStart":212,"sourceCodeEnd":248,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/python/apache_beam/runners/dask/dask_runner.py#L212-L248","documentation":"DaskRunner.run_pipeline detects an interactive notebook environment; running a pipeline from a notebook cells via DaskRunner is not implemented (tracked as a TODO), so the runner refuses rather than behaving incorrectly.","triggerScenarios":"Calling `beam.Pipeline(runner='DaskRunner')` (or DaskRunner().run_pipeline) from inside a Jupyter/IPython notebook session where `is_in_notebook()` returns True.","commonSituations":"Developers prototyping Beam pipelines in Jupyter with --runner=DaskRunner; they hit this immediately since notebook detection is automatic.","solutions":["Run the pipeline from a regular Python script/REPL instead of a notebook.","Clear/override notebook detection context if your environment is falsely detected as a notebook.","Use a different runner (DirectRunner) inside notebooks and DaskRunner only in scripts."],"exampleFix":"// before (in notebook)\np = beam.Pipeline(runner='DaskRunner')\n// after (move to script.py)\n# script.py executed with python script.py\np = beam.Pipeline(runner='DaskRunner')","handlingStrategy":"validation","validationCode":"from apache_beam.runners.dask.dask_runner import is_in_notebook\nif is_in_notebook():\n    raise RuntimeError('DaskRunner cannot run in notebooks; use a script.')","typeGuard":null,"tryCatchPattern":"try:\n    with beam.Pipeline(runner='DaskRunner', options=opts) as p:\n        ...\nexcept NotImplementedError as e:\n    logging.error('Notebook unsupported for DaskRunner: %s', e)","preventionTips":["Run Dask pipelines from scripts, not Jupyter.","Use DirectRunner for interactive notebook exploration.","Be aware of environments that auto-detect as notebooks (VS Code interactive, IPython)."],"tags":["python","apache-beam","dask","notebook","not-implemented"],"backgroundTag":"unsupported-operation","analyzedSha":"12126d8942aaf848030c478b4c6a28c6af861c66","analyzedAt":"2026-09-13T01:50:10.254Z","contentChangedAt":"2026-09-13T01:50:10.254Z","schemaVersion":2},"datasetVersion":"2026-09-20T03:17:13.778Z"}