Euporie is a text-based user interface for running and editing Jupyter notebooks

Related tags

CLI Tools euporie
Overview

euporie

screenshot 1

About

Euporie is a text-based user interface for running and editing Jupyter notebooks.

Install

Euporie is on pypi, so can be installed using pip:

pip install euporie

If you are using Windows, you may wish to install some optional python dependencies to render images and HTML tables:

pip install euporie[tables,images]

Screenshots

screenshot 2 screenshot 3 screenshot 4 screenshot 5 screenshot 6

Usage

To open a notebook file, pass the file name as a command line parameter:

euporie ~/my-notebook.ipynb

Features

  • Execute notebooks in the terminal
  • Autocompletion in code cells
  • Rich output support, including:
    • Markdown
    • Tables
    • Images
  • Open multiple notebooks side-by-side
  • Good performance with large notebook files

Image Support

Euporie will attempt to render images in the best possible way it can. The following methods are supported:

The kitty & sixel image rendering methods will fall back to ansi art images when rendering images in partially obscured cells, to prevent clipped images destroying the user interface.

For SVG support, cairosvg or imagemagik are required.

HTML Support

Euporie will attempt to render HTML outputs. This requires one of the following:

w3m elinks lynx links mtable

Note: only HTML tables will be displayed if mtable is used

If none of these commands are found in your $PATH, the plain text representation will be used.

Key Bindings

Command Key Binding
Quit Ctrl + q
Open notebook Ctrl + o
New notebook Ctrl + n
Close notebook Ctrl + w
Select next cell Up, k
Select previous cell Down, j
Page up (move up 5 cells) Pgup
Page down (move down 5 cells) PgDown
Scroll up [
Scroll down ]
Enter edit mode Enter
Exit edit mode Esc*, Esc, Esc
Edit cell in $EDITOR e
Run cell Ctrl + Enter**, Ctrl + Space, F20
Run cell and select next cell Shift + Enter**, F21
Insert cell above selected cell a
Insert cell below selected cell b
Toggle line numbers l
Copy cell c
Cut cell x
Paste cell v
Delete cell dd

* There is a slight delay detecting an escape key-event. To exit edit mode quickly, double-press the escape key.

** These entries require key remapping in your terminal in order to work - see below).

When in edit mode, emacs style key-bindings apply.

Key Remapping

By default, VT100 terminal emulators do not distinguish between Enter, Ctrl + Enter & Shift + Enter. In order to work around this, it is possible to re-map these key bindings so they produce the escape code of another key. To replicate the Ctrl + Enter & Shift + Enter of Jupyter, you will need to remap the following shortcuts in your terminal:

Key Combination Output
Ctrl + Enter Ctrl + F20
Shift + Enter F21

xterm

Add the following to your ~/.Xresources

*.vt100.translations: #override \n\
    Ctrl Return: string("\033\[19;6~") \n\
    Shift Return: string("\033\[20;2~") \n\

konsole

In the menu, navigate to:

Settings -> Edit Current Profile -> Keyboard -> Edit

Change the existing entry for Return+Shift to Return+Shift+Ctrl (or whatever you prefer), then add the following entries:

