omdev 0.0.0.dev61__py3-none-any.whl → 0.0.0.dev63__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/.manifests.json +1 -1
- omdev/cli/main.py +25 -13
- omdev/scripts/pyproject.py +21 -20
- omdev/tools/dockertools.py +54 -1
- {omdev-0.0.0.dev61.dist-info → omdev-0.0.0.dev63.dist-info}/METADATA +2 -2
- {omdev-0.0.0.dev61.dist-info → omdev-0.0.0.dev63.dist-info}/RECORD +10 -10
- {omdev-0.0.0.dev61.dist-info → omdev-0.0.0.dev63.dist-info}/LICENSE +0 -0
- {omdev-0.0.0.dev61.dist-info → omdev-0.0.0.dev63.dist-info}/WHEEL +0 -0
- {omdev-0.0.0.dev61.dist-info → omdev-0.0.0.dev63.dist-info}/entry_points.txt +0 -0
- {omdev-0.0.0.dev61.dist-info → omdev-0.0.0.dev63.dist-info}/top_level.txt +0 -0
omdev/.manifests.json
CHANGED
omdev/cli/main.py
CHANGED
|
@@ -41,6 +41,7 @@ _CLI_FUNCS: ta.Sequence[CliFunc] = [
|
|
|
41
41
|
def _build_arg_parser() -> argparse.ArgumentParser:
|
|
42
42
|
parser = argparse.ArgumentParser()
|
|
43
43
|
parser.add_argument('--cli-pkg-root', action='append')
|
|
44
|
+
parser.add_argument('--cli-debug', action='store_true')
|
|
44
45
|
parser.add_argument('cmd', nargs='?')
|
|
45
46
|
parser.add_argument('args', nargs=argparse.REMAINDER)
|
|
46
47
|
return parser
|
|
@@ -132,23 +133,34 @@ def _select_cmd(args: ta.Any, cmds: ta.Mapping[str, CliCmd]) -> CliCmd | int:
|
|
|
132
133
|
def _main() -> ta.Any:
|
|
133
134
|
parser = _build_arg_parser()
|
|
134
135
|
args = parser.parse_args()
|
|
135
|
-
cmds = _build_cmd_dct(args)
|
|
136
|
-
sel = _select_cmd(args, cmds)
|
|
137
136
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
137
|
+
def inner():
|
|
138
|
+
cmds = _build_cmd_dct(args)
|
|
139
|
+
sel = _select_cmd(args, cmds)
|
|
141
140
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
return 0
|
|
141
|
+
match sel:
|
|
142
|
+
case int():
|
|
143
|
+
return sel
|
|
146
144
|
|
|
147
|
-
|
|
148
|
-
|
|
145
|
+
case CliModule() as cm:
|
|
146
|
+
sys.argv = [args.cmd, *(args.args or ())]
|
|
147
|
+
runpy._run_module_as_main(cm.mod_name) # type: ignore # noqa
|
|
148
|
+
return 0
|
|
149
149
|
|
|
150
|
-
|
|
151
|
-
|
|
150
|
+
case CliFunc() as cf:
|
|
151
|
+
return cf.fn(*(args.args or ()))
|
|
152
|
+
|
|
153
|
+
case _:
|
|
154
|
+
raise TypeError(sel)
|
|
155
|
+
|
|
156
|
+
if args.cli_debug:
|
|
157
|
+
from omlish.diag.debug import debugging_on_exception
|
|
158
|
+
|
|
159
|
+
with debugging_on_exception():
|
|
160
|
+
return inner()
|
|
161
|
+
|
|
162
|
+
else:
|
|
163
|
+
return inner()
|
|
152
164
|
|
|
153
165
|
|
|
154
166
|
if __name__ == '__main__':
|
omdev/scripts/pyproject.py
CHANGED
|
@@ -3033,29 +3033,30 @@ def register_opj_marshaler(ty: ta.Any, m: ObjMarshaler) -> None:
|
|
|
3033
3033
|
|
|
3034
3034
|
|
|
3035
3035
|
def _make_obj_marshaler(ty: ta.Any) -> ObjMarshaler:
|
|
3036
|
-
if isinstance(ty, type)
|
|
3037
|
-
|
|
3038
|
-
|
|
3039
|
-
|
|
3040
|
-
|
|
3041
|
-
|
|
3036
|
+
if isinstance(ty, type):
|
|
3037
|
+
if abc.ABC in ty.__bases__:
|
|
3038
|
+
impls = [ # type: ignore
|
|
3039
|
+
PolymorphicObjMarshaler.Impl(
|
|
3040
|
+
ity,
|
|
3041
|
+
ity.__qualname__,
|
|
3042
|
+
get_obj_marshaler(ity),
|
|
3043
|
+
)
|
|
3044
|
+
for ity in deep_subclasses(ty)
|
|
3045
|
+
if abc.ABC not in ity.__bases__
|
|
3046
|
+
]
|
|
3047
|
+
return PolymorphicObjMarshaler(
|
|
3048
|
+
{i.ty: i for i in impls},
|
|
3049
|
+
{i.tag: i for i in impls},
|
|
3042
3050
|
)
|
|
3043
|
-
for ity in deep_subclasses(ty)
|
|
3044
|
-
if abc.ABC not in ity.__bases__
|
|
3045
|
-
]
|
|
3046
|
-
return PolymorphicObjMarshaler(
|
|
3047
|
-
{i.ty: i for i in impls},
|
|
3048
|
-
{i.tag: i for i in impls},
|
|
3049
|
-
)
|
|
3050
3051
|
|
|
3051
|
-
|
|
3052
|
-
|
|
3052
|
+
if issubclass(ty, enum.Enum):
|
|
3053
|
+
return EnumObjMarshaler(ty)
|
|
3053
3054
|
|
|
3054
|
-
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
|
|
3058
|
-
|
|
3055
|
+
if dc.is_dataclass(ty):
|
|
3056
|
+
return DataclassObjMarshaler(
|
|
3057
|
+
ty,
|
|
3058
|
+
{f.name: get_obj_marshaler(f.type) for f in dc.fields(ty)},
|
|
3059
|
+
)
|
|
3059
3060
|
|
|
3060
3061
|
if is_generic_alias(ty):
|
|
3061
3062
|
try:
|
omdev/tools/dockertools.py
CHANGED
|
@@ -10,8 +10,11 @@ import typing as ta
|
|
|
10
10
|
|
|
11
11
|
from omlish import argparse as ap
|
|
12
12
|
from omlish import check
|
|
13
|
+
from omlish import docker as dck
|
|
13
14
|
from omlish import lang
|
|
14
15
|
from omlish import logs
|
|
16
|
+
from omlish import marshal as msh
|
|
17
|
+
from omlish.formats import json
|
|
15
18
|
from omlish.formats import yaml
|
|
16
19
|
|
|
17
20
|
from ..cli import CliModule
|
|
@@ -179,6 +182,56 @@ class Cli(ap.Cli):
|
|
|
179
182
|
with open(yml_file, 'w') as f:
|
|
180
183
|
f.write(new_src)
|
|
181
184
|
|
|
185
|
+
@ap.command(
|
|
186
|
+
ap.arg('repo'),
|
|
187
|
+
ap.arg('tags', nargs='*'),
|
|
188
|
+
)
|
|
189
|
+
def repo_info(self) -> int:
|
|
190
|
+
if (info := dck.get_hub_repo_info(self.args.repo, tags=self.args.tags or None)) is None:
|
|
191
|
+
return 1
|
|
192
|
+
print(json.dumps_pretty(msh.marshal(info)))
|
|
193
|
+
return 0
|
|
194
|
+
|
|
195
|
+
@ap.command(
|
|
196
|
+
ap.arg('image'),
|
|
197
|
+
)
|
|
198
|
+
def repo_latest_image(self) -> int:
|
|
199
|
+
if ':' in self.args.image:
|
|
200
|
+
repo, _, base = self.args.image.partition(':')
|
|
201
|
+
else:
|
|
202
|
+
repo, base = self.args.image, None
|
|
203
|
+
if (info := dck.get_hub_repo_info(repo)) is None:
|
|
204
|
+
return 1
|
|
205
|
+
print(dck.select_latest_tag(info.tags, base=base))
|
|
206
|
+
return 0
|
|
207
|
+
|
|
208
|
+
@ap.command(
|
|
209
|
+
ap.arg('-f', '--file'),
|
|
210
|
+
)
|
|
211
|
+
def compose_image_updates(self) -> None:
|
|
212
|
+
if self.args.file:
|
|
213
|
+
yml_file = self.args.file
|
|
214
|
+
else:
|
|
215
|
+
yml_file = os.path.join('docker', 'compose.yml')
|
|
216
|
+
|
|
217
|
+
with open(yml_file) as f:
|
|
218
|
+
yml_src = f.read()
|
|
219
|
+
|
|
220
|
+
cfg_dct = yaml.safe_load(yml_src)
|
|
221
|
+
for svc_name, svc_dct in cfg_dct.get('services', {}).items():
|
|
222
|
+
if not (img := svc_dct.get('image')):
|
|
223
|
+
continue
|
|
224
|
+
|
|
225
|
+
repo, _, base = img.partition(':')
|
|
226
|
+
if (info := dck.get_hub_repo_info(repo)) is None:
|
|
227
|
+
continue
|
|
228
|
+
|
|
229
|
+
lt = dck.select_latest_tag(info.tags, base=base)
|
|
230
|
+
if f'{repo}:{lt}' == img:
|
|
231
|
+
continue
|
|
232
|
+
|
|
233
|
+
print(f'{svc_name}: {lt}')
|
|
234
|
+
|
|
182
235
|
|
|
183
236
|
# @omlish-manifest
|
|
184
237
|
_CLI_MODULE = CliModule('docker', __name__)
|
|
@@ -186,4 +239,4 @@ _CLI_MODULE = CliModule('docker', __name__)
|
|
|
186
239
|
|
|
187
240
|
if __name__ == '__main__':
|
|
188
241
|
logs.configure_standard_logging('INFO')
|
|
189
|
-
Cli()()
|
|
242
|
+
Cli().call_and_exit()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: omdev
|
|
3
|
-
Version: 0.0.0.
|
|
3
|
+
Version: 0.0.0.dev63
|
|
4
4
|
Summary: omdev
|
|
5
5
|
Author: wrmsr
|
|
6
6
|
License: BSD-3-Clause
|
|
@@ -12,7 +12,7 @@ Classifier: Operating System :: OS Independent
|
|
|
12
12
|
Classifier: Operating System :: POSIX
|
|
13
13
|
Requires-Python: ~=3.12
|
|
14
14
|
License-File: LICENSE
|
|
15
|
-
Requires-Dist: omlish ==0.0.0.
|
|
15
|
+
Requires-Dist: omlish ==0.0.0.dev63
|
|
16
16
|
Provides-Extra: all
|
|
17
17
|
Requires-Dist: pycparser ~=2.22 ; extra == 'all'
|
|
18
18
|
Requires-Dist: cffi ~=1.17 ; extra == 'all'
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
omdev/.manifests.json,sha256
|
|
1
|
+
omdev/.manifests.json,sha256=-soVkIwt6YB1DbsxaHqGNe4N46stWaTqT6Z18vb-CiU,4476
|
|
2
2
|
omdev/__about__.py,sha256=LqSNNFFcT84xW3W8fIOJ78kPYJKFLIXZyDX-AJREvN0,1005
|
|
3
3
|
omdev/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
4
|
omdev/bracepy.py,sha256=HwBK5XmlOsF_juTel25fRLJK9vHSJCWXuCc-OZlevRQ,2619
|
|
@@ -61,7 +61,7 @@ omdev/cli/__init__.py,sha256=V_l6VP1SZMlJbO-8CJwSuO9TThOy2S_oaPepNYgIrbE,37
|
|
|
61
61
|
omdev/cli/__main__.py,sha256=mOJpgc07o0r5luQ1DlX4tk2PqZkgmbwPbdzJ3KmtjgQ,138
|
|
62
62
|
omdev/cli/clicli.py,sha256=rQ9-F9XI3BevnfIVALHVKrrHNQPdYhkQ-IKESTNB5RA,2447
|
|
63
63
|
omdev/cli/install.py,sha256=C-W171YlIHt4Cfok-nWSMbHwWhqF_PFqq2HixFttYx8,4460
|
|
64
|
-
omdev/cli/main.py,sha256=
|
|
64
|
+
omdev/cli/main.py,sha256=fQL-KdKZDmw00d8vtgxGmUc9Pp3dnhW1BW-Pzu6JPX0,4172
|
|
65
65
|
omdev/cli/managers.py,sha256=zqhMgNnv2VbXoTP6SgZeSuWfAVo1Ge-HJnQ1ftL-Mq8,2590
|
|
66
66
|
omdev/cli/types.py,sha256=bqKw9SbtBtAip2vF9v4khh0CqKG6LBr6n9VzWBz7AJE,474
|
|
67
67
|
omdev/interp/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
|
|
@@ -105,12 +105,12 @@ omdev/scripts/execrss.py,sha256=d6purJqU99OkMcNxCS1kG2CMfSsw7wjnvBQW7SjyJ70,448
|
|
|
105
105
|
omdev/scripts/exectime.py,sha256=LRVIJsnvGYUqH-zfCdFnrQCZv1KLXJPtWBWplXMDwhI,407
|
|
106
106
|
omdev/scripts/importtrace.py,sha256=4ozdphT4VuP8L0kE0HmGMyWaWHnXg1KEukbET4pFgJU,14064
|
|
107
107
|
omdev/scripts/interp.py,sha256=7xeihsrt3DI_s1fZqNweivBUUwuGkS5C5cWw4QY6q30,70999
|
|
108
|
-
omdev/scripts/pyproject.py,sha256=
|
|
108
|
+
omdev/scripts/pyproject.py,sha256=_B5LB4YcF1SKiZ7J0udpoaL1dI0IGFdS_1ZLIyNT2ac,157556
|
|
109
109
|
omdev/toml/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
|
|
110
110
|
omdev/toml/parser.py,sha256=84bn09uhYHwQGyfww6Rw6y1RxPAE_HDltODOSakcqDM,29186
|
|
111
111
|
omdev/toml/writer.py,sha256=lk3on3YXVbWuLJa-xsOzOhs1bBAT1vXqw4mBbluZl_w,3040
|
|
112
112
|
omdev/tools/__init__.py,sha256=iVJAOQ0viGTQOm0DLX4uZLro-9jOioYJGLg9s0kDx1A,78
|
|
113
|
-
omdev/tools/dockertools.py,sha256=
|
|
113
|
+
omdev/tools/dockertools.py,sha256=fkiIAzV-67b4knoF68P19shk94Vec_7xX8MwFGzvPlc,6907
|
|
114
114
|
omdev/tools/gittools.py,sha256=SMuKeonZP16lYBecmKB7sn_VZ-ljQnJJF6TGX0isVwA,2031
|
|
115
115
|
omdev/tools/importscan.py,sha256=vxOMdAABShqt5-G3n6DGHopCZ5uGgciThY0MCa5W0mA,4066
|
|
116
116
|
omdev/tools/mkrelimp.py,sha256=fwt4GWzenuLNVtzdK2uaJJTSuJbUVJZquF5adwAwlPg,4051
|
|
@@ -119,9 +119,9 @@ omdev/tools/piptools.py,sha256=-jR5q3w4sHqntxCLExFCBNIARB788FUsAbJ62PK2sBU,2774
|
|
|
119
119
|
omdev/tools/proftools.py,sha256=xKSm_yPoCnfsvS3iT9MblDqFMuZmGfI3_koGj8amMyU,145
|
|
120
120
|
omdev/tools/rst.py,sha256=6dWk8QZHoGiLSuBw3TKsXZjjFK6wWBEtPi9krdCLKKg,977
|
|
121
121
|
omdev/tools/sqlrepl.py,sha256=tmFZh80-xsGM62dyQ7_UGLebChrj7IHbIPYBWDJMgVk,5741
|
|
122
|
-
omdev-0.0.0.
|
|
123
|
-
omdev-0.0.0.
|
|
124
|
-
omdev-0.0.0.
|
|
125
|
-
omdev-0.0.0.
|
|
126
|
-
omdev-0.0.0.
|
|
127
|
-
omdev-0.0.0.
|
|
122
|
+
omdev-0.0.0.dev63.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
|
123
|
+
omdev-0.0.0.dev63.dist-info/METADATA,sha256=pvbtnU8Sk3rSwiqGcYUEZqv9kPsNqo0ep9EEG5YahWs,1252
|
|
124
|
+
omdev-0.0.0.dev63.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
|
|
125
|
+
omdev-0.0.0.dev63.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
|
|
126
|
+
omdev-0.0.0.dev63.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
|
|
127
|
+
omdev-0.0.0.dev63.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|