omdev 0.0.0.dev363__py3-none-any.whl → 0.0.0.dev365__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/cc/cli.py +4 -1
- omdev/py/docstrings/google.py +25 -18
- omdev/scripts/ci.py +29 -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.dev365.dist-info}/METADATA +4 -4
- {omdev-0.0.0.dev363.dist-info → omdev-0.0.0.dev365.dist-info}/RECORD +15 -15
- {omdev-0.0.0.dev363.dist-info → omdev-0.0.0.dev365.dist-info}/WHEEL +0 -0
- {omdev-0.0.0.dev363.dist-info → omdev-0.0.0.dev365.dist-info}/entry_points.txt +0 -0
- {omdev-0.0.0.dev363.dist-info → omdev-0.0.0.dev365.dist-info}/licenses/LICENSE +0 -0
- {omdev-0.0.0.dev363.dist-info → omdev-0.0.0.dev365.dist-info}/top_level.txt +0 -0
omdev/__about__.py
CHANGED
omdev/cc/cli.py
CHANGED
@@ -17,8 +17,11 @@ Freestanding options:
|
|
17
17
|
|
18
18
|
TODO:
|
19
19
|
- cext interop
|
20
|
-
-
|
20
|
+
- cc cmake
|
21
|
+
- shlex shebang to extract opts
|
21
22
|
- nanobind
|
23
|
+
- 2 dep mechanisms? not necessarily bad
|
24
|
+
- cc ij, based off of cmake
|
22
25
|
- fix CFLAGS/CCFLAGS/CPPFLAGS/CXXFLAGS
|
23
26
|
- jit-gen cmake mode? multi-src builds
|
24
27
|
"""
|
omdev/py/docstrings/google.py
CHANGED
@@ -44,7 +44,7 @@ class Section(ta.NamedTuple):
|
|
44
44
|
type: SectionType
|
45
45
|
|
46
46
|
|
47
|
-
_GOOGLE_TYPED_ARG_PAT = re.compile(r'\s*(.+?)\s*\(\s*(
|
47
|
+
_GOOGLE_TYPED_ARG_PAT = re.compile(r'\s*(.+?)\s*\(\s*(.*\S+)\s*\)')
|
48
48
|
_GOOGLE_ARG_DESC_PAT = re.compile(r'.*\. Defaults to (.+)\.')
|
49
49
|
_MULTIPLE_PATTERN = re.compile(r'(\s*[^:\s]+:)|([^:]*\]:.*)')
|
50
50
|
|
@@ -70,7 +70,9 @@ class GoogleParser:
|
|
70
70
|
def __init__(
|
71
71
|
self,
|
72
72
|
sections: list[Section] | None = None,
|
73
|
+
*,
|
73
74
|
title_colon: bool = True,
|
75
|
+
meta_separators: ta.Sequence[str] = ':-',
|
74
76
|
) -> None:
|
75
77
|
"""
|
76
78
|
Setup sections.
|
@@ -85,6 +87,7 @@ class GoogleParser:
|
|
85
87
|
sections = DEFAULT_SECTIONS
|
86
88
|
self.sections = {s.title: s for s in sections}
|
87
89
|
self.title_colon = title_colon
|
90
|
+
self.meta_separators = meta_separators
|
88
91
|
self._setup()
|
89
92
|
|
90
93
|
def _setup(self) -> None:
|
@@ -94,11 +97,11 @@ class GoogleParser:
|
|
94
97
|
colon = ''
|
95
98
|
|
96
99
|
self.titles_re = re.compile(
|
97
|
-
'^('
|
98
|
-
|
99
|
-
|
100
|
-
+
|
101
|
-
|
100
|
+
'^(' +
|
101
|
+
'|'.join(f'({t})' for t in self.sections) +
|
102
|
+
')' +
|
103
|
+
colon +
|
104
|
+
'[ \t\r\f\v]*$',
|
102
105
|
flags=re.MULTILINE,
|
103
106
|
)
|
104
107
|
|
@@ -122,19 +125,23 @@ class GoogleParser:
|
|
122
125
|
):
|
123
126
|
return self._build_single_meta(section, text)
|
124
127
|
|
125
|
-
|
126
|
-
|
128
|
+
seps = self.meta_separators
|
129
|
+
for sep in seps:
|
130
|
+
if sep not in text:
|
131
|
+
continue
|
132
|
+
|
133
|
+
# Split spec and description
|
134
|
+
before, desc = text.split(sep, 1)
|
135
|
+
if desc:
|
136
|
+
desc = desc[1:] if desc[0] == ' ' else desc
|
137
|
+
if '\n' in desc:
|
138
|
+
first_line, rest = desc.split('\n', 1)
|
139
|
+
desc = first_line + '\n' + inspect.cleandoc(rest)
|
140
|
+
desc = desc.strip('\n')
|
127
141
|
|
128
|
-
|
129
|
-
before, desc = text.split(':', 1)
|
130
|
-
if desc:
|
131
|
-
desc = desc[1:] if desc[0] == ' ' else desc
|
132
|
-
if '\n' in desc:
|
133
|
-
first_line, rest = desc.split('\n', 1)
|
134
|
-
desc = first_line + '\n' + inspect.cleandoc(rest)
|
135
|
-
desc = desc.strip('\n')
|
142
|
+
return self._build_multi_meta(section, before, desc)
|
136
143
|
|
137
|
-
|
144
|
+
raise ParseError(f'Expected some separator {seps!r} in {text!r}.')
|
138
145
|
|
139
146
|
@staticmethod
|
140
147
|
def _build_single_meta(section: Section, desc: str) -> DocstringMeta:
|
@@ -161,7 +168,7 @@ class GoogleParser:
|
|
161
168
|
)
|
162
169
|
|
163
170
|
if section.key in PARAM_KEYWORDS:
|
164
|
-
raise ParseError('Expected
|
171
|
+
raise ParseError('Expected parameter name.')
|
165
172
|
|
166
173
|
return DocstringMeta(args=[section.key], description=desc)
|
167
174
|
|
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:
|
@@ -1975,6 +1975,31 @@ def unlinking_if_exists(path: str) -> ta.Iterator[None]:
|
|
1975
1975
|
##
|
1976
1976
|
|
1977
1977
|
|
1978
|
+
@ta.overload
|
1979
|
+
def path_dirname(p: str, n: int = 1) -> str:
|
1980
|
+
...
|
1981
|
+
|
1982
|
+
|
1983
|
+
@ta.overload
|
1984
|
+
def path_dirname(p: bytes, n: int = 1) -> bytes:
|
1985
|
+
...
|
1986
|
+
|
1987
|
+
|
1988
|
+
def path_dirname(p, n=1):
|
1989
|
+
if isinstance(p, bytes):
|
1990
|
+
sep: ta.Any = b'/'
|
1991
|
+
else:
|
1992
|
+
sep = '/'
|
1993
|
+
p = os.fspath(p)
|
1994
|
+
i = -1
|
1995
|
+
for _ in range(n):
|
1996
|
+
i = p.rindex(sep, 0, i)
|
1997
|
+
head = p[:i + 1]
|
1998
|
+
if head and head != sep * len(head):
|
1999
|
+
head = head.rstrip(sep)
|
2000
|
+
return head
|
2001
|
+
|
2002
|
+
|
1978
2003
|
def abs_real_path(p: str) -> str:
|
1979
2004
|
return os.path.abspath(os.path.realpath(p))
|
1980
2005
|
|
@@ -2858,7 +2883,7 @@ class ArgparseCli:
|
|
2858
2883
|
|
2859
2884
|
if self._unknown_args and not (cmd is not None and cmd.accepts_unknown):
|
2860
2885
|
msg = f'unrecognized arguments: {" ".join(self._unknown_args)}'
|
2861
|
-
if (parser := self.get_parser()).exit_on_error:
|
2886
|
+
if (parser := self.get_parser()).exit_on_error:
|
2862
2887
|
parser.error(msg)
|
2863
2888
|
else:
|
2864
2889
|
raise argparse.ArgumentError(None, msg)
|
@@ -5812,7 +5837,7 @@ class SubprocessRun:
|
|
5812
5837
|
) -> SubprocessRunOutput:
|
5813
5838
|
if subprocesses is None:
|
5814
5839
|
subprocesses = self._DEFAULT_SUBPROCESSES
|
5815
|
-
return check.not_none(subprocesses).run_(self.replace(**kwargs))
|
5840
|
+
return check.not_none(subprocesses).run_(self.replace(**kwargs))
|
5816
5841
|
|
5817
5842
|
_DEFAULT_ASYNC_SUBPROCESSES: ta.ClassVar[ta.Optional[ta.Any]] = None # AbstractAsyncSubprocesses
|
5818
5843
|
|
@@ -5823,7 +5848,7 @@ class SubprocessRun:
|
|
5823
5848
|
) -> SubprocessRunOutput:
|
5824
5849
|
if async_subprocesses is None:
|
5825
5850
|
async_subprocesses = self._DEFAULT_ASYNC_SUBPROCESSES
|
5826
|
-
return await check.not_none(async_subprocesses).run_(self.replace(**kwargs))
|
5851
|
+
return await check.not_none(async_subprocesses).run_(self.replace(**kwargs))
|
5827
5852
|
|
5828
5853
|
|
5829
5854
|
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.dev365
|
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.dev365
|
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
|
@@ -36,7 +36,7 @@ omdev/cc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
36
36
|
omdev/cc/__main__.py,sha256=n7gxSRYZ1QZOUxQPCT0_n9Xl26zi2UIvCwyGW_m67nA,166
|
37
37
|
omdev/cc/cdeps.py,sha256=Uou-V1qcwWhe14iTu39W7yxOlDdr_P96Ai8wQjAp3zQ,1535
|
38
38
|
omdev/cc/cdeps.toml,sha256=MqZ1OQHQ2JPvQpHRL32GpRgQWQRtzjPI2EWl4EqSm-I,1004
|
39
|
-
omdev/cc/cli.py,sha256=
|
39
|
+
omdev/cc/cli.py,sha256=B-_FIEjox1O9vhlvgVVO4X6Qo4acWIm-eW5kAwSwFUc,5022
|
40
40
|
omdev/cc/srclangs.py,sha256=3u_APHgknuc-BPRQSDISwSzouluKsnLlBxodp-XCl_E,728
|
41
41
|
omdev/cexts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
42
42
|
omdev/cexts/_boilerplate.cc,sha256=sbpXEgdFrkdzZXgaNWFFNN27fL9TZu6VrwvMY4-nnFM,1726
|
@@ -228,7 +228,7 @@ omdev/py/docstrings/__init__.py,sha256=HFzqco1oj6M7KQ80i48W9gYABVJU8oM_1wpl9ndBN
|
|
228
228
|
omdev/py/docstrings/attrdoc.py,sha256=xo-AFqEPfz1XppsCMJS80pG1Vdd2TiBsoxZ7YP6ZHC4,4269
|
229
229
|
omdev/py/docstrings/common.py,sha256=7YUu5-RxhbCEKHMvfUNxXhTd9lcGTC8CGAmWeXZTta4,6378
|
230
230
|
omdev/py/docstrings/epydoc.py,sha256=Z6Dg6ImKOY3hP-mZoiwU3nGOReap5vt_T_3LIGnpess,6177
|
231
|
-
omdev/py/docstrings/google.py,sha256=
|
231
|
+
omdev/py/docstrings/google.py,sha256=zWrhzQ_QGOtH6s9SfmZGCduKv3JJVe6rJlDe-kAdUW8,10552
|
232
232
|
omdev/py/docstrings/numpydoc.py,sha256=SLyIoPR5U5HtXJ18yeQf4HlYHtcro3THh9CqeWDDDH4,12266
|
233
233
|
omdev/py/docstrings/parser.py,sha256=umJEgQBkSXLwWIKZrBbFCfNrz847vpTNDqTTEwlvHpA,2324
|
234
234
|
omdev/py/docstrings/rest.py,sha256=c2xPYg_W01W9eYY_KLKX69E4qu4jpkgUshi5K5EyVv8,5221
|
@@ -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=eaxyndzJcHoXh1jbsP67QbtMgVzOgr2RvN0ysAoAOyI,358433
|
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.dev365.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
307
|
+
omdev-0.0.0.dev365.dist-info/METADATA,sha256=kQICG8LA3JGKzBdHFee2vJVQP5hh1R-racMDhIO7CQU,1674
|
308
|
+
omdev-0.0.0.dev365.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
309
|
+
omdev-0.0.0.dev365.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
|
310
|
+
omdev-0.0.0.dev365.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
|
311
|
+
omdev-0.0.0.dev365.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|