omdev 0.0.0.dev221__py3-none-any.whl → 0.0.0.dev223__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. omdev/ci/cache.py +40 -23
  2. omdev/ci/ci.py +49 -109
  3. omdev/ci/cli.py +24 -23
  4. omdev/ci/docker/__init__.py +0 -0
  5. omdev/ci/docker/buildcaching.py +69 -0
  6. omdev/ci/docker/cache.py +57 -0
  7. omdev/ci/{docker.py → docker/cmds.py} +1 -44
  8. omdev/ci/docker/imagepulling.py +64 -0
  9. omdev/ci/docker/inject.py +37 -0
  10. omdev/ci/docker/utils.py +48 -0
  11. omdev/ci/github/cache.py +15 -5
  12. omdev/ci/github/inject.py +30 -0
  13. omdev/ci/inject.py +61 -0
  14. omdev/dataserver/__init__.py +1 -0
  15. omdev/dataserver/handlers.py +198 -0
  16. omdev/dataserver/http.py +69 -0
  17. omdev/dataserver/routes.py +49 -0
  18. omdev/dataserver/server.py +90 -0
  19. omdev/dataserver/targets.py +89 -0
  20. omdev/oci/__init__.py +0 -0
  21. omdev/oci/building.py +221 -0
  22. omdev/oci/compression.py +8 -0
  23. omdev/oci/data.py +151 -0
  24. omdev/oci/datarefs.py +138 -0
  25. omdev/oci/dataserver.py +61 -0
  26. omdev/oci/loading.py +142 -0
  27. omdev/oci/media.py +179 -0
  28. omdev/oci/packing.py +381 -0
  29. omdev/oci/repositories.py +159 -0
  30. omdev/oci/tars.py +144 -0
  31. omdev/pyproject/resources/python.sh +1 -1
  32. omdev/scripts/ci.py +1841 -384
  33. omdev/scripts/interp.py +100 -22
  34. omdev/scripts/pyproject.py +122 -28
  35. {omdev-0.0.0.dev221.dist-info → omdev-0.0.0.dev223.dist-info}/METADATA +2 -2
  36. {omdev-0.0.0.dev221.dist-info → omdev-0.0.0.dev223.dist-info}/RECORD +40 -15
  37. {omdev-0.0.0.dev221.dist-info → omdev-0.0.0.dev223.dist-info}/LICENSE +0 -0
  38. {omdev-0.0.0.dev221.dist-info → omdev-0.0.0.dev223.dist-info}/WHEEL +0 -0
  39. {omdev-0.0.0.dev221.dist-info → omdev-0.0.0.dev223.dist-info}/entry_points.txt +0 -0
  40. {omdev-0.0.0.dev221.dist-info → omdev-0.0.0.dev223.dist-info}/top_level.txt +0 -0
omdev/scripts/interp.py CHANGED
@@ -3848,7 +3848,51 @@ class BaseSubprocesses(abc.ABC): # noqa
3848
3848
  ##
3849
3849
 
3850
3850
 
3851
+ @dc.dataclass(frozen=True)
3852
+ class SubprocessRun:
3853
+ cmd: ta.Sequence[str]
3854
+ input: ta.Any = None
3855
+ timeout: ta.Optional[float] = None
3856
+ check: bool = False
3857
+ capture_output: ta.Optional[bool] = None
3858
+ kwargs: ta.Optional[ta.Mapping[str, ta.Any]] = None
3859
+
3860
+
3861
+ @dc.dataclass(frozen=True)
3862
+ class SubprocessRunOutput(ta.Generic[T]):
3863
+ proc: T
3864
+
3865
+ returncode: int # noqa
3866
+
3867
+ stdout: ta.Optional[bytes] = None
3868
+ stderr: ta.Optional[bytes] = None
3869
+
3870
+
3851
3871
  class AbstractSubprocesses(BaseSubprocesses, abc.ABC):
