2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

irbのJupyter wrapper kernelをpoetryを使ってPyPIで公開する

Last updated at Posted at 2020-01-25

タイトルの作業を行っていきます。
irbはRubyのREPLです。

先に出来上がったものを見せると
https://github.com/PyDataOsaka/irb_kernel
になります。

ここに至るまでに下記を行いました。

poetryでパッケージソースの雛形を作成

pip install poetry
poetry new irb_kernel
cd irb_kernel
poetry add pexpect
poetry add notebook

irb_kernel下にコードを追加

@antimon2 さんの Jupyter の Egison 簡易カーネルを自作してみた。

https://github.com/takluyver/bash_kernel
を真似ました。

https://github.com/PyDataOsaka/irb_kernel/blob/master/irb_kernel/install.py

kernel.jsonをインストールするコマンド用の雛形的コードで
https://github.com/takluyver/bash_kernel/blob/master/bash_kernel/install.py

kernel_json = {"argv":[sys.executable,"-m","bash_kernel", "-f", "{connection_file}"],
 "display_name":"Bash",
 "language":"bash",
 "codemirror_mode":"shell",
 "env":{"PS1": "$"}
}

kernel_json = {"argv": [sys.executable,"-m","irb_kernel", "-f", "{connection_file}"],
 "display_name": "Irb",
 "language":"ruby",
 "codemirror_mode": "ruby"
}

に置き換えただけです。
(kernel.jsonがインストールされるとJupyter NotebookのNewドロップダウンリストにdisplay_nameのvalueであるIrbが追加されます。)

次にkernelが行うことを記述するkernel.pyを追加します。
kernel.pyに関してはbash_kernelのkernel.pyより @antimon2 さんの Jupyter の Egison 簡易カーネルを自作してみた。
の egison-kernel.py を真似ています。
egison-kernel.pyの肝の箇所は

            self.egisonwrapper = replwrap.REPLWrapper("egison --prompt " + prompt, 
                unicode(prompt), None)

です。
irb_kernelのkernel.pyでは上記を

            self.irbwrapper = replwrap.REPLWrapper("irb --simple-prompt", ">> ", None)

に変えています。
https://github.com/PyDataOsaka/irb_kernel/blob/master/irb_kernel/__init__.py

https://github.com/PyDataOsaka/irb_kernel/blob/master/irb_kernel/__main__.py

egison-kernel.py同様のkernel.py から bash_kernel同様に __init__.py__main__.py を分離しただけのものです。

これでコードの追加は完了です。

パッケージのビルドとPyPI での公開

# irb_kernel ディレクトリで実行します。
poetry build
poetry publish

これだけで完了です。
https://pypi.org/project/irb-kernel/

PyPIからのパッケージのインストールとkernel.jsonのインストール,そしてJupyterの起動

sudo apt install ruby
pip install irb_kernel
# 下記コマンドはパッケージソースのディレクトリのひとつ上では実行しない方がいいです。
python -m irb_kernel.install
jupyter notebook

以上ですべての作業が終わりました。
インストールすることなくirb_kernelの動作を試されたい場合は
https://mybinder.org/v2/gh/PyDataOsaka/irb_kernel/master
をクリックしてください。

最後に

画像やテーブルのインライン表示はまだできないと思います。
もし興味のある方はぜひ開発を進めてください。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?