modal 0.72.48__py3-none-any.whl → 0.72.50__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.
- modal/client.pyi +2 -2
- {modal-0.72.48.dist-info → modal-0.72.50.dist-info}/METADATA +1 -1
- {modal-0.72.48.dist-info → modal-0.72.50.dist-info}/RECORD +15 -15
- modal_proto/api.proto +12 -9
- modal_proto/api_grpc.py +14 -14
- modal_proto/api_pb2.py +715 -714
- modal_proto/api_pb2.pyi +42 -34
- modal_proto/api_pb2_grpc.py +20 -20
- modal_proto/api_pb2_grpc.pyi +10 -10
- modal_proto/modal_api_grpc.py +1 -1
- modal_version/_version_generated.py +1 -1
- {modal-0.72.48.dist-info → modal-0.72.50.dist-info}/LICENSE +0 -0
- {modal-0.72.48.dist-info → modal-0.72.50.dist-info}/WHEEL +0 -0
- {modal-0.72.48.dist-info → modal-0.72.50.dist-info}/entry_points.txt +0 -0
- {modal-0.72.48.dist-info → modal-0.72.50.dist-info}/top_level.txt +0 -0
modal_proto/api_pb2.pyi
CHANGED
@@ -416,12 +416,14 @@ class _ParameterTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._
|
|
416
416
|
PARAM_TYPE_UNSPECIFIED: _ParameterType.ValueType # 0
|
417
417
|
PARAM_TYPE_STRING: _ParameterType.ValueType # 1
|
418
418
|
PARAM_TYPE_INT: _ParameterType.ValueType # 2
|
419
|
+
PARAM_TYPE_PICKLE: _ParameterType.ValueType # 3
|
419
420
|
|
420
421
|
class ParameterType(_ParameterType, metaclass=_ParameterTypeEnumTypeWrapper): ...
|
421
422
|
|
422
423
|
PARAM_TYPE_UNSPECIFIED: ParameterType.ValueType # 0
|
423
424
|
PARAM_TYPE_STRING: ParameterType.ValueType # 1
|
424
425
|
PARAM_TYPE_INT: ParameterType.ValueType # 2
|
426
|
+
PARAM_TYPE_PICKLE: ParameterType.ValueType # 3
|
425
427
|
global___ParameterType = ParameterType
|
426
428
|
|
427
429
|
class _ProgressType:
|
@@ -2141,11 +2143,13 @@ class ClassParameterSpec(google.protobuf.message.Message):
|
|
2141
2143
|
HAS_DEFAULT_FIELD_NUMBER: builtins.int
|
2142
2144
|
STRING_DEFAULT_FIELD_NUMBER: builtins.int
|
2143
2145
|
INT_DEFAULT_FIELD_NUMBER: builtins.int
|
2146
|
+
PICKLE_DEFAULT_FIELD_NUMBER: builtins.int
|
2144
2147
|
name: builtins.str
|
2145
2148
|
type: global___ParameterType.ValueType
|
2146
2149
|
has_default: builtins.bool
|
2147
2150
|
string_default: builtins.str
|
2148
2151
|
int_default: builtins.int
|
2152
|
+
pickle_default: builtins.bytes
|
2149
2153
|
def __init__(
|
2150
2154
|
self,
|
2151
2155
|
*,
|
@@ -2154,10 +2158,11 @@ class ClassParameterSpec(google.protobuf.message.Message):
|
|
2154
2158
|
has_default: builtins.bool = ...,
|
2155
2159
|
string_default: builtins.str = ...,
|
2156
2160
|
int_default: builtins.int = ...,
|
2161
|
+
pickle_default: builtins.bytes = ...,
|
2157
2162
|
) -> None: ...
|
2158
|
-
def HasField(self, field_name: typing_extensions.Literal["default_oneof", b"default_oneof", "int_default", b"int_default", "string_default", b"string_default"]) -> builtins.bool: ...
|
2159
|
-
def ClearField(self, field_name: typing_extensions.Literal["default_oneof", b"default_oneof", "has_default", b"has_default", "int_default", b"int_default", "name", b"name", "string_default", b"string_default", "type", b"type"]) -> None: ...
|
2160
|
-
def WhichOneof(self, oneof_group: typing_extensions.Literal["default_oneof", b"default_oneof"]) -> typing_extensions.Literal["string_default", "int_default"] | None: ...
|
2163
|
+
def HasField(self, field_name: typing_extensions.Literal["default_oneof", b"default_oneof", "int_default", b"int_default", "pickle_default", b"pickle_default", "string_default", b"string_default"]) -> builtins.bool: ...
|
2164
|
+
def ClearField(self, field_name: typing_extensions.Literal["default_oneof", b"default_oneof", "has_default", b"has_default", "int_default", b"int_default", "name", b"name", "pickle_default", b"pickle_default", "string_default", b"string_default", "type", b"type"]) -> None: ...
|
2165
|
+
def WhichOneof(self, oneof_group: typing_extensions.Literal["default_oneof", b"default_oneof"]) -> typing_extensions.Literal["string_default", "int_default", "pickle_default"] | None: ...
|
2161
2166
|
|
2162
2167
|
global___ClassParameterSpec = ClassParameterSpec
|
2163
2168
|
|
@@ -2168,6 +2173,7 @@ class ClassParameterValue(google.protobuf.message.Message):
|
|
2168
2173
|
TYPE_FIELD_NUMBER: builtins.int
|
2169
2174
|
STRING_VALUE_FIELD_NUMBER: builtins.int
|
2170
2175
|
INT_VALUE_FIELD_NUMBER: builtins.int
|
2176
|
+
PICKLE_VALUE_FIELD_NUMBER: builtins.int
|
2171
2177
|
name: builtins.str
|
2172
2178
|
"""NOTE: adding additional *fields* here can invalidate function lookups
|
2173
2179
|
since we use the serialized message as the bound function identifier
|
@@ -2176,6 +2182,7 @@ class ClassParameterValue(google.protobuf.message.Message):
|
|
2176
2182
|
type: global___ParameterType.ValueType
|
2177
2183
|
string_value: builtins.str
|
2178
2184
|
int_value: builtins.int
|
2185
|
+
pickle_value: builtins.bytes
|
2179
2186
|
def __init__(
|
2180
2187
|
self,
|
2181
2188
|
*,
|
@@ -2183,10 +2190,11 @@ class ClassParameterValue(google.protobuf.message.Message):
|
|
2183
2190
|
type: global___ParameterType.ValueType = ...,
|
2184
2191
|
string_value: builtins.str = ...,
|
2185
2192
|
int_value: builtins.int = ...,
|
2193
|
+
pickle_value: builtins.bytes = ...,
|
2186
2194
|
) -> None: ...
|
2187
|
-
def HasField(self, field_name: typing_extensions.Literal["int_value", b"int_value", "string_value", b"string_value", "value_oneof", b"value_oneof"]) -> builtins.bool: ...
|
2188
|
-
def ClearField(self, field_name: typing_extensions.Literal["int_value", b"int_value", "name", b"name", "string_value", b"string_value", "type", b"type", "value_oneof", b"value_oneof"]) -> None: ...
|
2189
|
-
def WhichOneof(self, oneof_group: typing_extensions.Literal["value_oneof", b"value_oneof"]) -> typing_extensions.Literal["string_value", "int_value"] | None: ...
|
2195
|
+
def HasField(self, field_name: typing_extensions.Literal["int_value", b"int_value", "pickle_value", b"pickle_value", "string_value", b"string_value", "value_oneof", b"value_oneof"]) -> builtins.bool: ...
|
2196
|
+
def ClearField(self, field_name: typing_extensions.Literal["int_value", b"int_value", "name", b"name", "pickle_value", b"pickle_value", "string_value", b"string_value", "type", b"type", "value_oneof", b"value_oneof"]) -> None: ...
|
2197
|
+
def WhichOneof(self, oneof_group: typing_extensions.Literal["value_oneof", b"value_oneof"]) -> typing_extensions.Literal["string_value", "int_value", "pickle_value"] | None: ...
|
2190
2198
|
|
2191
2199
|
global___ClassParameterValue = ClassParameterValue
|
2192
2200
|
|
@@ -7454,34 +7462,6 @@ class SandboxRestoreResponse(google.protobuf.message.Message):
|
|
7454
7462
|
|
7455
7463
|
global___SandboxRestoreResponse = SandboxRestoreResponse
|
7456
7464
|
|
7457
|
-
class SandboxSnapshotFromIdRequest(google.protobuf.message.Message):
|
7458
|
-
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
7459
|
-
|
7460
|
-
SNAPSHOT_ID_FIELD_NUMBER: builtins.int
|
7461
|
-
snapshot_id: builtins.str
|
7462
|
-
def __init__(
|
7463
|
-
self,
|
7464
|
-
*,
|
7465
|
-
snapshot_id: builtins.str = ...,
|
7466
|
-
) -> None: ...
|
7467
|
-
def ClearField(self, field_name: typing_extensions.Literal["snapshot_id", b"snapshot_id"]) -> None: ...
|
7468
|
-
|
7469
|
-
global___SandboxSnapshotFromIdRequest = SandboxSnapshotFromIdRequest
|
7470
|
-
|
7471
|
-
class SandboxSnapshotFromIdResponse(google.protobuf.message.Message):
|
7472
|
-
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
7473
|
-
|
7474
|
-
SNAPSHOT_ID_FIELD_NUMBER: builtins.int
|
7475
|
-
snapshot_id: builtins.str
|
7476
|
-
def __init__(
|
7477
|
-
self,
|
7478
|
-
*,
|
7479
|
-
snapshot_id: builtins.str = ...,
|
7480
|
-
) -> None: ...
|
7481
|
-
def ClearField(self, field_name: typing_extensions.Literal["snapshot_id", b"snapshot_id"]) -> None: ...
|
7482
|
-
|
7483
|
-
global___SandboxSnapshotFromIdResponse = SandboxSnapshotFromIdResponse
|
7484
|
-
|
7485
7465
|
class SandboxSnapshotFsRequest(google.protobuf.message.Message):
|
7486
7466
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
7487
7467
|
|
@@ -7523,6 +7503,34 @@ class SandboxSnapshotFsResponse(google.protobuf.message.Message):
|
|
7523
7503
|
|
7524
7504
|
global___SandboxSnapshotFsResponse = SandboxSnapshotFsResponse
|
7525
7505
|
|
7506
|
+
class SandboxSnapshotGetRequest(google.protobuf.message.Message):
|
7507
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
7508
|
+
|
7509
|
+
SNAPSHOT_ID_FIELD_NUMBER: builtins.int
|
7510
|
+
snapshot_id: builtins.str
|
7511
|
+
def __init__(
|
7512
|
+
self,
|
7513
|
+
*,
|
7514
|
+
snapshot_id: builtins.str = ...,
|
7515
|
+
) -> None: ...
|
7516
|
+
def ClearField(self, field_name: typing_extensions.Literal["snapshot_id", b"snapshot_id"]) -> None: ...
|
7517
|
+
|
7518
|
+
global___SandboxSnapshotGetRequest = SandboxSnapshotGetRequest
|
7519
|
+
|
7520
|
+
class SandboxSnapshotGetResponse(google.protobuf.message.Message):
|
7521
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
7522
|
+
|
7523
|
+
SNAPSHOT_ID_FIELD_NUMBER: builtins.int
|
7524
|
+
snapshot_id: builtins.str
|
7525
|
+
def __init__(
|
7526
|
+
self,
|
7527
|
+
*,
|
7528
|
+
snapshot_id: builtins.str = ...,
|
7529
|
+
) -> None: ...
|
7530
|
+
def ClearField(self, field_name: typing_extensions.Literal["snapshot_id", b"snapshot_id"]) -> None: ...
|
7531
|
+
|
7532
|
+
global___SandboxSnapshotGetResponse = SandboxSnapshotGetResponse
|
7533
|
+
|
7526
7534
|
class SandboxSnapshotRequest(google.protobuf.message.Message):
|
7527
7535
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
7528
7536
|
|
modal_proto/api_pb2_grpc.py
CHANGED
@@ -525,16 +525,16 @@ class ModalClientStub(object):
|
|
525
525
|
request_serializer=modal__proto_dot_api__pb2.SandboxSnapshotRequest.SerializeToString,
|
526
526
|
response_deserializer=modal__proto_dot_api__pb2.SandboxSnapshotResponse.FromString,
|
527
527
|
)
|
528
|
-
self.SandboxSnapshotFromId = channel.unary_unary(
|
529
|
-
'/modal.client.ModalClient/SandboxSnapshotFromId',
|
530
|
-
request_serializer=modal__proto_dot_api__pb2.SandboxSnapshotFromIdRequest.SerializeToString,
|
531
|
-
response_deserializer=modal__proto_dot_api__pb2.SandboxSnapshotFromIdResponse.FromString,
|
532
|
-
)
|
533
528
|
self.SandboxSnapshotFs = channel.unary_unary(
|
534
529
|
'/modal.client.ModalClient/SandboxSnapshotFs',
|
535
530
|
request_serializer=modal__proto_dot_api__pb2.SandboxSnapshotFsRequest.SerializeToString,
|
536
531
|
response_deserializer=modal__proto_dot_api__pb2.SandboxSnapshotFsResponse.FromString,
|
537
532
|
)
|
533
|
+
self.SandboxSnapshotGet = channel.unary_unary(
|
534
|
+
'/modal.client.ModalClient/SandboxSnapshotGet',
|
535
|
+
request_serializer=modal__proto_dot_api__pb2.SandboxSnapshotGetRequest.SerializeToString,
|
536
|
+
response_deserializer=modal__proto_dot_api__pb2.SandboxSnapshotGetResponse.FromString,
|
537
|
+
)
|
538
538
|
self.SandboxSnapshotWait = channel.unary_unary(
|
539
539
|
'/modal.client.ModalClient/SandboxSnapshotWait',
|
540
540
|
request_serializer=modal__proto_dot_api__pb2.SandboxSnapshotWaitRequest.SerializeToString,
|
@@ -1361,13 +1361,13 @@ class ModalClientServicer(object):
|
|
1361
1361
|
context.set_details('Method not implemented!')
|
1362
1362
|
raise NotImplementedError('Method not implemented!')
|
1363
1363
|
|
1364
|
-
def
|
1364
|
+
def SandboxSnapshotFs(self, request, context):
|
1365
1365
|
"""Missing associated documentation comment in .proto file."""
|
1366
1366
|
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
1367
1367
|
context.set_details('Method not implemented!')
|
1368
1368
|
raise NotImplementedError('Method not implemented!')
|
1369
1369
|
|
1370
|
-
def
|
1370
|
+
def SandboxSnapshotGet(self, request, context):
|
1371
1371
|
"""Missing associated documentation comment in .proto file."""
|
1372
1372
|
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
1373
1373
|
context.set_details('Method not implemented!')
|
@@ -2121,16 +2121,16 @@ def add_ModalClientServicer_to_server(servicer, server):
|
|
2121
2121
|
request_deserializer=modal__proto_dot_api__pb2.SandboxSnapshotRequest.FromString,
|
2122
2122
|
response_serializer=modal__proto_dot_api__pb2.SandboxSnapshotResponse.SerializeToString,
|
2123
2123
|
),
|
2124
|
-
'SandboxSnapshotFromId': grpc.unary_unary_rpc_method_handler(
|
2125
|
-
servicer.SandboxSnapshotFromId,
|
2126
|
-
request_deserializer=modal__proto_dot_api__pb2.SandboxSnapshotFromIdRequest.FromString,
|
2127
|
-
response_serializer=modal__proto_dot_api__pb2.SandboxSnapshotFromIdResponse.SerializeToString,
|
2128
|
-
),
|
2129
2124
|
'SandboxSnapshotFs': grpc.unary_unary_rpc_method_handler(
|
2130
2125
|
servicer.SandboxSnapshotFs,
|
2131
2126
|
request_deserializer=modal__proto_dot_api__pb2.SandboxSnapshotFsRequest.FromString,
|
2132
2127
|
response_serializer=modal__proto_dot_api__pb2.SandboxSnapshotFsResponse.SerializeToString,
|
2133
2128
|
),
|
2129
|
+
'SandboxSnapshotGet': grpc.unary_unary_rpc_method_handler(
|
2130
|
+
servicer.SandboxSnapshotGet,
|
2131
|
+
request_deserializer=modal__proto_dot_api__pb2.SandboxSnapshotGetRequest.FromString,
|
2132
|
+
response_serializer=modal__proto_dot_api__pb2.SandboxSnapshotGetResponse.SerializeToString,
|
2133
|
+
),
|
2134
2134
|
'SandboxSnapshotWait': grpc.unary_unary_rpc_method_handler(
|
2135
2135
|
servicer.SandboxSnapshotWait,
|
2136
2136
|
request_deserializer=modal__proto_dot_api__pb2.SandboxSnapshotWaitRequest.FromString,
|
@@ -4066,7 +4066,7 @@ class ModalClient(object):
|
|
4066
4066
|
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
|
4067
4067
|
|
4068
4068
|
@staticmethod
|
4069
|
-
def
|
4069
|
+
def SandboxSnapshotFs(request,
|
4070
4070
|
target,
|
4071
4071
|
options=(),
|
4072
4072
|
channel_credentials=None,
|
@@ -4076,14 +4076,14 @@ class ModalClient(object):
|
|
4076
4076
|
wait_for_ready=None,
|
4077
4077
|
timeout=None,
|
4078
4078
|
metadata=None):
|
4079
|
-
return grpc.experimental.unary_unary(request, target, '/modal.client.ModalClient/
|
4080
|
-
modal__proto_dot_api__pb2.
|
4081
|
-
modal__proto_dot_api__pb2.
|
4079
|
+
return grpc.experimental.unary_unary(request, target, '/modal.client.ModalClient/SandboxSnapshotFs',
|
4080
|
+
modal__proto_dot_api__pb2.SandboxSnapshotFsRequest.SerializeToString,
|
4081
|
+
modal__proto_dot_api__pb2.SandboxSnapshotFsResponse.FromString,
|
4082
4082
|
options, channel_credentials,
|
4083
4083
|
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
|
4084
4084
|
|
4085
4085
|
@staticmethod
|
4086
|
-
def
|
4086
|
+
def SandboxSnapshotGet(request,
|
4087
4087
|
target,
|
4088
4088
|
options=(),
|
4089
4089
|
channel_credentials=None,
|
@@ -4093,9 +4093,9 @@ class ModalClient(object):
|
|
4093
4093
|
wait_for_ready=None,
|
4094
4094
|
timeout=None,
|
4095
4095
|
metadata=None):
|
4096
|
-
return grpc.experimental.unary_unary(request, target, '/modal.client.ModalClient/
|
4097
|
-
modal__proto_dot_api__pb2.
|
4098
|
-
modal__proto_dot_api__pb2.
|
4096
|
+
return grpc.experimental.unary_unary(request, target, '/modal.client.ModalClient/SandboxSnapshotGet',
|
4097
|
+
modal__proto_dot_api__pb2.SandboxSnapshotGetRequest.SerializeToString,
|
4098
|
+
modal__proto_dot_api__pb2.SandboxSnapshotGetResponse.FromString,
|
4099
4099
|
options, channel_credentials,
|
4100
4100
|
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
|
4101
4101
|
|
modal_proto/api_pb2_grpc.pyi
CHANGED
@@ -437,14 +437,14 @@ class ModalClientStub:
|
|
437
437
|
modal_proto.api_pb2.SandboxSnapshotRequest,
|
438
438
|
modal_proto.api_pb2.SandboxSnapshotResponse,
|
439
439
|
]
|
440
|
-
SandboxSnapshotFromId: grpc.UnaryUnaryMultiCallable[
|
441
|
-
modal_proto.api_pb2.SandboxSnapshotFromIdRequest,
|
442
|
-
modal_proto.api_pb2.SandboxSnapshotFromIdResponse,
|
443
|
-
]
|
444
440
|
SandboxSnapshotFs: grpc.UnaryUnaryMultiCallable[
|
445
441
|
modal_proto.api_pb2.SandboxSnapshotFsRequest,
|
446
442
|
modal_proto.api_pb2.SandboxSnapshotFsResponse,
|
447
443
|
]
|
444
|
+
SandboxSnapshotGet: grpc.UnaryUnaryMultiCallable[
|
445
|
+
modal_proto.api_pb2.SandboxSnapshotGetRequest,
|
446
|
+
modal_proto.api_pb2.SandboxSnapshotGetResponse,
|
447
|
+
]
|
448
448
|
SandboxSnapshotWait: grpc.UnaryUnaryMultiCallable[
|
449
449
|
modal_proto.api_pb2.SandboxSnapshotWaitRequest,
|
450
450
|
modal_proto.api_pb2.SandboxSnapshotWaitResponse,
|
@@ -1238,18 +1238,18 @@ class ModalClientServicer(metaclass=abc.ABCMeta):
|
|
1238
1238
|
context: grpc.ServicerContext,
|
1239
1239
|
) -> modal_proto.api_pb2.SandboxSnapshotResponse: ...
|
1240
1240
|
@abc.abstractmethod
|
1241
|
-
def SandboxSnapshotFromId(
|
1242
|
-
self,
|
1243
|
-
request: modal_proto.api_pb2.SandboxSnapshotFromIdRequest,
|
1244
|
-
context: grpc.ServicerContext,
|
1245
|
-
) -> modal_proto.api_pb2.SandboxSnapshotFromIdResponse: ...
|
1246
|
-
@abc.abstractmethod
|
1247
1241
|
def SandboxSnapshotFs(
|
1248
1242
|
self,
|
1249
1243
|
request: modal_proto.api_pb2.SandboxSnapshotFsRequest,
|
1250
1244
|
context: grpc.ServicerContext,
|
1251
1245
|
) -> modal_proto.api_pb2.SandboxSnapshotFsResponse: ...
|
1252
1246
|
@abc.abstractmethod
|
1247
|
+
def SandboxSnapshotGet(
|
1248
|
+
self,
|
1249
|
+
request: modal_proto.api_pb2.SandboxSnapshotGetRequest,
|
1250
|
+
context: grpc.ServicerContext,
|
1251
|
+
) -> modal_proto.api_pb2.SandboxSnapshotGetResponse: ...
|
1252
|
+
@abc.abstractmethod
|
1253
1253
|
def SandboxSnapshotWait(
|
1254
1254
|
self,
|
1255
1255
|
request: modal_proto.api_pb2.SandboxSnapshotWaitRequest,
|
modal_proto/modal_api_grpc.py
CHANGED
@@ -114,8 +114,8 @@ class ModalClientModal:
|
|
114
114
|
self.SandboxList = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxList, client)
|
115
115
|
self.SandboxRestore = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxRestore, client)
|
116
116
|
self.SandboxSnapshot = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxSnapshot, client)
|
117
|
-
self.SandboxSnapshotFromId = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxSnapshotFromId, client)
|
118
117
|
self.SandboxSnapshotFs = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxSnapshotFs, client)
|
118
|
+
self.SandboxSnapshotGet = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxSnapshotGet, client)
|
119
119
|
self.SandboxSnapshotWait = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxSnapshotWait, client)
|
120
120
|
self.SandboxStdinWrite = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxStdinWrite, client)
|
121
121
|
self.SandboxTagsSet = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxTagsSet, client)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|