modal 0.74.4__tar.gz → 0.74.6__tar.gz
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-0.74.4 → modal-0.74.6}/PKG-INFO +1 -1
- {modal-0.74.4 → modal-0.74.6}/modal/_container_entrypoint.py +12 -2
- {modal-0.74.4 → modal-0.74.6}/modal/_runtime/container_io_manager.py +4 -26
- {modal-0.74.4 → modal-0.74.6}/modal/_runtime/container_io_manager.pyi +0 -17
- {modal-0.74.4 → modal-0.74.6}/modal/client.pyi +2 -2
- {modal-0.74.4 → modal-0.74.6}/modal.egg-info/PKG-INFO +1 -1
- {modal-0.74.4 → modal-0.74.6}/modal_proto/api.proto +3 -0
- {modal-0.74.4 → modal-0.74.6}/modal_proto/api_pb2.py +87 -87
- {modal-0.74.4 → modal-0.74.6}/modal_proto/api_pb2.pyi +7 -1
- {modal-0.74.4 → modal-0.74.6}/modal_version/_version_generated.py +1 -1
- {modal-0.74.4 → modal-0.74.6}/LICENSE +0 -0
- {modal-0.74.4 → modal-0.74.6}/README.md +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/__init__.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/__main__.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_clustered_functions.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_clustered_functions.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_functions.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_ipython.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_location.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_object.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_output.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_partial_function.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_pty.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_resolver.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_resources.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_runtime/__init__.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_runtime/asgi.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_runtime/execution_context.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_runtime/execution_context.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_runtime/telemetry.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_runtime/user_code_imports.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_serialization.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_traceback.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_tunnel.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_tunnel.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_type_manager.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_utils/__init__.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_utils/app_utils.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_utils/async_utils.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_utils/blob_utils.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_utils/deprecation.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_utils/docker_utils.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_utils/function_utils.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_utils/git_utils.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_utils/grpc_testing.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_utils/grpc_utils.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_utils/hash_utils.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_utils/http_utils.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_utils/jwt_utils.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_utils/logger.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_utils/mount_utils.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_utils/name_utils.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_utils/package_utils.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_utils/pattern_utils.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_utils/shell_utils.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_vendor/__init__.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_vendor/cloudpickle.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_vendor/tblib.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/_watcher.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/app.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/app.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/call_graph.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/cli/__init__.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/cli/_download.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/cli/_traceback.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/cli/app.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/cli/config.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/cli/container.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/cli/dict.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/cli/entry_point.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/cli/environment.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/cli/import_refs.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/cli/launch.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/cli/network_file_system.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/cli/profile.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/cli/programs/__init__.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/cli/programs/run_jupyter.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/cli/programs/vscode.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/cli/queues.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/cli/run.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/cli/secret.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/cli/token.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/cli/utils.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/cli/volume.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/client.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/cloud_bucket_mount.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/cls.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/cls.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/config.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/container_process.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/container_process.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/dict.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/dict.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/environments.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/environments.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/exception.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/experimental/__init__.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/experimental/ipython.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/file_io.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/file_io.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/file_pattern_matcher.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/functions.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/functions.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/gpu.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/image.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/image.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/io_streams.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/io_streams.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/mount.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/mount.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/network_file_system.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/network_file_system.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/object.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/object.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/output.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/parallel_map.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/parallel_map.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/partial_function.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/partial_function.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/proxy.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/proxy.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/py.typed +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/queue.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/queue.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/requirements/2023.12.312.txt +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/requirements/2023.12.txt +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/requirements/2024.04.txt +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/requirements/2024.10.txt +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/requirements/PREVIEW.txt +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/requirements/README.md +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/requirements/base-images.json +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/retries.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/runner.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/runner.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/running_app.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/sandbox.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/sandbox.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/schedule.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/scheduler_placement.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/secret.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/secret.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/serving.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/serving.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/snapshot.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/snapshot.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/stream_type.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/token_flow.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/token_flow.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/volume.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal/volume.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal.egg-info/SOURCES.txt +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal.egg-info/dependency_links.txt +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal.egg-info/entry_points.txt +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal.egg-info/requires.txt +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal.egg-info/top_level.txt +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal_docs/__init__.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal_docs/gen_cli_docs.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal_docs/gen_reference_docs.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal_docs/mdmd/__init__.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal_docs/mdmd/signatures.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal_proto/__init__.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal_proto/api_grpc.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal_proto/api_pb2_grpc.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal_proto/api_pb2_grpc.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal_proto/modal_api_grpc.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal_proto/modal_options_grpc.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal_proto/options.proto +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal_proto/options_grpc.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal_proto/options_pb2.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal_proto/options_pb2.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal_proto/options_pb2_grpc.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal_proto/options_pb2_grpc.pyi +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal_proto/py.typed +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal_version/__init__.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/modal_version/__main__.py +0 -0
- {modal-0.74.4 → modal-0.74.6}/pyproject.toml +0 -0
- {modal-0.74.4 → modal-0.74.6}/setup.cfg +0 -0
@@ -33,7 +33,7 @@ from modal._partial_function import (
|
|
33
33
|
_find_callables_for_obj,
|
34
34
|
_PartialFunctionFlags,
|
35
35
|
)
|
36
|
-
from modal._serialization import deserialize_params
|
36
|
+
from modal._serialization import deserialize, deserialize_params
|
37
37
|
from modal._utils.async_utils import TaskContext, synchronizer
|
38
38
|
from modal._utils.function_utils import (
|
39
39
|
callable_has_non_self_params,
|
@@ -394,7 +394,17 @@ def main(container_args: api_pb2.ContainerArguments, client: Client):
|
|
394
394
|
with container_io_manager.heartbeats(is_snapshotting_function), UserCodeEventLoop() as event_loop:
|
395
395
|
# If this is a serialized function, fetch the definition from the server
|
396
396
|
if function_def.definition_type == api_pb2.Function.DEFINITION_TYPE_SERIALIZED:
|
397
|
-
|
397
|
+
assert function_def.function_serialized or function_def.class_serialized
|
398
|
+
|
399
|
+
if function_def.function_serialized:
|
400
|
+
ser_fun = deserialize(function_def.function_serialized, _client)
|
401
|
+
else:
|
402
|
+
ser_fun = None
|
403
|
+
|
404
|
+
if function_def.class_serialized:
|
405
|
+
ser_usr_cls = deserialize(function_def.class_serialized, _client)
|
406
|
+
else:
|
407
|
+
ser_usr_cls = None
|
398
408
|
else:
|
399
409
|
ser_usr_cls, ser_fun = None, None
|
400
410
|
|
@@ -450,28 +450,6 @@ class _ContainerIOManager:
|
|
450
450
|
|
451
451
|
await asyncio.sleep(DYNAMIC_CONCURRENCY_INTERVAL_SECS)
|
452
452
|
|
453
|
-
async def get_serialized_function(self) -> tuple[Optional[Any], Optional[Callable[..., Any]]]:
|
454
|
-
# Fetch the serialized function definition
|
455
|
-
request = api_pb2.FunctionGetSerializedRequest(function_id=self.function_id)
|
456
|
-
response = await self._client.stub.FunctionGetSerialized(request)
|
457
|
-
if response.function_serialized:
|
458
|
-
fun = self.deserialize(response.function_serialized)
|
459
|
-
else:
|
460
|
-
fun = None
|
461
|
-
|
462
|
-
if response.class_serialized:
|
463
|
-
cls = self.deserialize(response.class_serialized)
|
464
|
-
else:
|
465
|
-
cls = None
|
466
|
-
|
467
|
-
return cls, fun
|
468
|
-
|
469
|
-
def serialize(self, obj: Any) -> bytes:
|
470
|
-
return serialize(obj)
|
471
|
-
|
472
|
-
def deserialize(self, data: bytes) -> Any:
|
473
|
-
return deserialize(data, self._client)
|
474
|
-
|
475
453
|
@synchronizer.no_io_translation
|
476
454
|
def serialize_data_format(self, obj: Any, data_format: int) -> bytes:
|
477
455
|
return serialize_data_format(obj, data_format)
|
@@ -680,20 +658,20 @@ class _ContainerIOManager:
|
|
680
658
|
|
681
659
|
def serialize_exception(self, exc: BaseException) -> bytes:
|
682
660
|
try:
|
683
|
-
return
|
661
|
+
return serialize(exc)
|
684
662
|
except Exception as serialization_exc:
|
685
663
|
# We can't always serialize exceptions.
|
686
664
|
err = f"Failed to serialize exception {exc} of type {type(exc)}: {serialization_exc}"
|
687
665
|
logger.info(err)
|
688
|
-
return
|
666
|
+
return serialize(SerializationError(err))
|
689
667
|
|
690
668
|
def serialize_traceback(self, exc: BaseException) -> tuple[Optional[bytes], Optional[bytes]]:
|
691
669
|
serialized_tb, tb_line_cache = None, None
|
692
670
|
|
693
671
|
try:
|
694
672
|
tb_dict, line_cache = extract_traceback(exc, self.task_id)
|
695
|
-
serialized_tb =
|
696
|
-
tb_line_cache =
|
673
|
+
serialized_tb = serialize(tb_dict)
|
674
|
+
tb_line_cache = serialize(line_cache)
|
697
675
|
except Exception:
|
698
676
|
logger.info("Failed to serialize exception traceback.")
|
699
677
|
|
@@ -100,11 +100,6 @@ class _ContainerIOManager:
|
|
100
100
|
def stop_heartbeat(self): ...
|
101
101
|
def dynamic_concurrency_manager(self) -> typing.AsyncContextManager[None]: ...
|
102
102
|
async def _dynamic_concurrency_loop(self): ...
|
103
|
-
async def get_serialized_function(
|
104
|
-
self,
|
105
|
-
) -> tuple[typing.Optional[typing.Any], typing.Optional[collections.abc.Callable[..., typing.Any]]]: ...
|
106
|
-
def serialize(self, obj: typing.Any) -> bytes: ...
|
107
|
-
def deserialize(self, data: bytes) -> typing.Any: ...
|
108
103
|
def serialize_data_format(self, obj: typing.Any, data_format: int) -> bytes: ...
|
109
104
|
async def format_blob_data(self, data: bytes) -> dict[str, typing.Any]: ...
|
110
105
|
def get_data_in(self, function_call_id: str) -> collections.abc.AsyncIterator[typing.Any]: ...
|
@@ -234,18 +229,6 @@ class ContainerIOManager:
|
|
234
229
|
|
235
230
|
_dynamic_concurrency_loop: ___dynamic_concurrency_loop_spec[typing_extensions.Self]
|
236
231
|
|
237
|
-
class __get_serialized_function_spec(typing_extensions.Protocol[SUPERSELF]):
|
238
|
-
def __call__(
|
239
|
-
self,
|
240
|
-
) -> tuple[typing.Optional[typing.Any], typing.Optional[collections.abc.Callable[..., typing.Any]]]: ...
|
241
|
-
async def aio(
|
242
|
-
self,
|
243
|
-
) -> tuple[typing.Optional[typing.Any], typing.Optional[collections.abc.Callable[..., typing.Any]]]: ...
|
244
|
-
|
245
|
-
get_serialized_function: __get_serialized_function_spec[typing_extensions.Self]
|
246
|
-
|
247
|
-
def serialize(self, obj: typing.Any) -> bytes: ...
|
248
|
-
def deserialize(self, data: bytes) -> typing.Any: ...
|
249
232
|
def serialize_data_format(self, obj: typing.Any, data_format: int) -> bytes: ...
|
250
233
|
|
251
234
|
class __format_blob_data_spec(typing_extensions.Protocol[SUPERSELF]):
|
@@ -27,7 +27,7 @@ class _Client:
|
|
27
27
|
_snapshotted: bool
|
28
28
|
|
29
29
|
def __init__(
|
30
|
-
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.74.
|
30
|
+
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.74.6"
|
31
31
|
): ...
|
32
32
|
def is_closed(self) -> bool: ...
|
33
33
|
@property
|
@@ -85,7 +85,7 @@ class Client:
|
|
85
85
|
_snapshotted: bool
|
86
86
|
|
87
87
|
def __init__(
|
88
|
-
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.74.
|
88
|
+
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.74.6"
|
89
89
|
): ...
|
90
90
|
def is_closed(self) -> bool: ...
|
91
91
|
@property
|
@@ -2946,6 +2946,9 @@ message VolumePutFiles2Request {
|
|
2946
2946
|
|
2947
2947
|
// The blocks, in units of 8MiB, that this file consists of.
|
2948
2948
|
repeated Block blocks = 3;
|
2949
|
+
|
2950
|
+
// Unix file permission bits `st_mode`.
|
2951
|
+
optional uint32 mode = 4;
|
2949
2952
|
}
|
2950
2953
|
|
2951
2954
|
message Block {
|