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)
Simple tool, to update linux kernel on ubuntu

Kerbswap Simple tool, to update linux kernel on ubuntu Information At the moment, this tool only supports "Ubuntu" distributions, but will be expanded

dword 1 Oct 31, 2021
Salesforce object access auditor

Salesforce object access auditor Released as open source by NCC Group Plc - https://www.nccgroup.com/ Developed by Jerome Smith @exploresecurity (with

NCC Group Plc 90 Sep 19, 2022
Python library and command line tool for interacting with Bugzilla

python-bugzilla This package provides two bits: bugzilla python module for talking to a Bugzilla instance over XMLRPC or REST /usr/bin/bugzilla comman

Python Bugzilla Project 112 Nov 05, 2022
This is a repository for collecting global custom management extensions for the Django Framework.

Django Extensions Django Extensions is a collection of custom extensions for the Django Framework. Getting Started The easiest way to figure out what

Django Extensions 6k Jan 03, 2023
Doing set operations on files considered as sets of lines

CLI tool that can be used to do set operations like union on files considering them as a set of lines. Notes It ignores all empty lines with whitespac

Partho 11 Sep 06, 2022
Animefetch is an anime command-line system information tool written in python

Animefetch - v0.0.3 An anime command-line system information tool written in python. Description Animefetch is an anime command-line system informatio

Thadeuks 6 Jun 17, 2022
🎈 A Mini CLI-based Operating System simulator

Mini OS Simulator Summary 🎈 A Mini CLI-based Operating System simulator, well, not really. It simulates a file system with songs and movies and stuff

Jaiyank S. 3 Feb 14, 2022
Oil is a new Unix shell. It's our upgrade path from bash to a better language and runtime

Oil is a new Unix shell. It's our upgrade path from bash to a better language and runtime. It's also for Python and JavaScript users who avoid shell!

2.4k Jan 08, 2023
PwnWiki command line searching tool & bindings written in Python

pwsearch PwnWiki 数据库搜索命令行工具。 安装 您可以直接用 pip 命令从 PyPI 安装 pwsearch: pip3 install -U pwsearch 您也可以 clone 该仓库并直接从源码启动

PwnWiki 20 Jun 21, 2021
The project help you to quickly build layouts in terminal,cross-platform

The project help you to quickly build layouts in terminal,cross-platform

gojuukaze 133 Nov 30, 2022
A command line utility to export Google Keep notes to markdown.

Keep-Exporter A command line utility to export Google Keep notes to markdown files with metadata stored as a frontmatter header. Supports exporting: S

Nathan Beals 85 Dec 17, 2022
🔖 Lemnos: A simple, light-weight command-line to-do list manager.

🔖 Lemnos: CLI To-do List Manager This is a simple program that allows one to manage a to-do list via the command-line. Example $ python3 todo.py add

Rohan Sikand 1 Dec 07, 2022
CLI utility for updating the EVE Online static data export in a postgres database

EVE SDE Postgres updater CLI utility for updating the EVE Online static data export postgres database. This has been tested with the Fuzzwork postgres

Markus Juopperi 1 Oct 29, 2021
🪛 A simple pydantic to Form FastAPI model converter.

pyfa-converter Makes it pretty easy to create a model based on Field [pydantic] and use the model for www-form-data. How to install? pip install pyfa_

20 Dec 22, 2022
A dashboard for your Terminal written in the Python 3 language,

termDash is a handy little program, written in the Python 3 language, and is a small little dashboard for your terminal, designed to be a utility to help people, as well as helping new users get used

Rebecca White 2 Dec 03, 2021
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
Juniper Command System is a Micro CLI Tool that allows you to manage your files, launch applications, as well as providing extra tools for OS Management.

Juniper Command System is a Micro CLI Tool that allows you to manage your files, launch applications, as well as providing extra tools for OS Management.

Juan Carlos Juárez 1 Feb 02, 2022
A CLI based task manager tool which helps you track your daily task and activity.

CLI based task manager tool This is the simple CLI tool can be helpful in increasing your productivity. More like your todolist. It uses Postgresql as

ritik 1 Jan 19, 2022
Euporie is a text-based user interface for running and editing Jupyter notebooks

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

781 Jan 01, 2023
Example of a CLI with python - know the extension of your files.

extensionCLI Example of a CLI with python - know the extension of your files. Usage: Install the CLI: pip3 install -e . Run the command with "ext" + t

ItanuRomero 5 Dec 29, 2022