euporie 2.8.2__tar.gz → 2.8.3__tar.gz

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.
Files changed (144) hide show
  1. {euporie-2.8.2 → euporie-2.8.3}/PKG-INFO +2 -2
  2. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/__init__.py +1 -1
  3. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/app.py +11 -0
  4. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/widgets/inputs.py +21 -9
  5. {euporie-2.8.2 → euporie-2.8.3}/euporie/notebook/app.py +9 -1
  6. {euporie-2.8.2 → euporie-2.8.3}/pyproject.toml +1 -1
  7. {euporie-2.8.2 → euporie-2.8.3}/.gitignore +0 -0
  8. {euporie-2.8.2 → euporie-2.8.3}/LICENSE +0 -0
  9. {euporie-2.8.2 → euporie-2.8.3}/README.rst +0 -0
  10. {euporie-2.8.2 → euporie-2.8.3}/euporie/console/__init__.py +0 -0
  11. {euporie-2.8.2 → euporie-2.8.3}/euporie/console/__main__.py +0 -0
  12. {euporie-2.8.2 → euporie-2.8.3}/euporie/console/app.py +0 -0
  13. {euporie-2.8.2 → euporie-2.8.3}/euporie/console/py.typed +0 -0
  14. {euporie-2.8.2 → euporie-2.8.3}/euporie/console/tabs/__init__.py +0 -0
  15. {euporie-2.8.2 → euporie-2.8.3}/euporie/console/tabs/console.py +0 -0
  16. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/__main__.py +0 -0
  17. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/border.py +0 -0
  18. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/clipboard.py +0 -0
  19. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/comm/__init__.py +0 -0
  20. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/comm/base.py +0 -0
  21. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/comm/ipywidgets.py +0 -0
  22. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/comm/registry.py +0 -0
  23. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/commands.py +0 -0
  24. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/completion.py +0 -0
  25. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/config.py +0 -0
  26. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/convert/__init__.py +0 -0
  27. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/convert/datum.py +0 -0
  28. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/convert/formats/__init__.py +0 -0
  29. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/convert/formats/ansi.py +0 -0
  30. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/convert/formats/base64.py +0 -0
  31. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/convert/formats/common.py +0 -0
  32. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/convert/formats/ft.py +0 -0
  33. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/convert/formats/html.py +0 -0
  34. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/convert/formats/jpeg.py +0 -0
  35. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/convert/formats/markdown.py +0 -0
  36. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/convert/formats/pdf.py +0 -0
  37. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/convert/formats/pil.py +0 -0
  38. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/convert/formats/png.py +0 -0
  39. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/convert/formats/rich.py +0 -0
  40. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/convert/formats/sixel.py +0 -0
  41. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/convert/formats/svg.py +0 -0
  42. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/convert/mime.py +0 -0
  43. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/convert/registry.py +0 -0
  44. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/convert/utils.py +0 -0
  45. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/current.py +0 -0
  46. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/data_structures.py +0 -0
  47. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/diagnostics.py +0 -0
  48. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/filters.py +0 -0
  49. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/format.py +0 -0
  50. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/ft/__init__.py +0 -0
  51. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/ft/ansi.py +0 -0
  52. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/ft/html.py +0 -0
  53. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/ft/table.py +0 -0
  54. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/ft/utils.py +0 -0
  55. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/graphics.py +0 -0
  56. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/history.py +0 -0
  57. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/inspection.py +0 -0
  58. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/io.py +0 -0
  59. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/kernel.py +0 -0
  60. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/key_binding/__init__.py +0 -0
  61. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/key_binding/bindings/__init__.py +0 -0
  62. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/key_binding/bindings/basic.py +0 -0
  63. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/key_binding/bindings/completion.py +0 -0
  64. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/key_binding/bindings/micro.py +0 -0
  65. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/key_binding/bindings/mouse.py +0 -0
  66. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/key_binding/bindings/page_navigation.py +0 -0
  67. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/key_binding/key_processor.py +0 -0
  68. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/key_binding/micro_state.py +0 -0
  69. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/key_binding/registry.py +0 -0
  70. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/key_binding/utils.py +0 -0
  71. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/key_binding/vi_state.py +0 -0
  72. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/keys.py +0 -0
  73. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/launch.py +0 -0
  74. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/layout/__init__.py +0 -0
  75. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/layout/cache.py +0 -0
  76. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/layout/containers.py +0 -0
  77. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/layout/controls.py +0 -0
  78. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/layout/decor.py +0 -0
  79. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/layout/mouse.py +0 -0
  80. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/layout/print.py +0 -0
  81. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/layout/screen.py +0 -0
  82. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/layout/scroll.py +0 -0
  83. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/lexers.py +0 -0
  84. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/log.py +0 -0
  85. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/lsp.py +0 -0
  86. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/margins.py +0 -0
  87. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/path.py +0 -0
  88. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/processors.py +0 -0
  89. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/py.typed +0 -0
  90. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/pygments.py +0 -0
  91. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/reference.py +0 -0
  92. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/renderer.py +0 -0
  93. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/style.py +0 -0
  94. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/suggest.py +0 -0
  95. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/tabs/__init__.py +0 -0
  96. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/tabs/base.py +0 -0
  97. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/tabs/notebook.py +0 -0
  98. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/terminal.py +0 -0
  99. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/utils.py +0 -0
  100. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/validation.py +0 -0
  101. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/widgets/__init__.py +0 -0
  102. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/widgets/cell.py +0 -0
  103. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/widgets/cell_outputs.py +0 -0
  104. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/widgets/decor.py +0 -0
  105. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/widgets/dialog.py +0 -0
  106. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/widgets/display.py +0 -0
  107. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/widgets/file_browser.py +0 -0
  108. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/widgets/formatted_text_area.py +0 -0
  109. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/widgets/forms.py +0 -0
  110. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/widgets/layout.py +0 -0
  111. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/widgets/menu.py +0 -0
  112. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/widgets/pager.py +0 -0
  113. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/widgets/palette.py +0 -0
  114. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/widgets/search.py +0 -0
  115. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/widgets/status.py +0 -0
  116. {euporie-2.8.2 → euporie-2.8.3}/euporie/core/widgets/tree.py +0 -0
  117. {euporie-2.8.2 → euporie-2.8.3}/euporie/data/desktop/euporie-console.desktop +0 -0
  118. {euporie-2.8.2 → euporie-2.8.3}/euporie/data/desktop/euporie-notebook.desktop +0 -0
  119. {euporie-2.8.2 → euporie-2.8.3}/euporie/hub/__init__.py +0 -0
  120. {euporie-2.8.2 → euporie-2.8.3}/euporie/hub/__main__.py +0 -0
  121. {euporie-2.8.2 → euporie-2.8.3}/euporie/hub/app.py +0 -0
  122. {euporie-2.8.2 → euporie-2.8.3}/euporie/hub/py.typed +0 -0
  123. {euporie-2.8.2 → euporie-2.8.3}/euporie/notebook/__init__.py +0 -0
  124. {euporie-2.8.2 → euporie-2.8.3}/euporie/notebook/__main__.py +0 -0
  125. {euporie-2.8.2 → euporie-2.8.3}/euporie/notebook/current.py +0 -0
  126. {euporie-2.8.2 → euporie-2.8.3}/euporie/notebook/enums.py +0 -0
  127. {euporie-2.8.2 → euporie-2.8.3}/euporie/notebook/filters.py +0 -0
  128. {euporie-2.8.2 → euporie-2.8.3}/euporie/notebook/py.typed +0 -0
  129. {euporie-2.8.2 → euporie-2.8.3}/euporie/notebook/tabs/__init__.py +0 -0
  130. {euporie-2.8.2 → euporie-2.8.3}/euporie/notebook/tabs/display.py +0 -0
  131. {euporie-2.8.2 → euporie-2.8.3}/euporie/notebook/tabs/edit.py +0 -0
  132. {euporie-2.8.2 → euporie-2.8.3}/euporie/notebook/tabs/json.py +0 -0
  133. {euporie-2.8.2 → euporie-2.8.3}/euporie/notebook/tabs/log.py +0 -0
  134. {euporie-2.8.2 → euporie-2.8.3}/euporie/notebook/tabs/notebook.py +0 -0
  135. {euporie-2.8.2 → euporie-2.8.3}/euporie/notebook/widgets/__init__.py +0 -0
  136. {euporie-2.8.2 → euporie-2.8.3}/euporie/notebook/widgets/side_bar.py +0 -0
  137. {euporie-2.8.2 → euporie-2.8.3}/euporie/preview/__init__.py +0 -0
  138. {euporie-2.8.2 → euporie-2.8.3}/euporie/preview/__main__.py +0 -0
  139. {euporie-2.8.2 → euporie-2.8.3}/euporie/preview/app.py +0 -0
  140. {euporie-2.8.2 → euporie-2.8.3}/euporie/preview/py.typed +0 -0
  141. {euporie-2.8.2 → euporie-2.8.3}/euporie/preview/tabs/__init__.py +0 -0
  142. {euporie-2.8.2 → euporie-2.8.3}/euporie/preview/tabs/notebook.py +0 -0
  143. {euporie-2.8.2 → euporie-2.8.3}/euporie/web/tabs/web.py +0 -0
  144. {euporie-2.8.2 → euporie-2.8.3}/euporie/web/widgets/webview.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: euporie
