ominfra 0.0.0.dev178__py3-none-any.whl → 0.0.0.dev180__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.
@@ -113,15 +113,14 @@ CheckOnRaiseFn = ta.Callable[[Exception], None] # ta.TypeAlias
113
113
  CheckExceptionFactory = ta.Callable[..., Exception] # ta.TypeAlias
114
114
  CheckArgsRenderer = ta.Callable[..., ta.Optional[str]] # ta.TypeAlias
115
115
 
116
- # ../../omlish/lite/socket.py
117
- SocketAddress = ta.Any
118
- SocketHandlerFactory = ta.Callable[[SocketAddress, ta.BinaryIO, ta.BinaryIO], 'SocketHandler']
119
-
120
116
  # ../../omlish/lite/typing.py
121
117
  A0 = ta.TypeVar('A0')
122
118
  A1 = ta.TypeVar('A1')
123
119
  A2 = ta.TypeVar('A2')
124
120
 
121
+ # ../../omlish/sockets/addresses.py
122
+ SocketAddress = ta.Any
123
+
125
124
  # events.py
126
125
  EventCallback = ta.Callable[['Event'], None]
127
126
  ProcessOutputChannel = ta.Literal['stdout', 'stderr'] # ta.TypeAlias
@@ -139,6 +138,9 @@ InjectorProviderFn = ta.Callable[['Injector'], ta.Any]
139
138
  InjectorProviderFnMap = ta.Mapping['InjectorKey', 'InjectorProviderFn']
140
139
  InjectorBindingOrBindings = ta.Union['InjectorBinding', 'InjectorBindings']
141
140
 
141
+ # ../../omlish/sockets/handlers.py
142
+ SocketHandlerFactory = ta.Callable[[SocketAddress, ta.BinaryIO, ta.BinaryIO], 'SocketHandler']
143
+
142
144
  # ../configs.py
143
145
  ConfigMapping = ta.Mapping[str, ta.Any]
144
146
 
@@ -2344,76 +2346,6 @@ def deep_subclasses(cls: ta.Type[T]) -> ta.Iterator[ta.Type[T]]:
2344
2346
  todo.extend(reversed(cur.__subclasses__()))
2345
2347
 
2346
2348
 
2347
- ########################################
2348
- # ../../../omlish/lite/socket.py
2349
- """
2350
- TODO:
2351
- - SocketClientAddress family / tuple pairs
2352
- + codification of https://docs.python.org/3/library/socket.html#socket-families
2353
- """
2354
-
2355
-
2356
- ##
2357
-
2358
-
2359
- @dc.dataclass(frozen=True)
2360
- class SocketAddressInfoArgs:
2361
- host: ta.Optional[str]
2362
- port: ta.Union[str, int, None]
2363
- family: socket.AddressFamily = socket.AddressFamily.AF_UNSPEC
2364
- type: int = 0
2365
- proto: int = 0
2366
- flags: socket.AddressInfo = socket.AddressInfo(0)
2367
-
2368
-
2369
- @dc.dataclass(frozen=True)
2370
- class SocketAddressInfo:
2371
- family: socket.AddressFamily
2372
- type: int
2373
- proto: int
2374
- canonname: ta.Optional[str]
2375
- sockaddr: SocketAddress
2376
-
2377
-
2378
- def get_best_socket_family(
2379
- host: ta.Optional[str],
2380
- port: ta.Union[str, int, None],
2381
- family: ta.Union[int, socket.AddressFamily] = socket.AddressFamily.AF_UNSPEC,
2382
- ) -> ta.Tuple[socket.AddressFamily, SocketAddress]:
2383
- """https://github.com/python/cpython/commit/f289084c83190cc72db4a70c58f007ec62e75247"""
2384
-
2385
- infos = socket.getaddrinfo(
2386
- host,
2387
- port,
2388
- family,
2389
- type=socket.SOCK_STREAM,
2390
- flags=socket.AI_PASSIVE,
2391
- )
2392
- ai = SocketAddressInfo(*next(iter(infos)))
2393
- return ai.family, ai.sockaddr
2394
-
2395
-
2396
- ##
2397
-
2398
-
2399
- class SocketHandler(abc.ABC):
2400
- def __init__(
2401
- self,
2402
- client_address: SocketAddress,
2403
- rfile: ta.BinaryIO,
2404
- wfile: ta.BinaryIO,
2405
- ) -> None:
2406
- super().__init__()
2407
-
2408
- self._client_address = client_address
2409
- self._rfile = rfile
2410
- self._wfile = wfile
2411
-
2412
- @abc.abstractmethod
2413
- def handle(self) -> None:
2414
- raise NotImplementedError
2415
-
2416
-
2417
2349
  ########################################
