modal 0.67.43__py3-none-any.whl → 0.68.11__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/_container_entrypoint.py +4 -1
- modal/_runtime/container_io_manager.py +3 -0
- modal/_runtime/user_code_imports.py +4 -2
- modal/_traceback.py +16 -2
- modal/_utils/function_utils.py +5 -1
- modal/_utils/grpc_testing.py +6 -2
- modal/_utils/hash_utils.py +14 -2
- modal/cli/_traceback.py +11 -4
- modal/cli/run.py +0 -7
- modal/client.py +6 -37
- modal/client.pyi +2 -6
- modal/cls.py +132 -62
- modal/cls.pyi +13 -7
- modal/exception.py +20 -0
- modal/file_io.py +380 -0
- modal/file_io.pyi +185 -0
- modal/functions.py +33 -11
- modal/functions.pyi +5 -3
- modal/object.py +4 -2
- modal/partial_function.py +14 -10
- modal/partial_function.pyi +2 -2
- modal/runner.py +5 -4
- modal/runner.pyi +2 -1
- modal/sandbox.py +40 -0
- modal/sandbox.pyi +18 -0
- {modal-0.67.43.dist-info → modal-0.68.11.dist-info}/METADATA +2 -2
- {modal-0.67.43.dist-info → modal-0.68.11.dist-info}/RECORD +37 -35
- modal_docs/gen_reference_docs.py +1 -0
- modal_proto/api.proto +25 -1
- modal_proto/api_pb2.py +758 -718
- modal_proto/api_pb2.pyi +95 -10
- modal_version/__init__.py +1 -1
- modal_version/_version_generated.py +1 -1
- {modal-0.67.43.dist-info → modal-0.68.11.dist-info}/LICENSE +0 -0
- {modal-0.67.43.dist-info → modal-0.68.11.dist-info}/WHEEL +0 -0
- {modal-0.67.43.dist-info → modal-0.68.11.dist-info}/entry_points.txt +0 -0
- {modal-0.67.43.dist-info → modal-0.68.11.dist-info}/top_level.txt +0 -0
modal_proto/api_pb2.pyi
CHANGED
@@ -1223,22 +1223,17 @@ class AppPublishResponse(google.protobuf.message.Message):
|
|
1223
1223
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
1224
1224
|
|
1225
1225
|
URL_FIELD_NUMBER: builtins.int
|
1226
|
-
WARNINGS_FIELD_NUMBER: builtins.int
|
1227
1226
|
SERVER_WARNINGS_FIELD_NUMBER: builtins.int
|
1228
1227
|
url: builtins.str
|
1229
1228
|
@property
|
1230
|
-
def warnings(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
|
1231
|
-
"""Deprecated soon in favor of server_warnings"""
|
1232
|
-
@property
|
1233
1229
|
def server_warnings(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Warning]: ...
|
1234
1230
|
def __init__(
|
1235
1231
|
self,
|
1236
1232
|
*,
|
1237
1233
|
url: builtins.str = ...,
|
1238
|
-
warnings: collections.abc.Iterable[builtins.str] | None = ...,
|
1239
1234
|
server_warnings: collections.abc.Iterable[global___Warning] | None = ...,
|
1240
1235
|
) -> None: ...
|
1241
|
-
def ClearField(self, field_name: typing_extensions.Literal["server_warnings", b"server_warnings", "url", b"url"
|
1236
|
+
def ClearField(self, field_name: typing_extensions.Literal["server_warnings", b"server_warnings", "url", b"url"]) -> None: ...
|
1242
1237
|
|
1243
1238
|
global___AppPublishResponse = AppPublishResponse
|
1244
1239
|
|
@@ -2100,16 +2095,20 @@ class ClientHelloResponse(google.protobuf.message.Message):
|
|
2100
2095
|
|
2101
2096
|
WARNING_FIELD_NUMBER: builtins.int
|
2102
2097
|
IMAGE_BUILDER_VERSION_FIELD_NUMBER: builtins.int
|
2098
|
+
SERVER_WARNINGS_FIELD_NUMBER: builtins.int
|
2103
2099
|
warning: builtins.str
|
2104
2100
|
image_builder_version: builtins.str
|
2105
2101
|
"""Deprecated, no longer used in client"""
|
2102
|
+
@property
|
2103
|
+
def server_warnings(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Warning]: ...
|
2106
2104
|
def __init__(
|
2107
2105
|
self,
|
2108
2106
|
*,
|
2109
2107
|
warning: builtins.str = ...,
|
2110
2108
|
image_builder_version: builtins.str = ...,
|
2109
|
+
server_warnings: collections.abc.Iterable[global___Warning] | None = ...,
|
2111
2110
|
) -> None: ...
|
2112
|
-
def ClearField(self, field_name: typing_extensions.Literal["image_builder_version", b"image_builder_version", "warning", b"warning"]) -> None: ...
|
2111
|
+
def ClearField(self, field_name: typing_extensions.Literal["image_builder_version", b"image_builder_version", "server_warnings", b"server_warnings", "warning", b"warning"]) -> None: ...
|
2113
2112
|
|
2114
2113
|
global___ClientHelloResponse = ClientHelloResponse
|
2115
2114
|
|
@@ -2444,6 +2443,37 @@ class ContainerFileFlushRequest(google.protobuf.message.Message):
|
|
2444
2443
|
|
2445
2444
|
global___ContainerFileFlushRequest = ContainerFileFlushRequest
|
2446
2445
|
|
2446
|
+
class ContainerFileLsRequest(google.protobuf.message.Message):
|
2447
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
2448
|
+
|
2449
|
+
PATH_FIELD_NUMBER: builtins.int
|
2450
|
+
path: builtins.str
|
2451
|
+
def __init__(
|
2452
|
+
self,
|
2453
|
+
*,
|
2454
|
+
path: builtins.str = ...,
|
2455
|
+
) -> None: ...
|
2456
|
+
def ClearField(self, field_name: typing_extensions.Literal["path", b"path"]) -> None: ...
|
2457
|
+
|
2458
|
+
global___ContainerFileLsRequest = ContainerFileLsRequest
|
2459
|
+
|
2460
|
+
class ContainerFileMkdirRequest(google.protobuf.message.Message):
|
2461
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
2462
|
+
|
2463
|
+
PATH_FIELD_NUMBER: builtins.int
|
2464
|
+
MAKE_PARENTS_FIELD_NUMBER: builtins.int
|
2465
|
+
path: builtins.str
|
2466
|
+
make_parents: builtins.bool
|
2467
|
+
def __init__(
|
2468
|
+
self,
|
2469
|
+
*,
|
2470
|
+
path: builtins.str = ...,
|
2471
|
+
make_parents: builtins.bool = ...,
|
2472
|
+
) -> None: ...
|
2473
|
+
def ClearField(self, field_name: typing_extensions.Literal["make_parents", b"make_parents", "path", b"path"]) -> None: ...
|
2474
|
+
|
2475
|
+
global___ContainerFileMkdirRequest = ContainerFileMkdirRequest
|
2476
|
+
|
2447
2477
|
class ContainerFileOpenRequest(google.protobuf.message.Message):
|
2448
2478
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
2449
2479
|
|
@@ -2500,6 +2530,23 @@ class ContainerFileReadRequest(google.protobuf.message.Message):
|
|
2500
2530
|
|
2501
2531
|
global___ContainerFileReadRequest = ContainerFileReadRequest
|
2502
2532
|
|
2533
|
+
class ContainerFileRmRequest(google.protobuf.message.Message):
|
2534
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
2535
|
+
|
2536
|
+
PATH_FIELD_NUMBER: builtins.int
|
2537
|
+
RECURSIVE_FIELD_NUMBER: builtins.int
|
2538
|
+
path: builtins.str
|
2539
|
+
recursive: builtins.bool
|
2540
|
+
def __init__(
|
2541
|
+
self,
|
2542
|
+
*,
|
2543
|
+
path: builtins.str = ...,
|
2544
|
+
recursive: builtins.bool = ...,
|
2545
|
+
) -> None: ...
|
2546
|
+
def ClearField(self, field_name: typing_extensions.Literal["path", b"path", "recursive", b"recursive"]) -> None: ...
|
2547
|
+
|
2548
|
+
global___ContainerFileRmRequest = ContainerFileRmRequest
|
2549
|
+
|
2503
2550
|
class ContainerFileSeekRequest(google.protobuf.message.Message):
|
2504
2551
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
2505
2552
|
|
@@ -2520,6 +2567,28 @@ class ContainerFileSeekRequest(google.protobuf.message.Message):
|
|
2520
2567
|
|
2521
2568
|
global___ContainerFileSeekRequest = ContainerFileSeekRequest
|
2522
2569
|
|
2570
|
+
class ContainerFileWatchRequest(google.protobuf.message.Message):
|
2571
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
2572
|
+
|
2573
|
+
PATH_FIELD_NUMBER: builtins.int
|
2574
|
+
RECURSIVE_FIELD_NUMBER: builtins.int
|
2575
|
+
TIMEOUT_SECS_FIELD_NUMBER: builtins.int
|
2576
|
+
path: builtins.str
|
2577
|
+
recursive: builtins.bool
|
2578
|
+
timeout_secs: builtins.int
|
2579
|
+
def __init__(
|
2580
|
+
self,
|
2581
|
+
*,
|
2582
|
+
path: builtins.str = ...,
|
2583
|
+
recursive: builtins.bool = ...,
|
2584
|
+
timeout_secs: builtins.int | None = ...,
|
2585
|
+
) -> None: ...
|
2586
|
+
def HasField(self, field_name: typing_extensions.Literal["_timeout_secs", b"_timeout_secs", "timeout_secs", b"timeout_secs"]) -> builtins.bool: ...
|
2587
|
+
def ClearField(self, field_name: typing_extensions.Literal["_timeout_secs", b"_timeout_secs", "path", b"path", "recursive", b"recursive", "timeout_secs", b"timeout_secs"]) -> None: ...
|
2588
|
+
def WhichOneof(self, oneof_group: typing_extensions.Literal["_timeout_secs", b"_timeout_secs"]) -> typing_extensions.Literal["timeout_secs"] | None: ...
|
2589
|
+
|
2590
|
+
global___ContainerFileWatchRequest = ContainerFileWatchRequest
|
2591
|
+
|
2523
2592
|
class ContainerFileWriteReplaceBytesRequest(google.protobuf.message.Message):
|
2524
2593
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
2525
2594
|
|
@@ -2594,6 +2663,10 @@ class ContainerFilesystemExecRequest(google.protobuf.message.Message):
|
|
2594
2663
|
FILE_DELETE_BYTES_REQUEST_FIELD_NUMBER: builtins.int
|
2595
2664
|
FILE_WRITE_REPLACE_BYTES_REQUEST_FIELD_NUMBER: builtins.int
|
2596
2665
|
FILE_CLOSE_REQUEST_FIELD_NUMBER: builtins.int
|
2666
|
+
FILE_LS_REQUEST_FIELD_NUMBER: builtins.int
|
2667
|
+
FILE_MKDIR_REQUEST_FIELD_NUMBER: builtins.int
|
2668
|
+
FILE_RM_REQUEST_FIELD_NUMBER: builtins.int
|
2669
|
+
FILE_WATCH_REQUEST_FIELD_NUMBER: builtins.int
|
2597
2670
|
TASK_ID_FIELD_NUMBER: builtins.int
|
2598
2671
|
@property
|
2599
2672
|
def file_open_request(self) -> global___ContainerFileOpenRequest: ...
|
@@ -2613,6 +2686,14 @@ class ContainerFilesystemExecRequest(google.protobuf.message.Message):
|
|
2613
2686
|
def file_write_replace_bytes_request(self) -> global___ContainerFileWriteReplaceBytesRequest: ...
|
2614
2687
|
@property
|
2615
2688
|
def file_close_request(self) -> global___ContainerFileCloseRequest: ...
|
2689
|
+
@property
|
2690
|
+
def file_ls_request(self) -> global___ContainerFileLsRequest: ...
|
2691
|
+
@property
|
2692
|
+
def file_mkdir_request(self) -> global___ContainerFileMkdirRequest: ...
|
2693
|
+
@property
|
2694
|
+
def file_rm_request(self) -> global___ContainerFileRmRequest: ...
|
2695
|
+
@property
|
2696
|
+
def file_watch_request(self) -> global___ContainerFileWatchRequest: ...
|
2616
2697
|
task_id: builtins.str
|
2617
2698
|
def __init__(
|
2618
2699
|
self,
|
@@ -2626,11 +2707,15 @@ class ContainerFilesystemExecRequest(google.protobuf.message.Message):
|
|
2626
2707
|
file_delete_bytes_request: global___ContainerFileDeleteBytesRequest | None = ...,
|
2627
2708
|
file_write_replace_bytes_request: global___ContainerFileWriteReplaceBytesRequest | None = ...,
|
2628
2709
|
file_close_request: global___ContainerFileCloseRequest | None = ...,
|
2710
|
+
file_ls_request: global___ContainerFileLsRequest | None = ...,
|
2711
|
+
file_mkdir_request: global___ContainerFileMkdirRequest | None = ...,
|
2712
|
+
file_rm_request: global___ContainerFileRmRequest | None = ...,
|
2713
|
+
file_watch_request: global___ContainerFileWatchRequest | None = ...,
|
2629
2714
|
task_id: builtins.str = ...,
|
2630
2715
|
) -> None: ...
|
2631
|
-
def HasField(self, field_name: typing_extensions.Literal["file_close_request", b"file_close_request", "file_delete_bytes_request", b"file_delete_bytes_request", "file_exec_request_oneof", b"file_exec_request_oneof", "file_flush_request", b"file_flush_request", "file_open_request", b"file_open_request", "file_read_line_request", b"file_read_line_request", "file_read_request", b"file_read_request", "file_seek_request", b"file_seek_request", "file_write_replace_bytes_request", b"file_write_replace_bytes_request", "file_write_request", b"file_write_request"]) -> builtins.bool: ...
|
2632
|
-
def ClearField(self, field_name: typing_extensions.Literal["file_close_request", b"file_close_request", "file_delete_bytes_request", b"file_delete_bytes_request", "file_exec_request_oneof", b"file_exec_request_oneof", "file_flush_request", b"file_flush_request", "file_open_request", b"file_open_request", "file_read_line_request", b"file_read_line_request", "file_read_request", b"file_read_request", "file_seek_request", b"file_seek_request", "file_write_replace_bytes_request", b"file_write_replace_bytes_request", "file_write_request", b"file_write_request", "task_id", b"task_id"]) -> None: ...
|
2633
|
-
def WhichOneof(self, oneof_group: typing_extensions.Literal["file_exec_request_oneof", b"file_exec_request_oneof"]) -> typing_extensions.Literal["file_open_request", "file_write_request", "file_read_request", "file_flush_request", "file_read_line_request", "file_seek_request", "file_delete_bytes_request", "file_write_replace_bytes_request", "file_close_request"] | None: ...
|
2716
|
+
def HasField(self, field_name: typing_extensions.Literal["file_close_request", b"file_close_request", "file_delete_bytes_request", b"file_delete_bytes_request", "file_exec_request_oneof", b"file_exec_request_oneof", "file_flush_request", b"file_flush_request", "file_ls_request", b"file_ls_request", "file_mkdir_request", b"file_mkdir_request", "file_open_request", b"file_open_request", "file_read_line_request", b"file_read_line_request", "file_read_request", b"file_read_request", "file_rm_request", b"file_rm_request", "file_seek_request", b"file_seek_request", "file_watch_request", b"file_watch_request", "file_write_replace_bytes_request", b"file_write_replace_bytes_request", "file_write_request", b"file_write_request"]) -> builtins.bool: ...
|
2717
|
+
def ClearField(self, field_name: typing_extensions.Literal["file_close_request", b"file_close_request", "file_delete_bytes_request", b"file_delete_bytes_request", "file_exec_request_oneof", b"file_exec_request_oneof", "file_flush_request", b"file_flush_request", "file_ls_request", b"file_ls_request", "file_mkdir_request", b"file_mkdir_request", "file_open_request", b"file_open_request", "file_read_line_request", b"file_read_line_request", "file_read_request", b"file_read_request", "file_rm_request", b"file_rm_request", "file_seek_request", b"file_seek_request", "file_watch_request", b"file_watch_request", "file_write_replace_bytes_request", b"file_write_replace_bytes_request", "file_write_request", b"file_write_request", "task_id", b"task_id"]) -> None: ...
|
2718
|
+
def WhichOneof(self, oneof_group: typing_extensions.Literal["file_exec_request_oneof", b"file_exec_request_oneof"]) -> typing_extensions.Literal["file_open_request", "file_write_request", "file_read_request", "file_flush_request", "file_read_line_request", "file_seek_request", "file_delete_bytes_request", "file_write_replace_bytes_request", "file_close_request", "file_ls_request", "file_mkdir_request", "file_rm_request", "file_watch_request"] | None: ...
|
2634
2719
|
|
2635
2720
|
global___ContainerFilesystemExecRequest = ContainerFilesystemExecRequest
|
2636
2721
|
|
modal_version/__init__.py
CHANGED
@@ -7,7 +7,7 @@ from ._version_generated import build_number
|
|
7
7
|
major_number = 0
|
8
8
|
|
9
9
|
# Bump this manually on breaking changes, then reset the number in _version_generated.py
|
10
|
-
minor_number =
|
10
|
+
minor_number = 68
|
11
11
|
|
12
12
|
# Right now, automatically increment the patch number in CI
|
13
13
|
__version__ = f"{major_number}.{minor_number}.{max(build_number, 0)}"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|