omlish 0.0.0.dev388__py3-none-any.whl → 0.0.0.dev390__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.
omlish/__about__.py CHANGED
@@ -1,5 +1,5 @@
1
- __version__ = '0.0.0.dev388'
2
- __revision__ = 'fcc404b8a37769b71f1c1118911ccffe78dbcb4b'
1
+ __version__ = '0.0.0.dev390'
2
+ __revision__ = 'ff94a07f8eda21fdfb8dbc4a4b090d4d42470f83'
3
3
 
4
4
 
5
5
  #
@@ -1,13 +1,12 @@
1
1
  import io
2
2
  import subprocess
3
- import sys
4
3
  import typing as ta
5
4
 
6
5
  import anyio.abc
7
6
 
8
7
  from ... import check
9
8
  from ...lite.timeouts import Timeout
10
- from ...subprocesses.async_ import AbstractAsyncSubprocesses
9
+ from ...subprocesses.asyncs import AbstractAsyncSubprocesses
11
10
  from ...subprocesses.run import SubprocessRun
12
11
  from ...subprocesses.run import SubprocessRunOutput
13
12
 
@@ -73,13 +72,5 @@ class AnyioSubprocesses(AbstractAsyncSubprocesses):
73
72
  stderr=stderr.getvalue() if stderr is not None else None,
74
73
  )
75
74
 
76
- async def check_call(self, *cmd: str, stdout: ta.Any = sys.stderr, **kwargs: ta.Any) -> None:
77
- with self.prepare_and_wrap(*cmd, stdout=stdout, check=True, **kwargs) as (cmd, kwargs): # noqa
78
- await self.run(*cmd, **kwargs)
79
-
80
- async def check_output(self, *cmd: str, **kwargs: ta.Any) -> bytes:
81
- with self.prepare_and_wrap(*cmd, stdout=subprocess.PIPE, check=True, **kwargs) as (cmd, kwargs): # noqa
82
- return check.not_none((await self.run(*cmd, **kwargs)).stdout)
83
-
84
75
 
85
76
  anyio_subprocesses = AnyioSubprocesses()
@@ -6,12 +6,11 @@ import contextlib
6
6
  import functools
7
7
  import logging
8
8
  import subprocess
9
- import sys
10
9
  import typing as ta
11
10
 
12
11
  from ...lite.check import check
13
12
  from ...lite.timeouts import TimeoutLike
14
- from ...subprocesses.async_ import AbstractAsyncSubprocesses
13
+ from ...subprocesses.asyncs import AbstractAsyncSubprocesses
15
14
  from ...subprocesses.run import SubprocessRun
16
15
  from ...subprocesses.run import SubprocessRunOutput
17
16
  from .timeouts import asyncio_maybe_timeout
@@ -208,24 +207,5 @@ class AsyncioSubprocesses(AbstractAsyncSubprocesses):
208
207
  stderr=stderr,
209
208
  )
210
209
 
211
- #
212
-
213
- async def check_call(
214
- self,
215
- *cmd: str,
216
- stdout: ta.Any = sys.stderr,
217
- **kwargs: ta.Any,
218
- ) -> None:
219
- with self.prepare_and_wrap(*cmd, stdout=stdout, check=True, **kwargs) as (cmd, kwargs): # noqa
220
- await self.run(*cmd, **kwargs)
221
-
222
- async def check_output(
223
- self,
224
- *cmd: str,
225
- **kwargs: ta.Any,
226
- ) -> bytes:
227
- with self.prepare_and_wrap(*cmd, stdout=subprocess.PIPE, check=True, **kwargs) as (cmd, kwargs): # noqa
228
- return check.not_none((await self.run(*cmd, **kwargs)).stdout)
229
-
230
210
 
231
211
  asyncio_subprocesses = AsyncioSubprocesses()
omlish/lite/maysyncs.py CHANGED
@@ -11,7 +11,8 @@ import typing as ta
11
11
 
12
12
  T = ta.TypeVar('T')
13
13
  T_co = ta.TypeVar('T_co', covariant=True)