3872
+ @abc.abstractmethod
3873
+ def run_(self, run: SubprocessRun) -> SubprocessRunOutput:
3874
+ raise NotImplementedError
3875
+
3876
+ def run(
3877
+ self,
3878
+ *cmd: str,
3879
+ input: ta.Any = None, # noqa
3880
+ timeout: ta.Optional[float] = None,
3881
+ check: bool = False,
3882
+ capture_output: ta.Optional[bool] = None,
3883
+ **kwargs: ta.Any,
3884
+ ) -> SubprocessRunOutput:
3885
+ return self.run_(SubprocessRun(
3886
+ cmd=cmd,
3887
+ input=input,
3888
+ timeout=timeout,
3889
+ check=check,
3890
+ capture_output=capture_output,
3891
+ kwargs=kwargs,
3892
+ ))
3893
+
3894
+ #
3895
+
3852
3896
  @abc.abstractmethod
3853
3897
  def check_call(
3854
3898
  self,
@@ -3912,6 +3956,25 @@ class AbstractSubprocesses(BaseSubprocesses, abc.ABC):
3912
3956
 
3913
3957
 
3914
3958
  class Subprocesses(AbstractSubprocesses):
3959
+ def run_(self, run: SubprocessRun) -> SubprocessRunOutput[subprocess.CompletedProcess]:
3960
+ proc = subprocess.run(
3961
+ run.cmd,
3962
+ input=run.input,
3963
+ timeout=run.timeout,
3964
+ check=run.check,
3965
+ capture_output=run.capture_output or False,
3966
+ **(run.kwargs or {}),
3967
+ )
3968
+
3969
+ return SubprocessRunOutput(
3970
+ proc=proc,
3971
+
3972
+ returncode=proc.returncode,
3973
+
3974
+ stdout=proc.stdout, # noqa
3975
+ stderr=proc.stderr, # noqa
3976
+ )
3977
+
3915
3978
  def check_call(
3916
3979
  self,
3917
3980
  *cmd: str,
@@ -3937,6 +4000,30 @@ subprocesses = Subprocesses()
3937
4000
 
3938
4001
 
3939
4002
  class AbstractAsyncSubprocesses(BaseSubprocesses):
4003
+ @abc.abstractmethod
4004
+ async def run_(self, run: SubprocessRun) -> SubprocessRunOutput:
4005
+ raise NotImplementedError
4006
+
4007
+ def run(
4008
+ self,
4009
+ *cmd: str,
4010
+ input: ta.Any = None, # noqa
4011
+ timeout: ta.Optional[float] = None,
4012
+ check: bool = False,
4013
+ capture_output: ta.Optional[bool] = None,
4014
+ **kwargs: ta.Any,
4015
+ ) -> ta.Awaitable[SubprocessRunOutput]:
4016
+ return self.run_(SubprocessRun(
4017
+ cmd=cmd,
4018
+ input=input,
4019
+ timeout=timeout,
4020
+ check=check,
4021
+ capture_output=capture_output,
4022
+ kwargs=kwargs,
4023
+ ))
4024
+
4025
+ #
4026
+
3940
4027
  @abc.abstractmethod
3941
4028
  async def check_call(
3942
4029
  self,
@@ -4204,41 +4291,32 @@ class AsyncioSubprocesses(AbstractAsyncSubprocesses):
4204
4291
 
4205
4292
  #
4206
4293
 
4207
- @dc.dataclass(frozen=True)
4208
- class RunOutput:
4209
- proc: asyncio.subprocess.Process
4210
- stdout: ta.Optional[bytes]
4211
- stderr: ta.Optional[bytes]
4294
+ async def run_(self, run: SubprocessRun) -> SubprocessRunOutput[asyncio.subprocess.Process]:
4295
+ kwargs = dict(run.kwargs or {})
4212
4296
 
4213
- async def run(
4214
- self,
4215
- *cmd: str,
4216
- input: ta.Any = None, # noqa
4217
- timeout: ta.Optional[float] = None,
4218
- check: bool = False, # noqa
4219
- capture_output: ta.Optional[bool] = None,
4220
- **kwargs: ta.Any,
4221
- ) -> RunOutput:
4222
- if capture_output:
4297
+ if run.capture_output:
4223
4298
  kwargs.setdefault('stdout', subprocess.PIPE)
4224
4299
  kwargs.setdefault('stderr', subprocess.PIPE)
4225
4300
 
4226
4301
  proc: asyncio.subprocess.Process
4227
- async with self.popen(*cmd, **kwargs) as proc:
4228
- stdout, stderr = await self.communicate(proc, input, timeout)
4302
+ async with self.popen(*run.cmd, **kwargs) as proc:
4303
+ stdout, stderr = await self.communicate(proc, run.input, run.timeout)
4229
4304
 
4230
4305
  if check and proc.returncode:
4231
4306
  raise subprocess.CalledProcessError(
4232
4307
  proc.returncode,
4233
- cmd,
4308
+ run.cmd,
4234
4309
  output=stdout,
4235
4310
  stderr=stderr,
4236
4311
  )
4237
4312
 
4238
- return self.RunOutput(
4239
- proc,
4240
- stdout,
4241
- stderr,
4313
+ return SubprocessRunOutput(
4314
+ proc=proc,
4315
+
4316
+ returncode=check.isinstance(proc.returncode, int),
4317
+
4318
+ stdout=stdout,
4319
+ stderr=stderr,
4242
4320
  )
4243
4321
 
4244
4322
  #
@@ -5353,18 +5353,34 @@ class ObjMarshalerManager:
5353
5353
  return reg
5354
5354
 
5355
5355
  if abc.ABC in ty.__bases__:
5356
- impls = [ity for ity in deep_subclasses(ty) if abc.ABC not in ity.__bases__] # type: ignore
5357
- if all(ity.__qualname__.endswith(ty.__name__) for ity in impls):
5358
- ins = {ity: snake_case(ity.__qualname__[:-len(ty.__name__)]) for ity in impls}
5359
- else:
5360
- ins = {ity: ity.__qualname__ for ity in impls}
5356
+ tn = ty.__name__
5357
+ impls: ta.List[ta.Tuple[type, str]] = [ # type: ignore[var-annotated]
5358
+ (ity, ity.__name__)
5359
+ for ity in deep_subclasses(ty)
5360
+ if abc.ABC not in ity.__bases__
5361
+ ]
5362
+
5363
+ if all(itn.endswith(tn) for _, itn in impls):
5364
+ impls = [
5365
+ (ity, snake_case(itn[:-len(tn)]))
5366
+ for ity, itn in impls
5367
+ ]
5368
+
5369
+ dupe_tns = sorted(
5370
+ dn
5371
+ for dn, dc in collections.Counter(itn for _, itn in impls).items()
5372
+ if dc > 1
5373
+ )
5374
+ if dupe_tns:
5375
+ raise KeyError(f'Duplicate impl names for {ty}: {dupe_tns}')
5376
+
5361
5377
  return PolymorphicObjMarshaler.of([
5362
5378
  PolymorphicObjMarshaler.Impl(
5363
5379
  ity,
5364
5380
  itn,
5365
5381
  rec(ity),
5366
5382
  )
5367
- for ity, itn in ins.items()
5383
+ for ity, itn in impls
5368
5384
  ])
5369
5385
 
5370
5386
  if issubclass(ty, enum.Enum):
@@ -6088,7 +6104,51 @@ class BaseSubprocesses(abc.ABC): # noqa
6088
6104
  ##
6089
6105
 
6090
6106
 
6107
+ @dc.dataclass(frozen=True)
6108
+ class SubprocessRun:
6109
+ cmd: ta.Sequence[str]
6110
+ input: ta.Any = None
6111
+ timeout: ta.Optional[float] = None
6112
+ check: bool = False
6113
+ capture_output: ta.Optional[bool] = None
6114
+ kwargs: ta.Optional[ta.Mapping[str, ta.Any]] = None
6115
+
6116
+
6117
+ @dc.dataclass(frozen=True)
6118
+ class SubprocessRunOutput(ta.Generic[T]):
6119
+ proc: T
6120
+
6121
+ returncode: int # noqa
6122
+
6123
+ stdout: ta.Optional[bytes] = None
6124
+ stderr: ta.Optional[bytes] = None
6125
+
6126
+
6091
6127
  class AbstractSubprocesses(BaseSubprocesses, abc.ABC):
6128
+ @abc.abstractmethod
6129
+ def run_(self, run: SubprocessRun) -> SubprocessRunOutput:
6130
+ raise NotImplementedError
6131
+
6132
+ def run(
6133
+ self,
6134
+ *cmd: str,
6135
+ input: ta.Any = None, # noqa
6136
+ timeout: ta.Optional[float] = None,
6137
+ check: bool = False,
6138
+ capture_output: ta.Optional[bool] = None,
6139
+ **kwargs: ta.Any,
6140
+ ) -> SubprocessRunOutput:
6141
+ return self.run_(SubprocessRun(
6142
+ cmd=cmd,
6143
+ input=input,
6144
+ timeout=timeout,
6145
+ check=check,
6146
+ capture_output=capture_output,
6147
+ kwargs=kwargs,
6148
+ ))
6149
+
6150
+ #
6151
+
6092
6152
  @abc.abstractmethod
6093
6153
  def check_call(
6094
6154
  self,
@@ -6152,6 +6212,25 @@ class AbstractSubprocesses(BaseSubprocesses, abc.ABC):
6152
6212
 
6153
6213
 
6154
6214
  class Subprocesses(AbstractSubprocesses):
6215
+ def run_(self, run: SubprocessRun) -> SubprocessRunOutput[subprocess.CompletedProcess]:
6216
+ proc = subprocess.run(
6217
+ run.cmd,
6218
+ input=run.input,
6219
+ timeout=run.timeout,
6220
+ check=run.check,
6221
+ capture_output=run.capture_output or False,
6222
+ **(run.kwargs or {}),
6223
+ )
6224
+
6225
+ return SubprocessRunOutput(
6226
+ proc=proc,
6227
+
6228
+ returncode=proc.returncode,
6229
+
6230
+ stdout=proc.stdout, # noqa
6231
+ stderr=proc.stderr, # noqa
6232
+ )
6233
+
6155
6234
  def check_call(
6156
6235
  self,
6157
6236
  *cmd: str,
@@ -6177,6 +6256,30 @@ subprocesses = Subprocesses()
6177
6256
 
6178
6257
 
6179
6258
  class AbstractAsyncSubprocesses(BaseSubprocesses):
6259
+ @abc.abstractmethod
6260
+ async def run_(self, run: SubprocessRun) -> SubprocessRunOutput:
6261
+ raise NotImplementedError
6262
+
6263
+ def run(
6264
+ self,
6265
+ *cmd: str,
6266
+ input: ta.Any = None, # noqa
6267
+ timeout: ta.Optional[float] = None,
6268
+ check: bool = False,
6269
+ capture_output: ta.Optional[bool] = None,
6270
+ **kwargs: ta.Any,
6271
+ ) -> ta.Awaitable[SubprocessRunOutput]:
6272
+ return self.run_(SubprocessRun(
6273
+ cmd=cmd,
6274
+ input=input,
6275
+ timeout=timeout,
6276
+ check=check,
6277
+ capture_output=capture_output,
6278
+ kwargs=kwargs,
6279
+ ))
6280
+
6281
+ #
6282
+
6180
6283
  @abc.abstractmethod
6181
6284
  async def check_call(
6182
6285
  self,
@@ -6490,41 +6593,32 @@ class AsyncioSubprocesses(AbstractAsyncSubprocesses):
6490
6593
 
6491
6594
  #
6492
6595
 
6493
- @dc.dataclass(frozen=True)
6494
- class RunOutput:
6495
- proc: asyncio.subprocess.Process
6496
- stdout: ta.Optional[bytes]
6497
- stderr: ta.Optional[bytes]
6596
+ async def run_(self, run: SubprocessRun) -> SubprocessRunOutput[asyncio.subprocess.Process]:
6597
+ kwargs = dict(run.kwargs or {})
6498
6598
 
6499
- async def run(
6500
- self,
6501
- *cmd: str,
6502
- input: ta.Any = None, # noqa
6503
- timeout: ta.Optional[float] = None,
6504
- check: bool = False, # noqa
6505
- capture_output: ta.Optional[bool] = None,
6506
- **kwargs: ta.Any,
6507
- ) -> RunOutput:
6508
- if capture_output:
6599
+ if run.capture_output:
6509
6600
  kwargs.setdefault('stdout', subprocess.PIPE)
6510
6601
  kwargs.setdefault('stderr', subprocess.PIPE)
6511
6602
 
6512
6603
  proc: asyncio.subprocess.Process
6513
- async with self.popen(*cmd, **kwargs) as proc:
6514
- stdout, stderr = await self.communicate(proc, input, timeout)
6604
+ async with self.popen(*run.cmd, **kwargs) as proc:
6605
+ stdout, stderr = await self.communicate(proc, run.input, run.timeout)
6515
6606
 
6516
6607
  if check and proc.returncode:
6517
6608
  raise subprocess.CalledProcessError(
6518
6609
  proc.returncode,
6519
- cmd,
6610
+ run.cmd,
6520
6611
  output=stdout,
6521
6612
  stderr=stderr,
6522
6613
  )
6523
6614
 
6524
- return self.RunOutput(
6525
- proc,
6526
- stdout,
6527
- stderr,
6615
+ return SubprocessRunOutput(
6616
+ proc=proc,
6617
+
6618
+ returncode=check.isinstance(proc.returncode, int),
6619
+
6620
+ stdout=stdout,
6621
+ stderr=stderr,
6528
6622
  )
6529
6623
 
6530
6624
  #
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: omdev
3
- Version: 0.0.0.dev221
3
+ Version: 0.0.0.dev223
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.dev221
15
+ Requires-Dist: omlish==0.0.0.dev223
16
16
  Provides-Extra: all
17
17
  Requires-Dist: black~=24.10; extra == "all"
18
18
  Requires-Dist: pycparser~=2.22; extra == "all"
@@ -71,22 +71,30 @@ omdev/cexts/_distutils/compilers/options.py,sha256=H7r5IcLvga5Fs3jjXWIT-6ap3JBdu
71
71
  omdev/cexts/_distutils/compilers/unixccompiler.py,sha256=o1h8QuyupLntv4F21_XjzAZmCiwwxJuTmOirvBSL-Qw,15419
72
72
  omdev/ci/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
73
73
  omdev/ci/__main__.py,sha256=Jsrv3P7LX2Cg08W7ByZfZ1JQT4lgLDPW1qNAmShFuMk,75
74
- omdev/ci/cache.py,sha256=hHV7ovvOwkSRcIF49ovb1A7s43mUl0IWXi1iIQeRMdA,3643
75
- omdev/ci/ci.py,sha256=lEP5wgX0rInvkLJtGZQ-NSLO1Fc0CdQjVaUoMmeRCjQ,8110
76
- omdev/ci/cli.py,sha256=0KBGKxaKzhSbhk3YFDOgzrb_OVOY22a4qpIaTu5zBeA,6243
74
+ omdev/ci/cache.py,sha256=kJkQJPW3fvZ6oERToMeTtqp6SF9x7clVavgmV3LqhTg,4132
75
+ omdev/ci/ci.py,sha256=Itu2kAKL8bih8zJiB7EEPI15Mb6SXlJnS12KlKX79cg,6330
76
+ omdev/ci/cli.py,sha256=URmYwsvNSb4w_kwluLB4Em4ooTpiLG4Bh8Anjx0IVIE,6013
77
77
  omdev/ci/compose.py,sha256=vHLuXO5e2paafBC0Kf-OUGoamtIJmQ19r2U3_oikk_g,4541
78
78
  omdev/ci/consts.py,sha256=1puYfksvGOaVWEnbARM_sdMqs8oTn_VvsevsOtLsFno,21
79
- omdev/ci/docker.py,sha256=d3wQyL-N4mmzkIVbSgNx2Xd-K6RniFQN8nR-THKuDZs,3770
79
+ omdev/ci/inject.py,sha256=ZZWaT_GT4SE_lO8st2Y2IjKmeAtL3LD7KjEVr-E6Zzo,1514
80
80
  omdev/ci/requirements.py,sha256=iKAINTDyVQaqESGlfE9OXkKiW_CZ9kP70PEc121Ix-Q,2100
81
81
  omdev/ci/shell.py,sha256=cBPLMKiAJuNpPGj3ou6hpl88Xw7r99xpL91KJBQ0rqw,835
82
82
  omdev/ci/utils.py,sha256=mnf6yZmholvj0s_7JGbaO0Q1EWCn_saSv6BKMQQUCoQ,1450
83
+ omdev/ci/docker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
+ omdev/ci/docker/buildcaching.py,sha256=h22WabBqTojCyvPMmHlCrquDss9K3gTR8pGj7_8Wxpc,1775
85
+ omdev/ci/docker/cache.py,sha256=ku9S3UWsfbJ582GXsRYRYfWUPAB3Tp6Q3ZVUzHQcvlM,1534
86
+ omdev/ci/docker/cmds.py,sha256=ZRRfQS9FcsDM2CWtNH9WpcpjS1IMGdR2Yg-zSYx8vps,2719
87
+ omdev/ci/docker/imagepulling.py,sha256=pUbEd-HqLGkOcc9O0Ki8dnR34F_ta1a8vrv5eKFcP9Y,1757
88
+ omdev/ci/docker/inject.py,sha256=LzzmbOidzVHoZbFUGZep1udElkmgHm0AU0LdmPFUK5M,1174
89
+ omdev/ci/docker/utils.py,sha256=URioGRzqyqdJBZyOfzsrUwv5hSJ3WM23_sLHES9vamc,1129
83
90
  omdev/ci/github/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
91
  omdev/ci/github/api.py,sha256=Vqza7Hm1OCSfZYgdXF4exkjneqNjFcdO1pl8qmODskU,5198
85
92
  omdev/ci/github/bootstrap.py,sha256=9OuftAz7CUd7uf2Or3sJFVozQQiwu0RGAlTOQNpLQIY,430
86
- omdev/ci/github/cache.py,sha256=cXbPPMIWK-qjGyuCScEJGe-l4QKLwGBkW0GxOhGO_8E,1801
93
+ omdev/ci/github/cache.py,sha256=_fnh_KpsgixUE6V6FezW3B-FiuAwg46Jm5Ko88pItAY,2053
87
94
  omdev/ci/github/cli.py,sha256=6mG0CllwrOoC7MDzKfKDqBHAjfF0gEI6aT5UAGMmuss,1114
88
95
  omdev/ci/github/client.py,sha256=cSewCoHC4cDM4BMQObcrf5g2wwD6rTlil_h2repAkf8,14341
89
96
  omdev/ci/github/env.py,sha256=FQFjP_m7JWM7es9I51U-6UgJTwAt_UCVHFIYKTd9NKM,394
97
+ omdev/ci/github/inject.py,sha256=fw-74VG074dkUQsr5OjcISxsGM_YO9VI09JpcJXE6LM,705
90
98
  omdev/cli/__init__.py,sha256=V_l6VP1SZMlJbO-8CJwSuO9TThOy2S_oaPepNYgIrbE,37
91
99
  omdev/cli/__main__.py,sha256=mOJpgc07o0r5luQ1DlX4tk2PqZkgmbwPbdzJ3KmtjgQ,138
92
100
  omdev/cli/_pathhack.py,sha256=kxqb2kHap68Lkh8b211rDbcgj06hidBiAKA3f9posyc,2119
@@ -99,6 +107,12 @@ omdev/clipboard/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
99
107
  omdev/clipboard/clipboard.py,sha256=9HFpcijpn0XDTI89ZRm2WA1G7O4HsTdVXZHqMULu3N0,1630
100
108
  omdev/clipboard/darwin_cf.py,sha256=SDUMfQtT_IJeDEwmsnxe6YyrZS5tPh_7ujkk1dg65Hg,7688
101
109
  omdev/clipboard/linux_x11.py,sha256=oa-mxMRNaZJOdBAZ8Nki-CAGIb63X8OFUTXKjmiwfSo,6718
110
+ omdev/dataserver/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
111
+ omdev/dataserver/handlers.py,sha256=rCptrmV2RnutmGE5MAgjLDYW1QncqsSHhyRBL4H5bsg,5440
112
+ omdev/dataserver/http.py,sha256=Vfdiri-AX7wNV1ASabU_JNmcKRpwLprWc9FyMUw4FDI,1707
113
+ omdev/dataserver/routes.py,sha256=7Jai21x5z1t1zbS4mC-Sv2g0uogMJnCAX47WR81QVfI,996
114
+ omdev/dataserver/server.py,sha256=ySEITCOxOmCXutsfYaFP46gENsg5w9jMeCySUSNUKmE,2333
115
+ omdev/dataserver/targets.py,sha256=uuewOBIS3x6NM79-xPtQFRlj0-hldP2SLJLTV9Y3J2M,2418
102
116
  omdev/git/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
103
117
  omdev/git/revisions.py,sha256=1YY3Kf2WSalNVE2TgLXmOETct8HfiVEOqfV-qcvMVr4,1161
104
118
  omdev/git/shallow.py,sha256=WwCujIfEzaUpCRjVEVgkjvV3gLF-O1AuQoXLtm00yU4,2525
@@ -140,6 +154,17 @@ omdev/manifests/build.py,sha256=yX0QM6c60aauiF-8oDxrXhkrhhwHcRw_qft_IIW6LD8,8767
140
154
  omdev/manifests/main.py,sha256=7zRlyE0BDPqITEbChlTBRGulAvG1nUZPHXrerNExriE,2126
141
155
  omdev/mypy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
142
156
  omdev/mypy/debug.py,sha256=WcZw-3Z1njg_KFGqi3DB6RuqbBa3dLArJnjVCuY1Mn0,3003
157
+ omdev/oci/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
158
+ omdev/oci/building.py,sha256=g1TY-a2eHgEamYv0mt1L6rOevwOgdp_cW1xdVdjDzTw,5695
159
+ omdev/oci/compression.py,sha256=5hs7u0hImsm22GcQBHGYnP6g9dr-lBZ3E_PzdNVD4WY,134
160
+ omdev/oci/data.py,sha256=1vTTicKXlZskopCkbOwEuj2QUZpBiZclZKHr7I7IAD4,4339
161
+ omdev/oci/datarefs.py,sha256=3o1yNqw2z8_-rsk7-w1c3Xz8d23zVYhEcfMivs1bmXo,2762
162
+ omdev/oci/dataserver.py,sha256=ezZlrCxajMgvDR5Gt_rJbCd0kWDHjt62wsrwNYnCNz8,1864
163
+ omdev/oci/loading.py,sha256=iDMr7JGYRS6CeVrc-LUVjvUA4a49tpgwpJ3y0IImW54,3855
164
+ omdev/oci/media.py,sha256=PM2w1P3YxyvpfaHEDMD8iyBNJa18oVMOLF7KNb2R-DQ,5351
165
+ omdev/oci/packing.py,sha256=5cXsBjv6yrch-vXleo8IGoS9GrZ8l2-JJ_jiQQgdhmE,11195
166
+ omdev/oci/repositories.py,sha256=hOFNMSd5eI3-OQhuUC4x8hczCJko_oW8xvnLUPeZW0k,4321
167
+ omdev/oci/tars.py,sha256=ijy27sJ0r3TtQGvEIk5ol4-kuHDktVQ88-75pvjSnds,3434
143
168
  omdev/packaging/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
144
169
  omdev/packaging/marshal.py,sha256=c4Mdy5-s4O51eEKMWWBwkhTGQ1FoxVI2lD6CxI_cF3k,2379
145
170
  omdev/packaging/names.py,sha256=-a7AykFPVR1i6EYJepbe3ABRrZQ_tPPmK5olzbn9HLI,2528
@@ -171,15 +196,15 @@ omdev/pyproject/reqs.py,sha256=8feZ71YnGzwKbLK4zO28CDQeNcZIIuq6cnkBhs6M-7E,2406
171
196
  omdev/pyproject/venvs.py,sha256=GUurjC7qzGlFL-su4C0YPO_pxbwDAyl1CqyLOB3WLCA,1911
172
197
  omdev/pyproject/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
173
198
  omdev/pyproject/resources/docker-dev.sh,sha256=DHkz5D18jok_oDolfg2mqrvGRWFoCe9GQo04dR1czcc,838
174
- omdev/pyproject/resources/python.sh,sha256=jvrwddYw2KNttpuImLbdCdJK0HsUNMrHtTnmLvhxQxg,757
199
+ omdev/pyproject/resources/python.sh,sha256=rFaN4SiJ9hdLDXXsDTwugI6zsw6EPkgYMmtacZeTbvw,749
175
200
  omdev/scripts/__init__.py,sha256=MKCvUAEQwsIvwLixwtPlpBqmkMXLCnjjXyAXvVpDwVk,91
176
201
  omdev/scripts/bumpversion.py,sha256=Kn7fo73Hs8uJh3Hi3EIyLOlzLPWAC6dwuD_lZ3cIzuY,1064
177
- omdev/scripts/ci.py,sha256=2bMl2vCMHdKQf2AmbcWV9Syv6RdizibYRDlT5Vg6q3E,110397
202
+ omdev/scripts/ci.py,sha256=jiYvMe1qhfwQDZkKK_nj7CiGJfB9S1XgXLOJwQNbquw,147744
178
203
  omdev/scripts/execrss.py,sha256=mR0G0wERBYtQmVIn63lCIIFb5zkCM6X_XOENDFYDBKc,651
179
204
  omdev/scripts/exectime.py,sha256=S2O4MgtzTsFOY2IUJxsrnOIame9tEFc6aOlKP-F1JSg,1541
180
205
  omdev/scripts/importtrace.py,sha256=oa7CtcWJVMNDbyIEiRHej6ICfABfErMeo4_haIqe18Q,14041
181
- omdev/scripts/interp.py,sha256=40KDm-mW8v7Mmhi4WByV9XzWPgwvTfKYsFKlojXR4k0,143362
182
- omdev/scripts/pyproject.py,sha256=TG3Ne6h1W2rwT8nBG9E7QCmN_adPIO24QYaSJ7JGreU,247106
206
+ omdev/scripts/interp.py,sha256=5xf2pqXWWCslLfje8owc1lWu7t0ovs5fis2pF9Tm25M,145436
207
+ omdev/scripts/pyproject.py,sha256=Wkefak-zcAT6vBS-OYcvufIVVPBosa8lXYKzSa_3qLg,249601
183
208
  omdev/scripts/slowcat.py,sha256=lssv4yrgJHiWfOiHkUut2p8E8Tq32zB-ujXESQxFFHY,2728
184
209
  omdev/scripts/tmpexec.py,sha256=WTYcf56Tj2qjYV14AWmV8SfT0u6Y8eIU6cKgQRvEK3c,1442
185
210
  omdev/tokens/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -211,9 +236,9 @@ omdev/tools/json/rendering.py,sha256=tMcjOW5edfozcMSTxxvF7WVTsbYLoe9bCKFh50qyaGw
211
236
  omdev/tools/pawk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
212
237
  omdev/tools/pawk/__main__.py,sha256=VCqeRVnqT1RPEoIrqHFSu4PXVMg4YEgF4qCQm90-eRI,66
213
238
  omdev/tools/pawk/pawk.py,sha256=zsEkfQX0jF5bn712uqPAyBSdJt2dno1LH2oeSMNfXQI,11424
214
- omdev-0.0.0.dev221.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
215
- omdev-0.0.0.dev221.dist-info/METADATA,sha256=6CDNUfEdq1eSOHa4-gjzue31lW2sERzgtp70n8fecpk,1638
216
- omdev-0.0.0.dev221.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
217
- omdev-0.0.0.dev221.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
218
- omdev-0.0.0.dev221.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
219
- omdev-0.0.0.dev221.dist-info/RECORD,,
239
+ omdev-0.0.0.dev223.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
240
+ omdev-0.0.0.dev223.dist-info/METADATA,sha256=5p-9tifCELoH4S5_4ezh2SBXGvh-St_aakL8c1LCaFA,1638
241
+ omdev-0.0.0.dev223.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
242
+ omdev-0.0.0.dev223.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
243
+ omdev-0.0.0.dev223.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
244
+ omdev-0.0.0.dev223.dist-info/RECORD,,