2418
2350
  # ../../../omlish/lite/strings.py
2419
2351
 
@@ -2670,6 +2602,55 @@ class ProxyLogHandler(ProxyLogFilterer, logging.Handler):
2670
2602
  self._underlying.handleError(record)
2671
2603
 
2672
2604
 
2605
+ ########################################
2606
+ # ../../../omlish/sockets/addresses.py
2607
+ """
2608
+ TODO:
2609
+ - SocketClientAddress family / tuple pairs
2610
+ + codification of https://docs.python.org/3/library/socket.html#socket-families
2611
+ """
2612
+
2613
+
2614
+ ##
2615
+
2616
+
2617
+ @dc.dataclass(frozen=True)
2618
+ class SocketAddressInfoArgs:
2619
+ host: ta.Optional[str]
2620
+ port: ta.Union[str, int, None]
2621
+ family: socket.AddressFamily = socket.AddressFamily.AF_UNSPEC
2622
+ type: int = 0
2623
+ proto: int = 0
2624
+ flags: socket.AddressInfo = socket.AddressInfo(0)
2625
+
2626
+
2627
+ @dc.dataclass(frozen=True)
2628
+ class SocketAddressInfo:
2629
+ family: socket.AddressFamily
2630
+ type: int
2631
+ proto: int
2632
+ canonname: ta.Optional[str]
2633
+ sockaddr: SocketAddress
2634
+
2635
+
2636
+ def get_best_socket_family(
2637
+ host: ta.Optional[str],
2638
+ port: ta.Union[str, int, None],
2639
+ family: ta.Union[int, socket.AddressFamily] = socket.AddressFamily.AF_UNSPEC,
2640
+ ) -> ta.Tuple[socket.AddressFamily, SocketAddress]:
2641
+ """https://github.com/python/cpython/commit/f289084c83190cc72db4a70c58f007ec62e75247"""
2642
+
2643
+ infos = socket.getaddrinfo(
2644
+ host,
2645
+ port,
2646
+ family,
2647
+ type=socket.SOCK_STREAM,
2648
+ flags=socket.AI_PASSIVE,
2649
+ )
2650
+ ai = SocketAddressInfo(*next(iter(infos)))
2651
+ return ai.family, ai.sockaddr
2652
+
2653
+
2673
2654
  ########################################
2674
2655
  # ../events.py
2675
2656
 
@@ -4291,30 +4272,6 @@ def as_injector_bindings(*args: InjectorBindingOrBindings) -> InjectorBindings:
4291
4272
  ##
4292
4273
 
4293
4274
 
4294
- @dc.dataclass(frozen=True)
4295
- class OverridesInjectorBindings(InjectorBindings):
4296
- p: InjectorBindings
4297
- m: ta.Mapping[InjectorKey, InjectorBinding]
4298
-
4299
- def bindings(self) -> ta.Iterator[InjectorBinding]:
4300
- for b in self.p.bindings():
4301
- yield self.m.get(b.key, b)
4302
-
4303
-
4304
- def injector_override(p: InjectorBindings, *args: InjectorBindingOrBindings) -> InjectorBindings:
4305
- m: ta.Dict[InjectorKey, InjectorBinding] = {}
4306
-
4307
- for b in as_injector_bindings(*args).bindings():
4308
- if b.key in m:
4309
- raise DuplicateInjectorKeyError(b.key)
4310
- m[b.key] = b
4311
-
4312
- return OverridesInjectorBindings(p, m)
4313
-
4314
-
4315
- ##
4316
-
4317
-
4318
4275
  def build_injector_provider_map(bs: InjectorBindings) -> ta.Mapping[InjectorKey, InjectorProvider]:
4319
4276
  pm: ta.Dict[InjectorKey, InjectorProvider] = {}
4320
4277
  am: ta.Dict[InjectorKey, ta.List[InjectorProvider]] = {}
