modal 0.74.31__tar.gz → 0.74.33__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.31 → modal-0.74.33}/PKG-INFO +1 -1
- {modal-0.74.31 → modal-0.74.33}/modal/_functions.py +2 -12
- {modal-0.74.31 → modal-0.74.33}/modal/_utils/function_utils.py +5 -1
- {modal-0.74.31 → modal-0.74.33}/modal/client.pyi +2 -2
- {modal-0.74.31 → modal-0.74.33}/modal.egg-info/PKG-INFO +1 -1
- {modal-0.74.31 → modal-0.74.33}/modal_version/_version_generated.py +1 -1
- {modal-0.74.31 → modal-0.74.33}/LICENSE +0 -0
- {modal-0.74.31 → modal-0.74.33}/README.md +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/__init__.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/__main__.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_clustered_functions.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_clustered_functions.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_container_entrypoint.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_ipython.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_location.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_object.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_output.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_partial_function.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_pty.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_resolver.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_resources.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_runtime/__init__.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_runtime/asgi.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_runtime/container_io_manager.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_runtime/execution_context.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_runtime/execution_context.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_runtime/telemetry.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_runtime/user_code_imports.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_serialization.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_traceback.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_tunnel.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_tunnel.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_type_manager.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_utils/__init__.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_utils/app_utils.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_utils/async_utils.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_utils/blob_utils.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_utils/deprecation.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_utils/docker_utils.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_utils/git_utils.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_utils/grpc_testing.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_utils/grpc_utils.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_utils/hash_utils.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_utils/http_utils.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_utils/jwt_utils.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_utils/logger.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_utils/mount_utils.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_utils/name_utils.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_utils/package_utils.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_utils/pattern_utils.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_utils/shell_utils.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_vendor/__init__.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_vendor/cloudpickle.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_vendor/tblib.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/_watcher.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/app.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/app.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/call_graph.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/cli/__init__.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/cli/_download.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/cli/_traceback.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/cli/app.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/cli/config.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/cli/container.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/cli/dict.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/cli/entry_point.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/cli/environment.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/cli/import_refs.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/cli/launch.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/cli/network_file_system.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/cli/profile.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/cli/programs/__init__.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/cli/programs/run_jupyter.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/cli/programs/vscode.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/cli/queues.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/cli/run.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/cli/secret.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/cli/token.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/cli/utils.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/cli/volume.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/client.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/cloud_bucket_mount.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/cls.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/cls.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/config.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/container_process.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/container_process.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/dict.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/dict.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/environments.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/environments.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/exception.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/experimental/__init__.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/experimental/ipython.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/file_io.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/file_io.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/file_pattern_matcher.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/functions.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/functions.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/gpu.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/image.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/image.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/io_streams.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/io_streams.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/mount.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/mount.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/network_file_system.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/network_file_system.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/object.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/object.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/output.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/parallel_map.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/parallel_map.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/partial_function.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/partial_function.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/proxy.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/proxy.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/py.typed +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/queue.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/queue.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/requirements/2023.12.312.txt +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/requirements/2023.12.txt +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/requirements/2024.04.txt +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/requirements/2024.10.txt +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/requirements/PREVIEW.txt +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/requirements/README.md +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/requirements/base-images.json +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/retries.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/runner.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/runner.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/running_app.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/sandbox.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/sandbox.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/schedule.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/scheduler_placement.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/secret.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/secret.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/serving.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/serving.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/snapshot.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/snapshot.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/stream_type.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/token_flow.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/token_flow.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/volume.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal/volume.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal.egg-info/SOURCES.txt +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal.egg-info/dependency_links.txt +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal.egg-info/entry_points.txt +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal.egg-info/requires.txt +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal.egg-info/top_level.txt +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal_docs/__init__.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal_docs/gen_cli_docs.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal_docs/gen_reference_docs.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal_docs/mdmd/__init__.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal_docs/mdmd/signatures.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal_proto/__init__.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal_proto/api.proto +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal_proto/api_grpc.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal_proto/api_pb2.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal_proto/api_pb2.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal_proto/api_pb2_grpc.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal_proto/api_pb2_grpc.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal_proto/modal_api_grpc.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal_proto/modal_options_grpc.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal_proto/options.proto +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal_proto/options_grpc.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal_proto/options_pb2.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal_proto/options_pb2.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal_proto/options_pb2_grpc.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal_proto/options_pb2_grpc.pyi +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal_proto/py.typed +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal_version/__init__.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/modal_version/__main__.py +0 -0
- {modal-0.74.31 → modal-0.74.33}/pyproject.toml +0 -0
- {modal-0.74.31 → modal-0.74.33}/setup.cfg +0 -0
@@ -966,19 +966,9 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
|
|
966
966
|
parent = self
|
967
967
|
|
968
968
|
async def _load(param_bound_func: _Function, resolver: Resolver, existing_object_id: Optional[str]):
|
969
|
-
try:
|
970
|
-
identity = f"{parent.info.function_name} class service function"
|
971
|
-
except Exception:
|
972
|
-
# Can't always look up the function name that way, so fall back to generic message
|
973
|
-
identity = "class service function for a parametrized class"
|
974
969
|
if not parent.is_hydrated:
|
975
|
-
|
976
|
-
|
977
|
-
else:
|
978
|
-
reason = ""
|
979
|
-
raise ExecutionError(
|
980
|
-
f"The {identity} has not been hydrated with the metadata it needs to run on Modal{reason}."
|
981
|
-
)
|
970
|
+
# While the base Object.hydrate() method appears to be idempotent, it's not always safe
|
971
|
+
await parent.hydrate()
|
982
972
|
|
983
973
|
assert parent._client and parent._client.stub
|
984
974
|
|
@@ -140,7 +140,7 @@ class FunctionInfo:
|
|
140
140
|
def __init__(
|
141
141
|
self,
|
142
142
|
f: Optional[Callable[..., Any]],
|
143
|
-
serialized=False,
|
143
|
+
serialized: bool = False,
|
144
144
|
name_override: Optional[str] = None,
|
145
145
|
user_cls: Optional[type] = None,
|
146
146
|
):
|
@@ -148,6 +148,10 @@ class FunctionInfo:
|
|
148
148
|
self.user_cls = user_cls
|
149
149
|
|
150
150
|
if name_override is not None:
|
151
|
+
if not serialized:
|
152
|
+
# We may relax this constraint in the future, but currently we don't track the distinction between
|
153
|
+
# the Function's name inside modal and the name of the object that we need to import in a container.
|
154
|
+
raise InvalidError("Setting a custom `name=` also requires setting `serialized=True`")
|
151
155
|
self.function_name = name_override
|
152
156
|
elif f is None and user_cls:
|
153
157
|
# "service function" for running all methods of a class
|
@@ -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.33"
|
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.33"
|
89
89
|
): ...
|
90
90
|
def is_closed(self) -> bool: ...
|
91
91
|
@property
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|