omdev 0.0.0.dev439__py3-none-any.whl → 0.0.0.dev486__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 +18 -30
- omdev/__about__.py +9 -7
- omdev/amalg/gen/gen.py +49 -6
- omdev/amalg/gen/imports.py +1 -1
- omdev/amalg/gen/manifests.py +1 -1
- omdev/amalg/gen/resources.py +1 -1
- omdev/amalg/gen/srcfiles.py +13 -3
- omdev/amalg/gen/strip.py +1 -1
- omdev/amalg/gen/types.py +1 -1
- omdev/amalg/gen/typing.py +1 -1
- omdev/amalg/info.py +32 -0
- omdev/cache/data/actions.py +1 -1
- omdev/cache/data/specs.py +1 -1
- omdev/cexts/_boilerplate.cc +2 -3
- omdev/cexts/cmake.py +4 -1
- omdev/ci/cli.py +1 -2
- omdev/ci/github/api/v2/api.py +2 -0
- omdev/cmdlog/cli.py +1 -2
- omdev/dataclasses/_dumping.py +1960 -0
- omdev/dataclasses/_template.py +22 -0
- omdev/dataclasses/cli.py +6 -1
- omdev/dataclasses/codegen.py +340 -60
- omdev/dataclasses/dumping.py +200 -0
- omdev/interp/uv/provider.py +1 -0
- omdev/interp/venvs.py +1 -0
- omdev/irc/messages/base.py +50 -0
- omdev/irc/messages/formats.py +92 -0
- omdev/irc/messages/messages.py +775 -0
- omdev/irc/messages/parsing.py +99 -0
- omdev/irc/numerics/__init__.py +0 -0
- omdev/irc/numerics/formats.py +97 -0
- omdev/irc/numerics/numerics.py +865 -0
- omdev/irc/numerics/types.py +59 -0
- omdev/irc/protocol/LICENSE +11 -0
- omdev/irc/protocol/__init__.py +61 -0
- omdev/irc/protocol/consts.py +6 -0
- omdev/irc/protocol/errors.py +30 -0
- omdev/irc/protocol/message.py +21 -0
- omdev/irc/protocol/nuh.py +55 -0
- omdev/irc/protocol/parsing.py +158 -0
- omdev/irc/protocol/rendering.py +153 -0
- omdev/irc/protocol/tags.py +102 -0
- omdev/irc/protocol/utils.py +30 -0
- omdev/manifests/_dumping.py +125 -25
- omdev/markdown/__init__.py +0 -0
- omdev/markdown/incparse.py +116 -0
- omdev/markdown/tokens.py +51 -0
- omdev/packaging/marshal.py +8 -8
- omdev/packaging/requires.py +6 -6
- omdev/packaging/specifiers.py +2 -1
- omdev/packaging/versions.py +4 -4
- omdev/packaging/wheelfile.py +2 -0
- omdev/precheck/blanklines.py +66 -0
- omdev/precheck/caches.py +1 -1
- omdev/precheck/imports.py +14 -1
- omdev/precheck/main.py +4 -3
- omdev/precheck/unicode.py +39 -15
- omdev/py/asts/__init__.py +0 -0
- omdev/py/asts/parents.py +28 -0
- omdev/py/asts/toplevel.py +123 -0
- omdev/py/asts/visitors.py +18 -0
- omdev/py/attrdocs.py +6 -7
- omdev/py/bracepy.py +12 -4
- omdev/py/reprs.py +32 -0
- omdev/py/srcheaders.py +1 -1
- omdev/py/tokens/__init__.py +0 -0
- omdev/py/tools/mkrelimp.py +1 -1
- omdev/py/tools/pipdepup.py +629 -0
- omdev/pyproject/pkg.py +190 -45
- omdev/pyproject/reqs.py +31 -9
- omdev/pyproject/tools/__init__.py +0 -0
- omdev/pyproject/tools/aboutdeps.py +55 -0
- omdev/pyproject/venvs.py +8 -1
- omdev/rs/__init__.py +0 -0
- omdev/scripts/ci.py +400 -80
- omdev/scripts/interp.py +193 -35
- omdev/scripts/lib/__init__.py +0 -0
- omdev/scripts/{inject.py → lib/inject.py} +75 -28
- omdev/scripts/lib/logs.py +2079 -0
- omdev/scripts/{marshal.py → lib/marshal.py} +68 -26
- omdev/scripts/pyproject.py +941 -90
- omdev/tools/git/cli.py +12 -1
- omdev/tools/json/processing.py +5 -2
- omdev/tools/jsonview/cli.py +31 -5
- omdev/tools/pawk/pawk.py +2 -2
- omdev/tools/pip.py +8 -0
- omdev/tui/__init__.py +0 -0
- omdev/tui/apps/__init__.py +0 -0
- omdev/tui/apps/edit/__init__.py +0 -0
- omdev/tui/apps/edit/main.py +163 -0
- omdev/tui/apps/irc/__init__.py +0 -0
- omdev/tui/apps/irc/__main__.py +4 -0
- omdev/tui/apps/irc/app.py +278 -0
- omdev/tui/apps/irc/client.py +187 -0
- omdev/tui/apps/irc/commands.py +175 -0
- omdev/tui/apps/irc/main.py +26 -0
- omdev/tui/apps/markdown/__init__.py +0 -0
- omdev/tui/apps/markdown/__main__.py +11 -0
- omdev/{ptk → tui/apps}/markdown/cli.py +5 -7
- omdev/tui/rich/__init__.py +34 -0
- omdev/tui/rich/console2.py +20 -0
- omdev/tui/rich/markdown2.py +186 -0
- omdev/tui/textual/__init__.py +226 -0
- omdev/tui/textual/app2.py +11 -0
- omdev/tui/textual/autocomplete/LICENSE +21 -0
- omdev/tui/textual/autocomplete/__init__.py +33 -0
- omdev/tui/textual/autocomplete/matching.py +226 -0
- omdev/tui/textual/autocomplete/paths.py +202 -0
- omdev/tui/textual/autocomplete/widget.py +612 -0
- omdev/tui/textual/drivers2.py +55 -0
- {omdev-0.0.0.dev439.dist-info → omdev-0.0.0.dev486.dist-info}/METADATA +11 -9
- {omdev-0.0.0.dev439.dist-info → omdev-0.0.0.dev486.dist-info}/RECORD +121 -73
- omdev/ptk/__init__.py +0 -103
- omdev/ptk/apps/ncdu.py +0 -167
- omdev/ptk/confirm.py +0 -60
- omdev/ptk/markdown/LICENSE +0 -22
- omdev/ptk/markdown/__init__.py +0 -10
- omdev/ptk/markdown/__main__.py +0 -11
- omdev/ptk/markdown/border.py +0 -94
- omdev/ptk/markdown/markdown.py +0 -390
- omdev/ptk/markdown/parser.py +0 -42
- omdev/ptk/markdown/styles.py +0 -29
- omdev/ptk/markdown/tags.py +0 -299
- omdev/ptk/markdown/utils.py +0 -366
- omdev/pyproject/cexts.py +0 -110
- /omdev/{ptk/apps → irc}/__init__.py +0 -0
- /omdev/{tokens → irc/messages}/__init__.py +0 -0
- /omdev/{tokens → py/tokens}/all.py +0 -0
- /omdev/{tokens → py/tokens}/tokenizert.py +0 -0
- /omdev/{tokens → py/tokens}/utils.py +0 -0
- {omdev-0.0.0.dev439.dist-info → omdev-0.0.0.dev486.dist-info}/WHEEL +0 -0
- {omdev-0.0.0.dev439.dist-info → omdev-0.0.0.dev486.dist-info}/entry_points.txt +0 -0
- {omdev-0.0.0.dev439.dist-info → omdev-0.0.0.dev486.dist-info}/licenses/LICENSE +0 -0
- {omdev-0.0.0.dev439.dist-info → omdev-0.0.0.dev486.dist-info}/top_level.txt +0 -0
omdev/.omlish-manifests.json
CHANGED
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"module": ".cexts.cmake",
|
|
28
28
|
"attr": "_CLI_MODULE",
|
|
29
29
|
"file": "omdev/cexts/cmake.py",
|
|
30
|
-
"line":
|
|
30
|
+
"line": 335,
|
|
31
31
|
"value": {
|
|
32
32
|
"!.cli.types.CliModule": {
|
|
33
33
|
"name": "cmake",
|
|
@@ -157,38 +157,11 @@
|
|
|
157
157
|
}
|
|
158
158
|
}
|
|
159
159
|
},
|
|
160
|
-
{
|
|
161
|
-
"module": ".ptk.apps.ncdu",
|
|
162
|
-
"attr": "_CLI_MODULE",
|
|
163
|
-
"file": "omdev/ptk/apps/ncdu.py",
|
|
164
|
-
"line": 162,
|
|
165
|
-
"value": {
|
|
166
|
-
"!.cli.types.CliModule": {
|
|
167
|
-
"name": "ptk/ncdu",
|
|
168
|
-
"module": "omdev.ptk.apps.ncdu"
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
},
|
|
172
|
-
{
|
|
173
|
-
"module": ".ptk.markdown.__main__",
|
|
174
|
-
"attr": "_CLI_MODULE",
|
|
175
|
-
"file": "omdev/ptk/markdown/__main__.py",
|
|
176
|
-
"line": 4,
|
|
177
|
-
"value": {
|
|
178
|
-
"!.cli.types.CliModule": {
|
|
179
|
-
"name": [
|
|
180
|
-
"ptk/markdown",
|
|
181
|
-
"ptk/md"
|
|
182
|
-
],
|
|
183
|
-
"module": "omdev.ptk.markdown.__main__"
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
},
|
|
187
160
|
{
|
|
188
161
|
"module": ".py.attrdocs",
|
|
189
162
|
"attr": "_CLI_MODULE",
|
|
190
163
|
"file": "omdev/py/attrdocs.py",
|
|
191
|
-
"line":
|
|
164
|
+
"line": 159,
|
|
192
165
|
"value": {
|
|
193
166
|
"!.cli.types.CliModule": {
|
|
194
167
|
"name": "py/attrdocs",
|
|
@@ -491,7 +464,7 @@
|
|
|
491
464
|
"module": ".tools.pip",
|
|
492
465
|
"attr": "_CLI_MODULE",
|
|
493
466
|
"file": "omdev/tools/pip.py",
|
|
494
|
-
"line":
|
|
467
|
+
"line": 131,
|
|
495
468
|
"value": {
|
|
496
469
|
"!.cli.types.CliModule": {
|
|
497
470
|
"name": "pip",
|
|
@@ -561,5 +534,20 @@
|
|
|
561
534
|
"module": "omdev.tools.sqlrepl"
|
|
562
535
|
}
|
|
563
536
|
}
|
|
537
|
+
},
|
|
538
|
+
{
|
|
539
|
+
"module": ".tui.apps.markdown.__main__",
|
|
540
|
+
"attr": "_CLI_MODULE",
|
|
541
|
+
"file": "omdev/tui/apps/markdown/__main__.py",
|
|
542
|
+
"line": 4,
|
|
543
|
+
"value": {
|
|
544
|
+
"!.cli.types.CliModule": {
|
|
545
|
+
"name": [
|
|
546
|
+
"tui/markdown",
|
|
547
|
+
"tui/md"
|
|
548
|
+
],
|
|
549
|
+
"module": "omdev.tui.apps.markdown.__main__"
|
|
550
|
+
}
|
|
551
|
+
}
|
|
564
552
|
}
|
|
565
553
|
]
|
omdev/__about__.py
CHANGED
|
@@ -13,7 +13,7 @@ class Project(ProjectBase):
|
|
|
13
13
|
|
|
14
14
|
optional_dependencies = {
|
|
15
15
|
'black': [
|
|
16
|
-
'black ~= 25.
|
|
16
|
+
'black ~= 25.11',
|
|
17
17
|
],
|
|
18
18
|
|
|
19
19
|
'c': [
|
|
@@ -31,20 +31,21 @@ class Project(ProjectBase):
|
|
|
31
31
|
],
|
|
32
32
|
|
|
33
33
|
'mypy': [
|
|
34
|
-
'mypy ~= 1.
|
|
34
|
+
'mypy ~= 1.19',
|
|
35
35
|
],
|
|
36
36
|
|
|
37
37
|
'prof': [
|
|
38
38
|
'gprof2dot ~= 2025.4',
|
|
39
39
|
],
|
|
40
40
|
|
|
41
|
-
'ptk': [
|
|
42
|
-
'prompt-toolkit ~= 3.0',
|
|
43
|
-
],
|
|
44
|
-
|
|
45
41
|
'qr': [
|
|
46
42
|
'segno ~= 1.6',
|
|
47
43
|
],
|
|
44
|
+
|
|
45
|
+
'tui': [
|
|
46
|
+
'rich ~= 14.2',
|
|
47
|
+
'textual ~= 6.8',
|
|
48
|
+
],
|
|
48
49
|
}
|
|
49
50
|
|
|
50
51
|
entry_points = {
|
|
@@ -57,7 +58,8 @@ class Project(ProjectBase):
|
|
|
57
58
|
|
|
58
59
|
|
|
59
60
|
class Setuptools(SetuptoolsBase):
|
|
60
|
-
|
|
61
|
+
cext = True
|
|
62
|
+
rs = True
|
|
61
63
|
|
|
62
64
|
find_packages = {
|
|
63
65
|
'include': [Project.name, f'{Project.name}.*'],
|
omdev/amalg/gen/gen.py
CHANGED
|
@@ -9,7 +9,8 @@ from omlish.algorithm import all as alg
|
|
|
9
9
|
from omlish.lite.runtime import LITE_REQUIRED_PYTHON_VERSION
|
|
10
10
|
|
|
11
11
|
from ...git.magic import GIT_DIFF_OMIT_MAGIC
|
|
12
|
-
from ...tokens import all as tks
|
|
12
|
+
from ...py.tokens import all as tks
|
|
13
|
+
from ..info import AMALG_INFO_ATTR
|
|
13
14
|
from .srcfiles import SrcFile
|
|
14
15
|
from .srcfiles import make_src_file
|
|
15
16
|
from .strip import strip_main_lines
|
|
@@ -32,18 +33,22 @@ SCAN_COMMENT = '# @omlish-amalg '
|
|
|
32
33
|
|
|
33
34
|
|
|
34
35
|
class AmalgGenerator:
|
|
36
|
+
DEFAULT_TARGET_LINE_LEN: ta.ClassVar[int] = 120
|
|
37
|
+
|
|
35
38
|
def __init__(
|
|
36
39
|
self,
|
|
37
40
|
main_path: str,
|
|
38
41
|
*,
|
|
39
42
|
mounts: ta.Mapping[str, str],
|
|
40
43
|
output_dir: str | None = None,
|
|
44
|
+
target_line_len: int | None = DEFAULT_TARGET_LINE_LEN,
|
|
41
45
|
) -> None:
|
|
42
46
|
super().__init__()
|
|
43
47
|
|
|
44
48
|
self._main_path = main_path
|
|
45
49
|
self._mounts = mounts
|
|
46
50
|
self._output_dir = output_dir
|
|
51
|
+
self._target_line_len = target_line_len
|
|
47
52
|
|
|
48
53
|
@cached.function
|
|
49
54
|
def _src_files(self) -> dict[str, SrcFile]:
|
|
@@ -105,6 +110,40 @@ class AmalgGenerator:
|
|
|
105
110
|
|
|
106
111
|
return [*additional_header_lines, *header_lines]
|
|
107
112
|
|
|
113
|
+
def gen_amalg_info_block(self, sfs: ta.Sequence[str]) -> str:
|
|
114
|
+
md = os.path.dirname(self._main_path)
|
|
115
|
+
src_files = self._src_files()
|
|
116
|
+
sf_dcts = [
|
|
117
|
+
dict(
|
|
118
|
+
path=os.path.relpath(sfn, md),
|
|
119
|
+
sha1=src_files[sfn].sha1,
|
|
120
|
+
)
|
|
121
|
+
for sfn in sfs
|
|
122
|
+
]
|
|
123
|
+
sf_lines = [
|
|
124
|
+
''.join([
|
|
125
|
+
' dict(',
|
|
126
|
+
', '.join([f'{k}={v!r}' for k, v in sf_dct.items()]),
|
|
127
|
+
'),',
|
|
128
|
+
])
|
|
129
|
+
for sf_dct in sf_dcts
|
|
130
|
+
]
|
|
131
|
+
if (tll := self._target_line_len) is not None:
|
|
132
|
+
sf_lines = [
|
|
133
|
+
l + ' # noqa' if len(l) >= tll else l
|
|
134
|
+
for l in sf_lines
|
|
135
|
+
]
|
|
136
|
+
|
|
137
|
+
return '\n'.join([
|
|
138
|
+
f'def {AMALG_INFO_ATTR}(): # noqa',
|
|
139
|
+
f' return dict(',
|
|
140
|
+
f' src_files=[',
|
|
141
|
+
*sf_lines,
|
|
142
|
+
f' ],',
|
|
143
|
+
f' )',
|
|
144
|
+
'',
|
|
145
|
+
])
|
|
146
|
+
|
|
108
147
|
@cached.function
|
|
109
148
|
def gen_amalg(self) -> str:
|
|
110
149
|
src_files = self._src_files()
|
|
@@ -137,6 +176,13 @@ class AmalgGenerator:
|
|
|
137
176
|
out.write(il if isinstance(il, str) else tks.join_toks(il.toks))
|
|
138
177
|
if dct:
|
|
139
178
|
out.write('\n\n')
|
|
179
|
+
##
|
|
180
|
+
|
|
181
|
+
ts = list(alg.toposort({ # noqa
|
|
182
|
+
f.path: {mp for i in f.imports if (mp := i.mod_path) is not None}
|
|
183
|
+
for f in src_files.values()
|
|
184
|
+
}))
|
|
185
|
+
sfs = [sf for ss in ts for sf in sorted(ss)]
|
|
140
186
|
|
|
141
187
|
##
|
|
142
188
|
|
|
@@ -155,11 +201,8 @@ class AmalgGenerator:
|
|
|
155
201
|
|
|
156
202
|
##
|
|
157
203
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
for f in src_files.values()
|
|
161
|
-
}))
|
|
162
|
-
sfs = [sf for ss in ts for sf in sorted(ss)]
|
|
204
|
+
out.write(self.gen_amalg_info_block(sfs))
|
|
205
|
+
out.write('\n\n')
|
|
163
206
|
|
|
164
207
|
##
|
|
165
208
|
|
omdev/amalg/gen/imports.py
CHANGED
omdev/amalg/gen/manifests.py
CHANGED
omdev/amalg/gen/resources.py
CHANGED
omdev/amalg/gen/srcfiles.py
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import dataclasses as dc
|
|
2
|
+
import hashlib
|
|
2
3
|
import typing as ta
|
|
3
4
|
|
|
4
5
|
from omlish import collections as col
|
|
5
6
|
from omlish import lang
|
|
6
7
|
|
|
7
|
-
from ...tokens import all as tks
|
|
8
|
+
from ...py.tokens import all as tks
|
|
8
9
|
from .imports import Import
|
|
9
10
|
from .imports import make_import
|
|
10
11
|
from .manifests import comment_out_manifest_comment
|
|
@@ -26,6 +27,9 @@ from .typing import skip_root_level_if_type_checking_block
|
|
|
26
27
|
class SrcFile:
|
|
27
28
|
path: str
|
|
28
29
|
|
|
30
|
+
src_bytes: bytes = dc.field(repr=False)
|
|
31
|
+
sha1: str = dc.field(repr=False)
|
|
32
|
+
|
|
29
33
|
src: str = dc.field(repr=False)
|
|
30
34
|
tokens: tks.Tokens = dc.field(repr=False)
|
|
31
35
|
lines: ta.Sequence[tks.Tokens] = dc.field(repr=False)
|
|
@@ -56,9 +60,12 @@ def make_src_file(
|
|
|
56
60
|
*,
|
|
57
61
|
mounts: ta.Mapping[str, str],
|
|
58
62
|
) -> SrcFile:
|
|
59
|
-
with open(path) as f:
|
|
60
|
-
|
|
63
|
+
with open(path, 'rb') as f:
|
|
64
|
+
src_bytes = f.read()
|
|
65
|
+
|
|
66
|
+
sha1 = hashlib.sha1(src_bytes).hexdigest() # noqa
|
|
61
67
|
|
|
68
|
+
src = src_bytes.decode('utf-8').strip()
|
|
62
69
|
tokens = tks.src_to_tokens(src)
|
|
63
70
|
lines = tks.split_lines(tokens)
|
|
64
71
|
|
|
@@ -115,6 +122,9 @@ def make_src_file(
|
|
|
115
122
|
return SrcFile(
|
|
116
123
|
path=path,
|
|
117
124
|
|
|
125
|
+
src_bytes=src_bytes,
|
|
126
|
+
sha1=sha1,
|
|
127
|
+
|
|
118
128
|
src=src,
|
|
119
129
|
tokens=tokens,
|
|
120
130
|
lines=lines,
|
omdev/amalg/gen/strip.py
CHANGED
omdev/amalg/gen/types.py
CHANGED
omdev/amalg/gen/typing.py
CHANGED
omdev/amalg/info.py
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# ruff: noqa: UP045
|
|
2
|
+
# @omlish-lite
|
|
3
|
+
import typing as ta
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
##
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
AMALG_INFO_ATTR = '__omlish_amalg__'
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class AmalgInfoSrcFile(ta.NamedTuple):
|
|
13
|
+
path: str
|
|
14
|
+
sha1: str
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class AmalgInfo(ta.NamedTuple):
|
|
18
|
+
src_files: ta.Sequence[AmalgInfoSrcFile]
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def get_amalg_info() -> ta.Optional[AmalgInfo]:
|
|
22
|
+
try:
|
|
23
|
+
fn = globals()[AMALG_INFO_ATTR]
|
|
24
|
+
except KeyError:
|
|
25
|
+
return None
|
|
26
|
+
dct = fn()
|
|
27
|
+
dct['src_files'] = [AmalgInfoSrcFile(**sf_dct) for sf_dct in dct['src_files']]
|
|
28
|
+
return AmalgInfo(**dct)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def is_amalg() -> bool:
|
|
32
|
+
return AMALG_INFO_ATTR in globals()
|
omdev/cache/data/actions.py
CHANGED
|
@@ -39,7 +39,7 @@ class ExtractAction(Action, lang.Final):
|
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
@lang.static_init
|
|
42
|
-
def
|
|
42
|
+
def _install_standard_marshaling() -> None:
|
|
43
43
|
actions_poly = msh.polymorphism_from_subclasses(Action, naming=msh.Naming.SNAKE, strip_suffix=True)
|
|
44
44
|
msh.install_standard_factories(
|
|
45
45
|
msh.PolymorphismMarshalerFactory(actions_poly),
|
omdev/cache/data/specs.py
CHANGED
|
@@ -93,7 +93,7 @@ class GithubContentSpec(Spec):
|
|
|
93
93
|
|
|
94
94
|
|
|
95
95
|
@lang.static_init
|
|
96
|
-
def
|
|
96
|
+
def _install_standard_marshaling() -> None:
|
|
97
97
|
specs_poly = msh.polymorphism_from_subclasses(Spec, naming=msh.Naming.SNAKE, strip_suffix=True)
|
|
98
98
|
msh.install_standard_factories(
|
|
99
99
|
msh.PolymorphismMarshalerFactory(specs_poly),
|
omdev/cexts/_boilerplate.cc
CHANGED
|
@@ -54,9 +54,8 @@ static PyMethodDef boilerplate_methods[] = {
|
|
|
54
54
|
|
|
55
55
|
static struct PyModuleDef_Slot boilerplate_slots[] = {
|
|
56
56
|
{Py_mod_exec, (void *) boilerplate_exec},
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
// #endif
|
|
57
|
+
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
|
|
58
|
+
{Py_mod_multiple_interpreters, Py_MOD_MULTIPLE_INTERPRETERS_SUPPORTED},
|
|
60
59
|
{0, NULL}
|
|
61
60
|
};
|
|
62
61
|
|
omdev/cexts/cmake.py
CHANGED
omdev/ci/cli.py
CHANGED
|
@@ -14,7 +14,6 @@ import argparse
|
|
|
14
14
|
import asyncio
|
|
15
15
|
import itertools
|
|
16
16
|
import os.path
|
|
17
|
-
import sys
|
|
18
17
|
import typing as ta
|
|
19
18
|
|
|
20
19
|
from omlish.argparse.cli import ArgparseCli
|
|
@@ -260,7 +259,7 @@ async def _async_main() -> ta.Optional[int]:
|
|
|
260
259
|
def _main() -> None:
|
|
261
260
|
configure_standard_logging('DEBUG')
|
|
262
261
|
|
|
263
|
-
|
|
262
|
+
raise SystemExit(rc if isinstance(rc := asyncio.run(_async_main()), int) else 0)
|
|
264
263
|
|
|
265
264
|
|
|
266
265
|
if __name__ == '__main__':
|
omdev/ci/github/api/v2/api.py
CHANGED
|
@@ -90,6 +90,7 @@ class GithubCacheServiceV2:
|
|
|
90
90
|
class CreateCacheEntryResponse:
|
|
91
91
|
ok: bool
|
|
92
92
|
signed_upload_url: str
|
|
93
|
+
message: ta.Optional[str] = None
|
|
93
94
|
|
|
94
95
|
CREATE_CACHE_ENTRY_METHOD: Method[
|
|
95
96
|
CreateCacheEntryRequest,
|
|
@@ -113,6 +114,7 @@ class GithubCacheServiceV2:
|
|
|
113
114
|
class FinalizeCacheEntryUploadResponse:
|
|
114
115
|
ok: bool
|
|
115
116
|
entry_id: str
|
|
117
|
+
message: ta.Optional[str] = None
|
|
116
118
|
|
|
117
119
|
FINALIZE_CACHE_ENTRY_METHOD: Method[
|
|
118
120
|
FinalizeCacheEntryUploadRequest,
|
omdev/cmdlog/cli.py
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import argparse
|
|
2
2
|
import os.path
|
|
3
3
|
import subprocess
|
|
4
|
-
import sys
|
|
5
4
|
import typing as ta
|
|
6
5
|
|
|
7
6
|
from omlish.formats import json
|
|
@@ -60,7 +59,7 @@ def _main() -> None:
|
|
|
60
59
|
entry_dcts = [json.loads(sl) for l in log_lines if (sl := l.strip())]
|
|
61
60
|
print(json.dumps_compact(entry_dcts))
|
|
62
61
|
|
|
63
|
-
|
|
62
|
+
raise SystemExit(rc)
|
|
64
63
|
|
|
65
64
|
|
|
66
65
|
if __name__ == '__main__':
|