@@ -4338,6 +4295,31 @@ def build_injector_provider_map(bs: InjectorBindings) -> ta.Mapping[InjectorKey,
4338
4295
  return pm
4339
4296
 
4340
4297
 
4298
+ ###
4299
+ # overrides
4300
+
4301
+
4302
+ @dc.dataclass(frozen=True)
4303
+ class OverridesInjectorBindings(InjectorBindings):
4304
+ p: InjectorBindings
4305
+ m: ta.Mapping[InjectorKey, InjectorBinding]
4306
+
4307
+ def bindings(self) -> ta.Iterator[InjectorBinding]:
4308
+ for b in self.p.bindings():
4309
+ yield self.m.get(b.key, b)
4310
+
4311
+
4312
+ def injector_override(p: InjectorBindings, *args: InjectorBindingOrBindings) -> InjectorBindings:
4313
+ m: ta.Dict[InjectorKey, InjectorBinding] = {}
4314
+
4315
+ for b in as_injector_bindings(*args).bindings():
4316
+ if b.key in m:
4317
+ raise DuplicateInjectorKeyError(b.key)
4318
+ m[b.key] = b
4319
+
4320
+ return OverridesInjectorBindings(p, m)
4321
+
4322
+
4341
4323
  ###
4342
4324
  # scopes
4343
4325
 
@@ -4362,7 +4344,7 @@ class InjectorScope(abc.ABC): # noqa
4362
4344
  @dc.dataclass(frozen=True)
4363
4345
  class State:
4364
4346
  seeds: ta.Dict[InjectorKey, ta.Any]
4365
- prvs: ta.Dict[InjectorKey, ta.Any] = dc.field(default_factory=dict)
4347
+ provisions: ta.Dict[InjectorKey, ta.Any] = dc.field(default_factory=dict)
4366
4348
 
4367
4349
  def new_state(self, vs: ta.Mapping[InjectorKey, ta.Any]) -> State:
4368
4350
  vs = dict(vs)
@@ -4442,11 +4424,11 @@ class ScopedInjectorProvider(InjectorProvider):
4442
4424
  def pfn(i: Injector) -> ta.Any:
4443
4425
  st = i[self.sc].state()
4444
4426
  try:
4445
- return st.prvs[self.k]
4427
+ return st.provisions[self.k]
4446
4428
  except KeyError:
4447
4429
  pass
4448
4430
  v = ufn(i)
4449
- st.prvs[self.k] = v
4431
+ st.provisions[self.k] = v
4450
4432
  return v
4451
4433
 
4452
4434
  ufn = self.p.provider_fn()
@@ -4470,9 +4452,7 @@ class _ScopeSeedInjectorProvider(InjectorProvider):
4470
4452
 
4471
4453
 
4472
4454
  def bind_injector_scope(sc: ta.Type[InjectorScope]) -> InjectorBindingOrBindings:
4473
- return as_injector_bindings(
4474
- InjectorBinder.bind(sc, singleton=True),
4475
- )
4455
+ return InjectorBinder.bind(sc, singleton=True)
4476
4456
 
4477
4457
 
4478
4458
  #
@@ -5012,6 +4992,8 @@ class InjectionApi:
5012
4992
  def as_bindings(self, *args: InjectorBindingOrBindings) -> InjectorBindings:
5013
4993
  return as_injector_bindings(*args)
5014
4994
 
4995
+ # overrides
4996
+
5015
4997
  def override(self, p: InjectorBindings, *args: InjectorBindingOrBindings) -> InjectorBindings:
5016
4998
  return injector_override(p, *args)
5017
4999
 
@@ -5828,6 +5810,31 @@ def journald_log_handler_factory(
5828
5810
  return logging.StreamHandler()
5829
5811
 
5830
5812
 
5813
+ ########################################
5814
+ # ../../../omlish/sockets/handlers.py
5815
+
5816
+
5817
+ ##
5818
+
5819
+
5820
+ class SocketHandler(abc.ABC):
5821
+ def __init__(
5822
+ self,
5823
+ client_address: SocketAddress,
5824
+ rfile: ta.BinaryIO,
5825
+ wfile: ta.BinaryIO,
5826
+ ) -> None:
5827
+ super().__init__()
5828
+
5829
+ self._client_address = client_address
5830
+ self._rfile = rfile
5831
+ self._wfile = wfile
5832
+
5833
+ @abc.abstractmethod
5834
+ def handle(self) -> None:
5835
+ raise NotImplementedError
5836
+
5837
+
5831
5838
  ########################################
5832
5839
  # ../../configs.py
5833
5840
 
@@ -12,7 +12,7 @@ from omlish.io.fdio.handlers import SocketFdioHandler
12
12
  from omlish.lite.check import check
13
13
  from omlish.lite.contextmanagers import defer
14
14
  from omlish.lite.json import JSON_PRETTY_KWARGS
15
- from omlish.lite.socket import SocketAddress
15
+ from omlish.sockets.addresses import SocketAddress
16
16
 
17
17
  from .dispatchers import Dispatchers
18
18
  from .groups import ProcessGroupManager
ominfra/systemd.py ADDED
@@ -0,0 +1,18 @@
1
+ # @omlish-lite
2
+ import io
3
+ import typing as ta
4
+
5
+
6
+ def render_systemd_unit(settings_by_section: ta.Mapping[str, ta.Mapping[str, str]]) -> str:
7
+ out = io.StringIO()
8
+
9
+ for i, (section, settings) in enumerate(settings_by_section.items()):
10
+ if i:
11
+ out.write('\n')
12
+
13
+ out.write(f'[{section}]\n')
14
+
15
+ for k, v in settings.items():
16
+ out.write(f'{k}={v}\n')
17
+
18
+ return out.getvalue()
ominfra/tailscale/cli.py CHANGED
@@ -72,7 +72,7 @@ class Cli(ap.Cli):
72
72
  else:
73
73
  return 'tailscale'
74
74
 
75
- @ap.command(name='bin')
75
+ @ap.cmd(name='bin')
76
76
  def bin_cmd(self) -> None:
77
77
  print(self.bin())
78
78
 
@@ -84,7 +84,7 @@ class Cli(ap.Cli):
84
84
  ])