3
- Version: 2.8.2
3
+ Version: 2.8.3
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
@@ -29,7 +29,7 @@ Requires-Dist: imagesize~=1.3
29
29
  Requires-Dist: jupyter-client>=7.1
30
30
  Requires-Dist: jupytext>=1.14.0
31
31
  Requires-Dist: linkify-it-py~=1.0
32
- Requires-Dist: markdown-it-py~=2.1.0
32
+ Requires-Dist: markdown-it-py~=2.2.0
33
33
  Requires-Dist: mdit-py-plugins~=0.3.0
34
34
  Requires-Dist: nbformat~=5.0
35
35
  Requires-Dist: pillow>=9.0
@@ -1,7 +1,7 @@
1
1
  """This package defines the euporie application and its components."""
2
2
 
3
3
  __app_name__ = "euporie"
4
- __version__ = "2.8.2"
4
+ __version__ = "2.8.3"
5
5
  __logo__ = "⚈"
6
6
  __strapline__ = "Jupyter in the terminal"
7
7
  __author__ = "Josiah Outram Halstead"
@@ -1056,6 +1056,17 @@ class BaseApp(Application):
1056
1056
  """,
1057
1057
  )
1058
1058
 
1059
+ add_setting(
1060
+ name="syntax_highlighting",
1061
+ flags=["--syntax-highlighting"],
1062
+ type_=bool,
1063
+ help_="Syntax highlighting",
1064
+ default=True,
1065
+ description="""
1066
+ Enable or disable syntax highlighting in code input fields.
1067
+ """,
1068
+ )
1069
+
1059
1070
  add_setting(
1060
1071
  name="syntax_theme",
1061
1072
  flags=["--syntax-theme"],
@@ -3,6 +3,7 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import logging
6
+ from functools import lru_cache
6
7
  from typing import TYPE_CHECKING
7
8
 
8
9
  from prompt_toolkit.auto_suggest import AutoSuggest, DynamicAutoSuggest
@@ -97,6 +98,21 @@ if TYPE_CHECKING:
97
98
  log = logging.getLogger(__name__)
98
99
 
99
100
 
101
+ @lru_cache
102
+ def _get_lexer(highlight: bool, lexer: Lexer | None, language: str) -> Lexer:
103
+ """Determine which lexer should be used for syntax highlighting."""
104
+ if not highlight:
105
+ return SimpleLexer()
106
+ elif lexer is not None:
107
+ return lexer
108
+ try:
109
+ pygments_lexer_class = get_lexer_by_name(language).__class__
110
+ except ClassNotFound:
111
+ return SimpleLexer()
112
+ else:
113
+ return PygmentsLexer(pygments_lexer_class, sync_from_start=False)
114
+
115
+
100
116
  class KernelInput(TextArea):
101
117
  """Kernel input text areas.
