ominfra 0.0.0.dev214__py3-none-any.whl → 0.0.0.dev215__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 +79 -12
- ominfra/scripts/manage.py +79 -12
- ominfra/scripts/supervisor.py +79 -12
- {ominfra-0.0.0.dev214.dist-info → ominfra-0.0.0.dev215.dist-info}/METADATA +3 -3
- {ominfra-0.0.0.dev214.dist-info → ominfra-0.0.0.dev215.dist-info}/RECORD +9 -9
- {ominfra-0.0.0.dev214.dist-info → ominfra-0.0.0.dev215.dist-info}/LICENSE +0 -0
- {ominfra-0.0.0.dev214.dist-info → ominfra-0.0.0.dev215.dist-info}/WHEEL +0 -0
- {ominfra-0.0.0.dev214.dist-info → ominfra-0.0.0.dev215.dist-info}/entry_points.txt +0 -0
- {ominfra-0.0.0.dev214.dist-info → ominfra-0.0.0.dev215.dist-info}/top_level.txt +0 -0
ominfra/scripts/journald2aws.py
CHANGED
@@ -2997,6 +2997,7 @@ class aclosing(contextlib.AbstractAsyncContextManager): # noqa
|
|
2997
2997
|
TODO:
|
2998
2998
|
- pickle stdlib objs? have to pin to 3.8 pickle protocol, will be cross-version
|
2999
2999
|
- literals
|
3000
|
+
- Options.sequence_cls = list, mapping_cls = dict, ... - def with_mutable_containers() -> Options
|
3000
3001
|
"""
|
3001
3002
|
|
3002
3003
|
|
@@ -3149,21 +3150,55 @@ class IterableObjMarshaler(ObjMarshaler):
|
|
3149
3150
|
@dc.dataclass(frozen=True)
|
3150
3151
|
class FieldsObjMarshaler(ObjMarshaler):
|
3151
3152
|
ty: type
|
3152
|
-
|
3153
|
+
|
3154
|
+
@dc.dataclass(frozen=True)
|
3155
|
+
class Field:
|
3156
|
+
att: str
|
3157
|
+
key: str
|
3158
|
+
m: ObjMarshaler
|
3159
|
+
|
3160
|
+
omit_if_none: bool = False
|
3161
|
+
|
3162
|
+
fs: ta.Sequence[Field]
|
3163
|
+
|
3153
3164
|
non_strict: bool = False
|
3154
3165
|
|
3166
|
+
#
|
3167
|
+
|
3168
|
+
_fs_by_att: ta.ClassVar[ta.Mapping[str, Field]]
|
3169
|
+
_fs_by_key: ta.ClassVar[ta.Mapping[str, Field]]
|
3170
|
+
|
3171
|
+
def __post_init__(self) -> None:
|
3172
|
+
fs_by_att: dict = {}
|
3173
|
+
fs_by_key: dict = {}
|
3174
|
+
for f in self.fs:
|
3175
|
+
check.not_in(check.non_empty_str(f.att), fs_by_att)
|
3176
|
+
check.not_in(check.non_empty_str(f.key), fs_by_key)
|
3177
|
+
fs_by_att[f.att] = f
|
3178
|
+
fs_by_key[f.key] = f
|
3179
|
+
self.__dict__['_fs_by_att'] = fs_by_att
|
3180
|
+
self.__dict__['_fs_by_key'] = fs_by_key
|
3181
|
+
|
3182
|
+
#
|
3183
|
+
|
3155
3184
|
def marshal(self, o: ta.Any, ctx: 'ObjMarshalContext') -> ta.Any:
|
3156
|
-
|
3157
|
-
|
3158
|
-
|
3159
|
-
|
3185
|
+
d = {}
|
3186
|
+
for f in self.fs:
|
3187
|
+
mv = f.m.marshal(getattr(o, f.att), ctx)
|
3188
|
+
if mv is None and f.omit_if_none:
|
3189
|
+
continue
|
3190
|
+
d[f.key] = mv
|
3191
|
+
return d
|
3160
3192
|
|
3161
3193
|
def unmarshal(self, o: ta.Any, ctx: 'ObjMarshalContext') -> ta.Any:
|
3162
|
-
|
3163
|
-
|
3164
|
-
|
3165
|
-
|
3166
|
-
|
3194
|
+
kw = {}
|
3195
|
+
for k, v in o.items():
|
3196
|
+
if (f := self._fs_by_key.get(k)) is None:
|
3197
|
+
if not (self.non_strict or ctx.options.non_strict_fields):
|
3198
|
+
raise KeyError(k)
|
3199
|
+
continue
|
3200
|
+
kw[f.att] = f.m.unmarshal(v, ctx)
|
3201
|
+
return self.ty(**kw)
|
3167
3202
|
|
3168
3203
|
|
3169
3204
|
@dc.dataclass(frozen=True)
|
@@ -3298,6 +3333,22 @@ def register_single_field_type_obj_marshaler(fld, ty=None):
|
|
3298
3333
|
##
|
3299
3334
|
|
3300
3335
|
|
3336
|
+
class ObjMarshalerFieldMetadata:
|
3337
|
+
def __new__(cls, *args, **kwargs): # noqa
|
3338
|
+
raise TypeError
|
3339
|
+
|
3340
|
+
|
3341
|
+
class OBJ_MARSHALER_FIELD_KEY(ObjMarshalerFieldMetadata): # noqa
|
3342
|
+
pass
|
3343
|
+
|
3344
|
+
|
3345
|
+
class OBJ_MARSHALER_OMIT_IF_NONE(ObjMarshalerFieldMetadata): # noqa
|
3346
|
+
pass
|
3347
|
+
|
3348
|
+
|
3349
|
+
##
|
3350
|
+
|
3351
|
+
|
3301
3352
|
class ObjMarshalerManager:
|
3302
3353
|
def __init__(
|
3303
3354
|
self,
|
@@ -3357,14 +3408,30 @@ class ObjMarshalerManager:
|
|
3357
3408
|
if dc.is_dataclass(ty):
|
3358
3409
|
return FieldsObjMarshaler(
|
3359
3410
|
ty,
|
3360
|
-
|
3411
|
+
[
|
3412
|
+
FieldsObjMarshaler.Field(
|
3413
|
+
att=f.name,
|
3414
|
+
key=check.non_empty_str(fk),
|
3415
|
+
m=rec(f.type),
|
3416
|
+
omit_if_none=check.isinstance(f.metadata.get(OBJ_MARSHALER_OMIT_IF_NONE, False), bool),
|
3417
|
+
)
|
3418
|
+
for f in dc.fields(ty)
|
3419
|
+
if (fk := f.metadata.get(OBJ_MARSHALER_FIELD_KEY, f.name)) is not None
|
3420
|
+
],
|
3361
3421
|
non_strict=non_strict_fields,
|
3362
3422
|
)
|
3363
3423
|
|
3364
3424
|
if issubclass(ty, tuple) and hasattr(ty, '_fields'):
|
3365
3425
|
return FieldsObjMarshaler(
|
3366
3426
|
ty,
|
3367
|
-
|
3427
|
+
[
|
3428
|
+
FieldsObjMarshaler.Field(
|
3429
|
+
att=p.name,
|
3430
|
+
key=p.name,
|
3431
|
+
m=rec(p.annotation),
|
3432
|
+
)
|
3433
|
+
for p in inspect.signature(ty).parameters.values()
|
3434
|
+
],
|
3368
3435
|
non_strict=non_strict_fields,
|
3369
3436
|
)
|
3370
3437
|
|
ominfra/scripts/manage.py
CHANGED
@@ -6435,6 +6435,7 @@ inj = InjectionApi()
|
|
6435
6435
|
TODO:
|
6436
6436
|
- pickle stdlib objs? have to pin to 3.8 pickle protocol, will be cross-version
|
6437
6437
|
- literals
|
6438
|
+
- Options.sequence_cls = list, mapping_cls = dict, ... - def with_mutable_containers() -> Options
|
6438
6439
|
"""
|
6439
6440
|
|
6440
6441
|
|
@@ -6587,21 +6588,55 @@ class IterableObjMarshaler(ObjMarshaler):
|
|
6587
6588
|
@dc.dataclass(frozen=True)
|
6588
6589
|
class FieldsObjMarshaler(ObjMarshaler):
|
6589
6590
|
ty: type
|
6590
|
-
|
6591
|
+
|
6592
|
+
@dc.dataclass(frozen=True)
|
6593
|
+
class Field:
|
6594
|
+
att: str
|
6595
|
+
key: str
|
6596
|
+
m: ObjMarshaler
|
6597
|
+
|
6598
|
+
omit_if_none: bool = False
|
6599
|
+
|
6600
|
+
fs: ta.Sequence[Field]
|
6601
|
+
|
6591
6602
|
non_strict: bool = False
|
6592
6603
|
|
6604
|
+
#
|
6605
|
+
|
6606
|
+
_fs_by_att: ta.ClassVar[ta.Mapping[str, Field]]
|
6607
|
+
_fs_by_key: ta.ClassVar[ta.Mapping[str, Field]]
|
6608
|
+
|
6609
|
+
def __post_init__(self) -> None:
|
6610
|
+
fs_by_att: dict = {}
|
6611
|
+
fs_by_key: dict = {}
|
6612
|
+
for f in self.fs:
|
6613
|
+
check.not_in(check.non_empty_str(f.att), fs_by_att)
|
6614
|
+
check.not_in(check.non_empty_str(f.key), fs_by_key)
|
6615
|
+
fs_by_att[f.att] = f
|
6616
|
+
fs_by_key[f.key] = f
|
6617
|
+
self.__dict__['_fs_by_att'] = fs_by_att
|
6618
|
+
self.__dict__['_fs_by_key'] = fs_by_key
|
6619
|
+
|
6620
|
+
#
|
6621
|
+
|
6593
6622
|
def marshal(self, o: ta.Any, ctx: 'ObjMarshalContext') -> ta.Any:
|
6594
|
-
|
6595
|
-
|
6596
|
-
|
6597
|
-
|
6623
|
+
d = {}
|
6624
|
+
for f in self.fs:
|
6625
|
+
mv = f.m.marshal(getattr(o, f.att), ctx)
|
6626
|
+
if mv is None and f.omit_if_none:
|
6627
|
+
continue
|
6628
|
+
d[f.key] = mv
|
6629
|
+
return d
|
6598
6630
|
|
6599
6631
|
def unmarshal(self, o: ta.Any, ctx: 'ObjMarshalContext') -> ta.Any:
|
6600
|
-
|
6601
|
-
|
6602
|
-
|
6603
|
-
|
6604
|
-
|
6632
|
+
kw = {}
|
6633
|
+
for k, v in o.items():
|
6634
|
+
if (f := self._fs_by_key.get(k)) is None:
|
6635
|
+
if not (self.non_strict or ctx.options.non_strict_fields):
|
6636
|
+
raise KeyError(k)
|
6637
|
+
continue
|
6638
|
+
kw[f.att] = f.m.unmarshal(v, ctx)
|
6639
|
+
return self.ty(**kw)
|
6605
6640
|
|
6606
6641
|
|
6607
6642
|
@dc.dataclass(frozen=True)
|
@@ -6736,6 +6771,22 @@ def register_single_field_type_obj_marshaler(fld, ty=None):
|
|
6736
6771
|
##
|
6737
6772
|
|
6738
6773
|
|
6774
|
+
class ObjMarshalerFieldMetadata:
|
6775
|
+
def __new__(cls, *args, **kwargs): # noqa
|
6776
|
+
raise TypeError
|
6777
|
+
|
6778
|
+
|
6779
|
+
class OBJ_MARSHALER_FIELD_KEY(ObjMarshalerFieldMetadata): # noqa
|
6780
|
+
pass
|
6781
|
+
|
6782
|
+
|
6783
|
+
class OBJ_MARSHALER_OMIT_IF_NONE(ObjMarshalerFieldMetadata): # noqa
|
6784
|
+
pass
|
6785
|
+
|
6786
|
+
|
6787
|
+
##
|
6788
|
+
|
6789
|
+
|
6739
6790
|
class ObjMarshalerManager:
|
6740
6791
|
def __init__(
|
6741
6792
|
self,
|
@@ -6795,14 +6846,30 @@ class ObjMarshalerManager:
|
|
6795
6846
|
if dc.is_dataclass(ty):
|
6796
6847
|
return FieldsObjMarshaler(
|
6797
6848
|
ty,
|
6798
|
-
|
6849
|
+
[
|
6850
|
+
FieldsObjMarshaler.Field(
|
6851
|
+
att=f.name,
|
6852
|
+
key=check.non_empty_str(fk),
|
6853
|
+
m=rec(f.type),
|
6854
|
+
omit_if_none=check.isinstance(f.metadata.get(OBJ_MARSHALER_OMIT_IF_NONE, False), bool),
|
6855
|
+
)
|
6856
|
+
for f in dc.fields(ty)
|
6857
|
+
if (fk := f.metadata.get(OBJ_MARSHALER_FIELD_KEY, f.name)) is not None
|
6858
|
+
],
|
6799
6859
|
non_strict=non_strict_fields,
|
6800
6860
|
)
|
6801
6861
|
|
6802
6862
|
if issubclass(ty, tuple) and hasattr(ty, '_fields'):
|
6803
6863
|
return FieldsObjMarshaler(
|
6804
6864
|
ty,
|
6805
|
-
|
6865
|
+
[
|
6866
|
+
FieldsObjMarshaler.Field(
|
6867
|
+
att=p.name,
|
6868
|
+
key=p.name,
|
6869
|
+
m=rec(p.annotation),
|
6870
|
+
)
|
6871
|
+
for p in inspect.signature(ty).parameters.values()
|
6872
|
+
],
|
6806
6873
|
non_strict=non_strict_fields,
|
6807
6874
|
)
|
6808
6875
|
|
ominfra/scripts/supervisor.py
CHANGED
@@ -5616,6 +5616,7 @@ inj = InjectionApi()
|
|
5616
5616
|
TODO:
|
5617
5617
|
- pickle stdlib objs? have to pin to 3.8 pickle protocol, will be cross-version
|
5618
5618
|
- literals
|
5619
|
+
- Options.sequence_cls = list, mapping_cls = dict, ... - def with_mutable_containers() -> Options
|
5619
5620
|
"""
|
5620
5621
|
|
5621
5622
|
|
@@ -5768,21 +5769,55 @@ class IterableObjMarshaler(ObjMarshaler):
|
|
5768
5769
|
@dc.dataclass(frozen=True)
|
5769
5770
|
class FieldsObjMarshaler(ObjMarshaler):
|
5770
5771
|
ty: type
|
5771
|
-
|
5772
|
+
|
5773
|
+
@dc.dataclass(frozen=True)
|
5774
|
+
class Field:
|
5775
|
+
att: str
|
5776
|
+
key: str
|
5777
|
+
m: ObjMarshaler
|
5778
|
+
|
5779
|
+
omit_if_none: bool = False
|
5780
|
+
|
5781
|
+
fs: ta.Sequence[Field]
|
5782
|
+
|
5772
5783
|
non_strict: bool = False
|
5773
5784
|
|
5785
|
+
#
|
5786
|
+
|
5787
|
+
_fs_by_att: ta.ClassVar[ta.Mapping[str, Field]]
|
5788
|
+
_fs_by_key: ta.ClassVar[ta.Mapping[str, Field]]
|
5789
|
+
|
5790
|
+
def __post_init__(self) -> None:
|
5791
|
+
fs_by_att: dict = {}
|
5792
|
+
fs_by_key: dict = {}
|
5793
|
+
for f in self.fs:
|
5794
|
+
check.not_in(check.non_empty_str(f.att), fs_by_att)
|
5795
|
+
check.not_in(check.non_empty_str(f.key), fs_by_key)
|
5796
|
+
fs_by_att[f.att] = f
|
5797
|
+
fs_by_key[f.key] = f
|
5798
|
+
self.__dict__['_fs_by_att'] = fs_by_att
|
5799
|
+
self.__dict__['_fs_by_key'] = fs_by_key
|
5800
|
+
|
5801
|
+
#
|
5802
|
+
|
5774
5803
|
def marshal(self, o: ta.Any, ctx: 'ObjMarshalContext') -> ta.Any:
|
5775
|
-
|
5776
|
-
|
5777
|
-
|
5778
|
-
|
5804
|
+
d = {}
|
5805
|
+
for f in self.fs:
|
5806
|
+
mv = f.m.marshal(getattr(o, f.att), ctx)
|
5807
|
+
if mv is None and f.omit_if_none:
|
5808
|
+
continue
|
5809
|
+
d[f.key] = mv
|
5810
|
+
return d
|
5779
5811
|
|
5780
5812
|
def unmarshal(self, o: ta.Any, ctx: 'ObjMarshalContext') -> ta.Any:
|
5781
|
-
|
5782
|
-
|
5783
|
-
|
5784
|
-
|
5785
|
-
|
5813
|
+
kw = {}
|
5814
|
+
for k, v in o.items():
|
5815
|
+
if (f := self._fs_by_key.get(k)) is None:
|
5816
|
+
if not (self.non_strict or ctx.options.non_strict_fields):
|
5817
|
+
raise KeyError(k)
|
5818
|
+
continue
|
5819
|
+
kw[f.att] = f.m.unmarshal(v, ctx)
|
5820
|
+
return self.ty(**kw)
|
5786
5821
|
|
5787
5822
|
|
5788
5823
|
@dc.dataclass(frozen=True)
|
@@ -5917,6 +5952,22 @@ def register_single_field_type_obj_marshaler(fld, ty=None):
|
|
5917
5952
|
##
|
5918
5953
|
|
5919
5954
|
|
5955
|
+
class ObjMarshalerFieldMetadata:
|
5956
|
+
def __new__(cls, *args, **kwargs): # noqa
|
5957
|
+
raise TypeError
|
5958
|
+
|
5959
|
+
|
5960
|
+
class OBJ_MARSHALER_FIELD_KEY(ObjMarshalerFieldMetadata): # noqa
|
5961
|
+
pass
|
5962
|
+
|
5963
|
+
|
5964
|
+
class OBJ_MARSHALER_OMIT_IF_NONE(ObjMarshalerFieldMetadata): # noqa
|
5965
|
+
pass
|
5966
|
+
|
5967
|
+
|
5968
|
+
##
|
5969
|
+
|
5970
|
+
|
5920
5971
|
class ObjMarshalerManager:
|
5921
5972
|
def __init__(
|
5922
5973
|
self,
|
@@ -5976,14 +6027,30 @@ class ObjMarshalerManager:
|
|
5976
6027
|
if dc.is_dataclass(ty):
|
5977
6028
|
return FieldsObjMarshaler(
|
5978
6029
|
ty,
|
5979
|
-
|
6030
|
+
[
|
6031
|
+
FieldsObjMarshaler.Field(
|
6032
|
+
att=f.name,
|
6033
|
+
key=check.non_empty_str(fk),
|
6034
|
+
m=rec(f.type),
|
6035
|
+
omit_if_none=check.isinstance(f.metadata.get(OBJ_MARSHALER_OMIT_IF_NONE, False), bool),
|
6036
|
+
)
|
6037
|
+
for f in dc.fields(ty)
|
6038
|
+
if (fk := f.metadata.get(OBJ_MARSHALER_FIELD_KEY, f.name)) is not None
|
6039
|
+
],
|
5980
6040
|
non_strict=non_strict_fields,
|
5981
6041
|
)
|
5982
6042
|
|
5983
6043
|
if issubclass(ty, tuple) and hasattr(ty, '_fields'):
|
5984
6044
|
return FieldsObjMarshaler(
|
5985
6045
|
ty,
|
5986
|
-
|
6046
|
+
[
|
6047
|
+
FieldsObjMarshaler.Field(
|
6048
|
+
att=p.name,
|
6049
|
+
key=p.name,
|
6050
|
+
m=rec(p.annotation),
|
6051
|
+
)
|
6052
|
+
for p in inspect.signature(ty).parameters.values()
|
6053
|
+
],
|
5987
6054
|
non_strict=non_strict_fields,
|
5988
6055
|
)
|
5989
6056
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: ominfra
|
3
|
-
Version: 0.0.0.
|
3
|
+
Version: 0.0.0.dev215
|
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.
|
16
|
-
Requires-Dist: omlish==0.0.0.
|
15
|
+
Requires-Dist: omdev==0.0.0.dev215
|
16
|
+
Requires-Dist: omlish==0.0.0.dev215
|
17
17
|
Provides-Extra: all
|
18
18
|
Requires-Dist: paramiko~=3.5; extra == "all"
|
19
19
|
Requires-Dist: asyncssh~=2.18; extra == "all"
|
@@ -112,9 +112,9 @@ ominfra/manage/targets/connection.py,sha256=rVI1YJxFClcF-sdttqWyIz9_XjPI01GUdwxY
|
|
112
112
|
ominfra/manage/targets/inject.py,sha256=P4597xWM-V3I_gCt2O71OLhYQkkXtuJvkYRsIbhhMcE,1561
|
113
113
|
ominfra/manage/targets/targets.py,sha256=7GP6UAZyJFEhpkJN6UQdpr_WN3p7C76v-s445y-WB6U,1885
|
114
114
|
ominfra/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
115
|
-
ominfra/scripts/journald2aws.py,sha256=
|
116
|
-
ominfra/scripts/manage.py,sha256=
|
117
|
-
ominfra/scripts/supervisor.py,sha256=
|
115
|
+
ominfra/scripts/journald2aws.py,sha256=L2869lSuOOAY661RHuBDOASyGdKYV_kv7cGzRLkRYNk,169939
|
116
|
+
ominfra/scripts/manage.py,sha256=3W98AKjgRnrJhi8kV4cjolN0KszLe-CjbCpK5EvBWAc,361316
|
117
|
+
ominfra/scripts/supervisor.py,sha256=7VnX50-CsDc1TXhTUgdmRMar6rPCUPQWMD2skPJoeCY,295536
|
118
118
|
ominfra/supervisor/LICENSE.txt,sha256=ZrHY15PVR98y26Yg6iQfa-SXnUaYTDhrUsPVcEO5OKM,1874
|
119
119
|
ominfra/supervisor/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
|
120
120
|
ominfra/supervisor/__main__.py,sha256=I0yFw-C08OOiZ3BF6lF1Oiv789EQXu-_j6whDhQUTEA,66
|
@@ -156,9 +156,9 @@ ominfra/tailscale/api.py,sha256=C5-t_b6jZXUWcy5k8bXm7CFnk73pSdrlMOgGDeGVrpw,1370
|
|
156
156
|
ominfra/tailscale/cli.py,sha256=3FnJbgpLw6gInTfhERd1mDy9ijjMUGxkdYVo43Tnxx4,3555
|
157
157
|
ominfra/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
158
158
|
ominfra/tools/listresources.py,sha256=4qVg5txsb10EHhvqXXeM6gJ2jx9LbroEnPydDv1uXs0,6176
|
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.dev215.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
160
|
+
ominfra-0.0.0.dev215.dist-info/METADATA,sha256=6zq5SYVgPq5gGLIj8UXizw_sNhzt87DhAp0MmfNtGcY,731
|
161
|
+
ominfra-0.0.0.dev215.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
162
|
+
ominfra-0.0.0.dev215.dist-info/entry_points.txt,sha256=kgecQ2MgGrM9qK744BoKS3tMesaC3yjLnl9pa5CRczg,37
|
163
|
+
ominfra-0.0.0.dev215.dist-info/top_level.txt,sha256=E-b2OHkk_AOBLXHYZQ2EOFKl-_6uOGd8EjeG-Zy6h_w,8
|
164
|
+
ominfra-0.0.0.dev215.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|