85
85
  return msh.unmarshal(json.loads(stdout.decode()), CliStatus)
86
86
 
87
- @ap.command(
87
+ @ap.cmd(
88
88
  ap.arg('name', nargs='?'),
89
89
  name='status',
90
90
  )
@@ -97,14 +97,14 @@ class Cli(ap.Cli):
97
97
  out = status
98
98
  print(json.dumps_pretty(msh.marshal(out)))
99
99
 
100
- @ap.command()
100
+ @ap.cmd()
101
101
  def ips(self) -> None:
102
102
  print(json.dumps_pretty({
103
103
  hn: node.ipv4s
104
104
  for hn, node in self.status().nodes_by_host_name.items()
105
105
  }))
106
106
 
107
- @ap.command(
107
+ @ap.cmd(
108
108
  ap.arg('name', nargs='?'),
109
109
  )
110
110
  def ip(self) -> None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ominfra
3
- Version: 0.0.0.dev178
3
+ Version: 0.0.0.dev180
4
4
  Summary: ominfra
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -12,8 +12,8 @@ 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: omdev==0.0.0.dev178
16
- Requires-Dist: omlish==0.0.0.dev178
15
+ Requires-Dist: omdev==0.0.0.dev180
16
+ Requires-Dist: omlish==0.0.0.dev180
17
17
  Provides-Extra: all
18
18
  Requires-Dist: paramiko~=3.5; extra == "all"
19
19
  Requires-Dist: asyncssh~=2.18; extra == "all"
@@ -5,12 +5,13 @@ ominfra/cmds.py,sha256=E0AfnvEmnKntXWvmLW5L05_NeDpBET1VBXn7vV6EwBQ,2083
5
5
  ominfra/configs.py,sha256=gY49bZgAQU1IP3lfLbJxOlEuQcL1tlX3TjyJd-XYHt4,2413
6
6
  ominfra/pyremote.py,sha256=HLfAZl3Xw5CpxLS5PS380zqCyE7n3vKVksIYT2Fbdc8,15197
7
7
  ominfra/ssh.py,sha256=jQpc4WvkMckIfk4vILda8zFaeharRqc_6wxW50b0OjQ,5431
8
+ ominfra/systemd.py,sha256=sepFytuiRjoWHJbiFH8Ti9zm1gvWBaUXNyvSRiVLi-k,419
8
9
  ominfra/threadworkers.py,sha256=oX4ubZn7h932saXpRIJu2MNhBExgGGMuGhdXarZxLJw,4948
9
10
  ominfra/clouds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
11
  ominfra/clouds/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
12
  ominfra/clouds/aws/__main__.py,sha256=HXMoxEl9KHhv6zOOPQxiJAftfR2SjBqeVTYw-og9aFw,163
12
13
  ominfra/clouds/aws/auth.py,sha256=lEVAvJLRW9kHw12fIUbIvZNJxbOPtN1piJMGxE3tJr4,6097
13
- ominfra/clouds/aws/cli.py,sha256=I2iumILzIt6VJ1hjDcTKJjVtOdzrZIv4w1EmCp_DoXM,514
14
+ ominfra/clouds/aws/cli.py,sha256=BjJFYFUrv9LNoARkv9i8u4X69udikPlJ83_-t1c2ypQ,510
14
15
  ominfra/clouds/aws/dataclasses.py,sha256=rKhtJKJ0JhMssU9n9CABX_JaUiokIboEATJ9TZgZQ6A,3868
15
16
  ominfra/clouds/aws/logs.py,sha256=SvOMv5FeRFhxneIyMXCeieyLFpi6byHUsHwOAhFvT0U,5414
16
17
  ominfra/clouds/aws/metadata.py,sha256=XR1BuMdQheyeFjjA3MN8GCNWVAp5ahoPdbWXEmViutQ,2767
@@ -33,7 +34,7 @@ ominfra/manage/bootstrap.py,sha256=1RIRhVkUZjxZcZerHMg8U6xgWhhemGgPN5cDye8dQ68,4
33
34
  ominfra/manage/bootstrap_.py,sha256=B9UfR9J7mS3J54PFaSe1MQS5lCnKgxt5dDRJ9mnHYwg,656
34
35
  ominfra/manage/config.py,sha256=1y2N_8nXHBZc6YbW6BaRZoDDCTBmiHuWtTOQ7zdr5VE,184
35
36
  ominfra/manage/inject.py,sha256=_FVaMZUBKi-oObv14H77luWYCodxNJJD1t4pNQzckFE,2030
36
- ominfra/manage/main.py,sha256=6KulKJqgKHl_wdWEOdY9btoI-pq11tDFqugsUtOpW8A,4389
37
+ ominfra/manage/main.py,sha256=t4qilhICLxDCgLXaU6PJ56kINx0YwenWd8SXSSBWKVU,4381
37
38
  ominfra/manage/marshal.py,sha256=WKj7IU9bo4fBMSSzT6ZMm_WFalXIJZ-V7j8oi92fNhk,305
38
39
  ominfra/manage/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
40
  ominfra/manage/commands/base.py,sha256=LtaI0AgnplttQK7gNncNItq8yuTZQimJTaprVpZktI8,3993
@@ -49,15 +50,15 @@ ominfra/manage/deploy/commands.py,sha256=U74HYQ4nhvH7znAKyXGOmZfdnll2gMWxKWVW4Gz
49
50
  ominfra/manage/deploy/conf.py,sha256=fNfFlIb-bB3KAzaYZcjrbqaqKSiSq0Lpk0mIF6WgXiw,5410
50
51
  ominfra/manage/deploy/config.py,sha256=kPpl8TRisz295cM4oj-RHA6oh5jdcJ_N9pVpkl_doO8,114
51
52
  ominfra/manage/deploy/deploy.py,sha256=vyBTbBm51HhRE-MQNvxEt39F8uOYsB4ToqZ3zmVkpqU,819
52
- ominfra/manage/deploy/driver.py,sha256=ccLiVoZz_GnhQ3FRPFCu9hzsU6wsOWTOmHeYNBRIZkg,1576
53
+ ominfra/manage/deploy/driver.py,sha256=kSriXFC8L_EpOcHFGxNZDBGyxV_fZAAF95y-czisnwE,1352
53
54
  ominfra/manage/deploy/git.py,sha256=g4wzUuSu9HwWSDhdVX-7BvA2htMwtWbRcHaoDy-xOJ4,3960
54
- ominfra/manage/deploy/inject.py,sha256=JHQexbf-789mWL8GTSxyd4SnTbDB0nqwSyiJp-3QvAM,2834
55
- ominfra/manage/deploy/interp.py,sha256=OKkenH8YKEW_mEDR6X7_ZLxK9a1Ox6KHSwFPTHT6OzA,1029
55
+ ominfra/manage/deploy/inject.py,sha256=eTQC8Kyk8S8ogTJqti2lTwD2j7ha5qQG6KxqeIpLoxU,3610
56
+ ominfra/manage/deploy/interp.py,sha256=_5fuHrY5ZA0eGbnNcOqAhAMSWI1UNvbm0l29eDjE5fI,1037
56
57
  ominfra/manage/deploy/specs.py,sha256=usi5AmTlv8OGFcwhVHnu8Qrz1Criu5QP6_ScNMi9ehM,3748
57
58
  ominfra/manage/deploy/tags.py,sha256=NVEJhHKMwoDuCFd8lInH_jIe99FQILBX3wrulh3GiDg,5166
58
59
  ominfra/manage/deploy/tmp.py,sha256=FqXoVpIpVe8-KWNu7kXt37A4jKdK_y7h_YFvtrUoOG8,729
59
60
  ominfra/manage/deploy/types.py,sha256=ZcIoheZ3zW7n0IZiqTRW_Uo3JyWWeWg5nyKGryvGc2I,112
60
- ominfra/manage/deploy/venvs.py,sha256=h_9Bb4NpvXqO2Hb5t_5qbWs3zfMDPfmKZvMACJ4CY5M,1584
61
+ ominfra/manage/deploy/venvs.py,sha256=1Ic3yKap9bTduqHorz1MpmSiQPh9x-vxhLLxgpVpRdc,1592
61
62
  ominfra/manage/deploy/paths/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
63
  ominfra/manage/deploy/paths/inject.py,sha256=X81C-Qhef1LQ7tILWvkomBwFTvgooLVmWRnKL7TeVoI,596
63
64
  ominfra/manage/deploy/paths/manager.py,sha256=Dnl8euyZQYDGwDzkMvgPAwOssseducr5kP6T0qzVXQk,929
@@ -72,7 +73,7 @@ ominfra/manage/remote/connection.py,sha256=T4fL-GXXAfnbCbkZ3_28t8LAwwki4Td3j41eY
72
73
  ominfra/manage/remote/execution.py,sha256=_bygZi_0Uel615uIg43S14CTdmv1unEIu9TPz2mVRJ4,11738
73
74
  ominfra/manage/remote/inject.py,sha256=nSNP_VInCCZOWVrUIRHBvLmnM45geFoYmMh-zqc__as,1080
74
75
  ominfra/manage/remote/payload.py,sha256=Rn-Yo26POpHEOOfUHX3jWkqcQVEAvkJ_5Bu13jwoob4,944
75
- ominfra/manage/remote/spawning.py,sha256=CWeHBl4dzHLFLwJyFrt5hiAmhL0FaQzIYZ8j8EhI6VE,3301
76
+ ominfra/manage/remote/spawning.py,sha256=H4NqyfPr-58V3e495NwlVGRmUfs5sDjNWSKLW7H-mcg,3296
76
77
  ominfra/manage/system/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
78
  ominfra/manage/system/commands.py,sha256=XrYvsxiwTJh17buIWmoFGH8zTUIXmrXvYkLy1INtmkU,1173
78
79
  ominfra/manage/system/config.py,sha256=mEVBL1cy4twO6F0bdnCI01Sm0xuLe1Z5eiAzCvbmoAc,196
@@ -87,8 +88,8 @@ ominfra/manage/targets/inject.py,sha256=P4597xWM-V3I_gCt2O71OLhYQkkXtuJvkYRsIbhh
87
88
  ominfra/manage/targets/targets.py,sha256=7GP6UAZyJFEhpkJN6UQdpr_WN3p7C76v-s445y-WB6U,1885
88
89
  ominfra/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
89
90
  ominfra/scripts/journald2aws.py,sha256=yEnBAd0Q_3lBkVoTvlJ_uCcUxz7Ckn2qoSWZVhMihvQ,157696
90
- ominfra/scripts/manage.py,sha256=XDt86ZEFjcShexhLQjmse1N6f_dk7AVVtozzETsNUdY,324293
91
- ominfra/scripts/supervisor.py,sha256=6RMBLbB4pMNaJlnOBwhdpuhMqv6NDrjTup9SYzKsEjo,281844
91
+ ominfra/scripts/manage.py,sha256=r0lrDUnP_YCf-L9dg06kpAzNXURBNSty_uaqnvl8Z2o,327238
92
+ ominfra/scripts/supervisor.py,sha256=aEngsVXbK7DNEtILJ_eMMlUu113kfT2uFJ-bdbcPTro,281984
92
93
  ominfra/supervisor/LICENSE.txt,sha256=yvqaMNsDhWxziHa9ien6qCW1SkZv-DQlAg96XjfSee8,1746
93
94
  ominfra/supervisor/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
94
95
  ominfra/supervisor/__main__.py,sha256=I0yFw-C08OOiZ3BF6lF1Oiv789EQXu-_j6whDhQUTEA,66
@@ -99,7 +100,7 @@ ominfra/supervisor/events.py,sha256=XGrtzHr1xm0dwjz329fn9eR0_Ap-LQL6Sk8LJ8eVDEo,
99
100
  ominfra/supervisor/exceptions.py,sha256=Qbu211H3CLlSmi9LsSikOwrcL5HgJP9ugvcKWlGTAoI,750
100
101
  ominfra/supervisor/groups.py,sha256=MBbsbt8Zh_WEYkGOr1KXa82gnPVw9wPB2lAnqhugXSc,2457
101
102
  ominfra/supervisor/groupsimpl.py,sha256=PCDyc_Wc-pnvIj56_aEyiA5exCpK6n9iErqnJzO2rZk,2281
102
- ominfra/supervisor/http.py,sha256=P8lgeSU1clMDI2oS0sVZvCc0q3OecmUfeJWzQ0PoZKg,3443
103
+ ominfra/supervisor/http.py,sha256=_5wiB0DpLzqsPTHn9DkWqhrNSVQSbbIiwsCuSEtosoM,3449
103
104
  ominfra/supervisor/inject.py,sha256=6nBEnpE8VLjtYK12z5DGRP7WzgbwLAz5yf__1KnJl6g,4693
104
105
  ominfra/supervisor/io.py,sha256=moaGNaPuYXEAUzLg8Qjo05DEIcOUNYUj8SSr8eT0d24,3198
105
106
  ominfra/supervisor/main.py,sha256=7YrreFNntdRCp6MplCclfnRcgrRIb_UCeohJkDC9Few,4251
@@ -127,12 +128,12 @@ ominfra/supervisor/utils/strings.py,sha256=gZOYiFI3ZQEMrXq6VlK2WadK12JPO6zYjPenq
127
128
  ominfra/supervisor/utils/users.py,sha256=PRUhWy74WQCxix4BLNYcWW1i2mF1IyAxj1RzElnP4iM,1345
128
129
  ominfra/tailscale/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
129
130
  ominfra/tailscale/api.py,sha256=C5-t_b6jZXUWcy5k8bXm7CFnk73pSdrlMOgGDeGVrpw,1370
130
- ominfra/tailscale/cli.py,sha256=h6akQJMl0KuWLHS7Ur6WcBZ2JwF0DJQhsPTnFBdGyNk,3571
131
+ ominfra/tailscale/cli.py,sha256=3FnJbgpLw6gInTfhERd1mDy9ijjMUGxkdYVo43Tnxx4,3555
131
132
  ominfra/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
132
133
  ominfra/tools/listresources.py,sha256=4qVg5txsb10EHhvqXXeM6gJ2jx9LbroEnPydDv1uXs0,6176
133
- ominfra-0.0.0.dev178.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
134
- ominfra-0.0.0.dev178.dist-info/METADATA,sha256=Kfw95dyWOXq2P3oSLxG3ObbDVl139_CQAnrZy5k6QtE,731
135
- ominfra-0.0.0.dev178.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
136
- ominfra-0.0.0.dev178.dist-info/entry_points.txt,sha256=kgecQ2MgGrM9qK744BoKS3tMesaC3yjLnl9pa5CRczg,37
137
- ominfra-0.0.0.dev178.dist-info/top_level.txt,sha256=E-b2OHkk_AOBLXHYZQ2EOFKl-_6uOGd8EjeG-Zy6h_w,8
138
- ominfra-0.0.0.dev178.dist-info/RECORD,,
134
+ ominfra-0.0.0.dev180.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
135
+ ominfra-0.0.0.dev180.dist-info/METADATA,sha256=734lpaoe3ooojHKovGR1Rf6CjQl69ZlvZvCaYr9wLog,731
136
+ ominfra-0.0.0.dev180.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
137
+ ominfra-0.0.0.dev180.dist-info/entry_points.txt,sha256=kgecQ2MgGrM9qK744BoKS3tMesaC3yjLnl9pa5CRczg,37
138
+ ominfra-0.0.0.dev180.dist-info/top_level.txt,sha256=E-b2OHkk_AOBLXHYZQ2EOFKl-_6uOGd8EjeG-Zy6h_w,8
139
+ ominfra-0.0.0.dev180.dist-info/RECORD,,