omdev 0.0.0.dev461__py3-none-any.whl → 0.0.0.dev462__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.
Potentially problematic release.
This version of omdev might be problematic. Click here for more details.
- omdev/.omlish-manifests.json +1 -1
- omdev/cexts/cmake.py +4 -1
- omdev/tui/textual/__init__.py +148 -1
- omdev/tui/textual/drivers2.py +55 -0
- {omdev-0.0.0.dev461.dist-info → omdev-0.0.0.dev462.dist-info}/METADATA +2 -2
- {omdev-0.0.0.dev461.dist-info → omdev-0.0.0.dev462.dist-info}/RECORD +10 -9
- {omdev-0.0.0.dev461.dist-info → omdev-0.0.0.dev462.dist-info}/WHEEL +0 -0
- {omdev-0.0.0.dev461.dist-info → omdev-0.0.0.dev462.dist-info}/entry_points.txt +0 -0
- {omdev-0.0.0.dev461.dist-info → omdev-0.0.0.dev462.dist-info}/licenses/LICENSE +0 -0
- {omdev-0.0.0.dev461.dist-info → omdev-0.0.0.dev462.dist-info}/top_level.txt +0 -0
omdev/.omlish-manifests.json
CHANGED
omdev/cexts/cmake.py
CHANGED
omdev/tui/textual/__init__.py
CHANGED
|
@@ -6,4 +6,151 @@ from omlish import lang as _lang
|
|
|
6
6
|
with _lang.auto_proxy_init(globals()):
|
|
7
7
|
##
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
from textual import app # noqa
|
|
10
|
+
from textual import binding # noqa
|
|
11
|
+
from textual import containers # noqa
|
|
12
|
+
from textual import events # noqa
|
|
13
|
+
from textual import events # noqa
|
|
14
|
+
from textual import message # noqa
|
|
15
|
+
from textual import reactive # noqa
|
|
16
|
+
from textual import widgets # noqa
|
|
17
|
+
from textual.app import ActionError # noqa
|
|
18
|
+
from textual.app import ActiveModeError # noqa
|
|
19
|
+
from textual.app import App # noqa
|
|
20
|
+
from textual.app import AppError # noqa
|
|
21
|
+
from textual.app import AutopilotCallbackType # noqa
|
|
22
|
+
from textual.app import CallThreadReturnType # noqa
|
|
23
|
+
from textual.app import CommandCallback # noqa
|
|
24
|
+
from textual.app import ComposeResult # noqa
|
|
25
|
+
from textual.app import InvalidModeError # noqa
|
|
26
|
+
from textual.app import InvalidThemeError # noqa
|
|
27
|
+
from textual.app import ModeError # noqa
|
|
28
|
+
from textual.app import RenderResult # noqa
|
|
29
|
+
from textual.app import ReturnType # noqa
|
|
30
|
+
from textual.app import ScreenError # noqa
|
|
31
|
+
from textual.app import ScreenStackError # noqa
|
|
32
|
+
from textual.app import ScreenType # noqa
|
|
33
|
+
from textual.app import SuspendNotSupported # noqa
|
|
34
|
+
from textual.app import SystemCommand # noqa
|
|
35
|
+
from textual.app import UnknownModeError # noqa
|
|
36
|
+
from textual.app import get_system_commands_provider # noqa
|
|
37
|
+
from textual.binding import ActiveBinding # noqa
|
|
38
|
+
from textual.binding import Binding # noqa
|
|
39
|
+
from textual.binding import BindingError # noqa
|
|
40
|
+
from textual.binding import BindingIDString # noqa
|
|
41
|
+
from textual.binding import BindingType # noqa
|
|
42
|
+
from textual.binding import BindingsMap # noqa
|
|
43
|
+
from textual.binding import InvalidBinding # noqa
|
|
44
|
+
from textual.binding import KeyString # noqa
|
|
45
|
+
from textual.binding import Keymap # noqa
|
|
46
|
+
from textual.binding import KeymapApplyResult # noqa
|
|
47
|
+
from textual.binding import NoBinding # noqa
|
|
48
|
+
from textual.containers import Center # noqa
|
|
49
|
+
from textual.containers import CenterMiddle # noqa
|
|
50
|
+
from textual.containers import Container # noqa
|
|
51
|
+
from textual.containers import Grid # noqa
|
|
52
|
+
from textual.containers import Horizontal # noqa
|
|
53
|
+
from textual.containers import HorizontalGroup # noqa
|
|
54
|
+
from textual.containers import HorizontalScroll # noqa
|
|
55
|
+
from textual.containers import ItemGrid # noqa
|
|
56
|
+
from textual.containers import Middle # noqa
|
|
57
|
+
from textual.containers import Right # noqa
|
|
58
|
+
from textual.containers import ScrollableContainer # noqa
|
|
59
|
+
from textual.containers import Vertical # noqa
|
|
60
|
+
from textual.containers import VerticalGroup # noqa
|
|
61
|
+
from textual.containers import VerticalScroll # noqa
|
|
62
|
+
from textual.driver import Driver # noqa
|
|
63
|
+
from textual.events import Action # noqa
|
|
64
|
+
from textual.events import AppBlur # noqa
|
|
65
|
+
from textual.events import AppFocus # noqa
|
|
66
|
+
from textual.events import Blur # noqa
|
|
67
|
+
from textual.events import Callback # noqa
|
|
68
|
+
from textual.events import Click # noqa
|
|
69
|
+
from textual.events import Compose # noqa
|
|
70
|
+
from textual.events import CursorPosition # noqa
|
|
71
|
+
from textual.events import DeliveryComplete # noqa
|
|
72
|
+
from textual.events import DeliveryFailed # noqa
|
|
73
|
+
from textual.events import DescendantBlur # noqa
|
|
74
|
+
from textual.events import DescendantFocus # noqa
|
|
75
|
+
from textual.events import Enter # noqa
|
|
76
|
+
from textual.events import Event # noqa
|
|
77
|
+
from textual.events import Focus # noqa
|
|
78
|
+
from textual.events import Hide # noqa
|
|
79
|
+
from textual.events import Idle # noqa
|
|
80
|
+
from textual.events import InputEvent # noqa
|
|
81
|
+
from textual.events import Key # noqa
|
|
82
|
+
from textual.events import Leave # noqa
|
|
83
|
+
from textual.events import Load # noqa
|
|
84
|
+
from textual.events import Mount # noqa
|
|
85
|
+
from textual.events import MouseCapture # noqa
|
|
86
|
+
from textual.events import MouseDown # noqa
|
|
87
|
+
from textual.events import MouseEvent # noqa
|
|
88
|
+
from textual.events import MouseMove # noqa
|
|
89
|
+
from textual.events import MouseRelease # noqa
|
|
90
|
+
from textual.events import MouseScrollDown # noqa
|
|
91
|
+
from textual.events import MouseScrollLeft # noqa
|
|
92
|
+
from textual.events import MouseScrollRight # noqa
|
|
93
|
+
from textual.events import MouseScrollUp # noqa
|
|
94
|
+
from textual.events import MouseUp # noqa
|
|
95
|
+
from textual.events import Paste # noqa
|
|
96
|
+
from textual.events import Print # noqa
|
|
97
|
+
from textual.events import Ready # noqa
|
|
98
|
+
from textual.events import Resize # noqa
|
|
99
|
+
from textual.events import ScreenResume # noqa
|
|
100
|
+
from textual.events import ScreenSuspend # noqa
|
|
101
|
+
from textual.events import Show # noqa
|
|
102
|
+
from textual.events import Timer # noqa
|
|
103
|
+
from textual.events import Unmount # noqa
|
|
104
|
+
from textual.message import Message # noqa
|
|
105
|
+
from textual.reactive import Reactive # noqa
|
|
106
|
+
from textual.widget import Widget # noqa
|
|
107
|
+
from textual.widgets import Button # noqa
|
|
108
|
+
from textual.widgets import Checkbox # noqa
|
|
109
|
+
from textual.widgets import Collapsible # noqa
|
|
110
|
+
from textual.widgets import CollapsibleTitle # noqa
|
|
111
|
+
from textual.widgets import ContentSwitcher # noqa
|
|
112
|
+
from textual.widgets import DataTable # noqa
|
|
113
|
+
from textual.widgets import Digits # noqa
|
|
114
|
+
from textual.widgets import DirectoryTree # noqa
|
|
115
|
+
from textual.widgets import Footer # noqa
|
|
116
|
+
from textual.widgets import Header # noqa
|
|
117
|
+
from textual.widgets import HelpPanel # noqa
|
|
118
|
+
from textual.widgets import Input # noqa
|
|
119
|
+
from textual.widgets import KeyPanel # noqa
|
|
120
|
+
from textual.widgets import Label # noqa
|
|
121
|
+
from textual.widgets import Link # noqa
|
|
122
|
+
from textual.widgets import ListItem # noqa
|
|
123
|
+
from textual.widgets import ListView # noqa
|
|
124
|
+
from textual.widgets import LoadingIndicator # noqa
|
|
125
|
+
from textual.widgets import Log # noqa
|
|
126
|
+
from textual.widgets import Markdown # noqa
|
|
127
|
+
from textual.widgets import MarkdownViewer # noqa
|
|
128
|
+
from textual.widgets import MaskedInput # noqa
|
|
129
|
+
from textual.widgets import OptionList # noqa
|
|
130
|
+
from textual.widgets import Placeholder # noqa
|
|
131
|
+
from textual.widgets import Pretty # noqa
|
|
132
|
+
from textual.widgets import ProgressBar # noqa
|
|
133
|
+
from textual.widgets import RadioButton # noqa
|
|
134
|
+
from textual.widgets import RadioSet # noqa
|
|
135
|
+
from textual.widgets import RichLog # noqa
|
|
136
|
+
from textual.widgets import Rule # noqa
|
|
137
|
+
from textual.widgets import Select # noqa
|
|
138
|
+
from textual.widgets import SelectionList # noqa
|
|
139
|
+
from textual.widgets import Sparkline # noqa
|
|
140
|
+
from textual.widgets import Static # noqa
|
|
141
|
+
from textual.widgets import Switch # noqa
|
|
142
|
+
from textual.widgets import Tab # noqa
|
|
143
|
+
from textual.widgets import TabPane # noqa
|
|
144
|
+
from textual.widgets import TabbedContent # noqa
|
|
145
|
+
from textual.widgets import Tabs # noqa
|
|
146
|
+
from textual.widgets import TextArea # noqa
|
|
147
|
+
from textual.widgets import Tooltip # noqa
|
|
148
|
+
from textual.widgets import Tree # noqa
|
|
149
|
+
from textual.widgets import Welcome # noqa
|
|
150
|
+
|
|
151
|
+
##
|
|
152
|
+
|
|
153
|
+
from .drivers2 import ( # noqa
|
|
154
|
+
PendingWritesDriverMixin,
|
|
155
|
+
get_pending_writes_driver_class,
|
|
156
|
+
)
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import threading
|
|
2
|
+
import typing as ta
|
|
3
|
+
|
|
4
|
+
from omlish import lang
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
if ta.TYPE_CHECKING:
|
|
8
|
+
from textual.driver import Driver
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
##
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class PendingWritesDriverMixin:
|
|
15
|
+
def __init__(self, *args: ta.Any, **kwargs: ta.Any) -> None:
|
|
16
|
+
super().__init__(*args, **kwargs)
|
|
17
|
+
|
|
18
|
+
self._pending_primary_buffer_writes: list[str] = []
|
|
19
|
+
|
|
20
|
+
def queue_primary_buffer_write(self, *s: str) -> None:
|
|
21
|
+
self._pending_primary_buffer_writes.extend(s)
|
|
22
|
+
|
|
23
|
+
def write(self, data: str) -> None:
|
|
24
|
+
if (pw := self._pending_primary_buffer_writes):
|
|
25
|
+
data = ''.join([*pw, data])
|
|
26
|
+
pw.clear()
|
|
27
|
+
super().write(data) # type: ignore
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
_PENDING_WRITES_DRIVER_CLASSES_LOCK = threading.RLock()
|
|
31
|
+
_PENDING_WRITES_DRIVER_CLASSES: dict[type['Driver'], type['Driver']] = {}
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def get_pending_writes_driver_class(cls: type['Driver']) -> type['Driver']:
|
|
35
|
+
if issubclass(cls, PendingWritesDriverMixin):
|
|
36
|
+
return cls # noqa
|
|
37
|
+
|
|
38
|
+
try:
|
|
39
|
+
return _PENDING_WRITES_DRIVER_CLASSES[cls]
|
|
40
|
+
except KeyError:
|
|
41
|
+
pass
|
|
42
|
+
|
|
43
|
+
with _PENDING_WRITES_DRIVER_CLASSES_LOCK:
|
|
44
|
+
try:
|
|
45
|
+
return _PENDING_WRITES_DRIVER_CLASSES[cls]
|
|
46
|
+
except KeyError:
|
|
47
|
+
pass
|
|
48
|
+
|
|
49
|
+
cls = _PENDING_WRITES_DRIVER_CLASSES[cls] = lang.new_type( # noqa
|
|
50
|
+
f'PendingWrites{cls.__name__}',
|
|
51
|
+
(PendingWritesDriverMixin, cls),
|
|
52
|
+
{},
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
return cls # noqa
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: omdev
|
|
3
|
-
Version: 0.0.0.
|
|
3
|
+
Version: 0.0.0.dev462
|
|
4
4
|
Summary: omdev
|
|
5
5
|
Author: wrmsr
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
@@ -14,7 +14,7 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
14
14
|
Requires-Python: >=3.13
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
16
|
License-File: LICENSE
|
|
17
|
-
Requires-Dist: omlish==0.0.0.
|
|
17
|
+
Requires-Dist: omlish==0.0.0.dev462
|
|
18
18
|
Provides-Extra: all
|
|
19
19
|
Requires-Dist: black~=25.9; extra == "all"
|
|
20
20
|
Requires-Dist: pycparser~=2.23; extra == "all"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
omdev/.omlish-manifests.json,sha256=
|
|
1
|
+
omdev/.omlish-manifests.json,sha256=cMWrMB14_AFp9mQiTEeoTYL1uaC3zq7ER7-XHGCXY8I,11671
|
|
2
2
|
omdev/__about__.py,sha256=TwPTq6a1_K0K-oDBQf6x2VmkiD5hi6W8Q7CvmTW9Aic,1223
|
|
3
3
|
omdev/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
4
|
omdev/cmake.py,sha256=gu49t10_syXh_TUJs4POsxeFs8we8Y3XTOOPgIXmGvg,4608
|
|
@@ -52,7 +52,7 @@ omdev/cc/srclangs.py,sha256=3u_APHgknuc-BPRQSDISwSzouluKsnLlBxodp-XCl_E,728
|
|
|
52
52
|
omdev/cexts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
53
53
|
omdev/cexts/_boilerplate.cc,sha256=tUTFKyMpammFj-7bF8DbN6jv67Vn7qrwCFDoAgarof8,1753
|
|
54
54
|
omdev/cexts/build.py,sha256=JxEuqSpspnY6kWn8eB89FjcSjF4bpNgVYNeIvwmWehY,2659
|
|
55
|
-
omdev/cexts/cmake.py,sha256=
|
|
55
|
+
omdev/cexts/cmake.py,sha256=rwsUVjOMjNR9nBCMgK-oWLl0aD5WWUYzVQEYcZ5BZGs,10185
|
|
56
56
|
omdev/cexts/importhook.py,sha256=GZ04bE6tMQ8uQUUzGr22Rt9cwyI6kkoK4t7xpLP2Lrs,3562
|
|
57
57
|
omdev/cexts/magic.py,sha256=DglhjCXEiL28pFTN4lrmUW6ZLn6HaumR13ptyaFOez4,131
|
|
58
58
|
omdev/cexts/scan.py,sha256=94UqVgxBrAHn_VyW_ZA3-hB_R6pWIJRWqvtSBEg_O4U,1673
|
|
@@ -341,10 +341,11 @@ omdev/tui/apps/markdown/cli.py,sha256=K1vH7f3ZqLv4xTPluhJBEZH8nx8n42_vXIALEV07Q5
|
|
|
341
341
|
omdev/tui/rich/__init__.py,sha256=_PcNDlzl7FIa071qni4AlBAf0oXXFHUjEaPxumnuXWs,775
|
|
342
342
|
omdev/tui/rich/console2.py,sha256=BYYLbbD65If9TvfPI6qUcMQKUWJbuWwykEzPplvkf6A,342
|
|
343
343
|
omdev/tui/rich/markdown2.py,sha256=fBcjG_34XzUf4WclBL_MxvBj5NUwvLCANhHCx3R0akw,6139
|
|
344
|
-
omdev/tui/textual/__init__.py,sha256=
|
|
345
|
-
omdev
|
|
346
|
-
omdev-0.0.0.
|
|
347
|
-
omdev-0.0.0.
|
|
348
|
-
omdev-0.0.0.
|
|
349
|
-
omdev-0.0.0.
|
|
350
|
-
omdev-0.0.0.
|
|
344
|
+
omdev/tui/textual/__init__.py,sha256=o5ibJJx9Mq8MctxqDjqyZkbQh36RfUCFmlbGqU4qM_U,7222
|
|
345
|
+
omdev/tui/textual/drivers2.py,sha256=ZVxI9n6cyczjrdjqKOAjE51pF0yppACJOVmqLaWuJuM,1402
|
|
346
|
+
omdev-0.0.0.dev462.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
|
347
|
+
omdev-0.0.0.dev462.dist-info/METADATA,sha256=td0MciyYGguWdhGM2lM_cshzRnLl71k8aJWfaOtBa5g,5170
|
|
348
|
+
omdev-0.0.0.dev462.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
349
|
+
omdev-0.0.0.dev462.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
|
|
350
|
+
omdev-0.0.0.dev462.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
|
|
351
|
+
omdev-0.0.0.dev462.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|