14
- _X = ta.TypeVar('_X')
14
+
15
+ _MaysyncX = ta.TypeVar('_MaysyncX')
15
16
 
16
17
  _MaysyncGen = ta.Generator['_MaysyncOp', ta.Any, T] # ta.TypeAlias
17
18
 
@@ -40,11 +41,11 @@ class Maysync_(abc.ABC): # noqa
40
41
  ##
41
42
 
42
43
 
43
- class _Maywaitable(abc.ABC, ta.Generic[_X, T]):
44
+ class _Maywaitable(abc.ABC, ta.Generic[_MaysyncX, T]):
44
45
  @ta.final
45
46
  def __init__(
46
47
  self,
47
- x: _X,
48
+ x: _MaysyncX,
48
49
  *args: ta.Any,
49
50
  **kwargs: ta.Any,
50
51
  ) -> None:
@@ -115,6 +116,8 @@ class _MgMaysync(Maysync_, ta.Generic[T]):
115
116
  ) -> None:
116
117
  self.mg = mg
117
118
 
119
+ functools.update_wrapper(self, mg, updated=())
120
+
118
121
  def __get__(self, instance, owner=None):
119
122
  return _MgMaysync(
120
123
  self.mg.__get__(instance, owner), # noqa
@@ -146,6 +149,7 @@ class _MgMaywaitable(_Maywaitable[_MgMaysync[T], T]):
146
149
 
147
150
  if not isinstance(o, _MaysyncOp):
148
151
  raise TypeError(o)
152
+
149
153
  try:
150
154
  i = o.x(*o.args, **o.kwargs).s()
151
155
  except BaseException as ex: # noqa
@@ -173,6 +177,7 @@ class _MgMaywaitable(_Maywaitable[_MgMaysync[T], T]):
173
177
 
174
178
  if not isinstance(o, _MaysyncOp):
175
179
  raise TypeError(o)
180
+
176
181
  try:
177
182
  i = await o.x(*o.args, **o.kwargs).a()
178
183
  except BaseException as ex: # noqa
@@ -186,7 +191,7 @@ class _MgMaysyncFn:
186
191
  def __init__(self, m):
187
192
  self.m = m
188
193
 
189
- functools.update_wrapper(self, m)
194
+ functools.update_wrapper(self, m, updated=())
190
195
 
191
196
  def __get__(self, instance, owner=None):
192
197
  return _MgMaysyncFn(
@@ -206,6 +211,7 @@ class _MgMaysyncFn:
206
211
 
207
212
  if not isinstance(o, _MaysyncFuture):
208
213
  raise TypeError(o)
214
+
209
215
  if not o.done:
210
216
  try:
211
217
  o.result = yield o.op
@@ -213,6 +219,8 @@ class _MgMaysyncFn:
213
219
  o.error = e
214
220
  o.done = True
215
221
 
222
+ del o
223
+
216
224
  finally:
217
225
  g.close()
218
226
 
@@ -240,6 +248,10 @@ class _MaysyncOp:
240
248
  self.kwargs = kwargs
241
249
 
242
250
 
251
+ class _MaysyncFutureNotAwaitedError(RuntimeError):
252
+ pass
253
+
254
+
243
255
  @ta.final
244
256
  class _MaysyncFuture(ta.Generic[T]):
245
257
  def __init__(
@@ -249,14 +261,15 @@ class _MaysyncFuture(ta.Generic[T]):
249
261
  self.op = op
250
262
 
251
263
  done: bool = False
252
- result: ta.Optional[T] = None
264
+ result: T
253
265
  error: ta.Optional[BaseException] = None
254
266
 
255
267
  def __await__(self):
256
268
  if not self.done:
257
269
  yield self
258
270
  if not self.done:
259
- raise RuntimeError("await wasn't used with event future")
271
+ raise _MaysyncFutureNotAwaitedError
260
272
  if self.error is not None:
261
273
  raise self.error
262
- return self.result
274
+ else:
275
+ return self.result
@@ -1,9 +1,11 @@
1
1
  # ruff: noqa: UP006 UP007 UP045
2
2
  # @omlish-lite
3
3
  import abc
4
+ import subprocess
4
5
  import sys
5
6
  import typing as ta
6
7
 
8
+ from ..lite.check import check
7
9
  from ..lite.timeouts import TimeoutLike
8
10
  from .base import BaseSubprocesses
9
11
  from .run import SubprocessRun
@@ -13,9 +15,9 @@ from .run import SubprocessRunOutput
13
15
  ##
14
16
 
15
17
 
16
- class _AbstractAsyncSubprocesses(BaseSubprocesses):
18
+ class AbstractAsyncSubprocesses(BaseSubprocesses):
17
19
  @abc.abstractmethod
18
- async def run_(self, run: SubprocessRun) -> SubprocessRunOutput:
20
+ def run_(self, run: SubprocessRun) -> ta.Awaitable[SubprocessRunOutput]:
19
21
  raise NotImplementedError
20
22
 
21
23
  def run(
@@ -38,31 +40,41 @@ class _AbstractAsyncSubprocesses(BaseSubprocesses):
38
40
 
39
41
  #
40
42
 
41
- @abc.abstractmethod
42
43
  async def check_call(
43
44
  self,
44
45
  *cmd: str,
45
46
  stdout: ta.Any = sys.stderr,
46
47
  **kwargs: ta.Any,
47
48
  ) -> None:
48
- raise NotImplementedError
49
+ await self.run(
50
+ *cmd,
51
+ stdout=stdout,
52
+ check=True,
53
+ **kwargs,
54
+ )
49
55
 
50
- @abc.abstractmethod
51
56
  async def check_output(
52
57
  self,
53
58
  *cmd: str,
59
+ stdout: ta.Any = subprocess.PIPE,
54
60
  **kwargs: ta.Any,
55
61
  ) -> bytes:
56
- raise NotImplementedError
57
-
58
- #
62
+ return check.not_none((await self.run(
63
+ *cmd,
64
+ stdout=stdout,
65
+ check=True,
66
+ **kwargs,
67
+ )).stdout)
59
68
 
60
69
  async def check_output_str(
61
70
  self,
62
71
  *cmd: str,
63
72
  **kwargs: ta.Any,
64
73
  ) -> str:
65
- return (await self.check_output(*cmd, **kwargs)).decode().strip()
74
+ return (await self.check_output(
75
+ *cmd,
76
+ **kwargs,
77
+ )).decode().strip()
66
78
 
67
79
  #
68
80
 
@@ -95,7 +107,3 @@ class _AbstractAsyncSubprocesses(BaseSubprocesses):
95
107
  return None
96
108
  else:
97
109
  return ret.decode().strip()
98
-
99
-
100
- class AbstractAsyncSubprocesses(_AbstractAsyncSubprocesses, abc.ABC):
101
- pass
@@ -0,0 +1,152 @@
1
+ # ruff: noqa: UP006 UP007 UP045
2
+ # @omlish-lite
3
+ import abc
4
+ import sys
5
+ import typing as ta
6
+
7
+ from ..lite.maysyncs import Maywaitable
8
+ from ..lite.maysyncs import make_maysync
9
+ from ..lite.maysyncs import maysync
10
+ from ..lite.timeouts import TimeoutLike
11
+ from .asyncs import AbstractAsyncSubprocesses
12
+ from .base import BaseSubprocesses
13
+ from .run import SubprocessRun
14
+ from .run import SubprocessRunOutput
15
+ from .sync import AbstractSubprocesses
16
+
17
+
18
+ ##
19
+
20
+
21
+ class AbstractMaysyncSubprocesses(BaseSubprocesses, abc.ABC):
22
+ @abc.abstractmethod
23
+ def run_(self, run: SubprocessRun) -> Maywaitable[SubprocessRunOutput]:
24
+ raise NotImplementedError
25
+
26
+ def run(
27
+ self,
28
+ *cmd: str,
29
+ input: ta.Any = None, # noqa
30
+ timeout: TimeoutLike = None,
31
+ check: bool = False,
32
+ capture_output: ta.Optional[bool] = None,
33
+ **kwargs: ta.Any,
34
+ ) -> Maywaitable[SubprocessRunOutput]:
35
+ return self.run_(SubprocessRun(
36
+ cmd=cmd,
37
+ input=input,
38
+ timeout=timeout,
39
+ check=check,
40
+ capture_output=capture_output,
41
+ kwargs=kwargs,
42
+ ))
43
+
44
+ #
45
+
46
+ @abc.abstractmethod
47
+ def check_call(
48
+ self,
49
+ *cmd: str,
50
+ stdout: ta.Any = sys.stderr,
51
+ **kwargs: ta.Any,
52
+ ) -> Maywaitable[None]:
53
+ raise NotImplementedError
54
+
55
+ @abc.abstractmethod
56
+ def check_output(
57
+ self,
58
+ *cmd: str,
59
+ **kwargs: ta.Any,
60
+ ) -> Maywaitable[bytes]:
61
+ raise NotImplementedError
62
+
63
+ #
64
+
65
+ @maysync
66
+ async def check_output_str(
67
+ self,
68
+ *cmd: str,
69
+ **kwargs: ta.Any,
70
+ ) -> str:
71
+ return (await self.check_output(*cmd, **kwargs).m()).decode().strip()
72
+
73
+ #
74
+
75
+ @maysync
76
+ async def try_call(
77
+ self,
78
+ *cmd: str,
79
+ **kwargs: ta.Any,
80
+ ) -> bool:
81
+ if isinstance(await self.async_try_fn(self.check_call(*cmd, **kwargs).m), Exception):
82
+ return False
83
+ else:
84
+ return True
85
+
86
+ @maysync
87
+ async def try_output(
88
+ self,
89
+ *cmd: str,
90
+ **kwargs: ta.Any,
91
+ ) -> ta.Optional[bytes]:
92
+ if isinstance(ret := await self.async_try_fn(self.check_output(*cmd, **kwargs).m), Exception):
93
+ return None
94
+ else:
95
+ return ret
96
+
97
+ @maysync
98
+ async def try_output_str(
99
+ self,
100
+ *cmd: str,
101
+ **kwargs: ta.Any,
102
+ ) -> ta.Optional[str]:
103
+ if (ret := await self.try_output(*cmd, **kwargs).m()) is None:
104
+ return None
105
+ else:
106
+ return ret.decode().strip()
107
+
108
+
109
+ ##
110
+
111
+
112
+ class MaysyncSubprocesses(AbstractMaysyncSubprocesses):
113
+ def __init__(
114
+ self,
115
+ subprocesses: AbstractSubprocesses,
116
+ async_subprocesses: AbstractAsyncSubprocesses,
117
+ ) -> None:
118
+ super().__init__()
119
+
120
+ self._subprocesses = subprocesses
121
+ self._async_subprocesses = async_subprocesses
122
+
123
+ #
124
+
125
+ def run_(self, run: SubprocessRun) -> Maywaitable[SubprocessRunOutput]:
126
+ return make_maysync(
127
+ self._subprocesses.run,
128
+ self._async_subprocesses.run,
129
+ )(run)
130
+
131
+ #
132
+
133
+ def check_call(
134
+ self,
135
+ *cmd: str,
136
+ stdout: ta.Any = sys.stderr,
137
+ **kwargs: ta.Any,
138
+ ) -> Maywaitable[None]:
139
+ return make_maysync(
140
+ self._subprocesses.check_call,
141
+ self._async_subprocesses.check_call,
142
+ )(*cmd, stdout=stdout, **kwargs)
143
+
144
+ def check_output(
145
+ self,
146
+ *cmd: str,
147
+ **kwargs: ta.Any,
148
+ ) -> Maywaitable[bytes]:
149
+ return make_maysync(
150
+ self._subprocesses.check_output,
151
+ self._async_subprocesses.check_output,
152
+ )(*cmd, **kwargs)
@@ -127,6 +127,8 @@ class Subprocesses(AbstractSubprocesses):
127
127
  stderr=proc.stderr, # noqa
128
128
  )
129
129
 
130
+ #
131
+
130
132
  def check_call(
131
133
  self,
132
134
  *cmd: str,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omlish
3
- Version: 0.0.0.dev388
3
+ Version: 0.0.0.dev390
4
4
  Summary: omlish
5
5
  Author: wrmsr
6
6
  License-Expression: BSD-3-Clause
@@ -1,5 +1,5 @@
1
1
  omlish/.manifests.json,sha256=aT8yZ-Zh-9wfHl5Ym5ouiWC1i0cy7Q7RlhzavB6VLPI,8587
2
- omlish/__about__.py,sha256=Yte_7PVV4dR_gMOEh3rykgNGh8hm1tSqvBzJHfYNgcE,3543
2
+ omlish/__about__.py,sha256=alsBldkE0-UGNfrDGdG5bJin7IBPy2fvZg-usmwH17A,3543
3
3
  omlish/__init__.py,sha256=SsyiITTuK0v74XpKV8dqNaCmjOlan1JZKrHQv5rWKPA,253
4
4
  omlish/c3.py,sha256=rer-TPOFDU6fYq_AWio_AmA-ckZ8JDY5shIzQ_yXfzA,8414
5
5
  omlish/cached.py,sha256=MLap_p0rdGoDIMVhXVHm1tsbcWobJF0OanoodV03Ju8,542
@@ -34,7 +34,7 @@ omlish/asyncs/anyio/backends.py,sha256=jJIymWoiedaEJJm82gvKiJ41EWLQZ-bcyNHpbDpKK
34
34
  omlish/asyncs/anyio/futures.py,sha256=Nm1gLerZEnHk-rlsmr0UfK168IWIK6zA8EebZFtoY_E,2052
35
35
  omlish/asyncs/anyio/signals.py,sha256=ySSut5prdnoy0-5Ws5V1M4cC2ON_vY550vU10d2NHk8,893
36
36
  omlish/asyncs/anyio/streams.py,sha256=Zum2qd1t3EiH6yzGWFwxFw79m-IH2VY5sTUTiluFfIY,2164
37
- omlish/asyncs/anyio/subprocesses.py,sha256=nyl1A9z3rymxQMvIekWHU3IAiKBu1CcEqm-Ag1cGRPY,3018
37
+ omlish/asyncs/anyio/subprocesses.py,sha256=5nWYw9sPaelK2AJ17NHTHQ34Qa3DXCFkcTpvddzjboA,2500
38
38
  omlish/asyncs/anyio/sync.py,sha256=ZmSNhSsEkPwlXThrpefhtVTxw4GJ9F0P-yKyo5vbbSk,1574
39
39
  omlish/asyncs/anyio/utils.py,sha256=-mveSB20De6znphfMlIuEd_rwITkcSjFNO07isshDjk,1704
40
40
  omlish/asyncs/asyncio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -42,7 +42,7 @@ omlish/asyncs/asyncio/all.py,sha256=u2JpMEs-0AJ0Vd8yU10HvWD8rfKxdFfMiwBu2oDeuuQ,
42
42
  omlish/asyncs/asyncio/channels.py,sha256=oniTpmw_eeKK70APyEZLhRUChwLwebE4N0_uZiwSKgQ,1085
43
43
  omlish/asyncs/asyncio/sockets.py,sha256=i1a2DZ52IuvRQQQW8FJxEUFboqpKn_K08a_MsMaecqU,1264
44
44
  omlish/asyncs/asyncio/streams.py,sha256=Laa9BNwajZ7Wt_rJoYMbQtfSX4Q4i-dVHhtYSekCHXM,1015
45
- omlish/asyncs/asyncio/subprocesses.py,sha256=jVtvitvWgCLzAhgSLabHTzIOcPmNQqnsJpDr6hy6zgU,6908
45
+ omlish/asyncs/asyncio/subprocesses.py,sha256=8o-uWNsJhSoM7Egbofc23CeJFRmb4isb9zVVh1Fxjfk,6285
46
46
  omlish/asyncs/asyncio/timeouts.py,sha256=lJ4qmDqyxUeAQCXJGiLL8pxYwoR1F1lntZ18HVf40Wo,452
47
47
  omlish/asyncs/asyncio/utils.py,sha256=dCC4hXqCTKBpU5urAXsKUIIua2M9JXAtumwh7IUEu7E,2443
48
48
  omlish/asyncs/bluelet/LICENSE,sha256=q5Kpj4s30qpi8H66tXFlh5v8_fkaKMFIzqdGfnN0Hz0,555
@@ -478,7 +478,7 @@ omlish/lite/json.py,sha256=m0Ce9eqUZG23-H7-oOp8n1sf4fzno5vtK4AK_4Vc-Mg,706
478
478
  omlish/lite/logs.py,sha256=CWFG0NKGhqNeEgryF5atN2gkPYbUdTINEw_s1phbINM,51
479
479
  omlish/lite/marshal.py,sha256=JD_8ox5-yeIo7MZ6iipCdiVxx33So52M02AtvFlRGC8,20392
480
480
  omlish/lite/maybes.py,sha256=0p_fzb6yiOjEpvMKaQ53Q6CH1VPW1or7v7Lt1JIKcgM,4359
481
- omlish/lite/maysyncs.py,sha256=Za0kvANYaK9q-IUs_rSjo1ZQIOTZzkVB7IIEGw5eOsQ,5687
481
+ omlish/lite/maysyncs.py,sha256=ltB3CQ_zYl2PiTmHjtpeErZDFpNwj27JhO6_3xBmnfk,5852
482
482
  omlish/lite/pycharm.py,sha256=FRHGcCDo42UzZXqNwW_DkhI-6kb_CmJKPiQ8F6mYkLA,1174
483
483
  omlish/lite/reflect.py,sha256=pzOY2PPuHH0omdtglkN6DheXDrGopdL3PtTJnejyLFU,2189
484
484
  omlish/lite/reprs.py,sha256=Tiqf_ciD8FfS0ury7FcJ5G21yY342fW0vPacYlb8EO4,2014
@@ -748,12 +748,12 @@ omlish/sql/tabledefs/lower.py,sha256=i4_QkVlVH5U99O6pqokrB661AudNVJ9Q-OwtkKOBleU
748
748
  omlish/sql/tabledefs/marshal.py,sha256=5Z7K433SzfN7-z8Yd7FJRzOV9tJv-ErRMA6inZ2iBCE,475
749
749
  omlish/sql/tabledefs/tabledefs.py,sha256=lIhvlt0pk6G7RZAtDFsFXm5j0l9BvRfnP7vNGeydHtE,816
750
750
  omlish/subprocesses/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
751
- omlish/subprocesses/async_.py,sha256=Zs9TxCyROVTOhbZmZMHi_-zwydptVi7MN4esUiK4-YI,2448
751
+ omlish/subprocesses/asyncs.py,sha256=G9wj275s3r0ueftHFl73Lt4kMRBc2hJOKcoJQCDlBms,2663
752
752
  omlish/subprocesses/base.py,sha256=r60N3ad4ooSvdgFmT94L_xZEy7FMbMX6JcG2VgpHo6w,6139
753
753
  omlish/subprocesses/editor.py,sha256=xBrd7gY0akhRfDIBK5YIBrYMHECtl_8r499iKViyfpQ,2634
754
- omlish/subprocesses/maysync.py,sha256=dK2wDv2so4wa0rOWBkafUqBy1QEJmLg_9CxMsr_kR4I,1456
754
+ omlish/subprocesses/maysyncs.py,sha256=XWWVC-jyjVJLcT-nWMZFf4jUQesRuBWWVhmwcG_fUWE,3818
755
755
  omlish/subprocesses/run.py,sha256=8EeMm2FdNEFmEmbhhzJyHXASUhCCMMRN_-8ybqFhgLI,4378
756
- omlish/subprocesses/sync.py,sha256=YdGxa9_GhqqsvTucmnmUXWYcKKys0S5PQk271K1Jg68,3664
756
+ omlish/subprocesses/sync.py,sha256=L-ZNj9RrZd69XjlKrXjt-EJ-XUpQF8E35Mh3b3SI3vc,3671
757
757
  omlish/subprocesses/utils.py,sha256=v5uEzxmbmRvXwOl_0DtBa5Il6yITKYRgmVSGHcLsT4o,402
758
758
  omlish/subprocesses/wrap.py,sha256=AhGV8rsnaVUMQCFYKkrjj35fs3O-VJLZC1hZ14dz3C8,769
759
759
  omlish/term/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -895,9 +895,9 @@ omlish/typedvalues/marshal.py,sha256=AtBz7Jq-BfW8vwM7HSxSpR85JAXmxK2T0xDblmm1HI0
895
895
  omlish/typedvalues/of_.py,sha256=UXkxSj504WI2UrFlqdZJbu2hyDwBhL7XVrc2qdR02GQ,1309
896
896
  omlish/typedvalues/reflect.py,sha256=PAvKW6T4cW7u--iX80w3HWwZUS3SmIZ2_lQjT65uAyk,1026
897
897
  omlish/typedvalues/values.py,sha256=ym46I-q2QJ_6l4UlERqv3yj87R-kp8nCKMRph0xQ3UA,1307
898
- omlish-0.0.0.dev388.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
899
- omlish-0.0.0.dev388.dist-info/METADATA,sha256=YvbEgGvf4ZNKIIJWrToJVEysF8nsyVuzRgd1VeAcc8k,18825
900
- omlish-0.0.0.dev388.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
901
- omlish-0.0.0.dev388.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
902
- omlish-0.0.0.dev388.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
903
- omlish-0.0.0.dev388.dist-info/RECORD,,
898
+ omlish-0.0.0.dev390.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
899
+ omlish-0.0.0.dev390.dist-info/METADATA,sha256=2Ozri2hyskBCfsdHgBPNMJXGWCnvQz5xIm_p3MPXVaE,18825
900
+ omlish-0.0.0.dev390.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
901
+ omlish-0.0.0.dev390.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
902
+ omlish-0.0.0.dev390.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
903
+ omlish-0.0.0.dev390.dist-info/RECORD,,
@@ -1,52 +0,0 @@
1
- # ruff: noqa: UP006 UP007 UP045
2
- # @omlish-lite
3
- import abc
4
- import sys
5
- import typing as ta
6
-
7
- from ..lite.maysyncs import make_maysync
8
- from .async_ import AbstractAsyncSubprocesses
9
- from .async_ import _AbstractAsyncSubprocesses
10
- from .run import SubprocessRun
11
- from .run import SubprocessRunOutput
12
- from .sync import AbstractSubprocesses
13
-
14
-
15
- ##
16
-
17
-
18
- class AbstractMaysyncSubprocesses(_AbstractAsyncSubprocesses, abc.ABC):
19
- pass
20
-
21
-
22
- ##
23
-
24
-
25
- class MaysyncSubprocesses(AbstractMaysyncSubprocesses):
26
- def __init__(
27
- self,
28
- subprocesses: AbstractSubprocesses,
29
- async_subprocesses: AbstractAsyncSubprocesses,
30
- ) -> None:
31
- super().__init__()
32
-
33
- self._subprocesses = subprocesses
34
- self._async_subprocesses = async_subprocesses
35
-
36
- async def run_(self, run: SubprocessRun) -> SubprocessRunOutput:
37
- return await make_maysync(
38
- self._subprocesses.run,
39
- self._async_subprocesses.run,
40
- )(run).m()
41
-
42
- async def check_call(self, *cmd: str, stdout: ta.Any = sys.stderr, **kwargs: ta.Any) -> None:
43
- return await make_maysync(
44
- self._subprocesses.check_call,
45
- self._async_subprocesses.check_call,
46
- )(*cmd, **kwargs).m()
47
-
48
- async def check_output(self, *cmd: str, **kwargs: ta.Any) -> bytes:
49
- return await make_maysync(
50
- self._subprocesses.check_output,
51
- self._async_subprocesses.check_output,
52
- )(*cmd, **kwargs).m()