euporie 2.8.1__py3-none-any.whl → 2.8.5__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/_commands.py +143 -0
- euporie/console/_settings.py +58 -0
- euporie/console/app.py +25 -71
- euporie/console/tabs/console.py +267 -147
- euporie/core/__init__.py +1 -9
- euporie/core/__main__.py +31 -5
- euporie/core/_settings.py +104 -0
- euporie/core/app/__init__.py +3 -0
- euporie/core/app/_commands.py +70 -0
- euporie/core/app/_settings.py +427 -0
- euporie/core/{app.py → app/app.py} +214 -572
- euporie/core/app/base.py +51 -0
- euporie/core/{current.py → app/current.py} +13 -4
- euporie/core/app/cursor.py +35 -0
- euporie/core/app/dummy.py +12 -0
- euporie/core/app/launch.py +28 -0
- euporie/core/bars/__init__.py +11 -0
- euporie/core/bars/command.py +182 -0
- euporie/core/bars/menu.py +258 -0
- euporie/core/{widgets → bars}/search.py +154 -57
- euporie/core/{widgets → bars}/status.py +9 -26
- euporie/core/clipboard.py +19 -80
- euporie/core/comm/base.py +8 -6
- euporie/core/comm/ipywidgets.py +21 -12
- euporie/core/comm/registry.py +2 -1
- euporie/core/commands.py +11 -5
- euporie/core/completion.py +3 -2
- euporie/core/config.py +368 -341
- euporie/core/convert/__init__.py +0 -30
- euporie/core/convert/datum.py +131 -60
- euporie/core/convert/formats/__init__.py +31 -0
- euporie/core/convert/formats/ansi.py +46 -30
- euporie/core/convert/formats/common.py +11 -23
- euporie/core/convert/formats/html.py +45 -40
- euporie/core/convert/formats/pil.py +1 -1
- euporie/core/convert/formats/png.py +3 -5
- euporie/core/convert/formats/sixel.py +3 -3
- euporie/core/convert/registry.py +11 -8
- euporie/core/convert/utils.py +50 -23
- euporie/core/diagnostics.py +2 -2
- euporie/core/filters.py +72 -82
- euporie/core/format.py +13 -2
- euporie/core/ft/ansi.py +1 -1
- euporie/core/ft/html.py +36 -36
- euporie/core/ft/table.py +1 -3
- euporie/core/ft/utils.py +4 -1
- euporie/core/graphics.py +216 -124
- euporie/core/history.py +2 -2
- euporie/core/inspection.py +3 -2
- euporie/core/io.py +207 -28
- euporie/core/kernel/__init__.py +1 -0
- euporie/core/{kernel.py → kernel/client.py} +100 -139
- euporie/core/kernel/manager.py +114 -0
- euporie/core/key_binding/bindings/__init__.py +2 -8
- euporie/core/key_binding/bindings/basic.py +47 -7
- euporie/core/key_binding/bindings/completion.py +3 -8
- euporie/core/key_binding/bindings/micro.py +5 -7
- euporie/core/key_binding/bindings/mouse.py +26 -24
- euporie/core/key_binding/bindings/terminal.py +193 -0
- euporie/core/key_binding/bindings/vi.py +46 -0
- euporie/core/key_binding/key_processor.py +43 -2
- euporie/core/key_binding/registry.py +2 -0
- euporie/core/key_binding/utils.py +22 -2
- euporie/core/keys.py +7156 -93
- euporie/core/layout/cache.py +35 -25
- euporie/core/layout/containers.py +280 -74
- euporie/core/layout/decor.py +5 -5
- euporie/core/layout/mouse.py +1 -1
- euporie/core/layout/print.py +16 -3
- euporie/core/layout/scroll.py +26 -28
- euporie/core/log.py +75 -60
- euporie/core/lsp.py +118 -24
- euporie/core/margins.py +60 -31
- euporie/core/path.py +2 -1
- euporie/core/renderer.py +58 -17
- euporie/core/style.py +60 -40
- euporie/core/suggest.py +103 -85
- euporie/core/tabs/__init__.py +34 -0
- euporie/core/tabs/_settings.py +113 -0
- euporie/core/tabs/base.py +11 -435
- euporie/core/tabs/kernel.py +420 -0
- euporie/core/tabs/notebook.py +20 -54
- euporie/core/utils.py +98 -6
- euporie/core/validation.py +1 -1
- euporie/core/widgets/_settings.py +188 -0
- euporie/core/widgets/cell.py +90 -158
- euporie/core/widgets/cell_outputs.py +25 -36
- euporie/core/widgets/decor.py +11 -41
- euporie/core/widgets/dialog.py +55 -44
- euporie/core/widgets/display.py +27 -24
- euporie/core/widgets/file_browser.py +5 -26
- euporie/core/widgets/forms.py +16 -12
- euporie/core/widgets/inputs.py +37 -81
- euporie/core/widgets/layout.py +7 -6
- euporie/core/widgets/logo.py +49 -0
- euporie/core/widgets/menu.py +13 -11
- euporie/core/widgets/pager.py +8 -11
- euporie/core/widgets/palette.py +6 -6
- euporie/hub/app.py +52 -31
- euporie/notebook/_commands.py +24 -0
- euporie/notebook/_settings.py +107 -0
- euporie/notebook/app.py +109 -210
- euporie/notebook/filters.py +1 -1
- euporie/notebook/tabs/__init__.py +46 -7
- euporie/notebook/tabs/_commands.py +714 -0
- euporie/notebook/tabs/_settings.py +32 -0
- euporie/notebook/tabs/display.py +2 -2
- euporie/notebook/tabs/edit.py +12 -7
- euporie/notebook/tabs/json.py +3 -3
- euporie/notebook/tabs/log.py +1 -18
- euporie/notebook/tabs/notebook.py +21 -674
- euporie/notebook/widgets/_commands.py +11 -0
- euporie/notebook/widgets/_settings.py +19 -0
- euporie/notebook/widgets/side_bar.py +14 -34
- euporie/preview/_settings.py +104 -0
- euporie/preview/app.py +8 -30
- euporie/preview/tabs/notebook.py +15 -86
- euporie/web/tabs/web.py +4 -6
- euporie/web/widgets/webview.py +5 -12
- {euporie-2.8.1.dist-info → euporie-2.8.5.dist-info}/METADATA +11 -15
- euporie-2.8.5.dist-info/RECORD +172 -0
- {euporie-2.8.1.dist-info → euporie-2.8.5.dist-info}/WHEEL +1 -1
- {euporie-2.8.1.dist-info → euporie-2.8.5.dist-info}/entry_points.txt +2 -2
- {euporie-2.8.1.dist-info → euporie-2.8.5.dist-info}/licenses/LICENSE +1 -1
- euporie/core/launch.py +0 -59
- euporie/core/terminal.py +0 -527
- euporie-2.8.1.dist-info/RECORD +0 -146
- {euporie-2.8.1.data → euporie-2.8.5.data}/data/share/applications/euporie-console.desktop +0 -0
- {euporie-2.8.1.data → euporie-2.8.5.data}/data/share/applications/euporie-notebook.desktop +0 -0
@@ -0,0 +1,32 @@
|
|
1
|
+
"""Define settings for the notebook app tabs."""
|
2
|
+
|
3
|
+
from euporie.core.config import add_setting
|
4
|
+
|
5
|
+
add_setting(
|
6
|
+
name="show_scroll_bar",
|
7
|
+
group="euporie.notebook.tabs.notebook",
|
8
|
+
title="scroll bar",
|
9
|
+
flags=["--show-scroll-bar"],
|
10
|
+
type_=bool,
|
11
|
+
help_="Show the scroll bar",
|
12
|
+
default=True,
|
13
|
+
description="""
|
14
|
+
Whether the scroll bar should be shown on the right of the screen.
|
15
|
+
""",
|
16
|
+
)
|
17
|
+
|
18
|
+
add_setting(
|
19
|
+
name="show_side_bar",
|
20
|
+
group="euporie.notebook.widgets.side_bar",
|
21
|
+
flags=["--show-side-bar"],
|
22
|
+
type_=bool,
|
23
|
+
title="side-bar",
|
24
|
+
help_="Show the side-bar",
|
25
|
+
default=False,
|
26
|
+
schema={
|
27
|
+
"type": "boolean",
|
28
|
+
},
|
29
|
+
description="""
|
30
|
+
Whether the side-bar should be shown at the side of the screen.
|
31
|
+
""",
|
32
|
+
)
|
euporie/notebook/tabs/display.py
CHANGED
@@ -20,8 +20,8 @@ if TYPE_CHECKING:
|
|
20
20
|
|
21
21
|
from prompt_toolkit.layout.containers import AnyContainer
|
22
22
|
|
23
|
-
from euporie.core.app import BaseApp
|
24
|
-
from euporie.core.
|
23
|
+
from euporie.core.app.app import BaseApp
|
24
|
+
from euporie.core.bars.status import StatusBarFields
|
25
25
|
|
26
26
|
log = logging.getLogger(__name__)
|
27
27
|
|
euporie/notebook/tabs/edit.py
CHANGED
@@ -9,11 +9,11 @@ from prompt_toolkit.layout.containers import HSplit
|
|
9
9
|
from prompt_toolkit.layout.dimension import Dimension
|
10
10
|
|
11
11
|
from euporie.core.filters import insert_mode, replace_mode
|
12
|
-
from euporie.core.kernel import Kernel, MsgCallbacks
|
12
|
+
from euporie.core.kernel.client import Kernel, MsgCallbacks
|
13
13
|
from euporie.core.key_binding.registry import load_registered_bindings
|
14
14
|
from euporie.core.lexers import detect_lexer
|
15
15
|
from euporie.core.path import UntitledPath
|
16
|
-
from euporie.core.tabs.
|
16
|
+
from euporie.core.tabs.kernel import KernelTab
|
17
17
|
from euporie.core.widgets.inputs import KernelInput
|
18
18
|
|
19
19
|
if TYPE_CHECKING:
|
@@ -22,9 +22,9 @@ if TYPE_CHECKING:
|
|
22
22
|
|
23
23
|
from prompt_toolkit.layout.containers import AnyContainer
|
24
24
|
|
25
|
-
from euporie.core.app import BaseApp
|
25
|
+
from euporie.core.app.app import BaseApp
|
26
|
+
from euporie.core.bars.status import StatusBarFields
|
26
27
|
from euporie.core.comm.base import Comm
|
27
|
-
from euporie.core.widgets.status import StatusBarFields
|
28
28
|
|
29
29
|
log = logging.getLogger(__name__)
|
30
30
|
|
@@ -148,7 +148,10 @@ class EditorTab(KernelTab):
|
|
148
148
|
[self.input_box],
|
149
149
|
width=Dimension(weight=1),
|
150
150
|
height=Dimension(weight=1),
|
151
|
-
key_bindings=load_registered_bindings(
|
151
|
+
key_bindings=load_registered_bindings(
|
152
|
+
"euporie.core.tabs.base.Tab",
|
153
|
+
config=self.app.config,
|
154
|
+
),
|
152
155
|
)
|
153
156
|
|
154
157
|
def save(self, path: Path | None = None, cb: Callable | None = None) -> None:
|
@@ -163,9 +166,11 @@ class EditorTab(KernelTab):
|
|
163
166
|
log.debug("Saving file...")
|
164
167
|
self.saving = True
|
165
168
|
self.app.invalidate()
|
166
|
-
|
169
|
+
# Ensure parent path exists
|
170
|
+
parent = self.path.parent
|
171
|
+
parent.mkdir(exist_ok=True, parents=True)
|
167
172
|
# Save to a temp file, then replace the original
|
168
|
-
temp_path =
|
173
|
+
temp_path = parent / f".{self.path.stem}.tmp{self.path.suffix}"
|
169
174
|
log.debug("Using temporary file %s", temp_path.name)
|
170
175
|
try:
|
171
176
|
open_file = temp_path.open("w")
|
euporie/notebook/tabs/json.py
CHANGED
@@ -18,8 +18,8 @@ if TYPE_CHECKING:
|
|
18
18
|
|
19
19
|
from prompt_toolkit.layout.containers import AnyContainer
|
20
20
|
|
21
|
-
from euporie.core.app import BaseApp
|
22
|
-
from euporie.core.
|
21
|
+
from euporie.core.app.app import BaseApp
|
22
|
+
from euporie.core.bars.status import StatusBarFields
|
23
23
|
|
24
24
|
log = logging.getLogger(__name__)
|
25
25
|
|
@@ -29,7 +29,7 @@ class JsonTab(Tab):
|
|
29
29
|
|
30
30
|
name = "JSON Viewer"
|
31
31
|
mime_types: ClassVar[set[str]] = {"*json"}
|
32
|
-
|
32
|
+
file_types: ClassVar[dict[str, None]] = {".json": None}
|
33
33
|
|
34
34
|
def __init__(self, app: BaseApp, path: Path | None = None) -> None:
|
35
35
|
"""Call when the tab is created."""
|
euporie/notebook/tabs/log.py
CHANGED
@@ -9,8 +9,6 @@ from prompt_toolkit.layout.containers import HSplit, VSplit
|
|
9
9
|
from prompt_toolkit.layout.dimension import Dimension
|
10
10
|
from prompt_toolkit.widgets import SearchToolbar
|
11
11
|
|
12
|
-
from euporie.core.commands import add_cmd
|
13
|
-
from euporie.core.current import get_app
|
14
12
|
from euporie.core.log import LOG_QUEUE, QueueHandler
|
15
13
|
from euporie.core.margins import MarginContainer, ScrollbarMargin
|
16
14
|
from euporie.core.path import parse_path
|
@@ -23,7 +21,7 @@ if TYPE_CHECKING:
|
|
23
21
|
|
24
22
|
from prompt_toolkit.formatted_text.base import FormattedText
|
25
23
|
|
26
|
-
from euporie.core.app import BaseApp
|
24
|
+
from euporie.core.app.app import BaseApp
|
27
25
|
|
28
26
|
|
29
27
|
class LogView(Tab):
|
@@ -93,18 +91,3 @@ class LogView(Tab):
|
|
93
91
|
"""Remove log queue handler hook on close."""
|
94
92
|
QueueHandler.unhook(self.hook_id)
|
95
93
|
super().close(cb=cb)
|
96
|
-
|
97
|
-
# ################################### Commands ####################################
|
98
|
-
|
99
|
-
@staticmethod
|
100
|
-
@add_cmd()
|
101
|
-
def _view_logs() -> None:
|
102
|
-
"""Open the logs in a new tab."""
|
103
|
-
app = get_app()
|
104
|
-
for tab in app.tabs:
|
105
|
-
if isinstance(tab, LogView):
|
106
|
-
break
|
107
|
-
else:
|
108
|
-
tab = LogView(app)
|
109
|
-
app.tabs.append(tab)
|
110
|
-
tab.focus()
|