omdev 0.0.0.dev433__py3-none-any.whl → 0.0.0.dev435__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.
@@ -368,7 +368,7 @@
368
368
  "module": ".tools.docker",
369
369
  "attr": "_CLI_MODULE",
370
370
  "file": "omdev/tools/docker.py",
371
- "line": 259,
371
+ "line": 271,
372
372
  "value": {
373
373
  "!.cli.types.CliModule": {
374
374
  "name": "docker",
@@ -31,9 +31,9 @@ from .versions import Version
31
31
  from .versions import canonicalize_version
32
32
 
33
33
 
34
- UnparsedVersion = ta.Union['Version', str]
34
+ UnparsedVersion = ta.Union['Version', str] # ta.TypeAlias
35
35
  UnparsedVersionVar = ta.TypeVar('UnparsedVersionVar', bound=UnparsedVersion)
36
- CallableVersionOperator = ta.Callable[['Version', str], bool]
36
+ CallableVersionOperator = ta.Callable[['Version', str], bool] # ta.TypeAlias
37
37
 
38
38
 
39
39
  ##
@@ -27,13 +27,13 @@ import re
27
27
  import typing as ta
28
28
 
29
29
 
30
- VersionLocalType = ta.Tuple[ta.Union[int, str], ...]
30
+ VersionLocalType = ta.Tuple[ta.Union[int, str], ...] # ta.TypeAlias
31
31
 
32
- VersionCmpPrePostDevType = ta.Union['InfinityVersionType', 'NegativeInfinityVersionType', ta.Tuple[str, int]]
33
- _VersionCmpLocalType0 = ta.Tuple[ta.Union[ta.Tuple[int, str], ta.Tuple['NegativeInfinityVersionType', ta.Union[int, str]]], ...] # noqa
34
- VersionCmpLocalType = ta.Union['NegativeInfinityVersionType', _VersionCmpLocalType0]
35
- VersionCmpKey = ta.Tuple[int, ta.Tuple[int, ...], VersionCmpPrePostDevType, VersionCmpPrePostDevType, VersionCmpPrePostDevType, VersionCmpLocalType] # noqa
36
- VersionComparisonMethod = ta.Callable[[VersionCmpKey, VersionCmpKey], bool]
32
+ VersionCmpPrePostDevType = ta.Union['InfinityVersionType', 'NegativeInfinityVersionType', ta.Tuple[str, int]] # ta.TypeAlias # noqa
33
+ _VersionCmpLocalType0 = ta.Tuple[ta.Union[ta.Tuple[int, str], ta.Tuple['NegativeInfinityVersionType', ta.Union[int, str]]], ...] # ta.TypeAlias # noqa
34
+ VersionCmpLocalType = ta.Union['NegativeInfinityVersionType', _VersionCmpLocalType0] # ta.TypeAlias
35
+ VersionCmpKey = ta.Tuple[int, ta.Tuple[int, ...], VersionCmpPrePostDevType, VersionCmpPrePostDevType, VersionCmpPrePostDevType, VersionCmpLocalType] # ta.TypeAlias # noqa
36
+ VersionComparisonMethod = ta.Callable[[VersionCmpKey, VersionCmpKey], bool] # ta.TypeAlias
37
37
 
38
38
 
39
39
  ##
@@ -23,8 +23,8 @@ import sys
23
23
  import typing as ta
24
24
 
25
25
  from omlish import check
26
- from omlish import concurrent as cu
27
26
  from omlish import lang
27
+ from omlish.concurrent import all as conc
28
28
 
29
29
  from ...cli import CliModule
30
30
 
@@ -163,7 +163,7 @@ def run(
163
163
  specs.append(spec)
164
164
 
165
165
  out: dict[str, Item] = {}
166
- with cu.new_executor(num_threads) as ex:
166
+ with conc.new_executor(num_threads) as ex:
167
167
  futs = [ex.submit(run_one, spec, **kwargs) for spec in specs]
168
168
  for fut in futs:
169
169
  item = fut.result()
omdev/scripts/ci.py CHANGED
@@ -108,7 +108,7 @@ AsyncExitStackedT = ta.TypeVar('AsyncExitStackedT', bound='AsyncExitStacked')
108
108
  LogLevel = int # ta.TypeAlias
109
109
 
110
110
  # ../../omlish/sockets/addresses.py
111
- SocketAddress = ta.Any
111
+ SocketAddress = ta.Any # ta.TypeAlias
112
112
 
113
113
  # github/api/v2/api.py
114
114
  GithubCacheServiceV2RequestT = ta.TypeVar('GithubCacheServiceV2RequestT')
@@ -150,10 +150,10 @@ HttpHandler = ta.Callable[['HttpHandlerRequest'], 'HttpHandlerResponse'] # ta.T
150
150
  HttpHandlerResponseData = ta.Union[bytes, 'HttpHandlerResponseStreamedData'] # ta.TypeAlias # noqa
151
151
 
152
152
  # ../../omlish/lite/inject.py
153
- InjectorKeyCls = ta.Union[type, ta.NewType]
154
- InjectorProviderFn = ta.Callable[['Injector'], ta.Any]
155
- InjectorProviderFnMap = ta.Mapping['InjectorKey', 'InjectorProviderFn']
156
- InjectorBindingOrBindings = ta.Union['InjectorBinding', 'InjectorBindings']
153
+ InjectorKeyCls = ta.Union[type, ta.NewType] # ta.TypeAlias
154
+ InjectorProviderFn = ta.Callable[['Injector'], ta.Any] # ta.TypeAlias
155
+ InjectorProviderFnMap = ta.Mapping['InjectorKey', 'InjectorProviderFn'] # ta.TypeAlias
156
+ InjectorBindingOrBindings = ta.Union['InjectorBinding', 'InjectorBindings'] # ta.TypeAlias
157
157
 
158
158
  # ../../omlish/logs/contexts.py
159
159
  LoggingContextInfoT = ta.TypeVar('LoggingContextInfoT', bound=LoggingContextInfo)
@@ -165,7 +165,7 @@ SocketServerHandler = ta.Callable[['SocketAndAddress'], None] # ta.TypeAlias
165
165
  DataServerTargetT = ta.TypeVar('DataServerTargetT', bound='DataServerTarget')
166
166
 
167
167
  # ../../omlish/http/coro/server/server.py
168
- CoroHttpServerFactory = ta.Callable[[SocketAddress], 'CoroHttpServer']
168
+ CoroHttpServerFactory = ta.Callable[[SocketAddress], 'CoroHttpServer'] # ta.TypeAlias
169
169
 
170
170
  # ../../omlish/subprocesses/base.py
171
171
  SubprocessChannelOption = ta.Literal['pipe', 'stdout', 'devnull'] # ta.TypeAlias
omdev/scripts/interp.py CHANGED
@@ -53,12 +53,12 @@ if sys.version_info < (3, 8):
53
53
 
54
54
 
55
55
  # ../packaging/versions.py
56
- VersionLocalType = ta.Tuple[ta.Union[int, str], ...]
57
- VersionCmpPrePostDevType = ta.Union['InfinityVersionType', 'NegativeInfinityVersionType', ta.Tuple[str, int]]
58
- _VersionCmpLocalType0 = ta.Tuple[ta.Union[ta.Tuple[int, str], ta.Tuple['NegativeInfinityVersionType', ta.Union[int, str]]], ...] # noqa
59
- VersionCmpLocalType = ta.Union['NegativeInfinityVersionType', _VersionCmpLocalType0]
60
- VersionCmpKey = ta.Tuple[int, ta.Tuple[int, ...], VersionCmpPrePostDevType, VersionCmpPrePostDevType, VersionCmpPrePostDevType, VersionCmpLocalType] # noqa
61
- VersionComparisonMethod = ta.Callable[[VersionCmpKey, VersionCmpKey], bool]
56
+ VersionLocalType = ta.Tuple[ta.Union[int, str], ...] # ta.TypeAlias
57
+ VersionCmpPrePostDevType = ta.Union['InfinityVersionType', 'NegativeInfinityVersionType', ta.Tuple[str, int]] # ta.TypeAlias # noqa
58
+ _VersionCmpLocalType0 = ta.Tuple[ta.Union[ta.Tuple[int, str], ta.Tuple['NegativeInfinityVersionType', ta.Union[int, str]]], ...] # ta.TypeAlias # noqa
59
+ VersionCmpLocalType = ta.Union['NegativeInfinityVersionType', _VersionCmpLocalType0] # ta.TypeAlias
60
+ VersionCmpKey = ta.Tuple[int, ta.Tuple[int, ...], VersionCmpPrePostDevType, VersionCmpPrePostDevType, VersionCmpPrePostDevType, VersionCmpLocalType] # ta.TypeAlias # noqa
61
+ VersionComparisonMethod = ta.Callable[[VersionCmpKey, VersionCmpKey], bool] # ta.TypeAlias
62
62
 
63
63
  # ../../omlish/lite/cached.py
64
64
  T = ta.TypeVar('T')
@@ -76,9 +76,9 @@ CheckArgsRenderer = ta.Callable[..., ta.Optional[str]] # ta.TypeAlias
76
76
  LogLevel = int # ta.TypeAlias
77
77
 
78
78
  # ../packaging/specifiers.py
79
- UnparsedVersion = ta.Union['Version', str]
79
+ UnparsedVersion = ta.Union['Version', str] # ta.TypeAlias
80
80
  UnparsedVersionVar = ta.TypeVar('UnparsedVersionVar', bound=UnparsedVersion)
81
- CallableVersionOperator = ta.Callable[['Version', str], bool]
81
+ CallableVersionOperator = ta.Callable[['Version', str], bool] # ta.TypeAlias
82
82
 
83
83
  # ../../omlish/argparse/cli.py
84
84
  ArgparseCmdFn = ta.Callable[[], ta.Optional[int]] # ta.TypeAlias
@@ -93,10 +93,10 @@ TimeoutLike = ta.Union['Timeout', ta.Type['Timeout.DEFAULT'], ta.Iterable['Timeo
93
93
  AwaitableT = ta.TypeVar('AwaitableT', bound=ta.Awaitable)
94
94
 
95
95
  # ../../omlish/lite/inject.py
96
- InjectorKeyCls = ta.Union[type, ta.NewType]
97
- InjectorProviderFn = ta.Callable[['Injector'], ta.Any]
98
- InjectorProviderFnMap = ta.Mapping['InjectorKey', 'InjectorProviderFn']
99
- InjectorBindingOrBindings = ta.Union['InjectorBinding', 'InjectorBindings']
96
+ InjectorKeyCls = ta.Union[type, ta.NewType] # ta.TypeAlias
97
+ InjectorProviderFn = ta.Callable[['Injector'], ta.Any] # ta.TypeAlias
98
+ InjectorProviderFnMap = ta.Mapping['InjectorKey', 'InjectorProviderFn'] # ta.TypeAlias
99
+ InjectorBindingOrBindings = ta.Union['InjectorBinding', 'InjectorBindings'] # ta.TypeAlias
100
100
 
101
101
  # ../../omlish/subprocesses/base.py
102
102
  SubprocessChannelOption = ta.Literal['pipe', 'stdout', 'devnull'] # ta.TypeAlias
@@ -84,12 +84,12 @@ if sys.version_info < (3, 8):
84
84
 
85
85
 
86
86
  # ../packaging/versions.py
87
- VersionLocalType = ta.Tuple[ta.Union[int, str], ...]
88
- VersionCmpPrePostDevType = ta.Union['InfinityVersionType', 'NegativeInfinityVersionType', ta.Tuple[str, int]]
89
- _VersionCmpLocalType0 = ta.Tuple[ta.Union[ta.Tuple[int, str], ta.Tuple['NegativeInfinityVersionType', ta.Union[int, str]]], ...] # noqa
90
- VersionCmpLocalType = ta.Union['NegativeInfinityVersionType', _VersionCmpLocalType0]
91
- VersionCmpKey = ta.Tuple[int, ta.Tuple[int, ...], VersionCmpPrePostDevType, VersionCmpPrePostDevType, VersionCmpPrePostDevType, VersionCmpLocalType] # noqa
92
- VersionComparisonMethod = ta.Callable[[VersionCmpKey, VersionCmpKey], bool]
87
+ VersionLocalType = ta.Tuple[ta.Union[int, str], ...] # ta.TypeAlias
88
+ VersionCmpPrePostDevType = ta.Union['InfinityVersionType', 'NegativeInfinityVersionType', ta.Tuple[str, int]] # ta.TypeAlias # noqa
89
+ _VersionCmpLocalType0 = ta.Tuple[ta.Union[ta.Tuple[int, str], ta.Tuple['NegativeInfinityVersionType', ta.Union[int, str]]], ...] # ta.TypeAlias # noqa
90
+ VersionCmpLocalType = ta.Union['NegativeInfinityVersionType', _VersionCmpLocalType0] # ta.TypeAlias
91
+ VersionCmpKey = ta.Tuple[int, ta.Tuple[int, ...], VersionCmpPrePostDevType, VersionCmpPrePostDevType, VersionCmpPrePostDevType, VersionCmpLocalType] # ta.TypeAlias # noqa
92
+ VersionComparisonMethod = ta.Callable[[VersionCmpKey, VersionCmpKey], bool] # ta.TypeAlias
93
93
 
94
94
  # ../../omlish/formats/toml/parser.py
95
95
  TomlParseFloat = ta.Callable[[str], ta.Any] # ta.TypeAlias
@@ -117,9 +117,9 @@ A2 = ta.TypeVar('A2')
117
117
  LogLevel = int # ta.TypeAlias
118
118
 
119
119
  # ../packaging/specifiers.py
120
- UnparsedVersion = ta.Union['Version', str]
120
+ UnparsedVersion = ta.Union['Version', str] # ta.TypeAlias
121
121
  UnparsedVersionVar = ta.TypeVar('UnparsedVersionVar', bound=UnparsedVersion)
122
- CallableVersionOperator = ta.Callable[['Version', str], bool]
122
+ CallableVersionOperator = ta.Callable[['Version', str], bool] # ta.TypeAlias
123
123
 
124
124
  # ../../omlish/argparse/cli.py
125
125
  ArgparseCmdFn = ta.Callable[[], ta.Optional[int]] # ta.TypeAlias
@@ -141,10 +141,10 @@ LoggingContextInfo = ta.Any # ta.TypeAlias
141
141
  AwaitableT = ta.TypeVar('AwaitableT', bound=ta.Awaitable)
142
142
 
143
143
  # ../../omlish/lite/inject.py
144
- InjectorKeyCls = ta.Union[type, ta.NewType]
145
- InjectorProviderFn = ta.Callable[['Injector'], ta.Any]
146
- InjectorProviderFnMap = ta.Mapping['InjectorKey', 'InjectorProviderFn']
147
- InjectorBindingOrBindings = ta.Union['InjectorBinding', 'InjectorBindings']
144
+ InjectorKeyCls = ta.Union[type, ta.NewType] # ta.TypeAlias
145
+ InjectorProviderFn = ta.Callable[['Injector'], ta.Any] # ta.TypeAlias
146
+ InjectorProviderFnMap = ta.Mapping['InjectorKey', 'InjectorProviderFn'] # ta.TypeAlias
147
+ InjectorBindingOrBindings = ta.Union['InjectorBinding', 'InjectorBindings'] # ta.TypeAlias
148
148
 
149
149
  # ../../omlish/logs/contexts.py
150
150
  LoggingContextInfoT = ta.TypeVar('LoggingContextInfoT', bound=LoggingContextInfo)
omdev/tools/docker.py CHANGED
@@ -13,12 +13,14 @@ import re
13
13
  import shutil
14
14
  import subprocess
15
15
  import sys
16
+ import threading
16
17
  import typing as ta
17
18
 
18
19
  from omlish import check
19
20
  from omlish import lang
20
21
  from omlish import marshal as msh
21
22
  from omlish.argparse import all as ap
23
+ from omlish.concurrent import all as conc
22
24
  from omlish.docker import all as dck
23
25
  from omlish.docker.ns1 import build_docker_ns1_run_cmd
24
26
  from omlish.formats import json
@@ -204,6 +206,7 @@ class Cli(ap.Cli):
204
206
 
205
207
  @ap.cmd(
206
208
  ap.arg('-f', '--file'),
209
+ ap.arg('-p', '--parallelism', type=int, default=4),
207
210
  )
208
211
  def compose_image_updates(self) -> None:
209
212
  if self.args.file:
@@ -215,23 +218,32 @@ class Cli(ap.Cli):
215
218
  yml_src = f.read()
216
219
 
217
220
  cfg_dct = yaml.safe_load(yml_src)
218
- for svc_name, svc_dct in cfg_dct.get('services', {}).items():
219
- if not (img := svc_dct.get('image')):
220
- continue
221
221
 
222
+ print_lock = threading.Lock()
223
+
224
+ def do_svc(svc_name: str, img: str) -> None: # noqa
222
225
  repo, _, base = img.partition(':')
223
226
  try:
224
227
  if (info := dck.get_hub_repo_info(repo)) is None:
225
- continue
228
+ return
226
229
 
227
230
  lt = dck.select_latest_tag(info.tags, base=base)
228
231
  if f'{repo}:{lt}' == img:
229
- continue
232
+ return
230
233
 
231
- print(f'{svc_name}: {lt}')
234
+ with print_lock:
235
+ print(f'{svc_name}: {lt}')
232
236
 
233
237
  except Exception as e: # noqa
234
- print(f'Error checking docker update for {svc_name}: {e!r}', file=sys.stderr)
238
+ with print_lock:
239
+ print(f'Error checking docker update for {svc_name}: {e!r}', file=sys.stderr)
240
+
241
+ with conc.new_executor(self.args.parallelism) as exe:
242
+ conc.wait_futures([
243
+ exe.submit(do_svc, svc_name, img)
244
+ for svc_name, svc_dct in cfg_dct.get('services', {}).items()
245
+ if (img := svc_dct.get('image'))
246
+ ])
235
247
 
236
248
  #
237
249
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omdev
3
- Version: 0.0.0.dev433
3
+ Version: 0.0.0.dev435
4
4
  Summary: omdev
5
5
  Author: wrmsr
6
6
  License-Expression: BSD-3-Clause
@@ -14,7 +14,7 @@ Classifier: Programming Language :: Python :: 3.13
14
14
  Requires-Python: >=3.13
15
15
  Description-Content-Type: text/markdown
16
16
  License-File: LICENSE
17
- Requires-Dist: omlish==0.0.0.dev433
17
+ Requires-Dist: omlish==0.0.0.dev435
18
18
  Provides-Extra: all
19
19
  Requires-Dist: black~=25.1; extra == "all"
20
20
  Requires-Dist: pycparser~=2.23; extra == "all"
@@ -1,4 +1,4 @@
1
- omdev/.omlish-manifests.json,sha256=h7weS1edP_S_5YO-kYLD8Exg4kW60JQXsHH4mKmgmpM,11909
1
+ omdev/.omlish-manifests.json,sha256=YvmHgYPueZ-uG4KeZAk0bOtw3GaDfld_nYnSng2Pz_I,11909
2
2
  omdev/__about__.py,sha256=x-dVL4rAhU7f3I8Y98CN8oHwxcqwEF3-W9KA4dBmdTc,1202
3
3
  omdev/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  omdev/cmake.py,sha256=gu49t10_syXh_TUJs4POsxeFs8we8Y3XTOOPgIXmGvg,4608
@@ -210,8 +210,8 @@ omdev/packaging/marshal.py,sha256=nr7wN-Pi3FGAuh3HaladzDgOgyQl1-vtmxJ_AUOo4d8,23
210
210
  omdev/packaging/names.py,sha256=-orp16m20gSFeKRiGkRNyqFVV4S1y_Djvjdq_5hNwpY,2533
211
211
  omdev/packaging/requires.py,sha256=rgEeJh8shqnFCPBtG_3Tu0vASXsvwK26ikJauFcrz0I,15691
212
212
  omdev/packaging/revisions.py,sha256=tLNDVtPiygB8mSxwp-kDxeEHhpBzD0jayndjsgUOfkM,5055
213
- omdev/packaging/specifiers.py,sha256=ooNtc5gJM6d7EnltVFbWs00QfLMNvbgD2M8kguPtpcY,17455
214
- omdev/packaging/versions.py,sha256=aaB9zKTBCpILIsz6YRJLrmGoGv4gqyhsAFfZ6blye2A,12267
213
+ omdev/packaging/specifiers.py,sha256=t6UhvSlmwHmSvqqPb4XnCq9H41HiqeAqRvCUy2DF_P8,17487
214
+ omdev/packaging/versions.py,sha256=SBh4LYfBYVi8SXMoWcOWY-Y3llOF-6cxayVaIM1NXMs,12371
215
215
  omdev/packaging/wheelfile.py,sha256=xv-VpLwhgj1UKounbawAOtkJENRvkJJaHSjD4_zZz_o,10016
216
216
  omdev/precheck/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
217
217
  omdev/precheck/__main__.py,sha256=UEuS4z5-heIrwTtB-ONe1KeXJdqj8tYXMqWMpuO10so,165
@@ -258,7 +258,7 @@ omdev/py/scripts/bumpversion.py,sha256=UDMtTd_wfkqsmrtHqTKDilWVzUBigzZAOCVND7t9j
258
258
  omdev/py/scripts/execstat.py,sha256=iJD48Mn8lF4V7hNvOrChfBRjmItWJTAQzWwHM0wSTBk,4792
259
259
  omdev/py/scripts/importtrace.py,sha256=OOf9GvB6PWP2uVzogSYsM5JGUAoSfMx1IKfYUXB8ABc,14245
260
260
  omdev/py/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
261
- omdev/py/tools/importscan.py,sha256=4dCH0coX0OqNwesteKaTE8GxuSfLhgXYQlzNUXLiSNY,4640
261
+ omdev/py/tools/importscan.py,sha256=OYPZBg__u6On416tcmYfRTMkjr1ZlFcOAy9AafJ8iuo,4648
262
262
  omdev/py/tools/mkrelimp.py,sha256=40gE1p_w-f_oWptUiS8TqODhso6ow46UCEptw4VbH0c,4040
263
263
  omdev/pyproject/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
264
264
  omdev/pyproject/__main__.py,sha256=gn3Rl1aYPYdiTtEqa9ifi0t-e4ZwPY0vhJ4UXvYdJDY,165
@@ -273,9 +273,9 @@ omdev/pyproject/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
273
273
  omdev/pyproject/resources/docker-dev.sh,sha256=DHkz5D18jok_oDolfg2mqrvGRWFoCe9GQo04dR1czcc,838
274
274
  omdev/pyproject/resources/python.sh,sha256=rFaN4SiJ9hdLDXXsDTwugI6zsw6EPkgYMmtacZeTbvw,749
275
275
  omdev/scripts/__init__.py,sha256=MKCvUAEQwsIvwLixwtPlpBqmkMXLCnjjXyAXvVpDwVk,91
276
- omdev/scripts/ci.py,sha256=Bk7Y3M0trwgTYnOP8RXuNI6f5YrnBa4fyANRW-S62GU,423440
277
- omdev/scripts/interp.py,sha256=39U9gjJQX0feYdXE9VpzKsE3msVBM-LiLwKaCgWNTKU,166443
278
- omdev/scripts/pyproject.py,sha256=DV-nS6mF7_d4c08TWoZKGWc-_xcSpobJ2pad5UDTx2Q,330499
276
+ omdev/scripts/ci.py,sha256=53xZyiwiMQpi8dh4I5Fs_HjIgF_QcOGkKLmI7goPrF4,423536
277
+ omdev/scripts/interp.py,sha256=-mZ0RUnDiq-798F_HDt1OQG8k0hiWbSmaR8iepuwfyo,166643
278
+ omdev/scripts/pyproject.py,sha256=YAM8FbJ6dV0gAGFchRajPqmL0gpQc1S8uKxdQjaIay8,330699
279
279
  omdev/scripts/slowcat.py,sha256=PwdT-pg62imEEb6kcOozl9_YUi-4KopvjvzWT1OmGb0,2717
280
280
  omdev/scripts/tmpexec.py,sha256=t0nErDRALjTk7H0X8ADjZUIDFjlPNzOOokmjCjBHdzs,1431
281
281
  omdev/tokens/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -286,7 +286,7 @@ omdev/tools/__init__.py,sha256=iVJAOQ0viGTQOm0DLX4uZLro-9jOioYJGLg9s0kDx1A,78
286
286
  omdev/tools/cloc.py,sha256=BiIf2PnnoRH6ByH4mnua69Vv-ZDPHsSAPUds7giRolI,6013
287
287
  omdev/tools/diff.py,sha256=S6ddB7pBeMtzKh2hiHfzQ93pj6mclKt1UZQMKy4Bt5M,520
288
288
  omdev/tools/doc.py,sha256=PCtqDjFA55Ed4QVUpMiw05NwyXivCeox-ZE_JDN0BD0,2575
289
- omdev/tools/docker.py,sha256=4TdpKiWMr9eCffAPHo6sAWGURGTYMY5AK_F5lmnwlJA,7363
289
+ omdev/tools/docker.py,sha256=Ipia1OKIf7EQyS4HnTYjTzfeOKodLMAQRVYsEAWDHwk,7793
290
290
  omdev/tools/linehisto.py,sha256=0ZNm34EuiZBE9Q2YC6KNLNNydNT8QPSOwvYzXiU9S2Q,8881
291
291
  omdev/tools/mkenv.py,sha256=nqUcQgVznF0UKYd5toXCb0WIGVBkduh5Cd31q1zou3o,2289
292
292
  omdev/tools/notebook.py,sha256=MGi2JEwyIPR1n7gakaaYZL1HHbSVmDKGQROqH56ppgU,3499
@@ -319,9 +319,9 @@ omdev/tools/jsonview/resources/jsonview.js,sha256=faDvXDOXKvEvjOuIlz4D3F2ReQXb_b
319
319
  omdev/tools/pawk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
320
320
  omdev/tools/pawk/__main__.py,sha256=VCqeRVnqT1RPEoIrqHFSu4PXVMg4YEgF4qCQm90-eRI,66
321
321
  omdev/tools/pawk/pawk.py,sha256=ao5mdrpiSU4AZ8mBozoEaV3UVlmVTnRG9wD9XP70MZE,11429
322
- omdev-0.0.0.dev433.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
323
- omdev-0.0.0.dev433.dist-info/METADATA,sha256=BICjsiPYpqxurhsQbqj2SDGXDUc9-p20F9LlkU_bilQ,5100
324
- omdev-0.0.0.dev433.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
325
- omdev-0.0.0.dev433.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
326
- omdev-0.0.0.dev433.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
327
- omdev-0.0.0.dev433.dist-info/RECORD,,
322
+ omdev-0.0.0.dev435.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
323
+ omdev-0.0.0.dev435.dist-info/METADATA,sha256=agXcPn6bdrUyVe7031GMG6go93eoWIunltdGux4sWaM,5100
324
+ omdev-0.0.0.dev435.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
325
+ omdev-0.0.0.dev435.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
326
+ omdev-0.0.0.dev435.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
327
+ omdev-0.0.0.dev435.dist-info/RECORD,,