ctrl+shift+p filters: :st2 :st3 :win :osx :linux
Browse

Hermes

by ngr-t ST3

Let Sublime Text 3 talk with Jupyter.

Details

Installs

  • Total 2K
  • Win 949
  • OS X 894
  • Linux 568
Nov 20 Nov 19 Nov 18 Nov 17 Nov 16 Nov 15 Nov 14 Nov 13 Nov 12 Nov 11 Nov 10 Nov 9 Nov 8 Nov 7 Nov 6 Nov 5 Nov 4 Nov 3 Nov 2 Nov 1 Oct 31 Oct 30 Oct 29 Oct 28 Oct 27 Oct 26 Oct 25 Oct 24 Oct 23 Oct 22 Oct 21 Oct 20 Oct 19 Oct 18 Oct 17 Oct 16 Oct 15 Oct 14 Oct 13 Oct 12 Oct 11 Oct 10 Oct 9 Oct 8 Oct 7 Oct 6
Windows 0 5 1 0 2 11 1 2 5 0 2 1 4 3 4 1 0 8 3 5 13 7 4 0 3 7 3 6 3 7 5 2 0 4 2 3 4 5 2 0 3 4 1 2 2 3
OS X 1 2 2 0 4 2 1 0 0 4 1 1 1 4 2 2 0 3 3 1 4 0 2 1 0 0 9 4 0 4 3 2 2 0 2 2 3 7 1 5 1 6 7 6 0 2
Linux 2 1 3 2 4 2 4 1 1 2 0 0 2 1 4 1 4 0 2 0 9 0 2 0 1 0 2 3 1 0 1 0 1 1 3 4 5 0 2 0 2 1 2 1 1 2

Readme

Source
raw.​githubusercontent.​com

Hermes package for Sublime Text 3

Hermes is a package for Sublime Text 3, which provides in-editor code execution and autocomplete in interaction with Jupyter kernels. The concept of an editor extension communicating Jupyter kernels is inspired by @nteract's splendid Atom package Hydrogen. I want something like it in Sublime Text 3, too.

Any feedback is highly welcome. I hope this package will help your life with ST3!

Introduction image

Installation

Now this package is under the package control channel!

You can install it with Package Control plugin, run Package Control: Install Package, then choose Hermes from the package list.

Usage

Connecting to Jupyter kernels

1. The most basic way, start a kernelspec installed locally, as a subprocess of ST3 (the process stops when Sublime stops)

  1. Run Hermes: connect kernel command.
  2. Choose New kernel.
  3. Choose the kernelspec you want to run.

2. Connect to the kernel already runnning and connected to Hermes

  1. Run Hermes: connect kernel command.
  2. Choose the kernel you want to connect.

3. Connect to a kernel already running under some other Jupyter app (such as Notebook)

  1. Get connection info of the kernel. The way to get connection info differ among kernels, see the doc of each kernel (in ipython kernel, you can get it by %connect_info magic.)
  2. Run Hermes: connect kernel command.
  3. Choose New kernel.
  4. Choose (Enter connection info).
  5. Enter the connection info (Hermes accepts a path or connection info itself).

4. Connect to a kernel already running under some other Jupyter app, in a SSH server

  1. Configure SSH servers in the setting file (opened by Hermes: Settings command.)
  2. Get connection info of the kernel. The way to get connection info differ among kernels, see the doc of each kernel (in ipython kernel, you can get it by %connect_info magic.)
  3. Run Hermes: connect kernel command.
  4. Choose New kernel.
  5. Choose (Connect remote kernel via SSH).
  6. Choose the server, then enter the connection info.

Using Python kernel installed via Conda

Python kernel installed via Conda is not found by Jupyter by default. You should add the path to kernel into the jupyter_path entry of the config file.

Execution

Execute code by Hermes: Execute Block (whose command name is hermes_execute_block).

Code cell

Regions surrounded by # %% or # <codecell> (you can configure it in cell_delimiter_pattern option item) are considered as “code cells”.

You can execute a region by Hermes: Execute cell (hermes_execute_cell) or Hermes: Execute Cell and Move command. Each cell has a clickable “Run Cell” phantom that appears next to the cell markers to run the cell.

Object inspection

Get Object Inspection by Hermes: Get Object Inspection (whose command name is hermes_get_object_inspection).

Autocomplete

You should be able to get autocomplete from the kernel from the time you connected. If you don't want autocomplete, set "complete" as false in setting file.

Other kernel manipulations

You can restart, shutdown, and interrupt process via Hermes: Restart Kernel, Hermes: Shutdown Kernel, Hermes: Interrupt Kernel commands.

You can also run these command as a submenu of Hermes: List Kernels command.

Motivation of development

Why using Jupyter?

We can execute code, retrieve results including images, get completions and object inspections by the Jupyter protocol regardless of the interpreter implementation of languages if it has Jupyter kernel. If we try to do that by directly running interpreters there should be several interpreter-specific problems, but we can entrust the kernel maintainers on language-specific problems by using Jupyter.

Why not using Jupyter Notebook?

I admit Jupyter Notebook is a powerful tool for instantly sharing small analysis work, exploring data or APIs, or making executable tutorials. Yes, I often use it, too. However, in my opinion, it is not suited for projects with large code bases. I want to jumpt across files instantly, make modules organized (not saved as .ipynbs), kick scripts with various parameters, and make project code more reusable and reproducible… but still I want to edit them with interactive feedback.