omdev 0.0.0.dev222__py3-none-any.whl → 0.0.0.dev224__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. omdev/ci/cache.py +148 -23
  2. omdev/ci/ci.py +50 -110
  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/cacheserved.py +262 -0
  8. omdev/ci/{docker.py → docker/cmds.py} +1 -44
  9. omdev/ci/docker/dataserver.py +204 -0
  10. omdev/ci/docker/imagepulling.py +65 -0
  11. omdev/ci/docker/inject.py +37 -0
  12. omdev/ci/docker/packing.py +72 -0
  13. omdev/ci/docker/repositories.py +40 -0
  14. omdev/ci/docker/utils.py +48 -0
  15. omdev/ci/github/cache.py +35 -6
  16. omdev/ci/github/client.py +9 -2
  17. omdev/ci/github/inject.py +30 -0
  18. omdev/ci/inject.py +61 -0
  19. omdev/ci/utils.py +0 -49
  20. omdev/dataserver/__init__.py +1 -0
  21. omdev/dataserver/handlers.py +198 -0
  22. omdev/dataserver/http.py +69 -0
  23. omdev/dataserver/routes.py +49 -0
  24. omdev/dataserver/server.py +90 -0
  25. omdev/dataserver/targets.py +121 -0
  26. omdev/oci/building.py +107 -9
  27. omdev/oci/compression.py +8 -0
  28. omdev/oci/data.py +43 -0
  29. omdev/oci/datarefs.py +90 -50
  30. omdev/oci/dataserver.py +64 -0
  31. omdev/oci/loading.py +20 -0
  32. omdev/oci/media.py +20 -0
  33. omdev/oci/pack/__init__.py +0 -0
  34. omdev/oci/pack/packing.py +185 -0
  35. omdev/oci/pack/repositories.py +162 -0
  36. omdev/oci/pack/unpacking.py +204 -0
  37. omdev/oci/repositories.py +84 -2
  38. omdev/oci/tars.py +144 -0
  39. omdev/pyproject/resources/python.sh +1 -1
  40. omdev/scripts/ci.py +2137 -512
  41. omdev/scripts/interp.py +119 -22
  42. omdev/scripts/pyproject.py +141 -28
  43. {omdev-0.0.0.dev222.dist-info → omdev-0.0.0.dev224.dist-info}/METADATA +2 -2
  44. {omdev-0.0.0.dev222.dist-info → omdev-0.0.0.dev224.dist-info}/RECORD +48 -23
  45. {omdev-0.0.0.dev222.dist-info → omdev-0.0.0.dev224.dist-info}/LICENSE +0 -0
  46. {omdev-0.0.0.dev222.dist-info → omdev-0.0.0.dev224.dist-info}/WHEEL +0 -0
  47. {omdev-0.0.0.dev222.dist-info → omdev-0.0.0.dev224.dist-info}/entry_points.txt +0 -0
  48. {omdev-0.0.0.dev222.dist-info → omdev-0.0.0.dev224.dist-info}/top_level.txt +0 -0
omdev/scripts/interp.py CHANGED
@@ -3848,7 +3848,70 @@ 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
+ @classmethod
3861
+ def of(
3862
+ cls,
3863
+ *cmd: str,
3864
+ input: ta.Any = None, # noqa
3865
+ timeout: ta.Optional[float] = None,
3866
+ check: bool = False,
3867
+ capture_output: ta.Optional[bool] = None,
3868
+ **kwargs: ta.Any,
3869
+ ) -> 'SubprocessRun':
3870
+ return cls(
3871
+ cmd=cmd,
3872
+ input=input,
3873
+ timeout=timeout,
3874
+ check=check,
3875
+ capture_output=capture_output,
3876
+ kwargs=kwargs,
3877
+ )
3878
+
3879
+
3880
+ @dc.dataclass(frozen=True)
3881
+ class SubprocessRunOutput(ta.Generic[T]):
3882
+ proc: T
3883
+
3884
+ returncode: int # noqa
3885
+
3886
+ stdout: ta.Optional[bytes] = None
3887
+ stderr: ta.Optional[bytes] = None
3888
+
3889
+
3851
3890
  class AbstractSubprocesses(BaseSubprocesses, abc.ABC):
