ominfra 0.0.0.dev404__py3-none-any.whl → 0.0.0.dev405__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.
- ominfra/scripts/journald2aws.py +452 -447
- ominfra/scripts/manage.py +199 -194
- {ominfra-0.0.0.dev404.dist-info → ominfra-0.0.0.dev405.dist-info}/METADATA +3 -3
- {ominfra-0.0.0.dev404.dist-info → ominfra-0.0.0.dev405.dist-info}/RECORD +8 -8
- {ominfra-0.0.0.dev404.dist-info → ominfra-0.0.0.dev405.dist-info}/WHEEL +0 -0
- {ominfra-0.0.0.dev404.dist-info → ominfra-0.0.0.dev405.dist-info}/entry_points.txt +0 -0
- {ominfra-0.0.0.dev404.dist-info → ominfra-0.0.0.dev405.dist-info}/licenses/LICENSE +0 -0
- {ominfra-0.0.0.dev404.dist-info → ominfra-0.0.0.dev405.dist-info}/top_level.txt +0 -0
ominfra/scripts/manage.py
CHANGED
@@ -102,6 +102,10 @@ CheckOnRaiseFn = ta.Callable[[Exception], None] # ta.TypeAlias
|
|
102
102
|
CheckExceptionFactory = ta.Callable[..., Exception] # ta.TypeAlias
|
103
103
|
CheckArgsRenderer = ta.Callable[..., ta.Optional[str]] # ta.TypeAlias
|
104
104
|
|
105
|
+
# ../../omlish/lite/contextmanagers.py
|
106
|
+
ExitStackedT = ta.TypeVar('ExitStackedT', bound='ExitStacked')
|
107
|
+
AsyncExitStackedT = ta.TypeVar('AsyncExitStackedT', bound='AsyncExitStacked')
|
108
|
+
|
105
109
|
# ../../omlish/lite/maybes.py
|
106
110
|
U = ta.TypeVar('U')
|
107
111
|
|
@@ -131,10 +135,6 @@ AwaitableT = ta.TypeVar('AwaitableT', bound=ta.Awaitable)
|
|
131
135
|
# ../../omlish/configs/formats.py
|
132
136
|
ConfigDataT = ta.TypeVar('ConfigDataT', bound='ConfigData')
|
133
137
|
|
134
|
-
# ../../omlish/lite/contextmanagers.py
|
135
|
-
ExitStackedT = ta.TypeVar('ExitStackedT', bound='ExitStacked')
|
136
|
-
AsyncExitStackedT = ta.TypeVar('AsyncExitStackedT', bound='AsyncExitStacked')
|
137
|
-
|
138
138
|
# ../../omlish/lite/inject.py
|
139
139
|
InjectorKeyCls = ta.Union[type, ta.NewType]
|
140
140
|
InjectorProviderFn = ta.Callable[['Injector'], ta.Any]
|
@@ -2910,6 +2910,201 @@ class Checks:
|
|
2910
2910
|
check = Checks()
|
2911
2911
|
|
2912
2912
|
|
2913
|
+
########################################
|
2914
|
+
# ../../../omlish/lite/contextmanagers.py
|
2915
|
+
|
2916
|
+
|
2917
|
+
##
|
2918
|
+
|
2919
|
+
|
2920
|
+
class ExitStacked:
|
2921
|
+
def __init_subclass__(cls, **kwargs: ta.Any) -> None:
|
2922
|
+
super().__init_subclass__(**kwargs)
|
2923
|
+
|
2924
|
+
for a in ('__enter__', '__exit__'):
|
2925
|
+
for b in cls.__bases__:
|
2926
|
+
if b is ExitStacked:
|
2927
|
+
continue
|
2928
|
+
try:
|
2929
|
+
fn = getattr(b, a)
|
2930
|
+
except AttributeError:
|
2931
|
+
pass
|
2932
|
+
else:
|
2933
|
+
if fn is not getattr(ExitStacked, a):
|
2934
|
+
raise TypeError(f'ExitStacked subclass {cls} must not not override {a} via {b}')
|
2935
|
+
|
2936
|
+
_exit_stack: ta.Optional[contextlib.ExitStack] = None
|
2937
|
+
|
2938
|
+
@contextlib.contextmanager
|
2939
|
+
def _exit_stacked_init_wrapper(self) -> ta.Iterator[None]:
|
2940
|
+
"""
|
2941
|
+
Overridable wrapper around __enter__ which deliberately does not have access to an _exit_stack yet. Intended for
|
2942
|
+
things like wrapping __enter__ in a lock.
|
2943
|
+
"""
|
2944
|
+
|
2945
|
+
yield
|
2946
|
+
|
2947
|
+
@ta.final
|
2948
|
+
def __enter__(self: ExitStackedT) -> ExitStackedT:
|
2949
|
+
"""
|
2950
|
+
Final because any contexts entered during this init must be exited if any exception is thrown, and user
|
2951
|
+
overriding would likely interfere with that. Override `_enter_contexts` for such init.
|
2952
|
+
"""
|
2953
|
+
|
2954
|
+
with self._exit_stacked_init_wrapper():
|
2955
|
+
if self._exit_stack is not None:
|
2956
|
+
raise RuntimeError
|
2957
|
+
es = self._exit_stack = contextlib.ExitStack()
|
2958
|
+
es.__enter__()
|
2959
|
+
try:
|
2960
|
+
self._enter_contexts()
|
2961
|
+
except Exception: # noqa
|
2962
|
+
es.__exit__(*sys.exc_info())
|
2963
|
+
raise
|
2964
|
+
return self
|
2965
|
+
|
2966
|
+
@ta.final
|
2967
|
+
def __exit__(self, exc_type, exc_val, exc_tb):
|
2968
|
+
if (es := self._exit_stack) is None:
|
2969
|
+
return None
|
2970
|
+
try:
|
2971
|
+
self._exit_contexts()
|
2972
|
+
except Exception: # noqa
|
2973
|
+
es.__exit__(*sys.exc_info())
|
2974
|
+
raise
|
2975
|
+
return es.__exit__(exc_type, exc_val, exc_tb)
|
2976
|
+
|
2977
|
+
def _enter_contexts(self) -> None:
|
2978
|
+
pass
|
2979
|
+
|
2980
|
+
def _exit_contexts(self) -> None:
|
2981
|
+
pass
|
2982
|
+
|
2983
|
+
def _enter_context(self, cm: ta.ContextManager[T]) -> T:
|
2984
|
+
if (es := self._exit_stack) is None:
|
2985
|
+
raise RuntimeError
|
2986
|
+
return es.enter_context(cm)
|
2987
|
+
|
2988
|
+
|
2989
|
+
class AsyncExitStacked:
|
2990
|
+
def __init_subclass__(cls, **kwargs: ta.Any) -> None:
|
2991
|
+
super().__init_subclass__(**kwargs)
|
2992
|
+
|
2993
|
+
for a in ('__aenter__', '__aexit__'):
|
2994
|
+
for b in cls.__bases__:
|
2995
|
+
if b is AsyncExitStacked:
|
2996
|
+
continue
|
2997
|
+
try:
|
2998
|
+
fn = getattr(b, a)
|
2999
|
+
except AttributeError:
|
3000
|
+
pass
|
3001
|
+
else:
|
3002
|
+
if fn is not getattr(AsyncExitStacked, a):
|
3003
|
+
raise TypeError(f'AsyncExitStacked subclass {cls} must not not override {a} via {b}')
|
3004
|
+
|
3005
|
+
_exit_stack: ta.Optional[contextlib.AsyncExitStack] = None
|
3006
|
+
|
3007
|
+
@contextlib.asynccontextmanager
|
3008
|
+
async def _async_exit_stacked_init_wrapper(self) -> ta.AsyncGenerator[None, None]:
|
3009
|
+
yield
|
3010
|
+
|
3011
|
+
@ta.final
|
3012
|
+
async def __aenter__(self: AsyncExitStackedT) -> AsyncExitStackedT:
|
3013
|
+
async with self._async_exit_stacked_init_wrapper():
|
3014
|
+
if self._exit_stack is not None:
|
3015
|
+
raise RuntimeError
|
3016
|
+
es = self._exit_stack = contextlib.AsyncExitStack()
|
3017
|
+
await es.__aenter__()
|
3018
|
+
try:
|
3019
|
+
await self._async_enter_contexts()
|
3020
|
+
except Exception: # noqa
|
3021
|
+
await es.__aexit__(*sys.exc_info())
|
3022
|
+
raise
|
3023
|
+
return self
|
3024
|
+
|
3025
|
+
@ta.final
|
3026
|
+
async def __aexit__(self, exc_type, exc_val, exc_tb):
|
3027
|
+
if (es := self._exit_stack) is None:
|
3028
|
+
return None
|
3029
|
+
try:
|
3030
|
+
await self._async_exit_contexts()
|
3031
|
+
except Exception: # noqa
|
3032
|
+
await es.__aexit__(*sys.exc_info())
|
3033
|
+
raise
|
3034
|
+
return await es.__aexit__(exc_type, exc_val, exc_tb)
|
3035
|
+
|
3036
|
+
async def _async_enter_contexts(self) -> None:
|
3037
|
+
pass
|
3038
|
+
|
3039
|
+
async def _async_exit_contexts(self) -> None:
|
3040
|
+
pass
|
3041
|
+
|
3042
|
+
def _enter_context(self, cm: ta.ContextManager[T]) -> T:
|
3043
|
+
if (es := self._exit_stack) is None:
|
3044
|
+
raise RuntimeError
|
3045
|
+
return es.enter_context(cm)
|
3046
|
+
|
3047
|
+
async def _enter_async_context(self, cm: ta.AsyncContextManager[T]) -> T:
|
3048
|
+
if (es := self._exit_stack) is None:
|
3049
|
+
raise RuntimeError
|
3050
|
+
return await es.enter_async_context(cm)
|
3051
|
+
|
3052
|
+
|
3053
|
+
##
|
3054
|
+
|
3055
|
+
|
3056
|
+
@contextlib.contextmanager
|
3057
|
+
def defer(fn: ta.Callable, *args: ta.Any, **kwargs: ta.Any) -> ta.Generator[ta.Callable, None, None]:
|
3058
|
+
if args or kwargs:
|
3059
|
+
fn = functools.partial(fn, *args, **kwargs)
|
3060
|
+
try:
|
3061
|
+
yield fn
|
3062
|
+
finally:
|
3063
|
+
fn()
|
3064
|
+
|
3065
|
+
|
3066
|
+
@contextlib.asynccontextmanager
|
3067
|
+
async def adefer(fn: ta.Awaitable) -> ta.AsyncGenerator[ta.Awaitable, None]:
|
3068
|
+
try:
|
3069
|
+
yield fn
|
3070
|
+
finally:
|
3071
|
+
await fn
|
3072
|
+
|
3073
|
+
|
3074
|
+
##
|
3075
|
+
|
3076
|
+
|
3077
|
+
@contextlib.contextmanager
|
3078
|
+
def attr_setting(obj, attr, val, *, default=None): # noqa
|
3079
|
+
not_set = object()
|
3080
|
+
orig = getattr(obj, attr, not_set)
|
3081
|
+
try:
|
3082
|
+
setattr(obj, attr, val)
|
3083
|
+
if orig is not not_set:
|
3084
|
+
yield orig
|
3085
|
+
else:
|
3086
|
+
yield default
|
3087
|
+
finally:
|
3088
|
+
if orig is not_set:
|
3089
|
+
delattr(obj, attr)
|
3090
|
+
else:
|
3091
|
+
setattr(obj, attr, orig)
|
3092
|
+
|
3093
|
+
|
3094
|
+
##
|
3095
|
+
|
3096
|
+
|
3097
|
+
class aclosing(contextlib.AbstractAsyncContextManager): # noqa
|
3098
|
+
def __init__(self, thing):
|
3099
|
+
self.thing = thing
|
3100
|
+
|
3101
|
+
async def __aenter__(self):
|
3102
|
+
return self.thing
|
3103
|
+
|
3104
|
+
async def __aexit__(self, *exc_info):
|
3105
|
+
await self.thing.aclose()
|
3106
|
+
|
3107
|
+
|
2913
3108
|
########################################
|
2914
3109
|
# ../../../omlish/lite/json.py
|
2915
3110
|
|
@@ -6116,196 +6311,6 @@ DEFAULT_CONFIG_RENDERERS: ta.Sequence[ConfigRenderer] = [
|
|
6116
6311
|
DEFAULT_CONFIG_RENDERER = SwitchedConfigRenderer(DEFAULT_CONFIG_RENDERERS)
|
6117
6312
|
|
6118
6313
|
|
6119
|
-
########################################
|
6120
|
-
# ../../../omlish/lite/contextmanagers.py
|
6121
|
-
|
6122
|
-
|
6123
|
-
##
|
6124
|
-
|
6125
|
-
|
6126
|
-
class ExitStacked:
|
6127
|
-
def __init_subclass__(cls, **kwargs: ta.Any) -> None:
|
6128
|
-
super().__init_subclass__(**kwargs)
|
6129
|
-
|
6130
|
-
for a in ('__enter__', '__exit__'):
|
6131
|
-
for b in cls.__bases__:
|
6132
|
-
if b is ExitStacked:
|
6133
|
-
continue
|
6134
|
-
try:
|
6135
|
-
fn = getattr(b, a)
|
6136
|
-
except AttributeError:
|
6137
|
-
pass
|
6138
|
-
else:
|
6139
|
-
if fn is not getattr(ExitStacked, a):
|
6140
|
-
raise TypeError(f'ExitStacked subclass {cls} must not not override {a} via {b}')
|
6141
|
-
|
6142
|
-
_exit_stack: ta.Optional[contextlib.ExitStack] = None
|
6143
|
-
|
6144
|
-
@contextlib.contextmanager
|
6145
|
-
def _exit_stacked_init_wrapper(self) -> ta.Iterator[None]:
|
6146
|
-
"""
|
6147
|
-
Overridable wrapper around __enter__ which deliberately does not have access to an _exit_stack yet. Intended for
|
6148
|
-
things like wrapping __enter__ in a lock.
|
6149
|
-
"""
|
6150
|
-
|
6151
|
-
yield
|
6152
|
-
|
6153
|
-
@ta.final
|
6154
|
-
def __enter__(self: ExitStackedT) -> ExitStackedT:
|
6155
|
-
"""
|
6156
|
-
Final because any contexts entered during this init must be exited if any exception is thrown, and user
|
6157
|
-
overriding would likely interfere with that. Override `_enter_contexts` for such init.
|
6158
|
-
"""
|
6159
|
-
|
6160
|
-
with self._exit_stacked_init_wrapper():
|
6161
|
-
check.state(self._exit_stack is None)
|
6162
|
-
es = self._exit_stack = contextlib.ExitStack()
|
6163
|
-
es.__enter__()
|
6164
|
-
try:
|
6165
|
-
self._enter_contexts()
|
6166
|
-
except Exception: # noqa
|
6167
|
-
es.__exit__(*sys.exc_info())
|
6168
|
-
raise
|
6169
|
-
return self
|
6170
|
-
|
6171
|
-
@ta.final
|
6172
|
-
def __exit__(self, exc_type, exc_val, exc_tb):
|
6173
|
-
if (es := self._exit_stack) is None:
|
6174
|
-
return None
|
6175
|
-
try:
|
6176
|
-
self._exit_contexts()
|
6177
|
-
except Exception: # noqa
|
6178
|
-
es.__exit__(*sys.exc_info())
|
6179
|
-
raise
|
6180
|
-
return es.__exit__(exc_type, exc_val, exc_tb)
|
6181
|
-
|
6182
|
-
def _enter_contexts(self) -> None:
|
6183
|
-
pass
|
6184
|
-
|
6185
|
-
def _exit_contexts(self) -> None:
|
6186
|
-
pass
|
6187
|
-
|
6188
|
-
def _enter_context(self, cm: ta.ContextManager[T]) -> T:
|
6189
|
-
es = check.not_none(self._exit_stack)
|
6190
|
-
return es.enter_context(cm)
|
6191
|
-
|
6192
|
-
|
6193
|
-
class AsyncExitStacked:
|
6194
|
-
def __init_subclass__(cls, **kwargs: ta.Any) -> None:
|
6195
|
-
super().__init_subclass__(**kwargs)
|
6196
|
-
|
6197
|
-
for a in ('__aenter__', '__aexit__'):
|
6198
|
-
for b in cls.__bases__:
|
6199
|
-
if b is AsyncExitStacked:
|
6200
|
-
continue
|
6201
|
-
try:
|
6202
|
-
fn = getattr(b, a)
|
6203
|
-
except AttributeError:
|
6204
|
-
pass
|
6205
|
-
else:
|
6206
|
-
if fn is not getattr(AsyncExitStacked, a):
|
6207
|
-
raise TypeError(f'AsyncExitStacked subclass {cls} must not not override {a} via {b}')
|
6208
|
-
|
6209
|
-
_exit_stack: ta.Optional[contextlib.AsyncExitStack] = None
|
6210
|
-
|
6211
|
-
@contextlib.asynccontextmanager
|
6212
|
-
async def _async_exit_stacked_init_wrapper(self) -> ta.AsyncGenerator[None, None]:
|
6213
|
-
yield
|
6214
|
-
|
6215
|
-
@ta.final
|
6216
|
-
async def __aenter__(self: AsyncExitStackedT) -> AsyncExitStackedT:
|
6217
|
-
async with self._async_exit_stacked_init_wrapper():
|
6218
|
-
check.state(self._exit_stack is None)
|
6219
|
-
es = self._exit_stack = contextlib.AsyncExitStack()
|
6220
|
-
await es.__aenter__()
|
6221
|
-
try:
|
6222
|
-
await self._async_enter_contexts()
|
6223
|
-
except Exception: # noqa
|
6224
|
-
await es.__aexit__(*sys.exc_info())
|
6225
|
-
raise
|
6226
|
-
return self
|
6227
|
-
|
6228
|
-
@ta.final
|
6229
|
-
async def __aexit__(self, exc_type, exc_val, exc_tb):
|
6230
|
-
if (es := self._exit_stack) is None:
|
6231
|
-
return None
|
6232
|
-
try:
|
6233
|
-
await self._async_exit_contexts()
|
6234
|
-
except Exception: # noqa
|
6235
|
-
await es.__aexit__(*sys.exc_info())
|
6236
|
-
raise
|
6237
|
-
return await es.__aexit__(exc_type, exc_val, exc_tb)
|
6238
|
-
|
6239
|
-
async def _async_enter_contexts(self) -> None:
|
6240
|
-
pass
|
6241
|
-
|
6242
|
-
async def _async_exit_contexts(self) -> None:
|
6243
|
-
pass
|
6244
|
-
|
6245
|
-
def _enter_context(self, cm: ta.ContextManager[T]) -> T:
|
6246
|
-
es = check.not_none(self._exit_stack)
|
6247
|
-
return es.enter_context(cm)
|
6248
|
-
|
6249
|
-
async def _enter_async_context(self, cm: ta.AsyncContextManager[T]) -> T:
|
6250
|
-
es = check.not_none(self._exit_stack)
|
6251
|
-
return await es.enter_async_context(cm)
|
6252
|
-
|
6253
|
-
|
6254
|
-
##
|
6255
|
-
|
6256
|
-
|
6257
|
-
@contextlib.contextmanager
|
6258
|
-
def defer(fn: ta.Callable, *args: ta.Any, **kwargs: ta.Any) -> ta.Generator[ta.Callable, None, None]:
|
6259
|
-
if args or kwargs:
|
6260
|
-
fn = functools.partial(fn, *args, **kwargs)
|
6261
|
-
try:
|
6262
|
-
yield fn
|
6263
|
-
finally:
|
6264
|
-
fn()
|
6265
|
-
|
6266
|
-
|
6267
|
-
@contextlib.asynccontextmanager
|
6268
|
-
async def adefer(fn: ta.Awaitable) -> ta.AsyncGenerator[ta.Awaitable, None]:
|
6269
|
-
try:
|
6270
|
-
yield fn
|
6271
|
-
finally:
|
6272
|
-
await fn
|
6273
|
-
|
6274
|
-
|
6275
|
-
##
|
6276
|
-
|
6277
|
-
|
6278
|
-
@contextlib.contextmanager
|
6279
|
-
def attr_setting(obj, attr, val, *, default=None): # noqa
|
6280
|
-
not_set = object()
|
6281
|
-
orig = getattr(obj, attr, not_set)
|
6282
|
-
try:
|
6283
|
-
setattr(obj, attr, val)
|
6284
|
-
if orig is not not_set:
|
6285
|
-
yield orig
|
6286
|
-
else:
|
6287
|
-
yield default
|
6288
|
-
finally:
|
6289
|
-
if orig is not_set:
|
6290
|
-
delattr(obj, attr)
|
6291
|
-
else:
|
6292
|
-
setattr(obj, attr, orig)
|
6293
|
-
|
6294
|
-
|
6295
|
-
##
|
6296
|
-
|
6297
|
-
|
6298
|
-
class aclosing(contextlib.AbstractAsyncContextManager): # noqa
|
6299
|
-
def __init__(self, thing):
|
6300
|
-
self.thing = thing
|
6301
|
-
|
6302
|
-
async def __aenter__(self):
|
6303
|
-
return self.thing
|
6304
|
-
|
6305
|
-
async def __aexit__(self, *exc_info):
|
6306
|
-
await self.thing.aclose()
|
6307
|
-
|
6308
|
-
|
6309
6314
|
########################################
|
6310
6315
|
# ../../../omlish/lite/inject.py
|
6311
6316
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ominfra
|
3
|
-
Version: 0.0.0.
|
3
|
+
Version: 0.0.0.dev405
|
4
4
|
Summary: ominfra
|
5
5
|
Author: wrmsr
|
6
6
|
License-Expression: BSD-3-Clause
|
@@ -14,8 +14,8 @@ 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: omdev==0.0.0.
|
18
|
-
Requires-Dist: omlish==0.0.0.
|
17
|
+
Requires-Dist: omdev==0.0.0.dev405
|
18
|
+
Requires-Dist: omlish==0.0.0.dev405
|
19
19
|
Provides-Extra: all
|
20
20
|
Requires-Dist: paramiko~=4.0; extra == "all"
|
21
21
|
Requires-Dist: asyncssh~=2.21; extra == "all"
|
@@ -112,8 +112,8 @@ ominfra/manage/targets/connection.py,sha256=Ut-R_PvQN9tPBacZD0ODmLIYvLsgS51qvOGr
|
|
112
112
|
ominfra/manage/targets/inject.py,sha256=3M4wBkxtvymq_yhiotHlTN8iydELMjVCndyp9Bq-4eo,1572
|
113
113
|
ominfra/manage/targets/targets.py,sha256=WmasYmL6xfAI7F0XvDhScFdBVxkqPkmo_gRgABmmkGA,1891
|
114
114
|
ominfra/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
115
|
-
ominfra/scripts/journald2aws.py,sha256=
|
116
|
-
ominfra/scripts/manage.py,sha256=
|
115
|
+
ominfra/scripts/journald2aws.py,sha256=BN2_tKSqLqZtxaK8XcIQ9Ql2LLTG0-Pc5QilQRJeNnI,174155
|
116
|
+
ominfra/scripts/manage.py,sha256=QC2o539EVnSfNwMPfaRVVS8UHgKwPB7hfg6GbcIWZv8,397061
|
117
117
|
ominfra/scripts/supervisor.py,sha256=_2WAFBsYuFrQ6eg2_8dZOIbmue0SeBZizIiNhBff3rg,306666
|
118
118
|
ominfra/supervisor/LICENSE.txt,sha256=ZrHY15PVR98y26Yg6iQfa-SXnUaYTDhrUsPVcEO5OKM,1874
|
119
119
|
ominfra/supervisor/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
|
@@ -156,9 +156,9 @@ ominfra/tailscale/api.py,sha256=XASv9C_CWI-u-yX5jVzhJrkJhlwQRkYQWQQG1uJwAd8,1375
|
|
156
156
|
ominfra/tailscale/cli.py,sha256=zRV7-tKB7kBah1oTVZlol-vwx1FBlnfzYAPGkeU5jX4,3543
|
157
157
|
ominfra/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
158
158
|
ominfra/tools/listresources.py,sha256=ePmo7cUAiBZARkM_3K4GKYZXxV73An_aioS1m-AAJis,6181
|
159
|
-
ominfra-0.0.0.
|
160
|
-
ominfra-0.0.0.
|
161
|
-
ominfra-0.0.0.
|
162
|
-
ominfra-0.0.0.
|
163
|
-
ominfra-0.0.0.
|
164
|
-
ominfra-0.0.0.
|
159
|
+
ominfra-0.0.0.dev405.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
160
|
+
ominfra-0.0.0.dev405.dist-info/METADATA,sha256=R_hNO61Fw36LmgMB4oiUPSv2tTlVTviTqQDK_0fs68I,2377
|
161
|
+
ominfra-0.0.0.dev405.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
162
|
+
ominfra-0.0.0.dev405.dist-info/entry_points.txt,sha256=kgecQ2MgGrM9qK744BoKS3tMesaC3yjLnl9pa5CRczg,37
|
163
|
+
ominfra-0.0.0.dev405.dist-info/top_level.txt,sha256=E-b2OHkk_AOBLXHYZQ2EOFKl-_6uOGd8EjeG-Zy6h_w,8
|
164
|
+
ominfra-0.0.0.dev405.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|