omdev 0.0.0.dev363__py3-none-any.whl → 0.0.0.dev364__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.
- omdev/__about__.py +1 -1
- omdev/scripts/ci.py +4 -4
- omdev/scripts/interp.py +4 -4
- omdev/scripts/pyproject.py +4 -4
- omdev/tools/docker.py +1 -1
- omdev/tools/json/cli.py +2 -0
- omdev/tools/json/processing.py +14 -0
- {omdev-0.0.0.dev363.dist-info → omdev-0.0.0.dev364.dist-info}/METADATA +4 -4
- {omdev-0.0.0.dev363.dist-info → omdev-0.0.0.dev364.dist-info}/RECORD +13 -13
- {omdev-0.0.0.dev363.dist-info → omdev-0.0.0.dev364.dist-info}/WHEEL +0 -0
- {omdev-0.0.0.dev363.dist-info → omdev-0.0.0.dev364.dist-info}/entry_points.txt +0 -0
- {omdev-0.0.0.dev363.dist-info → omdev-0.0.0.dev364.dist-info}/licenses/LICENSE +0 -0
- {omdev-0.0.0.dev363.dist-info → omdev-0.0.0.dev364.dist-info}/top_level.txt +0 -0
omdev/__about__.py
CHANGED
omdev/scripts/ci.py
CHANGED
@@ -962,7 +962,7 @@ class Checks:
|
|
962
962
|
render_fmt='%s',
|
963
963
|
)
|
964
964
|
|
965
|
-
return v
|
965
|
+
return v
|
966
966
|
|
967
967
|
def non_empty_str(self, v: ta.Optional[str], msg: CheckMessage = None) -> str:
|
968
968
|
if not isinstance(v, str) or not v:
|
@@ -2858,7 +2858,7 @@ class ArgparseCli:
|
|
2858
2858
|
|
2859
2859
|
if self._unknown_args and not (cmd is not None and cmd.accepts_unknown):
|
2860
2860
|
msg = f'unrecognized arguments: {" ".join(self._unknown_args)}'
|
2861
|
-
if (parser := self.get_parser()).exit_on_error:
|
2861
|
+
if (parser := self.get_parser()).exit_on_error:
|
2862
2862
|
parser.error(msg)
|
2863
2863
|
else:
|
2864
2864
|
raise argparse.ArgumentError(None, msg)
|
@@ -5812,7 +5812,7 @@ class SubprocessRun:
|
|
5812
5812
|
) -> SubprocessRunOutput:
|
5813
5813
|
if subprocesses is None:
|
5814
5814
|
subprocesses = self._DEFAULT_SUBPROCESSES
|
5815
|
-
return check.not_none(subprocesses).run_(self.replace(**kwargs))
|
5815
|
+
return check.not_none(subprocesses).run_(self.replace(**kwargs))
|
5816
5816
|
|
5817
5817
|
_DEFAULT_ASYNC_SUBPROCESSES: ta.ClassVar[ta.Optional[ta.Any]] = None # AbstractAsyncSubprocesses
|
5818
5818
|
|
@@ -5823,7 +5823,7 @@ class SubprocessRun:
|
|
5823
5823
|
) -> SubprocessRunOutput:
|
5824
5824
|
if async_subprocesses is None:
|
5825
5825
|
async_subprocesses = self._DEFAULT_ASYNC_SUBPROCESSES
|
5826
|
-
return await check.not_none(async_subprocesses).run_(self.replace(**kwargs))
|
5826
|
+
return await check.not_none(async_subprocesses).run_(self.replace(**kwargs))
|
5827
5827
|
|
5828
5828
|
|
5829
5829
|
SubprocessRun._FIELD_NAMES = frozenset(fld.name for fld in dc.fields(SubprocessRun)) # noqa
|
omdev/scripts/interp.py
CHANGED
@@ -989,7 +989,7 @@ class Checks:
|
|
989
989
|
render_fmt='%s',
|
990
990
|
)
|
991
991
|
|
992
|
-
return v
|
992
|
+
return v
|
993
993
|
|
994
994
|
def non_empty_str(self, v: ta.Optional[str], msg: CheckMessage = None) -> str:
|
995
995
|
if not isinstance(v, str) or not v:
|
@@ -2560,7 +2560,7 @@ class ArgparseCli:
|
|
2560
2560
|
|
2561
2561
|
if self._unknown_args and not (cmd is not None and cmd.accepts_unknown):
|
2562
2562
|
msg = f'unrecognized arguments: {" ".join(self._unknown_args)}'
|
2563
|
-
if (parser := self.get_parser()).exit_on_error:
|
2563
|
+
if (parser := self.get_parser()).exit_on_error:
|
2564
2564
|
parser.error(msg)
|
2565
2565
|
else:
|
2566
2566
|
raise argparse.ArgumentError(None, msg)
|
@@ -3873,7 +3873,7 @@ class SubprocessRun:
|
|
3873
3873
|
) -> SubprocessRunOutput:
|
3874
3874
|
if subprocesses is None:
|
3875
3875
|
subprocesses = self._DEFAULT_SUBPROCESSES
|
3876
|
-
return check.not_none(subprocesses).run_(self.replace(**kwargs))
|
3876
|
+
return check.not_none(subprocesses).run_(self.replace(**kwargs))
|
3877
3877
|
|
3878
3878
|
_DEFAULT_ASYNC_SUBPROCESSES: ta.ClassVar[ta.Optional[ta.Any]] = None # AbstractAsyncSubprocesses
|
3879
3879
|
|
@@ -3884,7 +3884,7 @@ class SubprocessRun:
|
|
3884
3884
|
) -> SubprocessRunOutput:
|
3885
3885
|
if async_subprocesses is None:
|
3886
3886
|
async_subprocesses = self._DEFAULT_ASYNC_SUBPROCESSES
|
3887
|
-
return await check.not_none(async_subprocesses).run_(self.replace(**kwargs))
|
3887
|
+
return await check.not_none(async_subprocesses).run_(self.replace(**kwargs))
|
3888
3888
|
|
3889
3889
|
|
3890
3890
|
SubprocessRun._FIELD_NAMES = frozenset(fld.name for fld in dc.fields(SubprocessRun)) # noqa
|
omdev/scripts/pyproject.py
CHANGED
@@ -2412,7 +2412,7 @@ class Checks:
|
|
2412
2412
|
render_fmt='%s',
|
2413
2413
|
)
|
2414
2414
|
|
2415
|
-
return v
|
2415
|
+
return v
|
2416
2416
|
|
2417
2417
|
def non_empty_str(self, v: ta.Optional[str], msg: CheckMessage = None) -> str:
|
2418
2418
|
if not isinstance(v, str) or not v:
|
@@ -4352,7 +4352,7 @@ class ArgparseCli:
|
|
4352
4352
|
|
4353
4353
|
if self._unknown_args and not (cmd is not None and cmd.accepts_unknown):
|
4354
4354
|
msg = f'unrecognized arguments: {" ".join(self._unknown_args)}'
|
4355
|
-
if (parser := self.get_parser()).exit_on_error:
|
4355
|
+
if (parser := self.get_parser()).exit_on_error:
|
4356
4356
|
parser.error(msg)
|
4357
4357
|
else:
|
4358
4358
|
raise argparse.ArgumentError(None, msg)
|
@@ -6263,7 +6263,7 @@ class SubprocessRun:
|
|
6263
6263
|
) -> SubprocessRunOutput:
|
6264
6264
|
if subprocesses is None:
|
6265
6265
|
subprocesses = self._DEFAULT_SUBPROCESSES
|
6266
|
-
return check.not_none(subprocesses).run_(self.replace(**kwargs))
|
6266
|
+
return check.not_none(subprocesses).run_(self.replace(**kwargs))
|
6267
6267
|
|
6268
6268
|
_DEFAULT_ASYNC_SUBPROCESSES: ta.ClassVar[ta.Optional[ta.Any]] = None # AbstractAsyncSubprocesses
|
6269
6269
|
|
@@ -6274,7 +6274,7 @@ class SubprocessRun:
|
|
6274
6274
|
) -> SubprocessRunOutput:
|
6275
6275
|
if async_subprocesses is None:
|
6276
6276
|
async_subprocesses = self._DEFAULT_ASYNC_SUBPROCESSES
|
6277
|
-
return await check.not_none(async_subprocesses).run_(self.replace(**kwargs))
|
6277
|
+
return await check.not_none(async_subprocesses).run_(self.replace(**kwargs))
|
6278
6278
|
|
6279
6279
|
|
6280
6280
|
SubprocessRun._FIELD_NAMES = frozenset(fld.name for fld in dc.fields(SubprocessRun)) # noqa
|
omdev/tools/docker.py
CHANGED
@@ -115,7 +115,7 @@ class Cli(ap.Cli):
|
|
115
115
|
dct: dict[str, list[PortEntry]] = {}
|
116
116
|
|
117
117
|
with lang.disposing(yaml.WrappedLoaders.base(yml_src)) as loader:
|
118
|
-
val = check.not_none(loader.get_single_data())
|
118
|
+
val = check.not_none(loader.get_single_data())
|
119
119
|
root = check.isinstance(val.value, ta.Mapping)
|
120
120
|
|
121
121
|
services = check.isinstance(
|
omdev/tools/json/cli.py
CHANGED
@@ -88,6 +88,7 @@ def _build_args_parser() -> argparse.ArgumentParser:
|
|
88
88
|
parser.add_argument('-x', '--jmespath-expr')
|
89
89
|
parser.add_argument('-M', '--marshal', action='store_true')
|
90
90
|
parser.add_argument('-F', '--flat', action='store_true')
|
91
|
+
parser.add_argument('-e', '--prune-empty', action='store_true')
|
91
92
|
parser.add_argument('-E', '--omit-empty', action='store_true')
|
92
93
|
|
93
94
|
parser.add_argument('-z', '--compact', action='store_true')
|
@@ -136,6 +137,7 @@ def _process_args(args: ta.Any) -> RunConfiguration:
|
|
136
137
|
jmespath_expr=args.jmespath_expr,
|
137
138
|
marshal=args.marshal,
|
138
139
|
flat=args.flat,
|
140
|
+
prune_empty=args.prune_empty,
|
139
141
|
omit_empty=args.omit_empty,
|
140
142
|
)
|
141
143
|
|
omdev/tools/json/processing.py
CHANGED
@@ -20,9 +20,20 @@ class ProcessingOptions:
|
|
20
20
|
jmespath_expr: ta.Any | None = None
|
21
21
|
marshal: bool = False
|
22
22
|
flat: bool = False
|
23
|
+
prune_empty: bool = False
|
23
24
|
omit_empty: bool = False
|
24
25
|
|
25
26
|
|
27
|
+
def _prune_empty(v: ta.Any) -> ta.Any:
|
28
|
+
# if isinstance(v, ta.Mapping):
|
29
|
+
# v = type(v)([
|
30
|
+
# (_prune_empty(k), _prune_empty(v))
|
31
|
+
# for k, v in v.items()
|
32
|
+
# ])
|
33
|
+
# elif
|
34
|
+
raise NotImplementedError
|
35
|
+
|
36
|
+
|
26
37
|
class Processor:
|
27
38
|
def __init__(self, opts: ProcessingOptions) -> None:
|
28
39
|
super().__init__()
|
@@ -68,6 +79,9 @@ class Processor:
|
|
68
79
|
vs = [v]
|
69
80
|
|
70
81
|
for v in vs:
|
82
|
+
if self._opts.prune_empty:
|
83
|
+
v = _prune_empty(v)
|
84
|
+
|
71
85
|
if self._opts.omit_empty:
|
72
86
|
if v is None or (isinstance(v, (ta.Sequence, ta.Mapping)) and not v):
|
73
87
|
continue
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: omdev
|
3
|
-
Version: 0.0.0.
|
3
|
+
Version: 0.0.0.dev364
|
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.13
|
14
14
|
License-File: LICENSE
|
15
|
-
Requires-Dist: omlish==0.0.0.
|
15
|
+
Requires-Dist: omlish==0.0.0.dev364
|
16
16
|
Provides-Extra: all
|
17
17
|
Requires-Dist: black~=25.1; extra == "all"
|
18
18
|
Requires-Dist: pycparser~=2.22; extra == "all"
|
@@ -21,7 +21,7 @@ Requires-Dist: docutils~=0.21; extra == "all"
|
|
21
21
|
Requires-Dist: markdown-it-py~=3.0; extra == "all"
|
22
22
|
Requires-Dist: mdit-py-plugins~=0.4; extra == "all"
|
23
23
|
Requires-Dist: pygments~=2.19; extra == "all"
|
24
|
-
Requires-Dist: mypy~=1.
|
24
|
+
Requires-Dist: mypy~=1.17; extra == "all"
|
25
25
|
Requires-Dist: gprof2dot~=2025.4; extra == "all"
|
26
26
|
Requires-Dist: prompt-toolkit~=3.0; extra == "all"
|
27
27
|
Requires-Dist: segno~=1.6; extra == "all"
|
@@ -36,7 +36,7 @@ Requires-Dist: markdown-it-py~=3.0; extra == "doc"
|
|
36
36
|
Requires-Dist: mdit-py-plugins~=0.4; extra == "doc"
|
37
37
|
Requires-Dist: pygments~=2.19; extra == "doc"
|
38
38
|
Provides-Extra: mypy
|
39
|
-
Requires-Dist: mypy~=1.
|
39
|
+
Requires-Dist: mypy~=1.17; extra == "mypy"
|
40
40
|
Provides-Extra: prof
|
41
41
|
Requires-Dist: gprof2dot~=2025.4; extra == "prof"
|
42
42
|
Provides-Extra: ptk
|
@@ -1,5 +1,5 @@
|
|
1
1
|
omdev/.manifests.json,sha256=ZGEqfCA_ll4cndDBBnMhEe6QPGVJwxawDBKEI0MPVIQ,11870
|
2
|
-
omdev/__about__.py,sha256=
|
2
|
+
omdev/__about__.py,sha256=_c693iMsl07FKXJ_2zrWiE8t84SSbDxlCrash1rJR7M,1202
|
3
3
|
omdev/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
4
|
omdev/cmake.py,sha256=9rfSvFHPmKDj9ngvfDB2vK8O-xO_ZwUm7hMKLWA-yOw,4578
|
5
5
|
omdev/imgur.py,sha256=4XolajBnAJ1U2zvT6Y0fiUyBi_a8G9arXffvPxf3w-M,3103
|
@@ -252,9 +252,9 @@ omdev/pyproject/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
|
|
252
252
|
omdev/pyproject/resources/docker-dev.sh,sha256=DHkz5D18jok_oDolfg2mqrvGRWFoCe9GQo04dR1czcc,838
|
253
253
|
omdev/pyproject/resources/python.sh,sha256=rFaN4SiJ9hdLDXXsDTwugI6zsw6EPkgYMmtacZeTbvw,749
|
254
254
|
omdev/scripts/__init__.py,sha256=MKCvUAEQwsIvwLixwtPlpBqmkMXLCnjjXyAXvVpDwVk,91
|
255
|
-
omdev/scripts/ci.py,sha256=
|
256
|
-
omdev/scripts/interp.py,sha256=
|
257
|
-
omdev/scripts/pyproject.py,sha256=
|
255
|
+
omdev/scripts/ci.py,sha256=9yDySeJ4tU63Zf8jSL2QdM1jkCEQ3T8VCTc3pHOTUFo,357984
|
256
|
+
omdev/scripts/interp.py,sha256=T8EdNxuncwqCXfIBfCLoUcsYNqEhOrOE8V1hC9vTzqI,158095
|
257
|
+
omdev/scripts/pyproject.py,sha256=qBBXmbdKMYzqxnb0zEWYhCOg9Cy0pWno3wjulICFj_o,267626
|
258
258
|
omdev/scripts/slowcat.py,sha256=lssv4yrgJHiWfOiHkUut2p8E8Tq32zB-ujXESQxFFHY,2728
|
259
259
|
omdev/scripts/tmpexec.py,sha256=WTYcf56Tj2qjYV14AWmV8SfT0u6Y8eIU6cKgQRvEK3c,1442
|
260
260
|
omdev/tokens/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -265,7 +265,7 @@ omdev/tools/__init__.py,sha256=iVJAOQ0viGTQOm0DLX4uZLro-9jOioYJGLg9s0kDx1A,78
|
|
265
265
|
omdev/tools/cloc.py,sha256=BiIf2PnnoRH6ByH4mnua69Vv-ZDPHsSAPUds7giRolI,6013
|
266
266
|
omdev/tools/diff.py,sha256=S6ddB7pBeMtzKh2hiHfzQ93pj6mclKt1UZQMKy4Bt5M,520
|
267
267
|
omdev/tools/doc.py,sha256=PCtqDjFA55Ed4QVUpMiw05NwyXivCeox-ZE_JDN0BD0,2575
|
268
|
-
omdev/tools/docker.py,sha256=
|
268
|
+
omdev/tools/docker.py,sha256=4TdpKiWMr9eCffAPHo6sAWGURGTYMY5AK_F5lmnwlJA,7363
|
269
269
|
omdev/tools/intellij.py,sha256=yy6Uw2hcYyEWLZESAupKvd3U6omirYMbjnbw7UllhV4,5834
|
270
270
|
omdev/tools/linehisto.py,sha256=0ZNm34EuiZBE9Q2YC6KNLNNydNT8QPSOwvYzXiU9S2Q,8881
|
271
271
|
omdev/tools/mkenv.py,sha256=G2tu5bmiyKFyZuqtUoM7Z-6AI6CI86F2LwoIozoWOvo,2300
|
@@ -288,11 +288,11 @@ omdev/tools/git/consts.py,sha256=JuXivUNDkNhM4pe97icjRVAKM8cNRbrODquHINNKqOE,40
|
|
288
288
|
omdev/tools/git/messages.py,sha256=NWztIK0nAKJIOVzuVQcR_5LHZUgqyVkrOlpl7dFLMdU,2424
|
289
289
|
omdev/tools/json/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
290
290
|
omdev/tools/json/__main__.py,sha256=wqpkN_NsQyNwKW4qjVj8ADJ4_C98KhrFBtE-Z1UamfU,168
|
291
|
-
omdev/tools/json/cli.py,sha256=
|
291
|
+
omdev/tools/json/cli.py,sha256=8aXX3ijU3lvPZamkIyUOz-vlBmyIdaX7dCQq5rN7adE,10193
|
292
292
|
omdev/tools/json/formats.py,sha256=1qGYb8Kq_yFpLMaecBg-XE3yWSvqRiRbBX8SAElpS9s,2643
|
293
293
|
omdev/tools/json/io.py,sha256=sfj2hJS9Hy3aUR8a_lLzOrYcmL9fSKyvOHiofdUASsI,1427
|
294
294
|
omdev/tools/json/parsing.py,sha256=xZiOH3jSVErNGKI8AysFf0zzyhivXvRakTQe7rWxhKQ,2052
|
295
|
-
omdev/tools/json/processing.py,sha256=
|
295
|
+
omdev/tools/json/processing.py,sha256=a999e1VKeFR38eS7Pmcr8YCnzAk22Url7NuZ1fBCmts,2362
|
296
296
|
omdev/tools/json/rendering.py,sha256=KilwK8ziHGy3Z76H9CC04x2ro5Rkws1d06D0j6TnHA4,2660
|
297
297
|
omdev/tools/jsonview/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
298
298
|
omdev/tools/jsonview/__main__.py,sha256=BF-MVWpPJJeQYUqJA48G395kxw0lEJnV-hRLV_F9G2A,173
|
@@ -303,9 +303,9 @@ omdev/tools/jsonview/resources/jsonview.js,sha256=faDvXDOXKvEvjOuIlz4D3F2ReQXb_b
|
|
303
303
|
omdev/tools/pawk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
304
304
|
omdev/tools/pawk/__main__.py,sha256=VCqeRVnqT1RPEoIrqHFSu4PXVMg4YEgF4qCQm90-eRI,66
|
305
305
|
omdev/tools/pawk/pawk.py,sha256=ao5mdrpiSU4AZ8mBozoEaV3UVlmVTnRG9wD9XP70MZE,11429
|
306
|
-
omdev-0.0.0.
|
307
|
-
omdev-0.0.0.
|
308
|
-
omdev-0.0.0.
|
309
|
-
omdev-0.0.0.
|
310
|
-
omdev-0.0.0.
|
311
|
-
omdev-0.0.0.
|
306
|
+
omdev-0.0.0.dev364.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
307
|
+
omdev-0.0.0.dev364.dist-info/METADATA,sha256=3g4HotiW-zDtGxF8cJ5YxL_6gfz2hZHGmsZEh5mSppk,1674
|
308
|
+
omdev-0.0.0.dev364.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
309
|
+
omdev-0.0.0.dev364.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
|
310
|
+
omdev-0.0.0.dev364.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
|
311
|
+
omdev-0.0.0.dev364.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|