omdev 0.0.0.dev99__py3-none-any.whl → 0.0.0.dev101__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/.manifests.json +12 -12
- omdev/amalg/amalg.py +8 -5
- omdev/cache/compute/cache.py +1 -0
- omdev/cexts/cmake.py +4 -4
- omdev/cexts/magic.py +4 -4
- omdev/cexts/scan.py +3 -3
- omdev/clipboard/darwin.py +14 -14
- omdev/magic/__init__.py +28 -0
- omdev/magic/find.py +268 -0
- omdev/magic/magic.py +17 -0
- omdev/magic/prepare.py +27 -0
- omdev/magic/styles.py +33 -0
- omdev/manifests/build.py +6 -6
- omdev/precheck/lite.py +4 -4
- omdev/precheck/scripts.py +5 -6
- omdev/pyproject/pkg.py +4 -4
- omdev/scripts/pyproject.py +319 -81
- {omdev-0.0.0.dev99.dist-info → omdev-0.0.0.dev101.dist-info}/METADATA +2 -2
- {omdev-0.0.0.dev99.dist-info → omdev-0.0.0.dev101.dist-info}/RECORD +23 -19
- omdev/findmagic.py +0 -91
- {omdev-0.0.0.dev99.dist-info → omdev-0.0.0.dev101.dist-info}/LICENSE +0 -0
- {omdev-0.0.0.dev99.dist-info → omdev-0.0.0.dev101.dist-info}/WHEEL +0 -0
- {omdev-0.0.0.dev99.dist-info → omdev-0.0.0.dev101.dist-info}/entry_points.txt +0 -0
- {omdev-0.0.0.dev99.dist-info → omdev-0.0.0.dev101.dist-info}/top_level.txt +0 -0
omdev/precheck/scripts.py
CHANGED
|
@@ -3,9 +3,8 @@ import os
|
|
|
3
3
|
import stat
|
|
4
4
|
import typing as ta
|
|
5
5
|
|
|
6
|
-
from
|
|
7
|
-
from
|
|
8
|
-
|
|
6
|
+
from .. import findimports
|
|
7
|
+
from .. import magic
|
|
9
8
|
from .base import Precheck
|
|
10
9
|
from .base import PrecheckContext
|
|
11
10
|
|
|
@@ -22,10 +21,10 @@ class ScriptDepsPrecheck(Precheck['ScriptDepsPrecheck.Config']):
|
|
|
22
21
|
super().__init__(context, config)
|
|
23
22
|
|
|
24
23
|
async def run(self) -> ta.AsyncGenerator[Precheck.Violation, None]:
|
|
25
|
-
for fp in
|
|
24
|
+
for fp in magic.find_magic_files(
|
|
25
|
+
magic.PY_MAGIC_STYLE,
|
|
26
26
|
self._context.src_roots,
|
|
27
|
-
['
|
|
28
|
-
['py'],
|
|
27
|
+
keys=['@omlish-script'],
|
|
29
28
|
):
|
|
30
29
|
if not (stat.S_IXUSR & os.stat(fp).st_mode):
|
|
31
30
|
yield Precheck.Violation(self, f'script {fp} is not executable')
|
omdev/pyproject/pkg.py
CHANGED
|
@@ -40,7 +40,7 @@ from omlish.lite.logs import log
|
|
|
40
40
|
from omlish.lite.subprocesses import subprocess_check_call
|
|
41
41
|
|
|
42
42
|
from ..cexts.magic import CextMagic
|
|
43
|
-
from ..
|
|
43
|
+
from ..magic.find import find_magic_files
|
|
44
44
|
from ..revisions import GitRevisionAdder
|
|
45
45
|
from ..toml.writer import TomlWriter
|
|
46
46
|
|
|
@@ -403,10 +403,10 @@ class _PyprojectCextPackageGenerator(BasePyprojectPackageGenerator):
|
|
|
403
403
|
|
|
404
404
|
@cached_nullary
|
|
405
405
|
def find_cext_srcs(self) -> ta.Sequence[str]:
|
|
406
|
-
return sorted(
|
|
406
|
+
return sorted(find_magic_files(
|
|
407
|
+
CextMagic.STYLE,
|
|
407
408
|
[self._dir_name],
|
|
408
|
-
[CextMagic.
|
|
409
|
-
CextMagic.FILE_EXTENSIONS,
|
|
409
|
+
keys=[CextMagic.KEY],
|
|
410
410
|
))
|
|
411
411
|
|
|
412
412
|
#
|
omdev/scripts/pyproject.py
CHANGED
|
@@ -99,84 +99,6 @@ UnparsedVersionVar = ta.TypeVar('UnparsedVersionVar', bound=UnparsedVersion)
|
|
|
99
99
|
CallableVersionOperator = ta.Callable[['Version', str], bool]
|
|
100
100
|
|
|
101
101
|
|
|
102
|
-
########################################
|
|
103
|
-
# ../../cexts/magic.py
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
class CextMagic:
|
|
107
|
-
MAGIC = '@omlish-cext'
|
|
108
|
-
MAGIC_COMMENT = f'// {MAGIC}'
|
|
109
|
-
|
|
110
|
-
FILE_EXTENSIONS = ('c', 'cc', 'cpp')
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
########################################
|
|
114
|
-
# ../../findmagic.py
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
def compile_magic_pat(m: str) -> re.Pattern:
|
|
118
|
-
return re.compile('^' + re.escape(m) + r'($|(\s.*))')
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
def find_magic(
|
|
122
|
-
roots: ta.Sequence[str],
|
|
123
|
-
magics: ta.Sequence[str],
|
|
124
|
-
exts: ta.Sequence[str],
|
|
125
|
-
*,
|
|
126
|
-
py: bool = False,
|
|
127
|
-
) -> ta.Iterator[str]:
|
|
128
|
-
if isinstance(roots, str):
|
|
129
|
-
raise TypeError(roots)
|
|
130
|
-
if isinstance(magics, str):
|
|
131
|
-
raise TypeError(magics)
|
|
132
|
-
if isinstance(exts, str):
|
|
133
|
-
raise TypeError(exts)
|
|
134
|
-
|
|
135
|
-
if not magics:
|
|
136
|
-
raise Exception('Must specify magics')
|
|
137
|
-
if not exts:
|
|
138
|
-
raise Exception('Must specify extensions')
|
|
139
|
-
|
|
140
|
-
pats = [compile_magic_pat(m) for m in magics]
|
|
141
|
-
|
|
142
|
-
for root in roots:
|
|
143
|
-
for dp, dns, fns in os.walk(root): # noqa
|
|
144
|
-
for fn in fns:
|
|
145
|
-
if not any(fn.endswith(f'.{x}') for x in exts):
|
|
146
|
-
continue
|
|
147
|
-
|
|
148
|
-
fp = os.path.join(dp, fn)
|
|
149
|
-
try:
|
|
150
|
-
with open(fp) as f:
|
|
151
|
-
src = f.read()
|
|
152
|
-
except UnicodeDecodeError:
|
|
153
|
-
continue
|
|
154
|
-
|
|
155
|
-
if not any(
|
|
156
|
-
any(pat.fullmatch(l) for pat in pats)
|
|
157
|
-
for l in src.splitlines()
|
|
158
|
-
):
|
|
159
|
-
continue
|
|
160
|
-
|
|
161
|
-
if py:
|
|
162
|
-
if fn == '__init__.py':
|
|
163
|
-
out = dp.replace(os.sep, '.')
|
|
164
|
-
elif fn.endswith('.py'):
|
|
165
|
-
out = fp[:-3].replace(os.sep, '.')
|
|
166
|
-
else:
|
|
167
|
-
out = fp
|
|
168
|
-
else:
|
|
169
|
-
out = fp
|
|
170
|
-
yield out
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
# # @omlish-manifest
|
|
174
|
-
# _CLI_MODULE = {'$omdev.cli.types.CliModule': {
|
|
175
|
-
# 'cmd_name': 'py/findmagic',
|
|
176
|
-
# 'mod_name': __name__,
|
|
177
|
-
# }}
|
|
178
|
-
|
|
179
|
-
|
|
180
102
|
########################################
|
|
181
103
|
# ../../git.py
|
|
182
104
|
|
|
@@ -280,6 +202,87 @@ def get_git_revision(
|
|
|
280
202
|
return dirty_rev + ('-untracked' if has_untracked else '')
|
|
281
203
|
|
|
282
204
|
|
|
205
|
+
########################################
|
|
206
|
+
# ../../magic/magic.py
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
@dc.dataclass(frozen=True)
|
|
210
|
+
class Magic:
|
|
211
|
+
key: str
|
|
212
|
+
|
|
213
|
+
file: ta.Optional[str]
|
|
214
|
+
|
|
215
|
+
start_line: int
|
|
216
|
+
end_line: int
|
|
217
|
+
|
|
218
|
+
body: str
|
|
219
|
+
|
|
220
|
+
prepared: ta.Any
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
########################################
|
|
224
|
+
# ../../magic/prepare.py
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
class MagicPrepareError(Exception):
|
|
228
|
+
pass
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
def py_compile_magic_preparer(src: str) -> ta.Any:
|
|
232
|
+
try:
|
|
233
|
+
prepared = compile(f'({src})', '<magic>', 'eval')
|
|
234
|
+
except SyntaxError:
|
|
235
|
+
raise MagicPrepareError # noqa
|
|
236
|
+
return prepared
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
def py_eval_magic_preparer(src: str) -> ta.Any:
|
|
240
|
+
code = py_compile_magic_preparer(src)
|
|
241
|
+
return eval(code) # noqa
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
def json_magic_preparer(src: str) -> ta.Any:
|
|
245
|
+
try:
|
|
246
|
+
prepared = json.loads(src)
|
|
247
|
+
except json.JSONDecodeError:
|
|
248
|
+
raise MagicPrepareError # noqa
|
|
249
|
+
return prepared
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
########################################
|
|
253
|
+
# ../../magic/styles.py
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
MAGIC_KEY_PREFIX = '@omlish-'
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
@dc.dataclass(frozen=True)
|
|
260
|
+
class MagicStyle:
|
|
261
|
+
name: str
|
|
262
|
+
|
|
263
|
+
exts: ta.FrozenSet[str] = frozenset()
|
|
264
|
+
|
|
265
|
+
key_prefix: str = MAGIC_KEY_PREFIX
|
|
266
|
+
|
|
267
|
+
line_prefix: ta.Optional[str] = None
|
|
268
|
+
block_prefix_suffix: ta.Optional[ta.Tuple[str, str]] = None
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
PY_MAGIC_STYLE = MagicStyle(
|
|
272
|
+
name='py',
|
|
273
|
+
exts=frozenset(['py']),
|
|
274
|
+
line_prefix='# ',
|
|
275
|
+
)
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
C_MAGIC_STYLE = MagicStyle(
|
|
279
|
+
name='c',
|
|
280
|
+
exts=frozenset(['c', 'cc', 'cpp']),
|
|
281
|
+
line_prefix='// ',
|
|
282
|
+
block_prefix_suffix=('/* ', '*/'),
|
|
283
|
+
)
|
|
284
|
+
|
|
285
|
+
|
|
283
286
|
########################################
|
|
284
287
|
# ../../packaging/versions.py
|
|
285
288
|
# Copyright (c) Donald Stufft and individual contributors.
|
|
@@ -2077,6 +2080,241 @@ def format_num_bytes(num_bytes: int) -> str:
|
|
|
2077
2080
|
return f'{num_bytes / 1024 ** (len(FORMAT_NUM_BYTES_SUFFIXES) - 1):.2f}{FORMAT_NUM_BYTES_SUFFIXES[-1]}'
|
|
2078
2081
|
|
|
2079
2082
|
|
|
2083
|
+
########################################
|
|
2084
|
+
# ../../cexts/magic.py
|
|
2085
|
+
|
|
2086
|
+
|
|
2087
|
+
class CextMagic:
|
|
2088
|
+
KEY = '@omlish-cext'
|
|
2089
|
+
STYLE = C_MAGIC_STYLE
|
|
2090
|
+
|
|
2091
|
+
|
|
2092
|
+
########################################
|
|
2093
|
+
# ../../magic/find.py
|
|
2094
|
+
|
|
2095
|
+
|
|
2096
|
+
##
|
|
2097
|
+
|
|
2098
|
+
|
|
2099
|
+
def compile_magic_style_pat(
|
|
2100
|
+
style: MagicStyle,
|
|
2101
|
+
*,
|
|
2102
|
+
keys: ta.Optional[ta.Iterable[str]] = None,
|
|
2103
|
+
) -> re.Pattern:
|
|
2104
|
+
ps: ta.List[str] = []
|
|
2105
|
+
if style.line_prefix is not None:
|
|
2106
|
+
ps.append(style.line_prefix)
|
|
2107
|
+
if style.block_prefix_suffix is not None:
|
|
2108
|
+
ps.append(style.block_prefix_suffix[0])
|
|
2109
|
+
if not ps:
|
|
2110
|
+
raise Exception('No prefixes')
|
|
2111
|
+
|
|
2112
|
+
ms: ta.List[str] = []
|
|
2113
|
+
if keys is not None:
|
|
2114
|
+
if isinstance(keys, str):
|
|
2115
|
+
raise TypeError(keys)
|
|
2116
|
+
for k in keys:
|
|
2117
|
+
if not k.startswith(style.key_prefix):
|
|
2118
|
+
raise Exception(f'Key does not start with prefix: {k!r} {style.key_prefix!r}')
|
|
2119
|
+
ms.extend([re.escape(p + k) for p in ps])
|
|
2120
|
+
else:
|
|
2121
|
+
ms = [re.escape(p + style.key_prefix) + r'\S*' for p in ps]
|
|
2122
|
+
if not ms:
|
|
2123
|
+
raise Exception('No matchers')
|
|
2124
|
+
|
|
2125
|
+
b = '|'.join(f'({m})' for m in ms)
|
|
2126
|
+
s = '^(' + b + r')($|(\s.*))'
|
|
2127
|
+
return re.compile(s)
|
|
2128
|
+
|
|
2129
|
+
|
|
2130
|
+
##
|
|
2131
|
+
|
|
2132
|
+
|
|
2133
|
+
def chop_magic_lines(
|
|
2134
|
+
magic_key: str,
|
|
2135
|
+
prefix: str,
|
|
2136
|
+
lines: ta.Iterable[str],
|
|
2137
|
+
) -> ta.Optional[ta.List[str]]:
|
|
2138
|
+
out: ta.List[str] = []
|
|
2139
|
+
for i, line in enumerate(lines):
|
|
2140
|
+
if not i:
|
|
2141
|
+
if not line.startswith(prefix + magic_key):
|
|
2142
|
+
return None
|
|
2143
|
+
out.append(line[len(prefix) + len(magic_key) + 1:])
|
|
2144
|
+
else:
|
|
2145
|
+
if not line.startswith(prefix):
|
|
2146
|
+
return None
|
|
2147
|
+
out.append(line[len(prefix):])
|
|
2148
|
+
return out
|
|
2149
|
+
|
|
2150
|
+
|
|
2151
|
+
def chop_magic_block(
|
|
2152
|
+
magic_key: str,
|
|
2153
|
+
prefix: str,
|
|
2154
|
+
suffix: str,
|
|
2155
|
+
lines: ta.Iterable[str],
|
|
2156
|
+
) -> ta.Optional[ta.List[str]]:
|
|
2157
|
+
out: ta.List[str] = []
|
|
2158
|
+
for i, line in enumerate(lines):
|
|
2159
|
+
if not i:
|
|
2160
|
+
if not line.startswith(prefix + magic_key):
|
|
2161
|
+
return None
|
|
2162
|
+
s = line[len(prefix) + len(magic_key) + 1:]
|
|
2163
|
+
if s.rstrip().endswith(suffix):
|
|
2164
|
+
out.append(s.rstrip()[:-len(suffix)])
|
|
2165
|
+
break
|
|
2166
|
+
out.append(s)
|
|
2167
|
+
elif line.rstrip().endswith(suffix):
|
|
2168
|
+
out.append(line.rstrip()[:-len(suffix)])
|
|
2169
|
+
break
|
|
2170
|
+
else:
|
|
2171
|
+
out.append(line)
|
|
2172
|
+
return out
|
|
2173
|
+
|
|
2174
|
+
|
|
2175
|
+
##
|
|
2176
|
+
|
|
2177
|
+
|
|
2178
|
+
def find_magic(
|
|
2179
|
+
style: MagicStyle,
|
|
2180
|
+
lines: ta.Sequence[str],
|
|
2181
|
+
*,
|
|
2182
|
+
file: ta.Optional[str] = None,
|
|
2183
|
+
preparer: ta.Callable[[str], ta.Any] = py_compile_magic_preparer,
|
|
2184
|
+
) -> ta.List[Magic]:
|
|
2185
|
+
out: ta.List[Magic] = []
|
|
2186
|
+
|
|
2187
|
+
start = 0
|
|
2188
|
+
while start < len(lines):
|
|
2189
|
+
start_line = lines[start]
|
|
2190
|
+
|
|
2191
|
+
chopper: ta.Callable[[ta.Iterable[str]], ta.Optional[ta.List[str]]]
|
|
2192
|
+
if (
|
|
2193
|
+
style.line_prefix is not None and
|
|
2194
|
+
start_line.startswith(style.line_prefix + style.key_prefix)
|
|
2195
|
+
):
|
|
2196
|
+
key = start_line[len(style.line_prefix):].split()[0]
|
|
2197
|
+
chopper = functools.partial(
|
|
2198
|
+
chop_magic_lines,
|
|
2199
|
+
key,
|
|
2200
|
+
style.line_prefix,
|
|
2201
|
+
)
|
|
2202
|
+
|
|
2203
|
+
elif (
|
|
2204
|
+
style.block_prefix_suffix is not None and
|
|
2205
|
+
start_line.startswith(style.block_prefix_suffix[0] + style.key_prefix)
|
|
2206
|
+
):
|
|
2207
|
+
key = start_line[len(style.block_prefix_suffix[0]):].split()[0]
|
|
2208
|
+
chopper = functools.partial(
|
|
2209
|
+
chop_magic_block,
|
|
2210
|
+
key,
|
|
2211
|
+
*style.block_prefix_suffix,
|
|
2212
|
+
)
|
|
2213
|
+
|
|
2214
|
+
else:
|
|
2215
|
+
start += 1
|
|
2216
|
+
continue
|
|
2217
|
+
|
|
2218
|
+
end = start
|
|
2219
|
+
magic: ta.Optional[Magic] = None
|
|
2220
|
+
while end < len(lines):
|
|
2221
|
+
block_lines = chopper(lines[start:end + 1])
|
|
2222
|
+
if block_lines is None:
|
|
2223
|
+
raise Exception(f'Failed to find magic block terminator : {file=} {start=} {end=}')
|
|
2224
|
+
|
|
2225
|
+
block_src = ''.join(block_lines)
|
|
2226
|
+
if not block_src:
|
|
2227
|
+
prepared = None
|
|
2228
|
+
else:
|
|
2229
|
+
try:
|
|
2230
|
+
prepared = preparer(block_src)
|
|
2231
|
+
except MagicPrepareError:
|
|
2232
|
+
end += 1
|
|
2233
|
+
continue
|
|
2234
|
+
|
|
2235
|
+
magic = Magic(
|
|
2236
|
+
key=key,
|
|
2237
|
+
file=file,
|
|
2238
|
+
start_line=start + 1,
|
|
2239
|
+
end_line=end + 1,
|
|
2240
|
+
body=block_src,
|
|
2241
|
+
prepared=prepared,
|
|
2242
|
+
)
|
|
2243
|
+
break
|
|
2244
|
+
|
|
2245
|
+
if magic is None:
|
|
2246
|
+
raise Exception(f'Failed to find magic block terminator : {file=} {start=} {end=}')
|
|
2247
|
+
|
|
2248
|
+
out.append(magic)
|
|
2249
|
+
start = end + 1
|
|
2250
|
+
|
|
2251
|
+
return out
|
|
2252
|
+
|
|
2253
|
+
|
|
2254
|
+
##
|
|
2255
|
+
|
|
2256
|
+
|
|
2257
|
+
def find_magic_files(
|
|
2258
|
+
style: MagicStyle,
|
|
2259
|
+
roots: ta.Sequence[str],
|
|
2260
|
+
*,
|
|
2261
|
+
keys: ta.Optional[ta.Iterable[str]] = None,
|
|
2262
|
+
) -> ta.Iterator[str]:
|
|
2263
|
+
if isinstance(roots, str):
|
|
2264
|
+
raise TypeError(roots)
|
|
2265
|
+
|
|
2266
|
+
pat = compile_magic_style_pat(
|
|
2267
|
+
style,
|
|
2268
|
+
keys=keys,
|
|
2269
|
+
)
|
|
2270
|
+
|
|
2271
|
+
for root in roots:
|
|
2272
|
+
for dp, dns, fns in os.walk(root): # noqa
|
|
2273
|
+
for fn in fns:
|
|
2274
|
+
if not any(fn.endswith(f'.{x}') for x in style.exts):
|
|
2275
|
+
continue
|
|
2276
|
+
|
|
2277
|
+
fp = os.path.join(dp, fn)
|
|
2278
|
+
try:
|
|
2279
|
+
with open(fp) as f:
|
|
2280
|
+
src = f.read()
|
|
2281
|
+
except UnicodeDecodeError:
|
|
2282
|
+
continue
|
|
2283
|
+
|
|
2284
|
+
if not any(pat.fullmatch(l) for l in src.splitlines()):
|
|
2285
|
+
continue
|
|
2286
|
+
|
|
2287
|
+
yield fp
|
|
2288
|
+
|
|
2289
|
+
|
|
2290
|
+
def find_magic_py_modules(
|
|
2291
|
+
roots: ta.Sequence[str],
|
|
2292
|
+
*,
|
|
2293
|
+
style: MagicStyle = PY_MAGIC_STYLE,
|
|
2294
|
+
**kwargs: ta.Any,
|
|
2295
|
+
) -> ta.Iterator[str]:
|
|
2296
|
+
for fp in find_magic_files(style, roots, **kwargs):
|
|
2297
|
+
dp = os.path.dirname(fp)
|
|
2298
|
+
fn = os.path.basename(fp)
|
|
2299
|
+
|
|
2300
|
+
if fn == '__init__.py':
|
|
2301
|
+
yield dp.replace(os.sep, '.')
|
|
2302
|
+
elif fn.endswith('.py'):
|
|
2303
|
+
yield fp[:-3].replace(os.sep, '.')
|
|
2304
|
+
else:
|
|
2305
|
+
yield fp
|
|
2306
|
+
|
|
2307
|
+
|
|
2308
|
+
##
|
|
2309
|
+
|
|
2310
|
+
|
|
2311
|
+
# # @omlish-manifest
|
|
2312
|
+
# _CLI_MODULE = {'$omdev.cli.types.CliModule': {
|
|
2313
|
+
# 'cmd_name': 'py/findmagic',
|
|
2314
|
+
# 'mod_name': __name__,
|
|
2315
|
+
# }}
|
|
2316
|
+
|
|
2317
|
+
|
|
2080
2318
|
########################################
|
|
2081
2319
|
# ../../packaging/specifiers.py
|
|
2082
2320
|
# Copyright (c) Donald Stufft and individual contributors.
|
|
@@ -4162,10 +4400,10 @@ class _PyprojectCextPackageGenerator(BasePyprojectPackageGenerator):
|
|
|
4162
4400
|
|
|
4163
4401
|
@cached_nullary
|
|
4164
4402
|
def find_cext_srcs(self) -> ta.Sequence[str]:
|
|
4165
|
-
return sorted(
|
|
4403
|
+
return sorted(find_magic_files(
|
|
4404
|
+
CextMagic.STYLE,
|
|
4166
4405
|
[self._dir_name],
|
|
4167
|
-
[CextMagic.
|
|
4168
|
-
CextMagic.FILE_EXTENSIONS,
|
|
4406
|
+
keys=[CextMagic.KEY],
|
|
4169
4407
|
))
|
|
4170
4408
|
|
|
4171
4409
|
#
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: omdev
|
|
3
|
-
Version: 0.0.0.
|
|
3
|
+
Version: 0.0.0.dev101
|
|
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.dev101
|
|
16
16
|
Provides-Extra: all
|
|
17
17
|
Requires-Dist: black ~=24.10 ; extra == 'all'
|
|
18
18
|
Requires-Dist: pycparser ~=2.22 ; extra == 'all'
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
omdev/.manifests.json,sha256=
|
|
1
|
+
omdev/.manifests.json,sha256=nBS0fk7qpXG5VCITHxGUgJgh8Ghd3LyckoYCcfwb8Qc,6713
|
|
2
2
|
omdev/__about__.py,sha256=ON7EnhbxbwLsMj60wkd9OEYPloXZ7jmnMMzeLg44LXY,1225
|
|
3
3
|
omdev/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
4
|
omdev/bracepy.py,sha256=I8EdqtDvxzAi3I8TuMEW-RBfwXfqKbwp06CfOdj3L1o,2743
|
|
5
5
|
omdev/classdot.py,sha256=YOvgy6x295I_8NKBbBlRVd3AN7Osirm_Lqt4Wj0j9rY,1631
|
|
6
6
|
omdev/cmake.py,sha256=Diy2ry65806dQP125DAstD3w46z_wszMH7PwC2-6iik,4578
|
|
7
7
|
omdev/findimports.py,sha256=2t8QP852saEEJFeXySEzhi_nxRSxghlkXz2jVdvy08M,2392
|
|
8
|
-
omdev/findmagic.py,sha256=XoKPGjSM0qn1PCiiBPwfTHkpqJYQJmLW8v_4QFJ16Mk,2486
|
|
9
8
|
omdev/git.py,sha256=riM2KqSpQPC3N89uipd7Vm3kVgv4EYYDBU9tV1Z8juM,2208
|
|
10
9
|
omdev/imgur.py,sha256=il12R3t19tALolteYCZywvcdQUEOcgvPyUYgWtKiqt4,2993
|
|
11
10
|
omdev/revisions.py,sha256=U657hf4zeEN32y3g4CzqCAodx_HlfkHj2cIIKALNFDo,5009
|
|
@@ -14,14 +13,14 @@ omdev/tokens.py,sha256=GusxQ1Cd_eiScuR8XTTtc9QFhOgYviYGBZmFnn3Hj7s,756
|
|
|
14
13
|
omdev/wheelfile.py,sha256=yfupGcGkbFlmzGzKU64k_vmOKpaKnUlDWxeGn2KdekU,10005
|
|
15
14
|
omdev/amalg/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
15
|
omdev/amalg/__main__.py,sha256=h94M-VqZ3AFBU2a8zOsjeKK7RF6uINhTHl6OiGbVMgw,163
|
|
17
|
-
omdev/amalg/amalg.py,sha256=
|
|
16
|
+
omdev/amalg/amalg.py,sha256=b5lo2EZno62_5HbQV-TSMcsLe5ztm4vz3QrJ1-h_ppo,15140
|
|
18
17
|
omdev/antlr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
19
18
|
omdev/antlr/consts.py,sha256=8pR6r0m0P3hAiyiAoJZ-nptd2GYbZ98mxwPL9cpaRuw,279
|
|
20
19
|
omdev/antlr/gen.py,sha256=QnPyVWUrJYqHoOc3XsXA8fJdoiwAj6pyUwdG-DVrIeA,2953
|
|
21
20
|
omdev/antlr/_antlr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
21
|
omdev/cache/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
23
22
|
omdev/cache/compute/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
24
|
-
omdev/cache/compute/cache.py,sha256=
|
|
23
|
+
omdev/cache/compute/cache.py,sha256=FA6tZWoQpE8D8Os3abdtfT90juzkqBmESjJE3WQXZtQ,3623
|
|
25
24
|
omdev/cache/compute/contexts.py,sha256=OKOHOIj8JSEHmCKMY9G_zpKkLAkGuXcFXvzY5SXqCMA,3231
|
|
26
25
|
omdev/cache/compute/currents.py,sha256=D1Ls5Sd7FX2aPO5wpyEwTSmkz50sxkwCs37Amb0urH8,1425
|
|
27
26
|
omdev/cache/compute/fns.py,sha256=_1xU7qw1O57OsTp17RFjFTBO1M2t54RL-CGdl-0cTBk,4175
|
|
@@ -38,10 +37,10 @@ omdev/cache/data/specs.py,sha256=0a9NPJ76Wz69s94KlNbr1Xma3UQ0z2oCAQN7s6uXe4w,249
|
|
|
38
37
|
omdev/cexts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
39
38
|
omdev/cexts/_boilerplate.cc,sha256=sbpXEgdFrkdzZXgaNWFFNN27fL9TZu6VrwvMY4-nnFM,1726
|
|
40
39
|
omdev/cexts/build.py,sha256=F3z1-CjDlEM-Gzi5IunKUBO52qdH_pMsFylobTdGJnI,2654
|
|
41
|
-
omdev/cexts/cmake.py,sha256=
|
|
40
|
+
omdev/cexts/cmake.py,sha256=m7Md-mZP252EMa05TZVHRjy8vzhS9tw0nhO1GVQtkQU,9816
|
|
42
41
|
omdev/cexts/importhook.py,sha256=ko0KRxah_ZHhLVcCigYIIDvNHCfHpJ8qhmmuHKbCOt4,3546
|
|
43
|
-
omdev/cexts/magic.py,sha256=
|
|
44
|
-
omdev/cexts/scan.py,sha256=
|
|
42
|
+
omdev/cexts/magic.py,sha256=MPmdhGANFVRaA3351BSTBrXm214dWXro1RMRHaJ2_O0,126
|
|
43
|
+
omdev/cexts/scan.py,sha256=fTDy4DKgGQHdyf2Pp80Z_Ra5o984jFF9LeKfJm39IyM,1665
|
|
45
44
|
omdev/cexts/_distutils/LICENSE,sha256=22p14FIRp3F4Cb7Mj_GK33PKr25issFGHC2JN6dg9vc,1023
|
|
46
45
|
omdev/cexts/_distutils/__init__.py,sha256=c1zImtnPh3uY8BUTV4RLKtGKqTPx3c_pBbhA6tPtNsE,297
|
|
47
46
|
omdev/cexts/_distutils/build_ext.py,sha256=STHl9Rq2KeWJ3dQ8j8LwIQ-vFc4-3XsYWQ8Qc5_VByU,13833
|
|
@@ -68,7 +67,7 @@ omdev/cli/managers.py,sha256=BV98_n30Jj63OJrFgRoVZRfICxMLXEZKoEn4rMj9LV4,1160
|
|
|
68
67
|
omdev/cli/types.py,sha256=bqKw9SbtBtAip2vF9v4khh0CqKG6LBr6n9VzWBz7AJE,474
|
|
69
68
|
omdev/clipboard/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
70
69
|
omdev/clipboard/clipboard.py,sha256=CmnozkRljJ9UQDHLfCS8wKU0Xg-HfbsAkagAfMEias0,567
|
|
71
|
-
omdev/clipboard/darwin.py,sha256=
|
|
70
|
+
omdev/clipboard/darwin.py,sha256=Nq4SsAEJdIof_mgMTderdeQyuiyI0hlHUxVuom4YAcE,6415
|
|
72
71
|
omdev/interp/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
|
|
73
72
|
omdev/interp/__main__.py,sha256=GMCqeGYltgt5dlJzHxY9gqisa8cRkrPfmZYuZnjg4WI,162
|
|
74
73
|
omdev/interp/cli.py,sha256=sh7PZQoLletUViw1Y9OXNr9ekyNZ6YyxYuOQ_n9hyqU,2072
|
|
@@ -79,8 +78,13 @@ omdev/interp/resolvers.py,sha256=tpzlmqGp1C4QKdA6TfcPmtmaygu7mb6WK2RPSbyNQ6s,302
|
|
|
79
78
|
omdev/interp/standalone.py,sha256=XcltiL7ypcfV89C82_3knQ3Kx7aW4wnnxf2056ZXC3A,7731
|
|
80
79
|
omdev/interp/system.py,sha256=bI-JhX4GVJqW7wMxnIa-DGJWnCLmFcIsnl9pc1RGY2g,3513
|
|
81
80
|
omdev/interp/types.py,sha256=EMN3StEMkFoQAMUIZd7JYL4uUWqzFGY-2hTL8EBznYM,2437
|
|
81
|
+
omdev/magic/__init__.py,sha256=CBzRB71RLyylkrj8dph6JUEddA8KSMJvDgriHqFfJGU,478
|
|
82
|
+
omdev/magic/find.py,sha256=tTmpWXAleaXG3_kNOsRF7s8D0CpYMXbdz6-HbCNBW90,7070
|
|
83
|
+
omdev/magic/magic.py,sha256=h1nxoW6CV1MRCiHjDt3sO4kmG0qTtTRbkDNiPLGo2BE,224
|
|
84
|
+
omdev/magic/prepare.py,sha256=V5jYT2AeFmazzPwk9sNismSouLwFXEoik6FwKcWCNUY,589
|
|
85
|
+
omdev/magic/styles.py,sha256=YZrLend-O5-7TKrIu4Ukxk1q0I2yaQtxwa6tn7TRbJM,599
|
|
82
86
|
omdev/manifests/__init__.py,sha256=P2B0dpT8D7l5lJwRGPA92IcQj6oeXfd90X5-q9BJrKg,51
|
|
83
|
-
omdev/manifests/build.py,sha256=
|
|
87
|
+
omdev/manifests/build.py,sha256=E7BelbrJEJes-BEbAUZCVLVs79sYuC0fbthgXAoxaOk,10865
|
|
84
88
|
omdev/manifests/load.py,sha256=LtEsluDdd8CkNGj0QGBxee3twBn095Fru0xz2mtr7uk,4788
|
|
85
89
|
omdev/manifests/types.py,sha256=Jv6PAdVLPb9Hh4y6vDhPlWuMNBBViin1bC_u83jfsH4,234
|
|
86
90
|
omdev/mypy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -94,10 +98,10 @@ omdev/precheck/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
94
98
|
omdev/precheck/__main__.py,sha256=UEuS4z5-heIrwTtB-ONe1KeXJdqj8tYXMqWMpuO10so,165
|
|
95
99
|
omdev/precheck/base.py,sha256=a_lGoFM-QhL8u8XDUYFhb-feEyfPbP4j8lcmNO51sHY,732
|
|
96
100
|
omdev/precheck/git.py,sha256=APC5Ln7x0zDrQiGPRWPsBcVJK3vWhbU-brqR5M63JQA,849
|
|
97
|
-
omdev/precheck/lite.py,sha256=
|
|
101
|
+
omdev/precheck/lite.py,sha256=z99pgTO4SAmLEqSj6qaKd4hcs0WpwixYkQZn75lZRX8,3883
|
|
98
102
|
omdev/precheck/main.py,sha256=2YizDZSDhMeQaZKVH83s99pBmtOUL9B-8dXwIcw6fQQ,2674
|
|
99
103
|
omdev/precheck/manifests.py,sha256=YfXqt6u0hlFXY0QkBMec6V_6Y9T4eCVAmrJDkQkB13U,774
|
|
100
|
-
omdev/precheck/scripts.py,sha256=
|
|
104
|
+
omdev/precheck/scripts.py,sha256=Xw9kkQzlDd_2V9av9qlaNpNZG9jZdy3TTo7x60MeR2I,1273
|
|
101
105
|
omdev/ptk/__init__.py,sha256=StAwXQ96e8Xkkg7ciR9oBBhcSgqHT76vhoZML82BuY0,447
|
|
102
106
|
omdev/ptk/apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
103
107
|
omdev/ptk/apps/ncdu.py,sha256=ov6AEjne2NyVE45XiAtteq5SmbxXHQkUsybuu5KSwRQ,4479
|
|
@@ -106,7 +110,7 @@ omdev/pyproject/__main__.py,sha256=gn3Rl1aYPYdiTtEqa9ifi0t-e4ZwPY0vhJ4UXvYdJDY,1
|
|
|
106
110
|
omdev/pyproject/cexts.py,sha256=x13piOOnNrYbA17qZLDVuR0p1sqhgEwpk4FtImX-klM,4281
|
|
107
111
|
omdev/pyproject/cli.py,sha256=kw0Jyzywwt6QOc6QHDevWW9p85aXT7jvVFFb8Sb_EAU,11365
|
|
108
112
|
omdev/pyproject/configs.py,sha256=K9H5cGwVLgHi8wKwtYvlXHZ9ThtmnI4jo8JAb-t1-70,2859
|
|
109
|
-
omdev/pyproject/pkg.py,sha256=
|
|
113
|
+
omdev/pyproject/pkg.py,sha256=WB9k3zEpHSAR24H09kikgAnLMWUz-bk9f0aB-2L_ITw,14560
|
|
110
114
|
omdev/pyproject/reqs.py,sha256=8feZ71YnGzwKbLK4zO28CDQeNcZIIuq6cnkBhs6M-7E,2406
|
|
111
115
|
omdev/scripts/__init__.py,sha256=MKCvUAEQwsIvwLixwtPlpBqmkMXLCnjjXyAXvVpDwVk,91
|
|
112
116
|
omdev/scripts/bumpversion.py,sha256=Kn7fo73Hs8uJh3Hi3EIyLOlzLPWAC6dwuD_lZ3cIzuY,1064
|
|
@@ -114,7 +118,7 @@ omdev/scripts/execrss.py,sha256=hJTWBig_-XqKIj1DphYTfeVDtdQTM1XUl-Hvzs2x9iY,451
|
|
|
114
118
|
omdev/scripts/exectime.py,sha256=dBdn3KV2jR6tCrzGvb9dTl2uGe2vNpLxmHMtExmnaiM,410
|
|
115
119
|
omdev/scripts/importtrace.py,sha256=Jbo3Yk2RAbE8_tJ97iTcVNpoxCJxrRb2tl1W_CV3NG0,14067
|
|
116
120
|
omdev/scripts/interp.py,sha256=ls04OE3g_TpiK5_inRfOzUvBGUtBgSt5vnkqC3eZhTM,72076
|
|
117
|
-
omdev/scripts/pyproject.py,sha256=
|
|
121
|
+
omdev/scripts/pyproject.py,sha256=0etqlpe2wL2lRLKgRo6X5llzpvM-I7AHbu1oWqdV-6M,164318
|
|
118
122
|
omdev/scripts/slowcat.py,sha256=lssv4yrgJHiWfOiHkUut2p8E8Tq32zB-ujXESQxFFHY,2728
|
|
119
123
|
omdev/toml/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
|
|
120
124
|
omdev/toml/parser.py,sha256=84bn09uhYHwQGyfww6Rw6y1RxPAE_HDltODOSakcqDM,29186
|
|
@@ -132,9 +136,9 @@ omdev/tools/sqlrepl.py,sha256=tmFZh80-xsGM62dyQ7_UGLebChrj7IHbIPYBWDJMgVk,5741
|
|
|
132
136
|
omdev/tools/pawk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
133
137
|
omdev/tools/pawk/__main__.py,sha256=VCqeRVnqT1RPEoIrqHFSu4PXVMg4YEgF4qCQm90-eRI,66
|
|
134
138
|
omdev/tools/pawk/pawk.py,sha256=Eckymn22GfychCQcQi96BFqRo_LmiJ-EPhC8TTUJdB4,11446
|
|
135
|
-
omdev-0.0.0.
|
|
136
|
-
omdev-0.0.0.
|
|
137
|
-
omdev-0.0.0.
|
|
138
|
-
omdev-0.0.0.
|
|
139
|
-
omdev-0.0.0.
|
|
140
|
-
omdev-0.0.0.
|
|
139
|
+
omdev-0.0.0.dev101.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
|
140
|
+
omdev-0.0.0.dev101.dist-info/METADATA,sha256=OiY35acSdRnovqpJlehySG023oUI01sfFyDXuZXY_6M,1704
|
|
141
|
+
omdev-0.0.0.dev101.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
|
|
142
|
+
omdev-0.0.0.dev101.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
|
|
143
|
+
omdev-0.0.0.dev101.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
|
|
144
|
+
omdev-0.0.0.dev101.dist-info/RECORD,,
|