euporie 2.8.13__py3-none-any.whl → 2.8.15__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- euporie/console/tabs/console.py +4 -0
- euporie/core/__init__.py +1 -1
- euporie/core/cache.py +36 -0
- euporie/core/clipboard.py +16 -1
- euporie/core/config.py +1 -1
- euporie/core/convert/datum.py +25 -9
- euporie/core/convert/formats/ansi.py +25 -21
- euporie/core/convert/formats/base64.py +3 -1
- euporie/core/convert/formats/common.py +4 -4
- euporie/core/convert/formats/ft.py +6 -3
- euporie/core/convert/formats/html.py +22 -24
- euporie/core/convert/formats/markdown.py +4 -2
- euporie/core/convert/formats/pil.py +3 -1
- euporie/core/convert/formats/png.py +6 -4
- euporie/core/convert/formats/rich.py +3 -1
- euporie/core/convert/formats/sixel.py +3 -3
- euporie/core/convert/formats/svg.py +3 -1
- euporie/core/ft/html.py +192 -125
- euporie/core/ft/table.py +1 -1
- euporie/core/kernel/__init__.py +7 -3
- euporie/core/kernel/base.py +13 -0
- euporie/core/kernel/local.py +8 -3
- euporie/core/layout/containers.py +5 -0
- euporie/core/tabs/kernel.py +6 -1
- euporie/core/widgets/cell_outputs.py +39 -8
- euporie/core/widgets/display.py +11 -4
- euporie/core/widgets/forms.py +11 -5
- euporie/core/widgets/menu.py +9 -8
- euporie/preview/tabs/notebook.py +15 -4
- {euporie-2.8.13.dist-info → euporie-2.8.15.dist-info}/METADATA +2 -1
- {euporie-2.8.13.dist-info → euporie-2.8.15.dist-info}/RECORD +36 -35
- {euporie-2.8.13.data → euporie-2.8.15.data}/data/share/applications/euporie-console.desktop +0 -0
- {euporie-2.8.13.data → euporie-2.8.15.data}/data/share/applications/euporie-notebook.desktop +0 -0
- {euporie-2.8.13.dist-info → euporie-2.8.15.dist-info}/WHEEL +0 -0
- {euporie-2.8.13.dist-info → euporie-2.8.15.dist-info}/entry_points.txt +0 -0
- {euporie-2.8.13.dist-info → euporie-2.8.15.dist-info}/licenses/LICENSE +0 -0
@@ -37,6 +37,7 @@ from prompt_toolkit.layout.utils import explode_text_fragments
|
|
37
37
|
from prompt_toolkit.mouse_events import MouseEvent, MouseEventType
|
38
38
|
from prompt_toolkit.utils import get_cwidth, take_using_weights, to_str
|
39
39
|
|
40
|
+
from euporie.core.cache import SimpleCache
|
40
41
|
from euporie.core.data_structures import DiInt
|
41
42
|
from euporie.core.layout.controls import DummyControl
|
42
43
|
from euporie.core.layout.screen import BoundedWritePosition
|
@@ -557,6 +558,10 @@ class Window(ptk_containers.Window):
|
|
557
558
|
super().__init__(*args, **kwargs)
|
558
559
|
if isinstance(self.content, PtkDummyControl):
|
559
560
|
self.content = DummyControl()
|
561
|
+
# Use thread-safe cache for margin widths
|
562
|
+
self._margin_width_cache: SimpleCache[tuple[Margin, int], int] = SimpleCache(
|
563
|
+
maxsize=1
|
564
|
+
)
|
560
565
|
|
561
566
|
def write_to_screen(
|
562
567
|
self,
|
euporie/core/tabs/kernel.py
CHANGED
@@ -387,7 +387,12 @@ class KernelTab(Tab, metaclass=ABCMeta):
|
|
387
387
|
return
|
388
388
|
|
389
389
|
# Prompt user to select a kernel
|
390
|
-
self.app.dialogs
|
390
|
+
if dialog := self.app.dialogs.get("change-kernel"):
|
391
|
+
dialog.show(tab=self, message=msg)
|
392
|
+
return
|
393
|
+
|
394
|
+
if msg:
|
395
|
+
log.warning(msg)
|
391
396
|
|
392
397
|
def switch_kernel(self, factory: KernelFactory) -> None:
|
393
398
|
"""Shut down the current kernel and change to another."""
|
@@ -3,6 +3,7 @@
|
|
3
3
|
from __future__ import annotations
|
4
4
|
|
5
5
|
import logging
|
6
|
+
import weakref
|
6
7
|
from abc import ABCMeta, abstractmethod
|
7
8
|
from functools import cache
|
8
9
|
from pathlib import PurePath
|
@@ -23,10 +24,13 @@ from euporie.core.widgets.tree import JsonView
|
|
23
24
|
|
24
25
|
if TYPE_CHECKING:
|
25
26
|
from typing import Any, Protocol, TypeVar
|
27
|
+
from weakref import ReferenceType
|
26
28
|
|
27
29
|
from prompt_toolkit.layout.containers import AnyContainer
|
28
30
|
|
31
|
+
from euporie.core.config import Setting
|
29
32
|
from euporie.core.tabs.kernel import KernelTab
|
33
|
+
from euporie.core.widgets.display import DisplayWindow
|
30
34
|
|
31
35
|
KTParent = TypeVar("KTParent", bound=KernelTab)
|
32
36
|
|
@@ -64,10 +68,15 @@ class CellOutputElement(metaclass=ABCMeta):
|
|
64
68
|
|
65
69
|
"""
|
66
70
|
|
71
|
+
@property
|
72
|
+
def width(self) -> int | None:
|
73
|
+
"""Return the current width of the output's content."""
|
74
|
+
return None
|
75
|
+
|
67
76
|
def scroll_left(self) -> None:
|
68
77
|
"""Scroll the output left."""
|
69
78
|
|
70
|
-
def scroll_right(self) -> None:
|
79
|
+
def scroll_right(self, max: int | None = None) -> None:
|
71
80
|
"""Scroll the output right."""
|
72
81
|
|
73
82
|
@abstractmethod
|
@@ -147,6 +156,18 @@ class CellOutputDataElement(CellOutputElement):
|
|
147
156
|
# Ensure container gets invalidated if `wrap_cell_output` changes
|
148
157
|
self.container.control.invalidate_events.append(config.events.wrap_cell_outputs)
|
149
158
|
|
159
|
+
# Reset scroll position on `wrap_cell_outputs` config change
|
160
|
+
def _unregister(win: ReferenceType[DisplayWindow]) -> None:
|
161
|
+
config.events.wrap_cell_outputs -= _reset_scroll
|
162
|
+
|
163
|
+
weak_win = weakref.ref(self.container.window, _unregister)
|
164
|
+
|
165
|
+
def _reset_scroll(caller: Setting | None = None) -> None:
|
166
|
+
if (win := weak_win()) is not None:
|
167
|
+
win.reset()
|
168
|
+
|
169
|
+
config.events.wrap_cell_outputs += _reset_scroll
|
170
|
+
|
150
171
|
@property
|
151
172
|
def data(self) -> Any:
|
152
173
|
"""Return the control's display data."""
|
@@ -165,13 +186,18 @@ class CellOutputDataElement(CellOutputElement):
|
|
165
186
|
)
|
166
187
|
self.container.datum = self._datum
|
167
188
|
|
189
|
+
@property
|
190
|
+
def width(self) -> int:
|
191
|
+
"""Return the current width of the output's content."""
|
192
|
+
return self.container.window.content.max_line_width
|
193
|
+
|
168
194
|
def scroll_left(self) -> None:
|
169
195
|
"""Scroll the output left."""
|
170
196
|
self.container.window._scroll_left()
|
171
197
|
|
172
|
-
def scroll_right(self) -> None:
|
198
|
+
def scroll_right(self, max: int | None = None) -> None:
|
173
199
|
"""Scroll the output right."""
|
174
|
-
self.container.window._scroll_right()
|
200
|
+
self.container.window._scroll_right(max)
|
175
201
|
|
176
202
|
def __pt_container__(self) -> AnyContainer:
|
177
203
|
"""Return the display container."""
|
@@ -403,9 +429,9 @@ class CellOutput:
|
|
403
429
|
"""Scroll the currently visible output left."""
|
404
430
|
self.element.scroll_left()
|
405
431
|
|
406
|
-
def scroll_right(self) -> None:
|
432
|
+
def scroll_right(self, max: int | None = None) -> None:
|
407
433
|
"""Scroll the currently visible output right."""
|
408
|
-
self.element.scroll_right()
|
434
|
+
self.element.scroll_right(max)
|
409
435
|
|
410
436
|
|
411
437
|
class CellOutputArea:
|
@@ -499,8 +525,12 @@ class CellOutputArea:
|
|
499
525
|
|
500
526
|
def scroll_right(self) -> None:
|
501
527
|
"""Scroll the outputs right."""
|
528
|
+
max_width = max(
|
529
|
+
(cell_output.element.width or 0 for cell_output in self.rendered_outputs),
|
530
|
+
default=None,
|
531
|
+
)
|
502
532
|
for cell_output in self.rendered_outputs:
|
503
|
-
cell_output.scroll_right()
|
533
|
+
cell_output.scroll_right(max_width)
|
504
534
|
|
505
535
|
def __pt_container__(self) -> AnyContainer:
|
506
536
|
"""Return the cell output area container (an :class:`HSplit`)."""
|
@@ -511,15 +541,16 @@ class CellOutputArea:
|
|
511
541
|
from prompt_toolkit.formatted_text.utils import to_plain_text
|
512
542
|
|
513
543
|
outputs = []
|
544
|
+
app = get_app()
|
545
|
+
config = app.config
|
514
546
|
for cell_output in self.rendered_outputs:
|
515
547
|
if isinstance(cell_output.element, CellOutputDataElement):
|
516
|
-
config = get_app().config
|
517
548
|
control = cell_output.element.container.control
|
518
549
|
for line in control.get_lines(
|
519
550
|
control.datum,
|
520
551
|
width=88,
|
521
552
|
height=None,
|
522
|
-
fg=(cp :=
|
553
|
+
fg=(cp := app.color_palette).fg.base_hex,
|
523
554
|
bg=cp.bg.base_hex,
|
524
555
|
wrap_lines=config.wrap_cell_outputs,
|
525
556
|
):
|
euporie/core/widgets/display.py
CHANGED
@@ -55,8 +55,6 @@ class DisplayControl(UIControl):
|
|
55
55
|
A control which displays rendered HTML content.
|
56
56
|
"""
|
57
57
|
|
58
|
-
_window: Window
|
59
|
-
|
60
58
|
def __init__(
|
61
59
|
self,
|
62
60
|
datum: Datum,
|
@@ -156,6 +154,8 @@ class DisplayControl(UIControl):
|
|
156
154
|
fg=fg,
|
157
155
|
bg=bg,
|
158
156
|
extend=not self.dont_extend_width(),
|
157
|
+
# Use as extra cache key to force re-rendering when wrap_lines changes
|
158
|
+
wrap_lines=wrap_lines,
|
159
159
|
)
|
160
160
|
if width and height:
|
161
161
|
key = Datum.add_size(datum, Size(height, width))
|
@@ -174,6 +174,13 @@ class DisplayControl(UIControl):
|
|
174
174
|
lines.extend([[]] * max(0, height - len(lines)))
|
175
175
|
return lines
|
176
176
|
|
177
|
+
@property
|
178
|
+
def max_line_width(self) -> int:
|
179
|
+
"""Return the current maximum line width."""
|
180
|
+
return self._max_line_width_cache[
|
181
|
+
self.datum, self.width, self.height, self.wrap_lines()
|
182
|
+
]
|
183
|
+
|
177
184
|
def get_max_line_width(
|
178
185
|
self,
|
179
186
|
datum: Datum,
|
@@ -428,12 +435,12 @@ class DisplayWindow(Window):
|
|
428
435
|
|
429
436
|
return NotImplemented
|
430
437
|
|
431
|
-
def _scroll_right(self) -> NotImplementedOrNone:
|
438
|
+
def _scroll_right(self, max: int | None = None) -> NotImplementedOrNone:
|
432
439
|
"""Scroll window right."""
|
433
440
|
info = self.render_info
|
434
441
|
if info is None:
|
435
442
|
return NotImplemented
|
436
|
-
content_width = self.content.content_width
|
443
|
+
content_width = max or self.content.content_width
|
437
444
|
if self.horizontal_scroll < content_width - info.window_width:
|
438
445
|
if info.cursor_position.y <= info.configured_scroll_offsets.right:
|
439
446
|
self.content.move_cursor_right()
|
euporie/core/widgets/forms.py
CHANGED
@@ -1148,9 +1148,12 @@ class SelectableWidget(metaclass=ABCMeta):
|
|
1148
1148
|
return next((x for x in self.indices), None)
|
1149
1149
|
|
1150
1150
|
@index.setter
|
1151
|
-
def index(self, value: int) -> None:
|
1151
|
+
def index(self, value: int | None) -> None:
|
1152
1152
|
"""Set the selected indices to a single value."""
|
1153
|
-
|
1153
|
+
if value is None:
|
1154
|
+
self.indices = []
|
1155
|
+
else:
|
1156
|
+
self.indices = [value]
|
1154
1157
|
|
1155
1158
|
@property
|
1156
1159
|
def indices(self) -> list[int]:
|
@@ -1161,7 +1164,7 @@ class SelectableWidget(metaclass=ABCMeta):
|
|
1161
1164
|
return output
|
1162
1165
|
|
1163
1166
|
@indices.setter
|
1164
|
-
def indices(self, values:
|
1167
|
+
def indices(self, values: list[int]) -> None:
|
1165
1168
|
"""Set the selected indices."""
|
1166
1169
|
self._selected.clear()
|
1167
1170
|
for i in range(len(self.options)):
|
@@ -1722,9 +1725,12 @@ class ToggleButtons(SelectableWidget):
|
|
1722
1725
|
return next((x for x in self.indices), None)
|
1723
1726
|
|
1724
1727
|
@index.setter
|
1725
|
-
def index(self, value: int) -> None:
|
1728
|
+
def index(self, value: int | None) -> None:
|
1726
1729
|
"""Set the selected indices to a single value."""
|
1727
|
-
|
1730
|
+
if value is None:
|
1731
|
+
self.indices = []
|
1732
|
+
else:
|
1733
|
+
self.indices = [value]
|
1728
1734
|
self.update_buttons(self)
|
1729
1735
|
|
1730
1736
|
def update_buttons(self, widget: SelectableWidget | None = None) -> None:
|
euporie/core/widgets/menu.py
CHANGED
@@ -618,9 +618,10 @@ class MenuBar:
|
|
618
618
|
self.refocus()
|
619
619
|
item.handler()
|
620
620
|
else:
|
621
|
-
self.selected_menu =
|
622
|
-
: level + 1
|
623
|
-
|
621
|
+
self.selected_menu = [
|
622
|
+
*self.selected_menu[: level + 1],
|
623
|
+
i,
|
624
|
+
]
|
624
625
|
app.layout.focus(
|
625
626
|
self.menu_containers[
|
626
627
|
len(self.selected_menu) - 1
|
@@ -734,11 +735,11 @@ class MenuBar:
|
|
734
735
|
# Show the right edge
|
735
736
|
yield (f"{style} class:menu,border", grid.MID_RIGHT)
|
736
737
|
|
737
|
-
for
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
|
738
|
+
visible_children = [x for x in menu.children if not x.hidden()]
|
739
|
+
for i, item in enumerate(visible_children):
|
740
|
+
result.extend(one_item(i, item))
|
741
|
+
if i < len(visible_children) - 1:
|
742
|
+
result.append(("", "\n"))
|
742
743
|
|
743
744
|
return result
|
744
745
|
|
euporie/preview/tabs/notebook.py
CHANGED
@@ -39,7 +39,10 @@ class PreviewNotebook(BaseNotebook):
|
|
39
39
|
self,
|
40
40
|
app: BaseApp,
|
41
41
|
path: Path | None = None,
|
42
|
+
kernel: BaseKernel | None = None,
|
43
|
+
comms: dict[str, Comm] | None = None,
|
42
44
|
use_kernel_history: bool = False,
|
45
|
+
connection_file: Path | None = None,
|
43
46
|
) -> None:
|
44
47
|
"""Create a new instance."""
|
45
48
|
self.cell_index = 0
|
@@ -49,6 +52,8 @@ class PreviewNotebook(BaseNotebook):
|
|
49
52
|
self.app.after_render += self.after_render
|
50
53
|
|
51
54
|
self._cell = Cell(0, {}, self)
|
55
|
+
# Start the kernel (if needed) after the tab is fully loaded
|
56
|
+
self._init_kernel(kernel, comms, use_kernel_history, connection_file)
|
52
57
|
|
53
58
|
def pre_init_kernel(self) -> None:
|
54
59
|
"""Filter cells before kernel is loaded."""
|
@@ -72,13 +77,19 @@ class PreviewNotebook(BaseNotebook):
|
|
72
77
|
use_kernel_history: bool = False,
|
73
78
|
connection_file: Path | None = None,
|
74
79
|
) -> None:
|
75
|
-
"""
|
80
|
+
"""We defer starting the kernel until the whole tab has loaded."""
|
81
|
+
|
82
|
+
def _init_kernel(
|
83
|
+
self,
|
84
|
+
kernel: BaseKernel | None = None,
|
85
|
+
comms: dict[str, Comm] | None = None,
|
86
|
+
use_kernel_history: bool = False,
|
87
|
+
connection_file: Path | None = None,
|
88
|
+
) -> None:
|
89
|
+
"""Start the tab's kernel if needed."""
|
76
90
|
# Only load the kernel if running the notebook
|
77
91
|
if self.app.config.run:
|
78
92
|
super().init_kernel(kernel, comms, use_kernel_history, connection_file)
|
79
|
-
else:
|
80
|
-
self.pre_init_kernel()
|
81
|
-
self.post_init_kernel()
|
82
93
|
|
83
94
|
def print_title(self) -> None:
|
84
95
|
"""Print a notebook's filename."""
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: euporie
|
3
|
-
Version: 2.8.
|
3
|
+
Version: 2.8.15
|
4
4
|
Summary: Euporie is a suite of terminal applications for interacting with Jupyter kernels
|
5
5
|
Project-URL: Documentation, https://euporie.readthedocs.io/en/latest
|
6
6
|
Project-URL: Issues, https://github.com/joouha/euporie/issues
|
@@ -18,6 +18,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.11
|
19
19
|
Classifier: Programming Language :: Python :: 3.12
|
20
20
|
Classifier: Programming Language :: Python :: 3.13
|
21
|
+
Classifier: Programming Language :: Python :: 3.14
|
21
22
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
22
23
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
23
24
|
Classifier: Topic :: Scientific/Engineering
|
@@ -5,15 +5,16 @@ euporie/console/_settings.py,sha256=jZroKFFsTzyEhP1Sis41Se70hwxqDmpa2Lb19XnMnRQ,
|
|
5
5
|
euporie/console/app.py,sha256=nUmsoIQZMnQ0e506irqzvPOd31x_xUXn2w3kT1e2f9w,5736
|
6
6
|
euporie/console/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
7
7
|
euporie/console/tabs/__init__.py,sha256=Grm9EO1gnBO1o-k6Nqnlzo8XLIgFZSXNAdz49Vvh4zY,55
|
8
|
-
euporie/console/tabs/console.py,sha256=
|
9
|
-
euporie/core/__init__.py,sha256=
|
8
|
+
euporie/console/tabs/console.py,sha256=TYMgXghxyEQVjkn8yGapWXz30kY-RLbaDew6ACljPCM,31992
|
9
|
+
euporie/core/__init__.py,sha256=Cjosf8D6N4OFOXeUnlvGQFSx7M93relLtKiVjXHHTN8,314
|
10
10
|
euporie/core/__main__.py,sha256=QkRamWXgrPiRj7h4sYNhHNpVOUJuEpRuvZE-YLK1dUU,1255
|
11
11
|
euporie/core/_settings.py,sha256=JspB4eMUXry4r5g4Wzn4aV0FmzSVmWf1G96Jcr5bcDE,2937
|
12
12
|
euporie/core/border.py,sha256=HktTPL-sKxaiM8_DPdaetFI5fOvEBVJrw3tmgsKT2jY,48835
|
13
|
-
euporie/core/
|
13
|
+
euporie/core/cache.py,sha256=lW7NnfkCBG7m2nS2fv874FNoEkST8Tze826iKPqK7G0,881
|
14
|
+
euporie/core/clipboard.py,sha256=RT6rbi_9aGYAV9HZntOLPAWmut5vCZItAMSjqknpSG0,2534
|
14
15
|
euporie/core/commands.py,sha256=aBBCSBm7AJRCoiOZzbIOucExqm5nYf--SrbiysBRkFc,9035
|
15
16
|
euporie/core/completion.py,sha256=F_MQ9XyZdzVwipW7O8w2XOR-puYvTVcALC2XWmEhpYc,5752
|
16
|
-
euporie/core/config.py,sha256=
|
17
|
+
euporie/core/config.py,sha256=OkJwjrr4o8-JmAFYTuZWJVw6yTpZagAz-GLwQCZgtQM,25199
|
17
18
|
euporie/core/data_structures.py,sha256=2ml-q-y5Ft0pyq1Xc-NySCLMoEir71M9e2PLfvPbegc,2350
|
18
19
|
euporie/core/diagnostics.py,sha256=KywmOqa1_Lfk5SsO1Fd0Vl801DvVKvAD4pOOpdLijAM,1680
|
19
20
|
euporie/core/filters.py,sha256=t-s9g-wSPhDd3iXcLtiwT5IsIfK7vIuicV-KU-eB19A,10237
|
@@ -56,35 +57,35 @@ euporie/core/comm/base.py,sha256=-zXNOXimuD7Aeo2scADnvSimZa6pF8obT51vluBz2co,412
|
|
56
57
|
euporie/core/comm/ipywidgets.py,sha256=Qw1LI_Er8l9leZJMsohtQBJD_K4b0KPordynXhrknFk,53013
|
57
58
|
euporie/core/comm/registry.py,sha256=x9AhhTi4Ohxq6fdPXU9GJgH58CleYsEy-xw084TcIx0,1384
|
58
59
|
euporie/core/convert/__init__.py,sha256=dZKZVTyYAuIKtjTbtcqvko-I89LYwr4fDbYj1J9PyEc,64
|
59
|
-
euporie/core/convert/datum.py,sha256=
|
60
|
+
euporie/core/convert/datum.py,sha256=w0OMyfEFc9OTqt_62JMYBy6hkb7vzpKOpNWbYxVHDPY,16285
|
60
61
|
euporie/core/convert/mime.py,sha256=uQwXw2hUsfS_dMeR4Ci6Zv4fORIBnEa9rdRa-nVT-Ls,3142
|
61
62
|
euporie/core/convert/registry.py,sha256=pDnUzXp08t-XN3lXxBimMuRSNFwskAOLeeU0OHMMN30,2904
|
62
63
|
euporie/core/convert/utils.py,sha256=aNqorWKz_yHItJZjTXcwCJ_CANuKhv2IQPq3w2o9Iqs,3449
|
63
64
|
euporie/core/convert/formats/__init__.py,sha256=FfUR-GAaH750KEeDF0jmtwwvrWZth0Gr-Mw9qOy5264,486
|
64
|
-
euporie/core/convert/formats/ansi.py,sha256=
|
65
|
-
euporie/core/convert/formats/base64.py,sha256=
|
66
|
-
euporie/core/convert/formats/common.py,sha256=
|
67
|
-
euporie/core/convert/formats/ft.py,sha256=
|
68
|
-
euporie/core/convert/formats/html.py,sha256=
|
65
|
+
euporie/core/convert/formats/ansi.py,sha256=ZwJePbKfBNG2712_JgjRQEPGYLYuzPiTtXVFwbzMDHQ,13965
|
66
|
+
euporie/core/convert/formats/base64.py,sha256=QZ_rMBKc5Lrc0zTh-MPLw_jN4Z_wDtejCVLx1dYebTA,900
|
67
|
+
euporie/core/convert/formats/common.py,sha256=g4uizutWZalvMNJtD8w7DSOm3r4RW-0tMzL8KEOyb7s,4621
|
68
|
+
euporie/core/convert/formats/ft.py,sha256=fIrTkJYwCzL8zS3iKMjwZZEzyCsgOUiNaTS016iDv3I,2888
|
69
|
+
euporie/core/convert/formats/html.py,sha256=9W1gTkHZMnwSE72RTHKf6MiztHbegyKXNCeeAWVJ-90,2340
|
69
70
|
euporie/core/convert/formats/jpeg.py,sha256=c38IZEd6HVAmKBXnDE0qmqwfWtjcwVL5ugXffV0wCpA,287
|
70
|
-
euporie/core/convert/formats/markdown.py,sha256=
|
71
|
+
euporie/core/convert/formats/markdown.py,sha256=VTIqFFP8T42vB7BGD7Uy1oQX1fR7siMbmd-OHgJe69U,2393
|
71
72
|
euporie/core/convert/formats/pdf.py,sha256=6d8e5tjV1j6QXMr7KBNmQ2hQzVY9Il19xg4a8E_0I0I,283
|
72
|
-
euporie/core/convert/formats/pil.py,sha256=
|
73
|
-
euporie/core/convert/formats/png.py,sha256=
|
74
|
-
euporie/core/convert/formats/rich.py,sha256=
|
75
|
-
euporie/core/convert/formats/sixel.py,sha256=
|
76
|
-
euporie/core/convert/formats/svg.py,sha256=
|
73
|
+
euporie/core/convert/formats/pil.py,sha256=vB-Z7TYkW1Onfk6MYm5PXQ4kSPRL-hBE8Cckuyy1k9M,2516
|
74
|
+
euporie/core/convert/formats/png.py,sha256=VorJeFikAsxuAm8DDALoDOvNYr4C94ryq8lXSrcNxW0,4977
|
75
|
+
euporie/core/convert/formats/rich.py,sha256=gvRJEzdZOs1HBC6S_aucOpwGrNUN4mYsZkojh-6UJn8,961
|
76
|
+
euporie/core/convert/formats/sixel.py,sha256=8e5jKspmaO1pHjlL2vweWowultYAg2nlp7du9bRMkeQ,2475
|
77
|
+
euporie/core/convert/formats/svg.py,sha256=qdROd6IRDMNlRZx8fYRbQjqzpCozkNXExnFBl6Vy-Tc,827
|
77
78
|
euporie/core/ft/__init__.py,sha256=Ib-pswos3RiOM2Vn8GCZ4rwuoTNPeBJ0jhgRpwu7BKE,55
|
78
79
|
euporie/core/ft/ansi.py,sha256=JhmxJYtNczJa315yhHOhpM5ohZ3kROhH7sz18WiZ3a4,6197
|
79
|
-
euporie/core/ft/html.py,sha256=
|
80
|
-
euporie/core/ft/table.py,sha256=
|
80
|
+
euporie/core/ft/html.py,sha256=B_VL2yop_rcPRb0jMUTJow5w_gVAWUNT3Q3zokBPiRA,182792
|
81
|
+
euporie/core/ft/table.py,sha256=MC6TLc0GfRviB3xeuouZRIyq2DNxxWFFGolDf-5Tk2E,53328
|
81
82
|
euporie/core/ft/utils.py,sha256=qcArKRg4XeQIHtxxypU5g21PQ-IlPYrjYvGY53WcvLU,27870
|
82
|
-
euporie/core/kernel/__init__.py,sha256=
|
83
|
+
euporie/core/kernel/__init__.py,sha256=aN38i26yR_WV8cP5N_SJtefBEVR460CvPG1q3Vjfe9U,1634
|
83
84
|
euporie/core/kernel/_settings.py,sha256=h2ESe2FnHG4tu3ECz7jIIOjrpCLFrRZL3jHBpWRKeIU,828
|
84
|
-
euporie/core/kernel/base.py,sha256=
|
85
|
+
euporie/core/kernel/base.py,sha256=bNNg4juqguj_Ox-c5gy7jPWj523owzNzu7hmbQoUBHc,18271
|
85
86
|
euporie/core/kernel/jupyter.py,sha256=R2H3eTYLQwLSc9pRadyETNFHrIqY1b9I6uxqAdQHXS8,36206
|
86
87
|
euporie/core/kernel/jupyter_manager.py,sha256=tvft5LGjXYXPJBO3tNOKvyicnz-FwS1wbUQ2Q6OtEwY,4031
|
87
|
-
euporie/core/kernel/local.py,sha256=
|
88
|
+
euporie/core/kernel/local.py,sha256=MLyb_KZijLcGw5xcv4sM5Ti6sTs6KGPbOUhCRcHah0c,25690
|
88
89
|
euporie/core/key_binding/__init__.py,sha256=zFKrJrZARNht6Tl4TT5Fw3fk-IrD8SBYk5mBJ5K_F1A,47
|
89
90
|
euporie/core/key_binding/key_processor.py,sha256=sGEOH3cd0yJO-81dWROzzDYjxEA5gxo1rpNbuphvv9I,5756
|
90
91
|
euporie/core/key_binding/micro_state.py,sha256=h_CBBiIUa4mHf70ZZDNbXreC0p0H3boNVzHnHVuIAp8,1276
|
@@ -101,7 +102,7 @@ euporie/core/key_binding/bindings/terminal.py,sha256=eOoWaztPs2KblYxnbhHxMD-Xru9
|
|
101
102
|
euporie/core/key_binding/bindings/vi.py,sha256=XutOsbBI8ywyWR5XY2pUN14Vga6R0vrDK27q7ZhE8pM,1567
|
102
103
|
euporie/core/layout/__init__.py,sha256=T5iGOnMGfNwVffJlfFMwGTFBLV7RkOuKw5gVp6cl4wA,59
|
103
104
|
euporie/core/layout/cache.py,sha256=AkZgwETYwqq4o5MNj0BWly3aZcZCrQGEUR6Li9q-3Xo,16054
|
104
|
-
euporie/core/layout/containers.py,sha256=
|
105
|
+
euporie/core/layout/containers.py,sha256=g09OTcEw0Tjx1URwIhec2VoIVcnitSF7kglsZFAXmsk,49400
|
105
106
|
euporie/core/layout/controls.py,sha256=iFklysBxk_roWKfNN4Hdjqf4sFdEBzNWZq2OavlpJHY,825
|
106
107
|
euporie/core/layout/decor.py,sha256=aUJXdeDujk4hDG5uvEdF44sRBzTak12x1J5W7YQxfSk,14128
|
107
108
|
euporie/core/layout/mouse.py,sha256=AQwmSySsDJmWweh7Skly-XqqNGZavNtfqt3DDsTsvRg,5169
|
@@ -112,22 +113,22 @@ euporie/core/tabs/__init__.py,sha256=7IzC_LLd-61JH6CBLDEeLhTtlEyFbQtgRqGbVUWBNP8
|
|
112
113
|
euporie/core/tabs/_commands.py,sha256=M1emj8w8ni-_EfE3PHTWQ_SJR0VYXBMLgLExIpLXvZc,1903
|
113
114
|
euporie/core/tabs/_settings.py,sha256=MgC_WPy28g44PvhY_3Y1EwR7yikid4gEXZoV1Ydtq6w,3659
|
114
115
|
euporie/core/tabs/base.py,sha256=PsYq4nMBYeYjVkfJqosBw30R1DcTlCKQtlmtXZ2oLfo,7698
|
115
|
-
euporie/core/tabs/kernel.py,sha256=
|
116
|
+
euporie/core/tabs/kernel.py,sha256=EbOMwi4WJeV41dlLqd8vQinMRwr-Y3SLCERp70mLsIk,17450
|
116
117
|
euporie/core/tabs/notebook.py,sha256=rZa2LRaCCEl3kb4hniQEQtly_uCBBF92dYFYcv8ID2g,15024
|
117
118
|
euporie/core/widgets/__init__.py,sha256=ektso_Ea1-pZB04alUujQsa2r-kv8xAF0SmQOv_bvHQ,52
|
118
119
|
euporie/core/widgets/_settings.py,sha256=6U6tgw8YajrvP5MbdBwvaYHNXjyRsP6ewBkSmqiVAhI,5456
|
119
120
|
euporie/core/widgets/cell.py,sha256=PqY6FBTwPFF0mfHTJtBae_8ZQkBcBkf1RQReYARkOzQ,33783
|
120
|
-
euporie/core/widgets/cell_outputs.py,sha256=
|
121
|
+
euporie/core/widgets/cell_outputs.py,sha256=ltt-CGUYrkJJ9AnxNiUAD2o-7v0dhiTenIkLuLMRhWU,18421
|
121
122
|
euporie/core/widgets/decor.py,sha256=_K3bSNpvAFdn5ZZyNFVjZPv6QV4fNIlNMdRpYjc4MU0,7895
|
122
123
|
euporie/core/widgets/dialog.py,sha256=2yvNzDqDjsOBWVfeSgR4Lv1LC73tQIeI_qz2YIx7H1k,32987
|
123
|
-
euporie/core/widgets/display.py,sha256=
|
124
|
+
euporie/core/widgets/display.py,sha256=L2AnzIa5BmJ7KH3WLr753vj2eHmZ12l2xMHThhQCqUs,21910
|
124
125
|
euporie/core/widgets/file_browser.py,sha256=jj8l5cpX7S6d1HlYXUg3TXdsvmhFneIOiotKpwCVgoQ,20050
|
125
126
|
euporie/core/widgets/formatted_text_area.py,sha256=J7P_TNXPZKZkiBdjAVkPvkfRY1veXe4tzXU241k4b-Q,4037
|
126
|
-
euporie/core/widgets/forms.py,sha256=
|
127
|
+
euporie/core/widgets/forms.py,sha256=ELpzh3wRcjS9BYUoFrrZckDFkOVgqiGLQjqucRI1dVI,86011
|
127
128
|
euporie/core/widgets/inputs.py,sha256=fVg4sEDCJKvVf-fPXMBhVmKjs1eoRLqlUSWKKxT9e_0,20469
|
128
129
|
euporie/core/widgets/layout.py,sha256=jPChBUf8FEbj_c6RwBooaATFnecm_MrSTpJFkPxOFFQ,30521
|
129
130
|
euporie/core/widgets/logo.py,sha256=VU9hSVAiguS5lI0EccQoPm8roAuQNgvFUO5IREvXWFo,1487
|
130
|
-
euporie/core/widgets/menu.py,sha256
|
131
|
+
euporie/core/widgets/menu.py,sha256=-7l4QMw5OOHxFe3Gym9ftPH0kczsoGsHeZ79DJG7MHQ,34963
|
131
132
|
euporie/core/widgets/pager.py,sha256=nbFVF20kE_P2GoDHzAp_sqfiBe1mvuCvVUdjE-KFPzU,6413
|
132
133
|
euporie/core/widgets/palette.py,sha256=Uv5n1Lvls7FnSZ_481L5zvkRsbSzzshhDmTy3gpNomQ,10950
|
133
134
|
euporie/core/widgets/tree.py,sha256=ql5vbpelnCWZacUk7kqdCK1uXfzRzLl34U2_hu65rUY,4288
|
@@ -164,16 +165,16 @@ euporie/preview/_settings.py,sha256=_N3Dfzg5XOE_L-yq3HgAV68FKgz2nD1UHwLRXVSqI64,
|
|
164
165
|
euporie/preview/app.py,sha256=Wec45l6vmbQrtjcPkTLbqZS6gBQM4zQvoOl7DX-s6R4,7623
|
165
166
|
euporie/preview/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
166
167
|
euporie/preview/tabs/__init__.py,sha256=rY6DfQ-8qRo_AiICCD-zTyhJBnuMjawWDd8tRxR6q58,43
|
167
|
-
euporie/preview/tabs/notebook.py,sha256=
|
168
|
+
euporie/preview/tabs/notebook.py,sha256=eRJxeIN6V6121OYKtCfapp_ie5Nkf7TmmZJpz96O4kY,7155
|
168
169
|
euporie/web/__init__.py,sha256=wE-4WBbzcpWVu5YisLrUhYOn3ZlBK2YZryjc1r96qrY,38
|
169
170
|
euporie/web/tabs/__init__.py,sha256=0DbkceML8N_qefZFZB7CJQw_FX0gkuNdabQoEu0zV9E,340
|
170
171
|
euporie/web/tabs/web.py,sha256=CY8tfy_yrZYLWY2pEyOgJsqIHCfGIj9WVKnK6v9Jg8g,6195
|
171
172
|
euporie/web/widgets/__init__.py,sha256=xIxCPl9KiisYgsX-V1LvDT6BETZRF3nC-ZsP8DP7nOY,46
|
172
173
|
euporie/web/widgets/webview.py,sha256=RK_pgW3ebQjz25HGhlW4ouH2XFLJRfiUy6d_vz8o_d8,20469
|
173
|
-
euporie-2.8.
|
174
|
-
euporie-2.8.
|
175
|
-
euporie-2.8.
|
176
|
-
euporie-2.8.
|
177
|
-
euporie-2.8.
|
178
|
-
euporie-2.8.
|
179
|
-
euporie-2.8.
|
174
|
+
euporie-2.8.15.data/data/share/applications/euporie-console.desktop,sha256=DI08G0Dl2s5asM6afWUfkKvO5YmcBm-pWQZzUHiNnqc,153
|
175
|
+
euporie-2.8.15.data/data/share/applications/euporie-notebook.desktop,sha256=RtpJzvizTDuOp0BLa2bLgVHx11LG6L7PL-oF-wHTsgU,155
|
176
|
+
euporie-2.8.15.dist-info/METADATA,sha256=zBVAxzWPwfQy8VkXw01h8GuWL3rTYOg61HlkzovcgtE,6567
|
177
|
+
euporie-2.8.15.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
178
|
+
euporie-2.8.15.dist-info/entry_points.txt,sha256=cJPvjp7siwHeqCcCdu-Q9OCcsp4ylbLv0S4RP7g3Bf0,798
|
179
|
+
euporie-2.8.15.dist-info/licenses/LICENSE,sha256=yB-auuST68VxkNPXb-E7gVdFzOJShyBnoPyyveuAiYc,1079
|
180
|
+
euporie-2.8.15.dist-info/RECORD,,
|
File without changes
|
{euporie-2.8.13.data → euporie-2.8.15.data}/data/share/applications/euporie-notebook.desktop
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|