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

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)
Wordle for CLUE - WORDLE clone for Adafruit Clue

Wordle_for_CLUE This project is a clone of the very popular word solving puzzle

Michael Lacock 4 Feb 15, 2022
Analyzing the most strategic words to guess on Wordle, based on letter frequency distributions

wordle-analysis Evaluating different heuristics to determine the most effective solving strategy and building an AI-powered assistant tool to help you

Sejal Dua 9 Feb 27, 2022
Bad Apple printed out on the console with Python!

Bad Apple printed out on the console with Python!

CalvinLoke 186 Dec 01, 2022
Pastekan adalah website paste kode / teks sederhana

Pastekan pastekan adalah website paste kode / teks sederhana. install pip install pastekan penggunaan pastekan myfile.txt atau echo "hi" | pastekan

Sekai Kode 1 Dec 24, 2021
💻VIEN is a command-line tool for managing Python Virtual Environments.

vien VIEN is a command-line tool for managing Python Virtual Environments. It provides one-line shortcuts for: creating and deleting environments runn

Artёm IG 5 Mar 19, 2022
A Python module and command-line utility for converting .ANS format ANSI art to HTML

ansipants A Python module and command-line utility for converting .ANS format ANSI art to HTML. Installation pip install ansipants Command-line usage

4 Oct 16, 2022
🌈 Generate color palettes based on Neovim colorschemes.

Iris Iris is a Neovim plugin that generates a normalized color palette based on your colorscheme. It is named for the goddess Iris of Greek mythology,

N. G. Scheurich 45 Jul 28, 2022
CLI tool to develop StarkNet projects written in Cairo

⛵ Nile Navigate your StarkNet projects written in Cairo. Installation pip install cairo-nile Usage Install Cairo Use nile to install a given version o

Martín Triay 305 Dec 30, 2022
A command line connect 4 game against a minimax agent.

A command line connect 4 game against a minimax agent.

1 Oct 17, 2021
Tarstats - A simple Python commandline application that collects statistics about tarfiles

A simple Python commandline application that collects statistics about tarfiles.

Kristian Koehntopp 13 Feb 20, 2022
CLI Utility to encode and recursively recreate directories with ffmpeg.

FFenmass CLI Utility to encode and recursively recreate directories with ffmpeg. Report Bug · Request Feature Table of Contents Getting Started Prereq

George Av. 8 May 06, 2022
WebApp Maker make web apps (Duh). It is open source and make with python and shell.

WebApp Maker make web apps (Duh). It is open source and make with python and shell. This app can take any website and turn it into an app. I highly recommend turning these few websites into webapps:

2 Jan 09, 2022
Python CLI vm manager for remote access of docker images via noVNC

vmman is a tool to quickly boot and view docker-based VMs running on a linux server through noVNC without ssh tunneling on another network.

UCSD Engineers for Exploration 1 Nov 29, 2021
MasterDuel Image Recognition Translation Command Line Tool

MasterDuelTranslate(Use Ygo Card DataBase,belong win32 window shot & image match)

PatchouliTC 77 Dec 01, 2022
Command line client for Audience Insights

Dynamics 365 Audience Insights CLI The AuI CLI is a command line tool for Dynamics 365 Audience Insights. It is based on the customerinsights Python l

Microsoft 8 Jan 09, 2023
Zero-config CLI for TypeScript package development

Despite all the recent hype, setting up a new TypeScript (x React) library can be tough. Between Rollup, Jest, tsconfig, Yarn resolutions, ESLint, and

Jared Palmer 10.5k Jan 08, 2023
A startpage configured aesthetically with terminal-esque link formatting

Terminal-y Startpage Setup Clone the repository, then make an unformatted.txt file following the specifications in example.txt. Run format.py Open ind

belkarx 13 May 01, 2022
A Neat Application To Manage Your To-Do Lists.

WTD - What To Do? A Neat Application To Manage Your To-Do Lists. One folder can only have one to-do file. Running wth without any subcommands executes

Adam Vajda 1 Oct 24, 2021
A super simple wallet application for the NANO cryptocurrency that runs in the terminal

Nano Terminal Wallet A super simple wallet application for the NANO cryptocurrency that runs in the terminal Written in 2021 by NinjaSnail1080 (Discor

9 Jul 22, 2022
Simple Terminal Styling for Python

escape Escape is a very simple terminal styling library largely inspired by the excellent javascript chalk library. There are other terminal styling l

Syed Abbas 8 Sep 03, 2019