ominfra 0.0.0.dev173__py3-none-any.whl → 0.0.0.dev175__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.
@@ -24,13 +24,12 @@ from omlish.os.paths import is_path_in_dir
24
24
  from omlish.os.paths import relative_symlink
25
25
 
26
26
  from .paths.paths import DeployPath
27
- from .specs import AllActiveDeployAppConfLink
28
- from .specs import CurrentOnlyDeployAppConfLink
29
27
  from .specs import DeployAppConfFile
30
28
  from .specs import DeployAppConfLink
31
29
  from .specs import DeployAppConfSpec
32
30
  from .tags import DEPLOY_TAG_SEPARATOR
33
31
  from .tags import DeployApp
32
+ from .tags import DeployConf
34
33
  from .tags import DeployTagMap
35
34
  from .types import DeployHome
36
35
 
@@ -63,6 +62,7 @@ class DeployConfManager:
63
62
  #
64
63
 
65
64
  class _ComputedConfLink(ta.NamedTuple):
65
+ conf: DeployConf
66
66
  is_dir: bool
67
67
  link_src: str
68
68
  link_dst: str
@@ -70,8 +70,9 @@ class DeployConfManager:
70
70
  _UNIQUE_LINK_NAME_STR = '@app--@time--@app-key'
71
71
  _UNIQUE_LINK_NAME = DeployPath.parse(_UNIQUE_LINK_NAME_STR)
72
72
 