3891
+ @abc.abstractmethod
3892
+ def run_(self, run: SubprocessRun) -> SubprocessRunOutput:
3893
+ raise NotImplementedError
3894
+
3895
+ def run(
3896
+ self,
3897
+ *cmd: str,
3898
+ input: ta.Any = None, # noqa
3899
+ timeout: ta.Optional[float] = None,
3900
+ check: bool = False,
3901
+ capture_output: ta.Optional[bool] = None,
3902
+ **kwargs: ta.Any,
3903
+ ) -> SubprocessRunOutput:
3904
+ return self.run_(SubprocessRun(
3905
+ cmd=cmd,
3906
+ input=input,
3907
+ timeout=timeout,
3908
+ check=check,
3909
+ capture_output=capture_output,
3910
+ kwargs=kwargs,
3911
+ ))
3912
+
3913
+ #
3914
+
3852
3915
  @abc.abstractmethod
3853
3916
  def check_call(
3854
3917
  self,
@@ -3912,6 +3975,25 @@ class AbstractSubprocesses(BaseSubprocesses, abc.ABC):
3912
3975
 
3913
3976
 
3914
3977
  class Subprocesses(AbstractSubprocesses):
3978
+ def run_(self, run: SubprocessRun) -> SubprocessRunOutput[subprocess.CompletedProcess]:
3979
+ proc = subprocess.run(
3980
+ run.cmd,
3981
+ input=run.input,
3982
+ timeout=run.timeout,
3983
+ check=run.check,
3984
+ capture_output=run.capture_output or False,
3985
+ **(run.kwargs or {}),
3986
+ )
3987
+
3988
+ return SubprocessRunOutput(
3989
+ proc=proc,
3990
+
3991
+ returncode=proc.returncode,
3992
+
3993
+ stdout=proc.stdout, # noqa
3994
+ stderr=proc.stderr, # noqa
3995
+ )
3996
+
3915
3997
  def check_call(
3916
3998
  self,
3917
3999
  *cmd: str,
@@ -3937,6 +4019,30 @@ subprocesses = Subprocesses()
3937
4019
 
3938
4020
 
3939
4021
  class AbstractAsyncSubprocesses(BaseSubprocesses):
4022
+ @abc.abstractmethod
4023
+ async def run_(self, run: SubprocessRun) -> SubprocessRunOutput:
4024
+ raise NotImplementedError
4025
+
4026
+ def run(
4027
+ self,
4028
+ *cmd: str,
4029
+ input: ta.Any = None, # noqa
4030
+ timeout: ta.Optional[float] = None,
4031
+ check: bool = False,
4032
+ capture_output: ta.Optional[bool] = None,
4033
+ **kwargs: ta.Any,
4034
+ ) -> ta.Awaitable[SubprocessRunOutput]:
4035
+ return self.run_(SubprocessRun(
4036
+ cmd=cmd,
4037
+ input=input,
4038
+ timeout=timeout,
4039
+ check=check,
4040
+ capture_output=capture_output,
4041
+ kwargs=kwargs,
4042
+ ))
4043
+
4044
+ #
4045
+
3940
4046
  @abc.abstractmethod
3941
4047
  async def check_call(
3942
4048
  self,
@@ -4204,41 +4310,32 @@ class AsyncioSubprocesses(AbstractAsyncSubprocesses):
4204
4310
 
4205
4311
  #
4206
4312
 
4207
- @dc.dataclass(frozen=True)
4208
- class RunOutput:
4209
- proc: asyncio.subprocess.Process
4210
- stdout: ta.Optional[bytes]
4211
- stderr: ta.Optional[bytes]
4313
+ async def run_(self, run: SubprocessRun) -> SubprocessRunOutput[asyncio.subprocess.Process]:
4314
+ kwargs = dict(run.kwargs or {})
4212
4315
 
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:
4316
+ if run.capture_output:
4223
4317
  kwargs.setdefault('stdout', subprocess.PIPE)
4224
4318
  kwargs.setdefault('stderr', subprocess.PIPE)
4225
4319
 
4226
4320
  proc: asyncio.subprocess.Process
4227
- async with self.popen(*cmd, **kwargs) as proc:
4228
- stdout, stderr = await self.communicate(proc, input, timeout)
4321
+ async with self.popen(*run.cmd, **kwargs) as proc:
4322
+ stdout, stderr = await self.communicate(proc, run.input, run.timeout)
4229
4323
 
4230
4324
  if check and proc.returncode:
4231
4325
  raise subprocess.CalledProcessError(
4232
4326
  proc.returncode,
4233
- cmd,
4327
+ run.cmd,
4234
4328
  output=stdout,
4235
4329
  stderr=stderr,
4236
4330
  )
4237
4331
 
4238
- return self.RunOutput(
4239
- proc,
4240
- stdout,
4241
- stderr,
4332
+ return SubprocessRunOutput(
4333
+ proc=proc,
4334
+
4335
+ returncode=check.isinstance(proc.returncode, int),
4336
+
4337
+ stdout=stdout,
4338
+ stderr=stderr,
4242
4339
  )
4243
4340
 
4244
4341
  #
@@ -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,70 @@ 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
+ @classmethod
6117
+ def of(
6118
+ cls,
6119
+ *cmd: str,
6120
+ input: ta.Any = None, # noqa
6121
+ timeout: ta.Optional[float] = None,
6122
+ check: bool = False,
6123
+ capture_output: ta.Optional[bool] = None,
6124
+ **kwargs: ta.Any,
6125
+ ) -> 'SubprocessRun':
6126
+ return cls(
6127
+ cmd=cmd,
6128
+ input=input,
6129
+ timeout=timeout,
6130
+ check=check,
6131
+ capture_output=capture_output,
6132
+ kwargs=kwargs,
6133
+ )
6134
+
6135
+
6136
+ @dc.dataclass(frozen=True)
6137
+ class SubprocessRunOutput(ta.Generic[T]):
6138
+ proc: T
6139
+
6140
+ returncode: int # noqa
6141
+
6142
+ stdout: ta.Optional[bytes] = None
6143
+ stderr: ta.Optional[bytes] = None
6144
+
6145
+
6091
6146
  class AbstractSubprocesses(BaseSubprocesses, abc.ABC):
6147
+ @abc.abstractmethod
6148
+ def run_(self, run: SubprocessRun) -> SubprocessRunOutput:
6149
+ raise NotImplementedError
6150
+
6151
+ def run(
6152
+ self,
6153
+ *cmd: str,
6154
+ input: ta.Any = None, # noqa
6155
+ timeout: ta.Optional[float] = None,
6156
+ check: bool = False,
6157
+ capture_output: ta.Optional[bool] = None,
6158
+ **kwargs: ta.Any,
6159
+ ) -> SubprocessRunOutput:
6160
+ return self.run_(SubprocessRun(
6161
+ cmd=cmd,
6162
+ input=input,
6163
+ timeout=timeout,
6164
+ check=check,
6165
+ capture_output=capture_output,
6166
+ kwargs=kwargs,
6167
+ ))
6168
+
6169
+ #
6170
+
6092
6171
  @abc.abstractmethod
6093
6172
  def check_call(
6094
6173
  self,
@@ -6152,6 +6231,25 @@ class AbstractSubprocesses(BaseSubprocesses, abc.ABC):
6152
6231
 
6153
6232
 
6154
6233
  class Subprocesses(AbstractSubprocesses):
6234
+ def run_(self, run: SubprocessRun) -> SubprocessRunOutput[subprocess.CompletedProcess]:
6235
+ proc = subprocess.run(
6236
+ run.cmd,
6237
+ input=run.input,
6238
+ timeout=run.timeout,
6239
+ check=run.check,
6240
+ capture_output=run.capture_output or False,
6241
+ **(run.kwargs or {}),
6242
+ )
6243
+
6244
+ return SubprocessRunOutput(
6245
+ proc=proc,
6246
+
6247
+ returncode=proc.returncode,
6248
+
6249
+ stdout=proc.stdout, # noqa
6250
+ stderr=proc.stderr, # noqa
6251
+ )
6252
+
6155
6253
  def check_call(
6156
6254
  self,
6157
6255
  *cmd: str,
@@ -6177,6 +6275,30 @@ subprocesses = Subprocesses()
6177
6275
 
6178
6276
 
6179
6277
  class AbstractAsyncSubprocesses(BaseSubprocesses):
6278
+ @abc.abstractmethod
6279
+ async def run_(self, run: SubprocessRun) -> SubprocessRunOutput:
6280
+ raise NotImplementedError
6281
+
6282
+ def run(
6283
+ self,
6284
+ *cmd: str,
6285
+ input: ta.Any = None, # noqa
6286
+ timeout: ta.Optional[float] = None,
6287
+ check: bool = False,
6288
+ capture_output: ta.Optional[bool] = None,
6289
+ **kwargs: ta.Any,
6290
+ ) -> ta.Awaitable[SubprocessRunOutput]:
6291
+ return self.run_(SubprocessRun(
6292
+ cmd=cmd,
6293
+ input=input,
6294
+ timeout=timeout,
6295
+ check=check,
6296
+ capture_output=capture_output,
6297
+ kwargs=kwargs,
6298
+ ))
6299
+
6300
+ #
6301
+
6180
6302
  @abc.abstractmethod
6181
6303
  async def check_call(
6182
6304
  self,
@@ -6490,41 +6612,32 @@ class AsyncioSubprocesses(AbstractAsyncSubprocesses):
6490
6612
 
6491
6613
  #
6492
6614
 
6493
- @dc.dataclass(frozen=True)
6494
- class RunOutput:
6495
- proc: asyncio.subprocess.Process
6496
- stdout: ta.Optional[bytes]
6497
- stderr: ta.Optional[bytes]
6615
+ async def run_(self, run: SubprocessRun) -> SubprocessRunOutput[asyncio.subprocess.Process]:
6616
+ kwargs = dict(run.kwargs or {})
6498
6617
 
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:
6618
+ if run.capture_output:
6509
6619
  kwargs.setdefault('stdout', subprocess.PIPE)
6510
6620
  kwargs.setdefault('stderr', subprocess.PIPE)
6511
6621
 
6512
6622
  proc: asyncio.subprocess.Process
6513
- async with self.popen(*cmd, **kwargs) as proc:
6514
- stdout, stderr = await self.communicate(proc, input, timeout)
6623
+ async with self.popen(*run.cmd, **kwargs) as proc:
6624
+ stdout, stderr = await self.communicate(proc, run.input, run.timeout)
6515
6625
 
6516
6626
  if check and proc.returncode:
6517
6627
  raise subprocess.CalledProcessError(
6518
6628
  proc.returncode,
6519
- cmd,
6629
+ run.cmd,
6520
6630
  output=stdout,
6521
6631
  stderr=stderr,
6522
6632
  )
6523
6633
 
6524
- return self.RunOutput(
6525
- proc,
6526
- stdout,
6527
- stderr,
6634
+ return SubprocessRunOutput(
6635
+ proc=proc,
6636
+
6637
+ returncode=check.isinstance(proc.returncode, int),
6638
+
6639
+ stdout=stdout,
6640
+ stderr=stderr,
6528
6641
  )
6529
6642
 
6530
6643
  #
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: omdev
3
- Version: 0.0.0.dev222
3
+ Version: 0.0.0.dev224
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.dev222
15
+ Requires-Dist: omlish==0.0.0.dev224
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,34 @@ 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=ohgWIbefNNbqwFLzpdDzqWabogwXZugfJ2AL64U3xsw,6578
75
+ omdev/ci/ci.py,sha256=JNFDs3sYCs93NOrnQxKiZNVnOotOwOL1CIEB4TL--Fg,6342
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
- omdev/ci/utils.py,sha256=mnf6yZmholvj0s_7JGbaO0Q1EWCn_saSv6BKMQQUCoQ,1450
82
+ omdev/ci/utils.py,sha256=YxOT4S-YLDOAv27K0Q0SKzxncZrWFA_wNXlFOaJmQuI,304
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/cacheserved.py,sha256=4Sqq5vMMp6IIi2deHE5uMGb_oLuk0A8HVcoDNcL97lY,8382
87
+ omdev/ci/docker/cmds.py,sha256=ZRRfQS9FcsDM2CWtNH9WpcpjS1IMGdR2Yg-zSYx8vps,2719
88
+ omdev/ci/docker/dataserver.py,sha256=CiS2l0Ze9rOCKXc0qgdmHH0FRZJqunJbTxowVSqxtJw,5525
89
+ omdev/ci/docker/imagepulling.py,sha256=fePZOkEKsAoOU7AlHKKK8fhMVhtYhczIFC9QDFjWwmc,1769
90
+ omdev/ci/docker/inject.py,sha256=LzzmbOidzVHoZbFUGZep1udElkmgHm0AU0LdmPFUK5M,1174
91
+ omdev/ci/docker/packing.py,sha256=Bl0aBkkdwES5ePGE3nmyg1CAQzmMDCVP2KTdZUITpQE,2016
92
+ omdev/ci/docker/repositories.py,sha256=ZWfObYdZXPn4BBeg8TsYeNVmH1EVEBadfRuxehAhxMM,1223
93
+ omdev/ci/docker/utils.py,sha256=URioGRzqyqdJBZyOfzsrUwv5hSJ3WM23_sLHES9vamc,1129
83
94
  omdev/ci/github/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
95
  omdev/ci/github/api.py,sha256=Vqza7Hm1OCSfZYgdXF4exkjneqNjFcdO1pl8qmODskU,5198
85
96
  omdev/ci/github/bootstrap.py,sha256=9OuftAz7CUd7uf2Or3sJFVozQQiwu0RGAlTOQNpLQIY,430
86
- omdev/ci/github/cache.py,sha256=cXbPPMIWK-qjGyuCScEJGe-l4QKLwGBkW0GxOhGO_8E,1801
97
+ omdev/ci/github/cache.py,sha256=39n0H4KpRCryQeIGVJqL6coyg7q4IFpFZZyBkbOo6PM,2672
87
98
  omdev/ci/github/cli.py,sha256=6mG0CllwrOoC7MDzKfKDqBHAjfF0gEI6aT5UAGMmuss,1114
88
- omdev/ci/github/client.py,sha256=cSewCoHC4cDM4BMQObcrf5g2wwD6rTlil_h2repAkf8,14341
99
+ omdev/ci/github/client.py,sha256=fT8rQ5RO5MXyjpIt6UEFR7escofkBau73m8KYMzcZFo,14614
89
100
  omdev/ci/github/env.py,sha256=FQFjP_m7JWM7es9I51U-6UgJTwAt_UCVHFIYKTd9NKM,394
101
+ omdev/ci/github/inject.py,sha256=FnmAL9vcZSYKvbuNjYDYlrc-XiFPayR806pYUd4Dyao,689
90
102
  omdev/cli/__init__.py,sha256=V_l6VP1SZMlJbO-8CJwSuO9TThOy2S_oaPepNYgIrbE,37
91
103
  omdev/cli/__main__.py,sha256=mOJpgc07o0r5luQ1DlX4tk2PqZkgmbwPbdzJ3KmtjgQ,138
92
104
  omdev/cli/_pathhack.py,sha256=kxqb2kHap68Lkh8b211rDbcgj06hidBiAKA3f9posyc,2119
@@ -99,6 +111,12 @@ omdev/clipboard/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
99
111
  omdev/clipboard/clipboard.py,sha256=9HFpcijpn0XDTI89ZRm2WA1G7O4HsTdVXZHqMULu3N0,1630
100
112
  omdev/clipboard/darwin_cf.py,sha256=SDUMfQtT_IJeDEwmsnxe6YyrZS5tPh_7ujkk1dg65Hg,7688
101
113
  omdev/clipboard/linux_x11.py,sha256=oa-mxMRNaZJOdBAZ8Nki-CAGIb63X8OFUTXKjmiwfSo,6718
114
+ omdev/dataserver/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
115
+ omdev/dataserver/handlers.py,sha256=rCptrmV2RnutmGE5MAgjLDYW1QncqsSHhyRBL4H5bsg,5440
116
+ omdev/dataserver/http.py,sha256=Vfdiri-AX7wNV1ASabU_JNmcKRpwLprWc9FyMUw4FDI,1707
117
+ omdev/dataserver/routes.py,sha256=7Jai21x5z1t1zbS4mC-Sv2g0uogMJnCAX47WR81QVfI,996
118
+ omdev/dataserver/server.py,sha256=ySEITCOxOmCXutsfYaFP46gENsg5w9jMeCySUSNUKmE,2333
119
+ omdev/dataserver/targets.py,sha256=oKINlau7-Dk0XFP81ujU43YxvM_VTT5OnEZYIhHv4Os,3299
102
120
  omdev/git/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
103
121
  omdev/git/revisions.py,sha256=1YY3Kf2WSalNVE2TgLXmOETct8HfiVEOqfV-qcvMVr4,1161
104
122
  omdev/git/shallow.py,sha256=WwCujIfEzaUpCRjVEVgkjvV3gLF-O1AuQoXLtm00yU4,2525
@@ -141,12 +159,19 @@ omdev/manifests/main.py,sha256=7zRlyE0BDPqITEbChlTBRGulAvG1nUZPHXrerNExriE,2126
141
159
  omdev/mypy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
142
160
  omdev/mypy/debug.py,sha256=WcZw-3Z1njg_KFGqi3DB6RuqbBa3dLArJnjVCuY1Mn0,3003
143
161
  omdev/oci/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
144
- omdev/oci/building.py,sha256=dv3PgAC94GWUFt7vaUnRi_xavZpExi7Vfm6lPFQ-bhA,3557
145
- omdev/oci/data.py,sha256=NF3ZBCrDDZdcTkA7CT720rytgSvcH_iNHryWLO6n4ys,3501
146
- omdev/oci/datarefs.py,sha256=OUHhFy2TytGt2_YVzCOreOBBbFXmGHTpflUlj7oOz4A,2079
147
- omdev/oci/loading.py,sha256=CwUpCa_t52GJiwIpN2NlSGr4RawsOXpF9xH1j1U6ONQ,3350
148
- omdev/oci/media.py,sha256=CBViZlluiECS2A98zCWho8DJzB2utKvO4MSCT01qNOo,5052
149
- omdev/oci/repositories.py,sha256=oTwKQehGWTldaQy4CdR1GJz2DCCkB1q4NPDdkJeVox4,2188
162
+ omdev/oci/building.py,sha256=g1TY-a2eHgEamYv0mt1L6rOevwOgdp_cW1xdVdjDzTw,5695
163
+ omdev/oci/compression.py,sha256=5hs7u0hImsm22GcQBHGYnP6g9dr-lBZ3E_PzdNVD4WY,134
164
+ omdev/oci/data.py,sha256=raIJehDpDR2W55D_pnYH-NqEf439EcwaaLgfhqvL2yM,4908
165
+ omdev/oci/datarefs.py,sha256=3o1yNqw2z8_-rsk7-w1c3Xz8d23zVYhEcfMivs1bmXo,2762
166
+ omdev/oci/dataserver.py,sha256=QIiJUZQPxL_yDomBuy9UdH3nL1OE2BkP7JxNz4Q3BxE,1863
167
+ omdev/oci/loading.py,sha256=iDMr7JGYRS6CeVrc-LUVjvUA4a49tpgwpJ3y0IImW54,3855
168
+ omdev/oci/media.py,sha256=PM2w1P3YxyvpfaHEDMD8iyBNJa18oVMOLF7KNb2R-DQ,5351
169
+ omdev/oci/repositories.py,sha256=APNQoJxPlN6vaOmQg-MS6cHwGlpTCoVyG8WBjCIaEak,4513
170
+ omdev/oci/tars.py,sha256=ijy27sJ0r3TtQGvEIk5ol4-kuHDktVQ88-75pvjSnds,3434
171
+ omdev/oci/pack/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
172
+ omdev/oci/pack/packing.py,sha256=K00GKBPGYYzFEK0CuQvoI7XRLULNld7_i7XcKdQ35zk,5413
173
+ omdev/oci/pack/repositories.py,sha256=EwCJlngKjqpNgcEeszOOnj3WxlQTgLOKo_rwe2PW8JM,4948
174
+ omdev/oci/pack/unpacking.py,sha256=gRwdhYNpLc2QHq2JndRx5unrSCtcaYUUZZyCTCsDIHo,5997
150
175
  omdev/packaging/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
151
176
  omdev/packaging/marshal.py,sha256=c4Mdy5-s4O51eEKMWWBwkhTGQ1FoxVI2lD6CxI_cF3k,2379
152
177
  omdev/packaging/names.py,sha256=-a7AykFPVR1i6EYJepbe3ABRrZQ_tPPmK5olzbn9HLI,2528
@@ -178,15 +203,15 @@ omdev/pyproject/reqs.py,sha256=8feZ71YnGzwKbLK4zO28CDQeNcZIIuq6cnkBhs6M-7E,2406
178
203
  omdev/pyproject/venvs.py,sha256=GUurjC7qzGlFL-su4C0YPO_pxbwDAyl1CqyLOB3WLCA,1911
179
204
  omdev/pyproject/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
180
205
  omdev/pyproject/resources/docker-dev.sh,sha256=DHkz5D18jok_oDolfg2mqrvGRWFoCe9GQo04dR1czcc,838
181
- omdev/pyproject/resources/python.sh,sha256=jvrwddYw2KNttpuImLbdCdJK0HsUNMrHtTnmLvhxQxg,757
206
+ omdev/pyproject/resources/python.sh,sha256=rFaN4SiJ9hdLDXXsDTwugI6zsw6EPkgYMmtacZeTbvw,749
182
207
  omdev/scripts/__init__.py,sha256=MKCvUAEQwsIvwLixwtPlpBqmkMXLCnjjXyAXvVpDwVk,91
183
208
  omdev/scripts/bumpversion.py,sha256=Kn7fo73Hs8uJh3Hi3EIyLOlzLPWAC6dwuD_lZ3cIzuY,1064
184
- omdev/scripts/ci.py,sha256=2bMl2vCMHdKQf2AmbcWV9Syv6RdizibYRDlT5Vg6q3E,110397
209
+ omdev/scripts/ci.py,sha256=1E2mI61uHKyQUmZdyq3GEL0yHDoSC2sxbPYAhnjW71w,151975
185
210
  omdev/scripts/execrss.py,sha256=mR0G0wERBYtQmVIn63lCIIFb5zkCM6X_XOENDFYDBKc,651
186
211
  omdev/scripts/exectime.py,sha256=S2O4MgtzTsFOY2IUJxsrnOIame9tEFc6aOlKP-F1JSg,1541
187
212
  omdev/scripts/importtrace.py,sha256=oa7CtcWJVMNDbyIEiRHej6ICfABfErMeo4_haIqe18Q,14041
188
- omdev/scripts/interp.py,sha256=40KDm-mW8v7Mmhi4WByV9XzWPgwvTfKYsFKlojXR4k0,143362
189
- omdev/scripts/pyproject.py,sha256=TG3Ne6h1W2rwT8nBG9E7QCmN_adPIO24QYaSJ7JGreU,247106
213
+ omdev/scripts/interp.py,sha256=VBD2A-PVi1Y_kkwSR6V73JJBW_aQ4d1cJwp2ce-rN0w,145939
214
+ omdev/scripts/pyproject.py,sha256=9jRTjJlrxUIasRhZxcZ8w8KIe9wlKQwzjqGMa1kjl-0,250104
190
215
  omdev/scripts/slowcat.py,sha256=lssv4yrgJHiWfOiHkUut2p8E8Tq32zB-ujXESQxFFHY,2728
191
216
  omdev/scripts/tmpexec.py,sha256=WTYcf56Tj2qjYV14AWmV8SfT0u6Y8eIU6cKgQRvEK3c,1442
192
217
  omdev/tokens/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -218,9 +243,9 @@ omdev/tools/json/rendering.py,sha256=tMcjOW5edfozcMSTxxvF7WVTsbYLoe9bCKFh50qyaGw
218
243
  omdev/tools/pawk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
219
244
  omdev/tools/pawk/__main__.py,sha256=VCqeRVnqT1RPEoIrqHFSu4PXVMg4YEgF4qCQm90-eRI,66
220
245
  omdev/tools/pawk/pawk.py,sha256=zsEkfQX0jF5bn712uqPAyBSdJt2dno1LH2oeSMNfXQI,11424
221
- omdev-0.0.0.dev222.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
222
- omdev-0.0.0.dev222.dist-info/METADATA,sha256=Uah5orSjym-xXyFh9XtBqqKKl7RqRncHdTT6Amon83g,1638
223
- omdev-0.0.0.dev222.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
224
- omdev-0.0.0.dev222.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
225
- omdev-0.0.0.dev222.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
226
- omdev-0.0.0.dev222.dist-info/RECORD,,
246
+ omdev-0.0.0.dev224.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
247
+ omdev-0.0.0.dev224.dist-info/METADATA,sha256=bl3bBQIZTIIVMO-_DkgRiVudo5lGHmhqIi9kLHu0A1k,1638
248
+ omdev-0.0.0.dev224.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
249
+ omdev-0.0.0.dev224.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
250
+ omdev-0.0.0.dev224.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
251
+ omdev-0.0.0.dev224.dist-info/RECORD,,