{"id":13561187,"url":"https://github.com/codota/jupyter-tabnine","last_synced_at":"2025-04-12T22:26:01.305Z","repository":{"id":40446312,"uuid":"206893497","full_name":"codota/jupyter-tabnine","owner":"codota","description":"Autocompletion with Deep Learning on Jupyter Notebook","archived":false,"fork":false,"pushed_at":"2023-02-05T13:08:34.000Z","size":6237,"stargazers_count":793,"open_issues_count":47,"forks_count":119,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-03-28T01:04:23.407Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codota.png","metadata":{"files":{"readme":"README.ch.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-09-07T00:30:49.000Z","updated_at":"2025-03-21T10:38:04.000Z","dependencies_parsed_at":"2024-01-14T03:45:25.493Z","dependency_job_id":"67530fe1-a44b-46b2-97b6-d9e34ad1a919","html_url":"https://github.com/codota/jupyter-tabnine","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codota%2Fjupyter-tabnine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codota%2Fjupyter-tabnine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codota%2Fjupyter-tabnine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codota%2Fjupyter-tabnine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codota","download_url":"https://codeload.github.com/codota/jupyter-tabnine/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247104205,"owners_count":20884185,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T13:00:53.476Z","updated_at":"2025-04-04T02:04:52.361Z","avatar_url":"https://github.com/codota.png","language":"JavaScript","readme":"# Jupyter Notebook的TabNine自动补全插件\n![jupyter-tabnine](images/demo.gif)\n\n*Read this in other languages: [English](README.md), [中文](README.ch.md)*\n\nJupyter Notebook上基于TabNine的自动补全插件，实现基于深度学习的代码自动补全功能。\n\n其他TabNine插件的实现版本通过在client端启动一个TabNine子进程，并通过管道读写来和TabNine子进程通信。这在Jupyter Notebook上是没法直接实现的，\n因为Jupyter Notebook客户端插件不支持安装第三方库，原有的库又不支持启动子进程。\n\n本项目通过分别实现一个Jupyter Notebook插件和一个Jupyter Server插件来解决这个问题。客户端和服务器通过HTTP来通信。\n基于`JavaScript`的客户端插件根据文件内容构造请求数据，并向Server插件发送请求。基于`Python`的server插件在初始化时启动一个子进程来执行`TabNine`二进制文件，\n在收到客户端请求后，将请求通过管道发送给`TabNine`并将TabNine的返回结果发送给客户端。客户端收到结果后解析生成HTML组件并响应键盘事件。\n\n## 安装\n整个安装步骤分为：安装python包、安装客户端插件和`enable`客户端、服务器插件，所有安装步骤都可以通过`pip`和`jupyter`命令完成。\n\n### 1. 安装python包（以下任选其一）\n\n* 从github repo 安装： `pip3 install https://github.com/wenmin-wu/jupyter-tabnine/archive/master.zip [--user][--upgrade]`\n* 或者 从`pypi` 安装： `pip3 install jupyter-tabnine [--user][--upgrade]`\n* 或者 从源码安装：\n  ```Bash\n  git clone https://github.com/wenmin-wu/jupyter-tabnine.git\n  python3 setup.py install\n  ```\n  \n### 2. 安装Notebook插件\n`jupyter nbextension install --py jupyter_tabnine [--user|--sys-prefix|--system]`\n\n### 3. enable Notebook 和 Server 插件\n```Bash\njupyter nbextension enable --py jupyter_tabnine [--user|--sys-prefix|--system]\njupyter serverextension enable --py jupyter_tabnine [--user|--sys-prefix|--system]\n```\n\n---\n如果你的Jupyter版本在4.2以前，因为`--py`在4.2版本以前的jupyter上没法用，所以步骤1以后操作比较tricky。你需要先找到`jupyter_tabnine`的安装路径，\n然后手动安装。安装路径可以通过下面的命令找到：\n```Python\npython -c \"import os.path as p; from jupyter_tabnine import __file__ as f, _jupyter_nbextension_paths as n; print(p.normpath(p.join(p.dirname(f), n()[0]['src'])))\"\n```\n然后执行：\n```Bash\njupyter nbextension install \u003coutput source directory\u003e\njupyter nbextension enable jupyter_tabnine/main\njupyter serverextension enable \u003coutput source directory\u003e\n```\n`\u003coutput source directory\u003e` 是第一个`python`命令的输出结果。\n\n## 使用说明\n在安装完成后，该插件自动处于激活状态，任何字母、操作符、数字键入都会trigger自动补全。\n\n* 有时你可能想临时查看Jupyter原来的补全结果，可以按`Shift` + `空格`\n  ![显示原来补全Demo](images/show-original-complete.gif)\n* 如果你想关掉TabNine自动补全，既可以在Notebook nbextension 的页面 disable Jupyter TabNine。也可以点击 `Help` 在弹框中找到 Jupyter TabNine把它点掉。\n* 远程补全服务器也是支持的。如果你想部署个Server来处理客户端插件请求，或者你们公司在`Kubernetes`上部署一个Server Cluter请看下面章节了解如何部署自动补全Server。\n\n## 开源许可证\n\n[MIT License](LICENSE)\n\n## 部署自动补全Server (可选)\n\n很快添加\n\n## Star 趋势\n\n[![Stargazers over time](https://starchart.cc/wenmin-wu/jupyter-tabnine.svg)](https://starchart.cc/wenmin-wu/jupyter-tabnine)","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodota%2Fjupyter-tabnine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodota%2Fjupyter-tabnine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodota%2Fjupyter-tabnine/lists"}