73
+ @classmethod
73
74
  def _compute_app_conf_link_dst(
74
- self,
75
+ cls,
75
76
  link: DeployAppConfLink,
76
77
  tags: DeployTagMap,
77
78
  app_conf_dir: str,
@@ -85,6 +86,7 @@ class DeployConfManager:
85
86
  if (is_dir := link.src.endswith('/')):
86
87
  # @conf/ - links a directory in root of app conf dir to conf/@conf/@dst/
87
88
  check.arg(link.src.count('/') == 1)
89
+ conf = DeployConf(link.src.split('/')[0])
88
90
  link_dst_pfx = link.src
89
91
  link_dst_sfx = ''
90
92
 
@@ -92,6 +94,7 @@ class DeployConfManager:
92
94
  # @conf/file - links a single file in a single subdir to conf/@conf/@dst--file
93
95
  d, f = os.path.split(link.src)
94
96
  # TODO: check filename :|
97
+ conf = DeployConf(d)
95
98
  link_dst_pfx = d + '/'
96
99
  link_dst_sfx = DEPLOY_TAG_SEPARATOR + f
97
100
 
@@ -99,18 +102,20 @@ class DeployConfManager:
99
102
  # @conf(.ext)* - links a single file in root of app conf dir to conf/@conf/@dst(.ext)*
100
103
  if '.' in link.src:
101
104
  l, _, r = link.src.partition('.')
105
+ conf = DeployConf(l)
102
106
  link_dst_pfx = l + '/'
103
107
  link_dst_sfx = '.' + r
104
108
  else:
109
+ conf = DeployConf(link.src)
105
110
  link_dst_pfx = link.src + '/'
106
111
  link_dst_sfx = ''
107
112
 
108
113
  #
109
114
 
110
- if isinstance(link, CurrentOnlyDeployAppConfLink):
115
+ if link.kind == 'current_only':
111
116
  link_dst_mid = str(tags[DeployApp].s)
112
- elif isinstance(link, AllActiveDeployAppConfLink):
113
- link_dst_mid = self._UNIQUE_LINK_NAME.render(tags)
117
+ elif link.kind == 'all_active':
118
+ link_dst_mid = cls._UNIQUE_LINK_NAME.render(tags)
114
119
  else:
115
120
  raise TypeError(link)
116
121
 
@@ -124,6 +129,7 @@ class DeployConfManager:
124
129
  link_dst = os.path.join(conf_link_dir, link_dst_name)
125
130
 
126
131
  return DeployConfManager._ComputedConfLink(
132
+ conf=conf,
127
133
  is_dir=is_dir,
128
134
  link_src=link_src,
129
135
  link_dst=link_dst,
@@ -170,7 +170,7 @@ class FileDeployPathPart(DeployPathPart):
170
170
  return 'file'
171
171
 
172
172
 
173
- #
173
+ ##
174
174
 
175
175
 
176
176
  @dc.dataclass(frozen=True)
@@ -197,7 +197,7 @@ class DeployPath:
197
197
  return pd
198
198
 
199
199
  @property
200
- def kind(self) -> ta.Literal['file', 'dir']:
200
+ def kind(self) -> DeployPathKind:
201
201
  return self.parts[-1].kind
202
202
 
203
203
  def render(self, tags: ta.Optional[DeployTagMap] = None) -> str:
@@ -95,7 +95,7 @@ class DeployAppConfFile:
95
95
 
96
96
 
97
97
  @dc.dataclass(frozen=True)
98
- class DeployAppConfLink(abc.ABC): # noqa
98
+ class DeployAppConfLink: # noqa
99
99
  """
100
100
  May be either:
101
101
  - @conf(.ext)* - links a single file in root of app conf dir to conf/@conf/@dst(.ext)*
@@ -105,20 +105,14 @@ class DeployAppConfLink(abc.ABC): # noqa
105
105
 
106
106
  src: str
107
107
 
108
+ kind: ta.Literal['current_only', 'all_active'] = 'current_only'
109
+
108
110
  def __post_init__(self) -> None:
109
111
  check_valid_deploy_spec_path(self.src)
110
112
  if '/' in self.src:
111
113
  check.equal(self.src.count('/'), 1)
112
114
 
113
115
 
114
- class CurrentOnlyDeployAppConfLink(DeployAppConfLink):
115
- pass
116
-
117
-
118
- class AllActiveDeployAppConfLink(DeployAppConfLink):
119
- pass
120
-
121
-
122
116
  #
123
117
 
124
118
 
@@ -1450,6 +1450,9 @@ log = logging.getLogger(__name__)
1450
1450
  # ../../../../../omlish/lite/reflect.py
1451
1451
 
1452
1452
 
1453
+ ##
1454
+
1455
+
1453
1456
  _GENERIC_ALIAS_TYPES = (
1454
1457
  ta._GenericAlias, # type: ignore # noqa
1455
1458
  *([ta._SpecialGenericAlias] if hasattr(ta, '_SpecialGenericAlias') else []), # noqa
@@ -1467,6 +1470,9 @@ is_union_alias = functools.partial(is_generic_alias, origin=ta.Union)
1467
1470
  is_callable_alias = functools.partial(is_generic_alias, origin=ta.Callable)
1468
1471
 
1469
1472
 
1473
+ ##
1474
+
1475
+
1470
1476
  def is_optional_alias(spec: ta.Any) -> bool:
1471
1477
  return (
1472
1478
  isinstance(spec, _GENERIC_ALIAS_TYPES) and # noqa
@@ -1481,6 +1487,9 @@ def get_optional_alias_arg(spec: ta.Any) -> ta.Any:
1481
1487
  return it
1482
1488
 
1483
1489
 
1490
+ ##
1491
+
1492
+
1484
1493
  def is_new_type(spec: ta.Any) -> bool:
1485
1494
  if isinstance(ta.NewType, type):
1486
1495
  return isinstance(spec, ta.NewType)
@@ -1493,6 +1502,26 @@ def get_new_type_supertype(spec: ta.Any) -> ta.Any:
1493
1502
  return spec.__supertype__
1494
1503
 
1495
1504
 
1505
+ ##
1506
+
1507
+
1508
+ def is_literal_type(spec: ta.Any) -> bool:
1509
+ if hasattr(ta, '_LiteralGenericAlias'):
1510
+ return isinstance(spec, ta._LiteralGenericAlias) # noqa
1511
+ else:
1512
+ return (
1513
+ isinstance(spec, ta._GenericAlias) and # type: ignore # noqa
1514
+ spec.__origin__ is ta.Literal
1515
+ )
1516
+
1517
+
1518
+ def get_literal_type_args(spec: ta.Any) -> ta.Iterable[ta.Any]:
1519
+ return spec.__args__
1520
+
1521
+
1522
+ ##
1523
+
1524
+
1496
1525
  def deep_subclasses(cls: ta.Type[T]) -> ta.Iterator[ta.Type[T]]:
1497
1526
  seen = set()
1498
1527
  todo = list(reversed(cls.__subclasses__()))
@@ -2600,6 +2629,18 @@ class OptionalObjMarshaler(ObjMarshaler):
2600
2629
  return self.item.unmarshal(o, ctx)
2601
2630
 
2602
2631
 
2632
+ @dc.dataclass(frozen=True)
2633
+ class LiteralObjMarshaler(ObjMarshaler):
2634
+ item: ObjMarshaler
2635
+ vs: frozenset
2636
+
2637
+ def marshal(self, o: ta.Any, ctx: 'ObjMarshalContext') -> ta.Any:
2638
+ return self.item.marshal(check.in_(o, self.vs), ctx)
2639
+
2640
+ def unmarshal(self, o: ta.Any, ctx: 'ObjMarshalContext') -> ta.Any:
2641
+ return check.in_(self.item.unmarshal(o, ctx), self.vs)
2642
+
2643
+
2603
2644
  @dc.dataclass(frozen=True)
2604
2645
  class MappingObjMarshaler(ObjMarshaler):
2605
2646
  ty: type
@@ -2811,6 +2852,11 @@ class ObjMarshalerManager:
2811
2852
  if is_new_type(ty):
2812
2853
  return rec(get_new_type_supertype(ty))
2813
2854
 
2855
+ if is_literal_type(ty):
2856
+ lvs = frozenset(get_literal_type_args(ty))
2857
+ lty = check.single(set(map(type, lvs)))
2858
+ return LiteralObjMarshaler(rec(lty), lvs)
2859
+
2814
2860
  if is_generic_alias(ty):
2815
2861
  try:
2816
2862
  mt = self._generic_mapping_types[ta.get_origin(ty)]
ominfra/scripts/manage.py CHANGED
@@ -2667,6 +2667,9 @@ def pycharm_debug_preamble(prd: PycharmRemoteDebug) -> str:
2667
2667
  # ../../../omlish/lite/reflect.py
2668
2668
 
2669
2669
 
2670
+ ##
2671
+
2672
+
2670
2673
  _GENERIC_ALIAS_TYPES = (
2671
2674
  ta._GenericAlias, # type: ignore # noqa
2672
2675
  *([ta._SpecialGenericAlias] if hasattr(ta, '_SpecialGenericAlias') else []), # noqa
@@ -2684,6 +2687,9 @@ is_union_alias = functools.partial(is_generic_alias, origin=ta.Union)
2684
2687
  is_callable_alias = functools.partial(is_generic_alias, origin=ta.Callable)
2685
2688
 
2686
2689
 
2690
+ ##
2691
+
2692
+
2687
2693
  def is_optional_alias(spec: ta.Any) -> bool:
2688
2694
  return (
2689
2695
  isinstance(spec, _GENERIC_ALIAS_TYPES) and # noqa
@@ -2698,6 +2704,9 @@ def get_optional_alias_arg(spec: ta.Any) -> ta.Any:
2698
2704
  return it
2699
2705
 
2700
2706
 
2707
+ ##
2708
+
2709
+
2701
2710
  def is_new_type(spec: ta.Any) -> bool:
2702
2711
  if isinstance(ta.NewType, type):
2703
2712
  return isinstance(spec, ta.NewType)
@@ -2710,6 +2719,26 @@ def get_new_type_supertype(spec: ta.Any) -> ta.Any:
2710
2719
  return spec.__supertype__
2711
2720
 
2712
2721
 
2722
+ ##
2723
+
2724
+
2725
+ def is_literal_type(spec: ta.Any) -> bool:
2726
+ if hasattr(ta, '_LiteralGenericAlias'):
2727
+ return isinstance(spec, ta._LiteralGenericAlias) # noqa
2728
+ else:
2729
+ return (
2730
+ isinstance(spec, ta._GenericAlias) and # type: ignore # noqa
2731
+ spec.__origin__ is ta.Literal
2732
+ )
2733
+
2734
+
2735
+ def get_literal_type_args(spec: ta.Any) -> ta.Iterable[ta.Any]:
2736
+ return spec.__args__
2737
+
2738
+
2739
+ ##
2740
+
2741
+
2713
2742
  def deep_subclasses(cls: ta.Type[T]) -> ta.Iterator[ta.Type[T]]:
2714
2743
  seen = set()
2715
2744
  todo = list(reversed(cls.__subclasses__()))
@@ -6049,6 +6078,18 @@ class OptionalObjMarshaler(ObjMarshaler):
6049
6078
  return self.item.unmarshal(o, ctx)
6050
6079
 
6051
6080
 
6081
+ @dc.dataclass(frozen=True)
6082
+ class LiteralObjMarshaler(ObjMarshaler):
6083
+ item: ObjMarshaler
6084
+ vs: frozenset
6085
+
6086
+ def marshal(self, o: ta.Any, ctx: 'ObjMarshalContext') -> ta.Any:
6087
+ return self.item.marshal(check.in_(o, self.vs), ctx)
6088
+
6089
+ def unmarshal(self, o: ta.Any, ctx: 'ObjMarshalContext') -> ta.Any:
6090
+ return check.in_(self.item.unmarshal(o, ctx), self.vs)
6091
+
6092
+
6052
6093
  @dc.dataclass(frozen=True)
6053
6094
  class MappingObjMarshaler(ObjMarshaler):
6054
6095
  ty: type
@@ -6260,6 +6301,11 @@ class ObjMarshalerManager:
6260
6301
  if is_new_type(ty):
6261
6302
  return rec(get_new_type_supertype(ty))
6262
6303
 
6304
+ if is_literal_type(ty):
6305
+ lvs = frozenset(get_literal_type_args(ty))
6306
+ lty = check.single(set(map(type, lvs)))
6307
+ return LiteralObjMarshaler(rec(lty), lvs)
6308
+
6263
6309
  if is_generic_alias(ty):
6264
6310
  try:
6265
6311
  mt = self._generic_mapping_types[ta.get_origin(ty)]
@@ -7038,7 +7084,7 @@ class FileDeployPathPart(DeployPathPart):
7038
7084
  return 'file'
7039
7085
 
7040
7086
 
7041
- #
7087
+ ##
7042
7088
 
7043
7089
 
7044
7090
  @dc.dataclass(frozen=True)
@@ -7065,7 +7111,7 @@ class DeployPath:
7065
7111
  return pd
7066
7112
 
7067
7113
  @property
7068
- def kind(self) -> ta.Literal['file', 'dir']:
7114
+ def kind(self) -> DeployPathKind:
7069
7115
  return self.parts[-1].kind
7070
7116
 
7071
7117
  def render(self, tags: ta.Optional[DeployTagMap] = None) -> str:
@@ -7160,7 +7206,7 @@ class DeployAppConfFile:
7160
7206
 
7161
7207
 
7162
7208
  @dc.dataclass(frozen=True)
7163
- class DeployAppConfLink(abc.ABC): # noqa
7209
+ class DeployAppConfLink: # noqa
7164
7210
  """
7165
7211
  May be either:
7166
7212
  - @conf(.ext)* - links a single file in root of app conf dir to conf/@conf/@dst(.ext)*
@@ -7170,20 +7216,14 @@ class DeployAppConfLink(abc.ABC): # noqa
7170
7216
 
7171
7217
  src: str
7172
7218
 
7219
+ kind: ta.Literal['current_only', 'all_active'] = 'current_only'
7220
+
7173
7221
  def __post_init__(self) -> None:
7174
7222
  check_valid_deploy_spec_path(self.src)
7175
7223
  if '/' in self.src:
7176
7224
  check.equal(self.src.count('/'), 1)
7177
7225
 
7178
7226
 
7179
- class CurrentOnlyDeployAppConfLink(DeployAppConfLink):
7180
- pass
7181
-
7182
-
7183
- class AllActiveDeployAppConfLink(DeployAppConfLink):
7184
- pass
7185
-
7186
-
7187
7227
  #
7188
7228
 
7189
7229
 
@@ -7871,6 +7911,7 @@ class DeployConfManager:
7871
7911
  #
7872
7912
 
7873
7913
  class _ComputedConfLink(ta.NamedTuple):
7914
+ conf: DeployConf
7874
7915
  is_dir: bool
7875
7916
  link_src: str
7876
7917
  link_dst: str
@@ -7878,8 +7919,9 @@ class DeployConfManager:
7878
7919
  _UNIQUE_LINK_NAME_STR = '@app--@time--@app-key'
7879
7920
  _UNIQUE_LINK_NAME = DeployPath.parse(_UNIQUE_LINK_NAME_STR)
7880
7921
 
7922
+ @classmethod
7881
7923
  def _compute_app_conf_link_dst(
7882
- self,
7924
+ cls,
7883
7925
  link: DeployAppConfLink,
7884
7926
  tags: DeployTagMap,
7885
7927
  app_conf_dir: str,
@@ -7893,6 +7935,7 @@ class DeployConfManager:
7893
7935
  if (is_dir := link.src.endswith('/')):
7894
7936
  # @conf/ - links a directory in root of app conf dir to conf/@conf/@dst/
7895
7937
  check.arg(link.src.count('/') == 1)
7938
+ conf = DeployConf(link.src.split('/')[0])
7896
7939
  link_dst_pfx = link.src
7897
7940
  link_dst_sfx = ''
7898
7941
 
@@ -7900,6 +7943,7 @@ class DeployConfManager:
7900
7943
  # @conf/file - links a single file in a single subdir to conf/@conf/@dst--file
7901
7944
  d, f = os.path.split(link.src)
7902
7945
  # TODO: check filename :|
7946
+ conf = DeployConf(d)
7903
7947
  link_dst_pfx = d + '/'
7904
7948
  link_dst_sfx = DEPLOY_TAG_SEPARATOR + f
7905
7949
 
@@ -7907,18 +7951,20 @@ class DeployConfManager:
7907
7951
  # @conf(.ext)* - links a single file in root of app conf dir to conf/@conf/@dst(.ext)*
7908
7952
  if '.' in link.src:
7909
7953
  l, _, r = link.src.partition('.')
7954
+ conf = DeployConf(l)
7910
7955
  link_dst_pfx = l + '/'
7911
7956
  link_dst_sfx = '.' + r
7912
7957
  else:
7958
+ conf = DeployConf(link.src)
7913
7959
  link_dst_pfx = link.src + '/'
7914
7960
  link_dst_sfx = ''
7915
7961
 
7916
7962
  #
7917
7963
 
7918
- if isinstance(link, CurrentOnlyDeployAppConfLink):
7964
+ if link.kind == 'current_only':
7919
7965
  link_dst_mid = str(tags[DeployApp].s)
7920
- elif isinstance(link, AllActiveDeployAppConfLink):
7921
- link_dst_mid = self._UNIQUE_LINK_NAME.render(tags)
7966
+ elif link.kind == 'all_active':
7967
+ link_dst_mid = cls._UNIQUE_LINK_NAME.render(tags)
7922
7968
  else:
7923
7969
  raise TypeError(link)
7924
7970
 
@@ -7932,6 +7978,7 @@ class DeployConfManager:
7932
7978
  link_dst = os.path.join(conf_link_dir, link_dst_name)
7933
7979
 
7934
7980
  return DeployConfManager._ComputedConfLink(
7981
+ conf=conf,
7935
7982
  is_dir=is_dir,
7936
7983
  link_src=link_src,
7937
7984
  link_dst=link_dst,
@@ -2259,6 +2259,9 @@ Maybe._empty = tuple.__new__(_Maybe, ()) # noqa
2259
2259
  # ../../../omlish/lite/reflect.py
2260
2260
 
2261
2261
 
2262
+ ##
2263
+
2264
+
2262
2265
  _GENERIC_ALIAS_TYPES = (
2263
2266
  ta._GenericAlias, # type: ignore # noqa
2264
2267
  *([ta._SpecialGenericAlias] if hasattr(ta, '_SpecialGenericAlias') else []), # noqa
@@ -2276,6 +2279,9 @@ is_union_alias = functools.partial(is_generic_alias, origin=ta.Union)
2276
2279
  is_callable_alias = functools.partial(is_generic_alias, origin=ta.Callable)
2277
2280
 
2278
2281
 
2282
+ ##
2283
+
2284
+
2279
2285
  def is_optional_alias(spec: ta.Any) -> bool:
2280
2286
  return (
2281
2287
  isinstance(spec, _GENERIC_ALIAS_TYPES) and # noqa
@@ -2290,6 +2296,9 @@ def get_optional_alias_arg(spec: ta.Any) -> ta.Any:
2290
2296
  return it
2291
2297
 
2292
2298
 
2299
+ ##
2300
+
2301
+
2293
2302
  def is_new_type(spec: ta.Any) -> bool:
2294
2303
  if isinstance(ta.NewType, type):
2295
2304
  return isinstance(spec, ta.NewType)
@@ -2302,6 +2311,26 @@ def get_new_type_supertype(spec: ta.Any) -> ta.Any:
2302
2311
  return spec.__supertype__
2303
2312
 
2304
2313
 
2314
+ ##
2315
+
2316
+
2317
+ def is_literal_type(spec: ta.Any) -> bool:
2318
+ if hasattr(ta, '_LiteralGenericAlias'):
2319
+ return isinstance(spec, ta._LiteralGenericAlias) # noqa
2320
+ else:
2321
+ return (
2322
+ isinstance(spec, ta._GenericAlias) and # type: ignore # noqa
2323
+ spec.__origin__ is ta.Literal
2324
+ )
2325
+
2326
+
2327
+ def get_literal_type_args(spec: ta.Any) -> ta.Iterable[ta.Any]:
2328
+ return spec.__args__
2329
+
2330
+
2331
+ ##
2332
+
2333
+
2305
2334
  def deep_subclasses(cls: ta.Type[T]) -> ta.Iterator[ta.Type[T]]:
2306
2335
  seen = set()
2307
2336
  todo = list(reversed(cls.__subclasses__()))
@@ -4991,6 +5020,18 @@ class OptionalObjMarshaler(ObjMarshaler):
4991
5020
  return self.item.unmarshal(o, ctx)
4992
5021
 
4993
5022
 
5023
+ @dc.dataclass(frozen=True)
5024
+ class LiteralObjMarshaler(ObjMarshaler):
5025
+ item: ObjMarshaler
5026
+ vs: frozenset
5027
+
5028
+ def marshal(self, o: ta.Any, ctx: 'ObjMarshalContext') -> ta.Any:
5029
+ return self.item.marshal(check.in_(o, self.vs), ctx)
5030
+
5031
+ def unmarshal(self, o: ta.Any, ctx: 'ObjMarshalContext') -> ta.Any:
5032
+ return check.in_(self.item.unmarshal(o, ctx), self.vs)
5033
+
5034
+
4994
5035
  @dc.dataclass(frozen=True)
4995
5036
  class MappingObjMarshaler(ObjMarshaler):
4996
5037
  ty: type
@@ -5202,6 +5243,11 @@ class ObjMarshalerManager:
5202
5243
  if is_new_type(ty):
5203
5244
  return rec(get_new_type_supertype(ty))
5204
5245
 
5246
+ if is_literal_type(ty):
5247
+ lvs = frozenset(get_literal_type_args(ty))
5248
+ lty = check.single(set(map(type, lvs)))
5249
+ return LiteralObjMarshaler(rec(lty), lvs)
5250
+
5205
5251
  if is_generic_alias(ty):
5206
5252
  try:
5207
5253
  mt = self._generic_mapping_types[ta.get_origin(ty)]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ominfra
3
- Version: 0.0.0.dev173
3
+ Version: 0.0.0.dev175
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.dev173
16
- Requires-Dist: omlish==0.0.0.dev173
15
+ Requires-Dist: omdev==0.0.0.dev175
16
+ Requires-Dist: omlish==0.0.0.dev175
17
17
  Provides-Extra: all
18
18
  Requires-Dist: paramiko~=3.5; extra == "all"
19
19
  Requires-Dist: asyncssh~=2.18; extra == "all"
@@ -46,13 +46,13 @@ ominfra/manage/commands/types.py,sha256=XFZPeqeIBAaIIQF3pdPbGxLlb-LCrz6WtlDWO2q_
46
46
  ominfra/manage/deploy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
47
  ominfra/manage/deploy/apps.py,sha256=4qcUi7Zxd2Sgfb8ZQSbjiMv1ppkHpJ37zJJMeDs6_xo,4738
48
48
  ominfra/manage/deploy/commands.py,sha256=fKFKhFwqIqC_PsgA-W66qIJ5S32xRgBBaRt3lbPX5Zg,763
49
- ominfra/manage/deploy/conf.py,sha256=C2eLMuB2BVi7RM-7aPvZvlZbAgQVDunDD0AehJ11Kog,5511
49
+ ominfra/manage/deploy/conf.py,sha256=cGu9q-mtbBsBXydTGrNE11NGyYdxbn7aPiGx28rxhsg,5639
50
50
  ominfra/manage/deploy/config.py,sha256=aR6ubMEWqkTI55XtcG1Cczn6YhCVN6eSL8DT5EHQJN0,166
51
51
  ominfra/manage/deploy/deploy.py,sha256=zEcuwH7Sj3Z5Wb5U9RDqEG8CHaOZVhGpPBBTGGER2j4,1672
52
52
  ominfra/manage/deploy/git.py,sha256=cfTCx1qD-FQPFkbYW28tkU8nVxQbnfnWxpuJuGQHtBw,3753
53
53
  ominfra/manage/deploy/inject.py,sha256=kzGl2N2jhijUw4-PYUK1LNG8_MJD7BMgCbi6nDViMWg,1965
54
54
  ominfra/manage/deploy/interp.py,sha256=OKkenH8YKEW_mEDR6X7_ZLxK9a1Ox6KHSwFPTHT6OzA,1029
55
- ominfra/manage/deploy/specs.py,sha256=13QLTShAyt-tT0i85Cf_L6GsPZvVKnYShk2EMrLBdj8,3726
55
+ ominfra/manage/deploy/specs.py,sha256=XIEOdLwULFprLajjzX6Qf_T3wVvEWeC4tIZgYbycCHI,3656
56
56
  ominfra/manage/deploy/tags.py,sha256=f2gTcV9aOGv5A6-6ZESHzeQ47TcLTkaEXe60_JyvqQo,4977
57
57
  ominfra/manage/deploy/tmp.py,sha256=dFJuqGfSf5otCxSaCI01a5UOSaArMlU4MzzYcyr74-s,1237
58
58
  ominfra/manage/deploy/types.py,sha256=ZcIoheZ3zW7n0IZiqTRW_Uo3JyWWeWg5nyKGryvGc2I,112
@@ -61,7 +61,7 @@ ominfra/manage/deploy/paths/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
61
61
  ominfra/manage/deploy/paths/inject.py,sha256=X81C-Qhef1LQ7tILWvkomBwFTvgooLVmWRnKL7TeVoI,596
62
62
  ominfra/manage/deploy/paths/manager.py,sha256=gxr_CsjLmjxXx8w3J8ookJk9OGltCpyBFYBnxXaw5lg,1050
63
63
  ominfra/manage/deploy/paths/owners.py,sha256=GmLy0E70C8CF3eYIdkAhBtYaZXW4QWmSzvgts5l1i_4,1379
64
- ominfra/manage/deploy/paths/paths.py,sha256=_zFXTeiACLkC9i289rQlqkPg_U8nHWWpuShW29-STSs,5541
64
+ ominfra/manage/deploy/paths/paths.py,sha256=i7g8YdYOh4M_jgJXtafTbFkRhlu469cfGxAJAuB3fVY,5531
65
65
  ominfra/manage/deploy/paths/types.py,sha256=TGgtSASmdyuZ2maZnvahfA0QxPLWlHBtpDeIEoEDGxk,112
66
66
  ominfra/manage/remote/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
67
67
  ominfra/manage/remote/_main.py,sha256=p5KoiS2WMw6QAqlDl_Zun-JybmCsy8awIfpBMLBjGMY,4356
@@ -85,9 +85,9 @@ ominfra/manage/targets/connection.py,sha256=rVI1YJxFClcF-sdttqWyIz9_XjPI01GUdwxY
85
85
  ominfra/manage/targets/inject.py,sha256=P4597xWM-V3I_gCt2O71OLhYQkkXtuJvkYRsIbhhMcE,1561
86
86
  ominfra/manage/targets/targets.py,sha256=7GP6UAZyJFEhpkJN6UQdpr_WN3p7C76v-s445y-WB6U,1885
87
87
  ominfra/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
- ominfra/scripts/journald2aws.py,sha256=OjbemVx-zyCBuWZVgTky66n2-MfyyS7ups4A9hsvHfA,155684
89
- ominfra/scripts/manage.py,sha256=Fx8aura2aZJW6qItOIamFcB028hoxhBgt3dvtkSCFoM,315670
90
- ominfra/scripts/supervisor.py,sha256=viYrsafRW5fLN2KUS1MtxCOm9CO4iOgIu60cmN3joSg,274450
88
+ ominfra/scripts/journald2aws.py,sha256=fbs8jZCsnwi5vF8Bg892wu3rscHCHeLQlvsDs6oAZBs,156681
89
+ ominfra/scripts/manage.py,sha256=K9Z5QjGH3maQYwRnW3UbvL7dkdAk4-mLwvgWVC8TLSg,316780
90
+ ominfra/scripts/supervisor.py,sha256=CD8o9RktPyB3L8nMBa6rabWE0tZlti6dmzoEEKRPWvY,275447
91
91
  ominfra/supervisor/LICENSE.txt,sha256=yvqaMNsDhWxziHa9ien6qCW1SkZv-DQlAg96XjfSee8,1746
92
92
  ominfra/supervisor/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
93
93
  ominfra/supervisor/__main__.py,sha256=I0yFw-C08OOiZ3BF6lF1Oiv789EQXu-_j6whDhQUTEA,66
@@ -129,9 +129,9 @@ ominfra/tailscale/api.py,sha256=C5-t_b6jZXUWcy5k8bXm7CFnk73pSdrlMOgGDeGVrpw,1370
129
129
  ominfra/tailscale/cli.py,sha256=h6akQJMl0KuWLHS7Ur6WcBZ2JwF0DJQhsPTnFBdGyNk,3571
130
130
  ominfra/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
131
131
  ominfra/tools/listresources.py,sha256=4qVg5txsb10EHhvqXXeM6gJ2jx9LbroEnPydDv1uXs0,6176
132
- ominfra-0.0.0.dev173.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
133
- ominfra-0.0.0.dev173.dist-info/METADATA,sha256=PrY1ZdAiY9vgxekGjoC-9qePEbcgonN98lywYDWXCes,731
134
- ominfra-0.0.0.dev173.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
135
- ominfra-0.0.0.dev173.dist-info/entry_points.txt,sha256=kgecQ2MgGrM9qK744BoKS3tMesaC3yjLnl9pa5CRczg,37
136
- ominfra-0.0.0.dev173.dist-info/top_level.txt,sha256=E-b2OHkk_AOBLXHYZQ2EOFKl-_6uOGd8EjeG-Zy6h_w,8
137
- ominfra-0.0.0.dev173.dist-info/RECORD,,
132
+ ominfra-0.0.0.dev175.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
133
+ ominfra-0.0.0.dev175.dist-info/METADATA,sha256=mSx5m3-8qdibsCJFkrdMM2Z7H2DonPWOBSnJFlETz2M,731
134
+ ominfra-0.0.0.dev175.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
135
+ ominfra-0.0.0.dev175.dist-info/entry_points.txt,sha256=kgecQ2MgGrM9qK744BoKS3tMesaC3yjLnl9pa5CRczg,37
136
+ ominfra-0.0.0.dev175.dist-info/top_level.txt,sha256=E-b2OHkk_AOBLXHYZQ2EOFKl-_6uOGd8EjeG-Zy6h_w,8
137
+ ominfra-0.0.0.dev175.dist-info/RECORD,,