Key combination Output
Return+Ctrl \E\[19;6~
Return+Shift \E\[20;2~

Roadmap

  • Add a configuration file to expose configurable settings
  • Add ability to dump formatted notebooks
  • Add command line argument parsing
  • Render outputs asynchronously in a separate thread
  • Upstream markdown tables in rich
  • Cell attachments
  • LaTeX
  • Widgets

Related projects

Comments
  • Exception 'TextArea' object has no attribute 'preferred_width'

    Exception 'TextArea' object has no attribute 'preferred_width'

    Trying to use the inline plotting, I'm using kitty.

    Here's the code:

    % matplotlib inline
    import matplotlib.pyplot as plt
    plt.plot([1, 2, 3, 4])
    plt.ylabel('some numbers')
    plt.show()
    

    This will immediately exit to the terminal and print the following strace

      File "/Users/yingzhu/miniconda3/envs/python38/lib/python3.8/site-packages/prompt_toolkit/layout/containers.py", line 716, in write_to_screen
        c.write_to_screen(
      File "/Users/yingzhu/miniconda3/envs/python38/lib/python3.8/site-packages/euporie/scroll.py", line 115, in write_to_screen
        self.to_draw = self.arrange_children(write_position)
      File "/Users/yingzhu/miniconda3/envs/python38/lib/python3.8/site-packages/euporie/scroll.py", line 426, in arrange_children
        size = self.get_child_size(i, refresh=True)
      File "/Users/yingzhu/miniconda3/envs/python38/lib/python3.8/site-packages/euporie/scroll.py", line 392, in get_child_size
        size = container.preferred_height(
      File "/Users/yingzhu/miniconda3/envs/python38/lib/python3.8/site-packages/prompt_toolkit/layout/containers.py", line 795, in preferred_height
        return self.content.preferred_height(width, max_available_height)
      File "/Users/yingzhu/miniconda3/envs/python38/lib/python3.8/site-packages/prompt_toolkit/layout/containers.py", line 325, in preferred_height
        dimensions = [
      File "/Users/yingzhu/miniconda3/envs/python38/lib/python3.8/site-packages/prompt_toolkit/layout/containers.py", line 326, in <listcomp>
        c.preferred_height(width, max_available_height) for c in self._all_children
      File "/Users/yingzhu/miniconda3/envs/python38/lib/python3.8/site-packages/prompt_toolkit/layout/containers.py", line 2625, in preferred_height
        return self.content.preferred_height(width, max_available_height)
      File "/Users/yingzhu/miniconda3/envs/python38/lib/python3.8/site-packages/prompt_toolkit/layout/containers.py", line 571, in preferred_height
        sizes = self._divide_widths(width)
      File "/Users/yingzhu/miniconda3/envs/python38/lib/python3.8/site-packages/prompt_toolkit/layout/containers.py", line 632, in _divide_widths
        dimensions = [c.preferred_width(width) for c in children]
      File "/Users/yingzhu/miniconda3/envs/python38/lib/python3.8/site-packages/prompt_toolkit/layout/containers.py", line 632, in <listcomp>
        dimensions = [c.preferred_width(width) for c in children]
      File "/Users/yingzhu/miniconda3/envs/python38/lib/python3.8/site-packages/prompt_toolkit/layout/containers.py", line 316, in preferred_width
        dimensions = [c.preferred_width(max_available_width) for c in self.children]
      File "/Users/yingzhu/miniconda3/envs/python38/lib/python3.8/site-packages/prompt_toolkit/layout/containers.py", line 316, in <listcomp>
        dimensions = [c.preferred_width(max_available_width) for c in self.children]
      File "/Users/yingzhu/miniconda3/envs/python38/lib/python3.8/site-packages/euporie/output.py", line 124, in preferred_width
        return self.content.preferred_width(*args, **kwargs)
    
    Exception 'TextArea' object has no attribute 'preferred_width'
    

    Some setup info:

    ❯ kitty --version
    kitty 0.19.3 created by Kovid Goyal
    ❯ pip list | rg prompt-toolkit
    prompt-toolkit                3.0.18
    ❯ pip list | rg matplot
    matplotlib                    3.4.2
    matplotlib-inline             0.1.2
    ❯ uname -a
    Darwin MacBook-Air-4 20.3.0 Darwin Kernel Version 20.3.0: Mon Dec  7 22:03:58 PST 2020; root:xnu-7195.80.16.111.1~1/RELEASE_ARM64_T8101 arm64
    ❯ pip list | rg euporie
    euporie                       0.1.9
    ❯ pip list | rg ipython
    ipython                       7.16.0
    ipython-genutils              0.2.0
    ptipython                     1.0.1
    ❯ python --version
    Python 3.8.6
    
    opened by yingzhu146 23
  • Dragging the scrollbar to scroll is extremely finnicky

    Dragging the scrollbar to scroll is extremely finnicky

    When I use my mouse to left click-and-drag the scrollbar in Euporie Notebook, the scrolling is very irregular. Additionally, when I release the left mouse button, the scroll bar sometimes continues to be dragged with the vertical motion of my mouse; an additional click on the scrollbar seems to remove this effect.

    The versions of software I am using, as well as a GIF that demonstrates my issue, are included below.

    • euporie 2.0.7
    • Python 3.10.4
    • Ubuntu 22.04
    • gnome-terminal 3.44.0

    output

    opened by jjeffrey 14
  • Refresh notebook

    Refresh notebook

    Would it be possible to implement (1) a menu entry that refresh the notebook (i.e. reload it from file) and (2) a feature that continuously monitor the notebook file for changes, and if there are changes, automatically reload it?

    The use case is: I edit the notebook in plain vim with the percentage format, and then convert it back to notebook format with jupytext.

    I know euporie has vim keybindings, but I have a whole ecosystem in vim which goes beyond keybindings (custom keybindings, plugins, etc.), so I would like to edit the notebook in plain vim, and update it with jupytext.

    It would be great if euporie could refresh the notebook automatically.

    opened by 875d 9
  • non-default kernel issue on Windows

    non-default kernel issue on Windows

    I've tried euporie on WSL (with Ubuntu) and it works. Now I need to use it on Windows because my python package (arcpy) is just running on Windows. I installed it via pipx on Windows but cannot configure it with a non-default kernel. Is it something you can help?

    my existing kernels:

    C:\Users\asharaf>jupyter kernelspec list
    Available kernels:
      python3    C:\Users\asharaf\AppData\Local\ESRI\conda\envs\arcgispro-py3-clone\share\jupyter\kernels\python3
      xpython    C:\Users\asharaf\AppData\Local\ESRI\conda\envs\arcgispro-py3-clone\share\jupyter\kernels\xpython
    

    euporie configuration file:

    PS C:\Users\asharaf\AppData\Local\euporie> cat .\config.json
    {
      "color_scheme": "dark",
      "syntax_theme": "native",
      "notebook": {
        "expand": false,
        "always_show_tab_bar": true,
        "show_cell_borders": false,
        "kernel_connection_file": "C:\Users\asharaf\AppData\Local\ESRI\conda\envs\arcgispro-py3-clone\share\jupyter\kernels\python3\kernel.json",
        "kernel_name": "python3"
      },
      "console": {
        "color_scheme": "default",
        "syntax_theme": "dracula"
      },
      "preview": {
        "show_cell_borders": true
      }
    }
    

    euporie log:

    image

    opened by azinsharaf 6
  • question: sample config file for different kernel

    question: sample config file for different kernel

    Hi, Can someone give me a config file example for euporie notebook for non-default kernel name and kernel connection file? I am using it on Windows and can't connect to an existing kernel in a python venv.

    C:\Users\asharaf>jupyter kernelspec list
    Available kernels:
      python3    C:\Users\asharaf\AppData\Local\ESRI\conda\envs\arcgispro-py3-clone\share\jupyter\kernels\python3
      xpython    C:\Users\asharaf\AppData\Local\ESRI\conda\envs\arcgispro-py3-clone\share\jupyter\kernels\xpython
    
    opened by azinsharaf 6
  • partial sixel rendering

    partial sixel rendering

    While playing with your euporie browser example I saw that you do a low quality prerendering of graphics while they are not fully in viewport, and once they are fully in the viewport, switch to better quality with sixel.

    This currently raises 3 issues:

    • low UX, as peeps first see a blurry preview like thingy
    • issues with overly big graphics not fitting into the viewport - no chance to get nice quality output here at all?
    • (blurry preview still has cell width issues, at least in the browser variant)

    Thus I wonder if it would be feasible to do partial sixel rendering.

    Now the main issue with sixels is - it is very expensive to convert the original image into sixel in the first place, as it needs quantization and dithering. So ideally one want to do that only once and cache the result. On the other hand the advanced image algos needed for sixel conversion kinda make pre-slicing the original image into line parts and separately convert to sixel a no-go, as the created color palettes and dithering pattern are not stable (would lead to ugly stitching artefacts).

    A possible solution to all those downsides would be a sixel-cropping library, eg.:

    • create full sixel repr of the original image
    • crop into that sixel as needed (pull pixel area WxH with needed colors)
    • print the cropped part

    A more involved solution would be to write own sixel converter capable to freeze the color palette, and do the substitution on slices of the original image. This would need one initial quantization step creating a color substitution map with dithering marks. With that slices can be created pretty fast and memory efficient. (I suggested something similar here for the julia peeps, as they are keen to code such a thingy on their own).

    So I wonder if you are interested in such an enhancement for sixel output. In general I'd lean more towards to the sixel-crop library idea, which should be straight forward to implement.

    opened by jerch 6
  • Feature Request: Change terminal cursor shape depending on mode

    Feature Request: Change terminal cursor shape depending on mode

    Howdy!

    I'm really loving the direction euporie is headed. One small request would be to allow customization of the cursor depending on the editing mode. Many people who use modal text editors (e.g., Vim, but not trying to flame any wars) configure their editors to change the cursor shape depending on the mode. For instance, I use a block cursor for command mode and a vertical bar for insert mode (as well as an underline for replace mode, but the former is way more important).

    This could be done easily by allowing the user to set a string that may contain escape sequences that is emitted during mode changes, akin to Readline's vi-ins-mode-string and vi-cmd-mode-string. This would also enable further creative uses.

    If you'd be willing to provide some pointers to spots in the codebase, I'd be happy to attempt an implementation.

    Thanks again for your awesome work!

    opened by zharmany 5
  • Feature request: Some ideas for improving input cells

    Feature request: Some ideas for improving input cells

    First off: absolutely stoked to see this project - comes so close to my ideal workflow that I got very excited brainstorming additional suggestions. Thanks a ton!

    Right now, my jupyter TUI workflow is essentially using Neovim on a left kitty split and ptipython on the right side (i.e. ptpython using the ipython shell. This works surprisingly well for everything (and works across every language, too, just need a REPL). Here's some ideas coming from that.

    There is a couple of niceties that ptpython does that would be absolutely fantastic to have in euporie

    1) improved vim mode:

    ptpython allows you to use vim on an individual input cell. right now to my understanding euporie only allows it on a notebook level, however this basically forces me to use e for every simple edit, which is kind of disturbing to the workflow since I have to do e -> <edit thing> -> :x -> ctrl-r.

    Cooler would be if it would be solved like in the jupyterlab vim extension where single escape gets you to normal mode in a jupyter notebook level and shift escape or double escape gets you to vim mode on a notebook level. Another way to remove friction here is to make a write of the temp file executes the respective cell, so we could at least get rid of the last ctrl-r (by the time of write I'm pretty committed to executing it so the ctrl-r feels superfluous).

    It would also be helpful to make sure that the tempfile has the right filetype (e..g use .py ending to make sure the editor filetype recognition works and you have LSP etc available)

    2) function signatures and other advanced features (or even LSP support)?

    image

    3) autosuggestion

    4) completion while typing

    (3/4 look something like this in practice)

    image

    5) Variable viewer

    Like the jupyterlab equivalent

    opened by yingzhu146 5
  • AttributeError: 'NotebookApp' object has no attribute 'background_tasks'

    AttributeError: 'NotebookApp' object has no attribute 'background_tasks'

    This is such a cool app! Thank you for this! :)

    I tried to run it in iterm2 using Python 3.11.0 on macOS Ventura (13.0.1) after running:

    python -m pip install --user euporie
    euporie-notebook
    

    And it launches, but when I do CTRL+n to create a new notebook, it unfortunately gives an error: Screenshot 2022-12-01 at 08 31 10

    I can't select the ? in that image, but I can select copy traceback, which doesn't do anything immediately, but if I hit CTRL+q, it prints the following traceback

    2022-12-01 08:24:02 CRITICAL Uncaught exception     euporie.core.log.handle_exception:421
    Traceback (most recent call last):
        File "/Users/friend/Library/Python/3.11/bin/euporie-notebook", line 8, in <module>
          sys.exit(main())
                   ^^^^^^
        File "/Users/friend/Library/Python/3.11/lib/python/site-packages/euporie/notebook/__main__.py", line 8, in main
          __main__.main(__name__.split(".")[1])
        File "/Users/friend/Library/Python/3.11/lib/python/site-packages/euporie/core/__main__.py", line 10, in main
          return entry.load().launch()
                 ^^^^^^^^^^^^^^^^^^^^^
        File "/Users/friend/Library/Python/3.11/lib/python/site-packages/euporie/core/app.py", line 534, in launch
          return cls().run()
                 ^^^^^^^^^^^
       File "/Users/friend/Library/Python/3.11/lib/python/site-packages/prompt_toolkit/application/application.py",
      line 978, in run    return loop.run_until_complete(
                 ^^^^^^^^^^^^^^^^^^^^^^^^
       File
      "/usr/local/Cellar/[email protected]/3.11.0/Frameworks/Python.framework/Versions/3.11/lib/python3.11/asyncio/base_event…
      , line 650, in run_until_complete    return future.result()
                 ^^^^^^^^^^^^^^^
       File "/Users/friend/Library/Python/3.11/lib/python/site-packages/prompt_toolkit/application/application.py",
      line 891, in run_async    await self.cancel_and_wait_for_background_tasks()
       File "/Users/friend/Library/Python/3.11/lib/python/site-packages/euporie/core/app.py", line 832, in
      cancel_and_wait_for_background_tasks    for task in self.background_tasks:
                      ^^^^^^^^^^^^^^^^^^^^^
      AttributeError: 'NotebookApp' object has no attribute 'background_tasks'
    

    I also tried uninstalling with pip and then reinstalling with pipx, but got the same error and traceback:

    2022-12-01 08:40:32 CRITICAL Uncaught exception
    euporie.core.log.handle_exception:421
    Traceback (most recent call last):
                  File "/Users/friend/.local/bin/euporie", line 8, in <module>
                    sys.exit(main())
                             ^^^^^^
                 File
                "/Users/friend/.local/pipx/venvs/euporie/lib/python3.11/site-packages/euporie…
                , line 10, in main    return entry.load().launch()
                           ^^^^^^^^^^^^^^^^^^^^^
                 File
                "/Users/friend/.local/pipx/venvs/euporie/lib/python3.11/site-packages/euporie…
                , line 32, in launch    main(app)
                 File
                "/Users/friend/.local/pipx/venvs/euporie/lib/python3.11/site-packages/euporie…
                , line 10, in main    return entry.load().launch()
                           ^^^^^^^^^^^^^^^^^^^^^
                 File
                "/Users/friend/.local/pipx/venvs/euporie/lib/python3.11/site-packages/euporie…
                , line 534, in launch    return cls().run()
                           ^^^^^^^^^^^
                 File
                "/Users/friend/.local/pipx/venvs/euporie/lib/python3.11/site-packages/prompt_…
                , line 978, in run    return loop.run_until_complete(
                           ^^^^^^^^^^^^^^^^^^^^^^^^
                 File
                "/usr/local/Cellar/[email protected]/3.11.0/Frameworks/Python.framework/Versions/3.…
                , line 650, in run_until_complete    return future.result()
                           ^^^^^^^^^^^^^^^
                 File
                "/Users/friend/.local/pipx/venvs/euporie/lib/python3.11/site-packages/prompt_…
                , line 891, in run_async    await self.cancel_and_wait_for_background_tasks()
                 File
                "/Users/friend/.local/pipx/venvs/euporie/lib/python3.11/site-packages/euporie…
                , line 832, in cancel_and_wait_for_background_tasks    for task in self.
                background_tasks:                ^^^^^^^^^^^^^^^^^^^^^
                AttributeError: 'NotebookApp' object has no attribute 'background_tasks'
    
    opened by jessebot 4
  • Recover deleted cells

    Recover deleted cells

    Thank you for this awesome tool! I love the Vim-like keybindings of Euporie.

    While using Euporie, I sometimes mistakenly delete cells, but could not find a way to recover.

    It would be great if Euporie has "Undo Delete Cells" feature similar to Jupyter.

    Alternatively, it would be also helpful to have an option to back up the deleted cells in the tmp directory (e.g. /tmp/euporie_deleted_cell_2022-12-30T23:59:59.py) so that users can recover later.

    opened by Minyus 4
  • image rendering on alacritty

    image rendering on alacritty

    Is it a known limitation in Alacritty terminal that can't render the images well?

    I don't know anything about sixel and not sure if is usable on Windows. I installed timg in my python env and it broke it.

    image

    opened by azinsharaf 3
  • Custom keybindings

    Custom keybindings

    Hi,

    I would like to add a keybinding to run all cells.

    The doc says:

    This parameter takes the form of a mapping, where they keys are references to modes or components to which a set of key-bindings apply, and the values are mapping of command names to lists of keys. Key bindings set in the configuration will entirely over-ride the default binding, so if you want to add an additional binding for a command while retaining the default, you will need to include the default binding in the configuration.

    1. Where do I find, in the doc, the list of valid "command names"?
    2. How do I "include the default binding in the configuration"?
    opened by raffaem 0
  • Timed out

    Timed out

    Command line: euporie-notebook --kernel-name=ir 2_matching.ipynb

    Config file:

    {
      "app": {
        "edit_mode": "vi",
        "line_numbers": false
      },
      "notebook": {
        "edit_mode": "vi",
        "line_numbers": true,
    	"autocomplete": true,
    	"autosuggest": true,
    	"autoinspect": true,
    	"log_file": "[MY HOME DIRECTORY]/Documents/euporie.log",
    	"log_level": "debug"
      }
    }
    

    Trying to run two very simple lines (can't yank in system clipboard): image

    The execution never ends, the * is shown in the cell forever.

    From the logs it looks like it times out waiting for kernel response:

    2022-12-23 09:31:07 DEBUG   [euporie.core.terminal.send:115] Sending query '\x1b]10;?\x1b\\\x1b]11;?\x1b\\\x1b]4;0;?\x1b\\\x1b]4;1;?\x1b\\\x1b]4;2;?\x1b\\\x1b]4;3;?\x1b\\\x1b]4;4;?\x1b\\\x1b]4;5;?\x1b\\\x1b]4;6;?\x1b\\\x1b]4;7;?\x1b\\\x1b]4;8;?\x1b\\\x1b]4;9;?\x1b\\\x1b]4;10;?\x1b\\\x1b]4;11;?\x1b\\\x1b]4;12;?\x1b\\\x1b]4;13;?\x1b\\\x1b]4;14;?\x1b\\\x1b]4;15;?\x1b\\' for Colors
    2022-12-23 09:31:07 DEBUG   [euporie.core.terminal.send:115] Sending query '\x1b[14t' for PixelDimensions
    2022-12-23 09:31:07 DEBUG   [euporie.core.terminal.send:115] Sending query '\x1b[c' for SixelGraphicsStatus
    2022-12-23 09:31:07 DEBUG   [euporie.core.terminal.send:115] Sending query '\x1b[s\x1b_Gi=4294967295,s=1,v=1,a=q,t=d,f=24;AAAA\x1b\\\x1b[u\x1b[2K' for KittyGraphicsStatus
    2022-12-23 09:31:07 DEBUG   [euporie.core.terminal.send:115] Sending query '\x1b[>q' for ItermGraphicsStatus
    2022-12-23 09:31:07 DEBUG   [euporie.core.terminal.send:115] Sending query '\x1b[?1016$p' for SgrPixelStatus
    2022-12-23 09:31:07 DEBUG   [euporie.core.terminal._handle_response:98] Got terminal response for 'Colors'
    2022-12-23 09:31:07 DEBUG   [euporie.core.terminal._handle_response:98] Got terminal response for 'Colors'
    2022-12-23 09:31:07 DEBUG   [euporie.core.terminal._handle_response:98] Got terminal response for 'Colors'
    2022-12-23 09:31:07 DEBUG   [euporie.core.terminal._handle_response:98] Got terminal response for 'Colors'
    2022-12-23 09:31:07 DEBUG   [euporie.core.terminal._handle_response:98] Got terminal response for 'Colors'
    2022-12-23 09:31:07 DEBUG   [euporie.core.terminal._handle_response:98] Got terminal response for 'Colors'
    2022-12-23 09:31:07 DEBUG   [euporie.core.terminal._handle_response:98] Got terminal response for 'Colors'
    2022-12-23 09:31:07 DEBUG   [euporie.core.terminal._handle_response:98] Got terminal response for 'Colors'
    2022-12-23 09:31:07 DEBUG   [euporie.core.terminal._handle_response:98] Got terminal response for 'Colors'
    2022-12-23 09:31:07 DEBUG   [euporie.core.terminal._handle_response:98] Got terminal response for 'Colors'
    2022-12-23 09:31:07 DEBUG   [euporie.core.terminal._handle_response:98] Got terminal response for 'Colors'
    2022-12-23 09:31:07 DEBUG   [euporie.core.terminal._handle_response:98] Got terminal response for 'Colors'
    2022-12-23 09:31:07 DEBUG   [euporie.core.terminal._handle_response:98] Got terminal response for 'Colors'
    2022-12-23 09:31:07 DEBUG   [euporie.core.terminal._handle_response:98] Got terminal response for 'Colors'
    2022-12-23 09:31:07 DEBUG   [euporie.core.terminal._handle_response:98] Got terminal response for 'Colors'
    2022-12-23 09:31:07 DEBUG   [euporie.core.terminal._handle_response:98] Got terminal response for 'Colors'
    2022-12-23 09:31:07 DEBUG   [euporie.core.terminal._handle_response:98] Got terminal response for 'Colors'
    2022-12-23 09:31:07 DEBUG   [euporie.core.terminal._handle_response:98] Got terminal response for 'Colors'
    2022-12-23 09:31:07 DEBUG   [euporie.core.terminal._handle_response:98] Got terminal response for 'KittyGraphicsStatus'
    2022-12-23 09:31:07 DEBUG   [euporie.core.terminal._handle_response:98] Got terminal response for 'ItermGraphicsStatus'
    2022-12-23 09:31:07 DEBUG   [euporie.core.terminal._handle_response:98] Got terminal response for 'SgrPixelStatus'
    2022-12-23 09:31:07 INFO    [euporie.core.app.open_file:554] Opening file 2_matching.ipynb
    2022-12-23 09:31:07 DEBUG   [euporie.core.tabs.notebook.__init__:78] Loading notebooks [PATH TO MY NOTEBOOK]
    2022-12-23 09:31:07 DEBUG   [euporie.core.kernel.start_:260] Starting kernel
    2022-12-23 09:31:07 DEBUG   [euporie.core.kernel.start_:287] Started kernel
    2022-12-23 09:31:07 DEBUG   [euporie.core.kernel.start_:306] Waiting for kernel to become ready
    2022-12-23 09:31:08 DEBUG   [euporie.core.tabs.notebook.run_cell:298] Queuing running of cell 0
    2022-12-23 09:31:08 DEBUG   [euporie.core.kernel.start_:315] Kernel b96350a1-c5ab-4d4c-a722-6a0d651c9a4e ready
    2022-12-23 09:31:08 DEBUG   [euporie.core.kernel.poll:363] Waiting for shell messages
    2022-12-23 09:31:08 DEBUG   [euporie.core.kernel.poll:363] Waiting for iopub messages
    2022-12-23 09:31:08 DEBUG   [euporie.core.kernel.poll:363] Waiting for stdin messages
    2022-12-23 09:31:08 DEBUG   [euporie.core.tabs.base.kernel_started:178] Running 1 kernel tasks
    2022-12-23 09:31:08 DEBUG   [euporie.core.kernel.history_:803] Timed out waiting for kernel info response
    
    opened by 875d 6
  • Configuration options

    Configuration options

    1. here it says that "configuration options are listed below", but nothing is listed
    2. here it talks about the configuration file, but it is not explained what are the valid configuration options. My understanding is that they are the same as the command line options, but (1) without the -- at the start, (2) with - in the middle substituted with _ (e.g. the --color-scheme command line options becomes the color_scheme config file option), and (3) command line options that don't take parameters are boolean options in the config file. I think we should write that.
    opened by 875d 6
  • Incorrect Description of Changing cell type

    Incorrect Description of Changing cell type

    Changing Cell's Type has incorrect description . It is explaining how to close notebook instead of how to change cell's type. Corresponding file in repo. Maybe we can add good first issue

    good first issue 
    opened by DivyanshuBist 3
Releases(v2.2.0)
  • v2.2.0(Dec 5, 2022)

    Added

    • Make drop-shadows configurable

    Changed

    • Changed to hatch for package build system

    Fixed

    • Fix automatic contextual help
    • Second attempt to fix cell output left scroll issue
    Source code(tar.gz)
    Source code(zip)
  • v2.1.5(Dec 5, 2022)

    Fixed

    • Attempt fix for cell output left scroll issue
    • Prevent background_tasks error with prompt_toolkit==3.0.30
    • Prevent error when adding a cell during initial render
    Source code(tar.gz)
    Source code(zip)
  • v2.1.4(Dec 5, 2022)

  • v2.1.3(Nov 29, 2022)

    Added

    • New command to reset tabs, causing notebooks to be reloaded from the filesystem
    • Improvements to the HTML renderer

    Fixed

    • Use valid defaults for foreground and background colors for applications
    • Do not collapse cell when clicking on prompt itself, only the area below
    • Ensure logo is visible in the documentation
    • Fix code block language detection in HTML renderer
    Source code(tar.gz)
    Source code(zip)
  • v2.1.2(Nov 14, 2022)

  • v2.1.1(Oct 31, 2022)

  • v2.1.0(Oct 29, 2022)

    Added

    • Make shadows under menus and dialogs semi-transparent
    • Add ability to parse comma-separated CSS selectors to HTML parser
    • Make dialogs draggable
    • Allow configuring the external editor
    • Add ability to inject cell position into external editor command (this allows and external editor to be run in a tmux popup)

    Fixed

    • Significant performance improvements when rendering HTML tables
    • Close file after prompting to save a new file when euporie is closed
    • Fix dialog button shortcut keys
    • Display error messages in file open dialog
    • Fixed broken mouse events in button widgets
    • Prevent IndexError when deleting a selection of cells including the last cell
    Source code(tar.gz)
    Source code(zip)
  • v2.0.9(Oct 26, 2022)

    Added

    • Do not show text selection when cell input is not focused
    • Allow menus to be closed with Escape and opened with F10
    • Enable cell inputs and outputs to be collapsed
    • Make changing cursor shapes to showing editing mode configurable

    Fixed

    • Fixed issue where graphics are not displayed in console but are in notebook
    • Re-apply style to cell input background
    • Highlight selected trailing whitespace
    • Reset button selection status on any global mouse event
    Source code(tar.gz)
    Source code(zip)
  • v2.0.8(Oct 7, 2022)

    Added

    • Use SGR-pixel position for greater scrolling resolution when dragging scrollbar
    • Clear selection in console before printing input
    • Add ability to toggle top bar visibility
    • Use cursor shapes to show the current input mode

    Fixed

    • Even more graphics rendering adjustments, including enabling sixel rendering with :command:chafa
    • Do not clear a cell's output when converting a cell to markdown
    Source code(tar.gz)
    Source code(zip)
  • v2.0.7(Sep 12, 2022)

    Fixed

    • Fix various graphics rendering glitches
    • Disable line wrapping before probing terminal to prevent unrecognised APCs moving the cursor to the next line
    Source code(tar.gz)
    Source code(zip)
  • v2.0.6(Sep 9, 2022)

    Fixed

    • Prevent last cell of SIXEL images being overwritten
    • Fix ubiqitous hyperlink issue
    • Fix graphics detection for Konsole
    • Hide kitty detection APC sequence in terminals which do not support APC codes
    Source code(tar.gz)
    Source code(zip)
  • v2.0.5(Aug 29, 2022)

    Added

    • Add interactive JSON cell output preview

    Fixed

    • Sort configuration sub-menus
    • Prevent crash when opening key-binding dialog
    • Prevent jumping when scrolling if document is less than one page long
    • Fixed issue with range sliders which caused a crash on notebook load
    Source code(tar.gz)
    Source code(zip)
  • v2.0.4(Aug 28, 2022)

    Added

    • Add colorful command line help text

    Changed

    • Pre-render cells in background thread when notebook is loaded
    • Make scrolling the notebook significantly less janky

    Fixed

    • Scroll the selected cell into view when entering cell edit mode
    • Prevent excessive re-rendering of cells
    Source code(tar.gz)
    Source code(zip)
  • v2.0.3(Aug 28, 2022)

    Fixed

    • Handle deleted cells in cell mouse handle wrapper
    • Fixed bug in euporie-notebook where cursor remains hidden when the app exits
    • Fix inverted missing kernel logic
    Source code(tar.gz)
    Source code(zip)
  • v2.0.2(Aug 28, 2022)

    Fixed

    • Fixed bug where rendering LaTeX in HTML would sometime fail
    • Fixed bug where ipywidget float log sliders would not accept intermediate values
    Source code(tar.gz)
    Source code(zip)
  • v2.0.1(Aug 28, 2022)

  • v2.0.0(Aug 18, 2022)

    Added

    • Added new HTML renderer
    • Added shortcut key hints in menus and buttons
    • Added a shadow under the completions menu
    • Allow changing color depth on the fly
    • Key-bindings can now be edited in the configuration file
    • Queue inputs which are run before kernel starts, and run them once the kernel has started
    • Add ability to convert from console to notebook
    • Set initial vi mode to navigation
    • Add euporie console application
    • Add "Save As..." command
    • Allow opening file from remote file systems (e.g. http:, hdfs:, gs:, s3:, etc.)
    • Add ability to undo deleting cells
    • Add support for ipywidgets
    • Allow changing app accent color
    • Allow connecting to existing kernels with :option:kernel_connection_file config option

    Changed

    • Auto-indent text on newline inside brackets in micro editor mode
    • Improve quality of copied outputs
    • Cells are now displayed as soon as they are rendered in preview
    • Added the --save option in preview, which saves the notebook if --run is used
    • Apps are now individually configurable
    • The edit app is not called notebook
    • The preferred method of launching apps is now using the euporie-* commands
    • The style of the applications and widgets has been refresh
    • Allow creating new notebooks without first passing a file path
    • Use fastjsonschema to parse configuration more quickly
    • Reduce memory usage by allowing the garbage collector to remove deleted cells and graphics
    • Make clicking to select a cell pass the click event to the cell

    Fixed

    • Clicking on a cell to focus no longer results in a selection if the notebooks has to be scrolled
    • Fix issue with hyperlinks taking over the screen
    • Fix bug which prevented mouse scrolling in some circumstances
    • Fix --version command line flag
    Source code(tar.gz)
    Source code(zip)
  • v1.6.1(May 8, 2022)


    Changed

    • Allow file: scheme links in markdown

    Fixed

    • Enable entering vi navigation mode
    • Change "go to matching bracket" command key-binding in micro mode to Alt+( / Alt+), so as not to conflict with the "find-next" command
    Source code(tar.gz)
    Source code(zip)
  • v1.6.0(Apr 26, 2022)

    Added

    • Add dialog explaining if no kernels are found
    • Allow changing tabs by scrolling on them
    • Add "Custom" color scheme, allowing foreground and background colours to be configured
    • Add "Black" and "White" color schemes
    • Add a tab bar, and tab stacking / tiling
    • Detect terminal colors inside tmux

    Changed

    • Fix bug where markdown was not rendered on some installs
    • Update documentation
    • Remove input flush timeout after escape key
    • Use sub-command in the command line interface
    • Styling changes
    • Do not colour cell input box background if terminal background color is not detected
    • Improve cell stdin focus logic

    Fixed

    • Force cell input to be re-lexed when changing cell type
    • Prevent OSC-8 link mis-detection bug by adding link IDs
    • Fix regression making cell selection in long notebooks very slow
    Source code(tar.gz)
    Source code(zip)
  • v1.5.0(Apr 19, 2022)

    Added

    • Allow extending selection by word using Alt+Shift+Left / Alt+Shift+Right
    • Add euporie hub: a multi-client SSH server serving euporie
    • Add search toolbar (searches cell input in edit mode)
    • Use prompt_toolkit to format logging output
    • Allow scrolling cell outputs with left and right in command mode
    • Theme more elements based on current terminal theme

    Changed

    • Optimize imports, reducing import times by ~50%
    • Improve fix for missing first empty cells in html2text markdown tables

    Fixed

    • Restore graphics in tmux functionality
    • Allow entering edit mode by clicking on cell input
    • Expand ~ in log file path
    • Prevent IPython import race condition when IPython is installed
    • Prevent down key moving to next cell if the cursor is on the last line of a cell when the completion menu is open
    • Enable euporie to run on Window again
    • Prevent an underscore being printed when the app is launched
    • Only send terminal queries if the terminal supports it
    Source code(tar.gz)
    Source code(zip)
  • v1.4.3(Mar 30, 2022)

    Added

    • Notebook will scroll so the cursor is always visible when in edit mode
    • Add ability to copy cell output
    • Allow colour-depth to be manually configured
    • Allow scroll bar visibility to be toggled

    Fixed

    • Ensure dumping notebooks works when stdin is not a TTY (this allows euporie to be used to preview notebooks in ranger)
    • Prevent exception when navigating to an empty cell in edit mode
    • Prevent wide tables from wrapping with html2text renderer
    Source code(tar.gz)
    Source code(zip)
  • v1.4.2(Mar 29, 2022)

    Added

    • Respond to kernel requests to clear cell outputs
    • Used colored output with elinks HTML renderer

    Fixed

    • Fix parsing of html tables with empty first cells by html2text
    • Fixed toggling comments if a line consists of a single right-stripped comment

    Improved

    • Parse environment variables a Python literals, so setting a binary variable to "False" no longer evaluates to True
    Source code(tar.gz)
    Source code(zip)
Owner
null
Magma is a NeoVim plugin for running code interactively with Jupyter.

Magma Magma is a NeoVim plugin for running code interactively with Jupyter. Requirements NeoVim 0.5+ Python 3.8+ Required Python packages: pynvim (for

Daniel Csillag 372 Dec 26, 2022
Textual: a TUI (Text User Interface) framework for Python inspired by modern web development

Textual Textual is a TUI (Text User Interface) framework for Python inspired by

null 17.1k Jan 4, 2023
jenkins-tui is a terminal based user interface for Jenkins.

jenkins-tui ?? jenkins-tui is a terminal based user interface for Jenkins. ?? ⚠️ This app is a prototype and in very early stages of development. Ther

Craig Gumbley 22 Oct 24, 2022
A Python package for a basic CLI and GUI user interface

Bun Bun (Basic user interface) is a small Python package for a basic user interface. Table of contents Introduction Installation Usage Known issues an

Caltech Library 12 Mar 25, 2022
A command line interface to interact with the Hypixel api allowing the user to get stats, leaderboards, etc

HyConsole is a way to get data on players and leaderboards from the Hypixel Minecraft server from the command line. Keep in mind I have no a

null 1 Feb 14, 2022
A simple script that outputs the current date on the user interface/terminal.

Py-Date A simple script that outputs the current date on the user interface/terminal. How to Run > Open your terminal and cd into the folder containi

Arinzechukwu Okoye 1 Jan 13, 2022
CLI program that allows you to change your Alacritty config with one command without editing the config file.

Pycritty Change your alacritty config on the fly! Installation: pip install pycritty By default, only the program itself will be installed, but you ca

Antonio Sarosi 184 Jan 7, 2023
Jupyter notebook client in neovim

?? Jupyter-Nvim Read jupyter notebooks in neovim Note: The plugin is still in alpha stage ?? Usage Just open any *.ipynb file and voila! ✨ Contributin

Ahmed Khalf 85 Dec 29, 2022
Ipylivebash - Run shell script in Jupyter with live output

ipylivebash ipylivebash is a library to run shell script in Jupyter with live ou

Ben Lau 6 Aug 27, 2022
Open a file in your locally running Visual Studio Code instance from arbitrary terminal connections.

code-connect Open a file in your locally running Visual Studio Code instance from arbitrary terminal connections. Motivation VS Code supports opening

Christian Volkmann 56 Nov 19, 2022
A simple python application for running a CI pipeline locally

A simple python application for running a CI pipeline locally This app currently supports GitLab CI scripts

Tom Stowe 0 Jan 11, 2022
CLabel is a terminal-based cluster labeling tool that allows you to explore text data interactively and label clusters based on reviewing that data.

CLabel is a terminal-based cluster labeling tool that allows you to explore text data interactively and label clusters based on reviewing that

Peter Baumgartner 29 Aug 9, 2022
Quo is a Python based toolkit for writing Command-Line Interface(CLI) applications.

Quo is a Python based toolkit for writing Command-Line Interface(CLI) applications. Quo is making headway towards composing speedy and orderly CLI applications while forestalling any disappointments brought about by the failure to execute a CLI API. Simple to code, easy to learn, and does not come with needless baggage.

Secretum Inc. 16 Oct 15, 2022
Investing library and command-line interface inspired by the Bogleheads philosophy

Lakshmi (Screenshot of the lak command in action) Background This project is inspired by Bogleheads forum. Bogleheads focus on a simple but powerful p

Sarvjeet Singh 108 Dec 26, 2022
A minimal and ridiculously good looking command-line-interface toolkit.

Pyceo Pyceo is a Python package for creating beautiful, composable, and ridiculously good looking command-line-user-interfaces without having to write

Juan-Pablo Scaletti 21 Mar 25, 2022
Command line interface to watch your childhood shows in hindi and english, designed with python

Sweet dreams: Most of your childhood shows Command line interface to watch your

Not Your Surya 3 Feb 13, 2022
Random scripts and other bits for interacting with the SpaceX Starlink user terminal hardware

starlink-grpc-tools This repository has a handful of tools for interacting with the gRPC service implemented on the Starlink user terminal (AKA "the d

null 270 Dec 29, 2022
A supercharged AWS command line interface (CLI).

SAWS Motivation AWS CLI Although the AWS CLI is a great resource to manage your AWS-powered services, it's tough to remember usage of: 70+ top-level c

Donne Martin 5.1k Jan 5, 2023
Command line interface for testing internet bandwidth using speedtest.net

speedtest-cli Command line interface for testing internet bandwidth using speedtest.net Versions speedtest-cli works with Python 2.4-3.7 Installation

Matt Martz 12.4k Jan 8, 2023