102
118
 
@@ -182,14 +198,6 @@ class KernelInput(TextArea):
182
198
  self._language = language
183
199
  self.lexer = lexer
184
200
 
185
- def _get_lexer() -> Lexer:
186
- try:
187
- pygments_lexer_class = get_lexer_by_name(self.language).__class__
188
- except ClassNotFound:
189
- return SimpleLexer()
190
- else:
191
- return PygmentsLexer(pygments_lexer_class, sync_from_start=False)
192
-
193
201
  self.formatters = formatters if formatters is not None else []
194
202
  self._diagnostics = diagnostics or Report()
195
203
  self.inspector = inspector
@@ -241,7 +249,11 @@ class KernelInput(TextArea):
241
249
 
242
250
  self.control = BufferControl(
243
251
  buffer=self.buffer,
244
- lexer=DynamicLexer(lambda: self.lexer or _get_lexer()),
252
+ lexer=DynamicLexer(
253
+ lambda: _get_lexer(
254
+ app.config.syntax_highlighting, self.lexer, self.language
255
+ )
256
+ ),
245
257
  input_processors=[
246
258
  ConditionalProcessor(
247
259
  DiagnosticProcessor(_get_diagnostics),
@@ -445,7 +445,15 @@ class NotebookApp(BaseApp):
445
445
  description="Turn elements of euporie's interface on or off",
446
446
  ),
447
447
  self.config.get_item("color_scheme").menu,
448
- self.config.get_item("syntax_theme").menu,
448
+ MenuItem(
449
+ "Syntax highlighting",
450
+ children=[
451
+ self.config.get_item("syntax_highlighting").menu,
452
+ separator,
453
+ *self.config.get_item("syntax_theme").menu.children,
454
+ ],
455
+ description="Configure syntax highlighting",
456
+ ),
449
457
  get_cmd("toggle-expand").menu,
450
458
  get_cmd("toggle-line-numbers").menu,
451
459
  self.config.get_item("set_cursor_shape").menu,
@@ -37,7 +37,7 @@ dependencies = [
37
37
  "platformdirs~=3.5",
38
38
  "pyperclip~=1.8",
39
39
  "imagesize~=1.3",
40
- "markdown-it-py~=2.1.0",
40
+ "markdown-it-py~=2.2.0",
41
41
  "linkify-it-py~=1.0",
42
42
  "mdit-py-plugins~=0.3.0",
43
43
  "flatlatex~=0.15",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes