Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Windows and Python 3.8: IOPubThread, add_reader, NotImplementedError

未关闭
#468 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
25/100
Issue 类型
缺陷
描述清晰度
需要澄清
活跃度
停滞
技术栈
jupyter-notebook, python

调研方向

从 adaptive/tests/test_notebook_integration.py 开始,在 Windows 和 Python 3.8 下重现 test_private_api_used_in_live_info。跟踪 IOPubThread 经过 ZMQStream,直到 Tornado 的 asyncio 平台和 ProactorEventLoop.add_reader 调用。在报告的环境中测试不再引发 NotImplementedError 即表示完成。

由索引模型根据 Issue 内容生成。

描述

On Adaptive's CI we are executing the following

    ctx = zmq.Context()
    iopub_socket = ctx.socket(zmq.PUB)
    iopub_thread = ipykernel.iostream.IOPubThread(iopub_socket)

On 'vs2017-win2016' and 'windows-latest' at Python 3.8, I consistently get the following traceback:

2019-12-17T18:23:09.1315754Z ================================== FAILURES ===================================
2019-12-17T18:23:09.1320349Z _____________________ test_private_api_used_in_live_info ______________________
2019-12-17T18:23:09.1320805Z 
2019-12-17T18:23:09.1321185Z     @pytest.mark.skipif(
2019-12-17T18:23:09.1321672Z         not with_notebook_dependencies, reason="notebook dependencies are not installed"
2019-12-17T18:23:09.1322112Z     )
2019-12-17T18:23:09.1322491Z     def test_private_api_used_in_live_info():
2019-12-17T18:23:09.1322903Z         """We are catching all errors in
2019-12-17T18:23:09.1323407Z         adaptive.notebook_integration.should_update
2019-12-17T18:23:09.1323795Z         so if ipykernel changed its API it would happen unnoticed."""
2019-12-17T18:23:09.1324215Z         # XXX: find a potential better solution in
2019-12-17T18:23:09.1325254Z         # https://github.com/ipython/ipykernel/issues/365
2019-12-17T18:23:09.1325873Z         ctx = zmq.Context()
2019-12-17T18:23:09.1326384Z         iopub_socket = ctx.socket(zmq.PUB)
2019-12-17T18:23:09.1326913Z >       iopub_thread = ipykernel.iostream.IOPubThread(iopub_socket)
2019-12-17T18:23:09.1327444Z 
2019-12-17T18:23:09.1327922Z adaptive\tests\test_notebook_integration.py:23: 
2019-12-17T18:23:09.1328544Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2019-12-17T18:23:09.1329549Z .tox\py38-alldeps\lib\site-packages\ipykernel\iostream.py:71: in __init__
2019-12-17T18:23:09.1330309Z     self._setup_event_pipe()
2019-12-17T18:23:09.1330692Z .tox\py38-alldeps\lib\site-packages\ipykernel\iostream.py:90: in _setup_event_pipe
2019-12-17T18:23:09.1331234Z     self._event_puller = ZMQStream(pipe_in, self.io_loop)
2019-12-17T18:23:09.1331675Z .tox\py38-alldeps\lib\site-packages\zmq\eventloop\zmqstream.py:127: in __init__
2019-12-17T18:23:09.1332057Z     self._init_io_state()
2019-12-17T18:23:09.1332770Z .tox\py38-alldeps\lib\site-packages\zmq\eventloop\zmqstream.py:546: in _init_io_state
2019-12-17T18:23:09.1333540Z     self.io_loop.add_handler(self.socket, self._handle_events, self.io_loop.READ)
2019-12-17T18:23:09.1334063Z .tox\py38-alldeps\lib\site-packages\tornado\platform\asyncio.py:99: in add_handler
2019-12-17T18:23:09.1334344Z     self.asyncio_loop.add_reader(fd, self._handle_events, fd, IOLoop.READ)
2019-12-17T18:23:09.1335392Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2019-12-17T18:23:09.1335837Z 
2019-12-17T18:23:09.1336534Z self = <ProactorEventLoop running=False closed=False debug=False>, fd = 2676
2019-12-17T18:23:09.1337114Z callback = <bound method BaseAsyncIOLoop._handle_events of <zmq.eventloop.ioloop.ZMQIOLoop object at 0x000001C14F5552B0>>
2019-12-17T18:23:09.1337654Z args = (2676, 1)
2019-12-17T18:23:09.1338072Z 
2019-12-17T18:23:09.1338756Z     def add_reader(self, fd, callback, *args):
2019-12-17T18:23:09.1339186Z >       raise NotImplementedError
2019-12-17T18:23:09.1339745Z E       NotImplementedError

See this build.

I have no idea why this happens. Is this a bug? Or are some dependencies perhaps broken?

主要语言
Python
星标
734
派生
411
平均合并
1 天 2 小时
30 天内合并 PR
9

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

ipython/ipykernel 的其他 Issue

查看 ipython/ipykernel 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。