modal 0.73.88__tar.gz → 0.73.90__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.73.88 → modal-0.73.90}/PKG-INFO +1 -1
- {modal-0.73.88 → modal-0.73.90}/modal/_partial_function.py +6 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_runtime/asgi.py +2 -2
- {modal-0.73.88 → modal-0.73.90}/modal/_runtime/user_code_imports.py +1 -1
- {modal-0.73.88 → modal-0.73.90}/modal/client.pyi +2 -2
- {modal-0.73.88 → modal-0.73.90}/modal.egg-info/PKG-INFO +1 -1
- {modal-0.73.88 → modal-0.73.90}/modal_proto/api.proto +1 -0
- {modal-0.73.88 → modal-0.73.90}/modal_proto/api_pb2.py +144 -144
- {modal-0.73.88 → modal-0.73.90}/modal_proto/api_pb2.pyi +4 -1
- {modal-0.73.88 → modal-0.73.90}/modal_version/_version_generated.py +1 -1
- {modal-0.73.88 → modal-0.73.90}/LICENSE +0 -0
- {modal-0.73.88 → modal-0.73.90}/README.md +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/__init__.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/__main__.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_clustered_functions.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_clustered_functions.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_container_entrypoint.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_functions.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_ipython.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_location.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_object.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_output.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_proxy_tunnel.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_pty.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_resolver.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_resources.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_runtime/__init__.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_runtime/container_io_manager.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_runtime/execution_context.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_runtime/execution_context.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_runtime/telemetry.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_serialization.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_traceback.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_tunnel.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_tunnel.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_utils/__init__.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_utils/app_utils.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_utils/async_utils.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_utils/blob_utils.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_utils/deprecation.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_utils/docker_utils.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_utils/function_utils.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_utils/grpc_testing.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_utils/grpc_utils.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_utils/hash_utils.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_utils/http_utils.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_utils/logger.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_utils/mount_utils.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_utils/name_utils.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_utils/package_utils.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_utils/pattern_utils.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_utils/shell_utils.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_vendor/__init__.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_vendor/cloudpickle.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_vendor/tblib.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/_watcher.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/app.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/app.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/call_graph.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/cli/__init__.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/cli/_download.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/cli/_traceback.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/cli/app.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/cli/config.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/cli/container.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/cli/dict.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/cli/entry_point.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/cli/environment.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/cli/import_refs.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/cli/launch.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/cli/network_file_system.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/cli/profile.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/cli/programs/__init__.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/cli/programs/run_jupyter.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/cli/programs/vscode.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/cli/queues.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/cli/run.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/cli/secret.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/cli/token.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/cli/utils.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/cli/volume.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/client.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/cloud_bucket_mount.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/cls.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/cls.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/config.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/container_process.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/container_process.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/dict.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/dict.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/environments.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/environments.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/exception.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/experimental.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/experimental.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/extensions/__init__.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/extensions/ipython.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/file_io.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/file_io.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/file_pattern_matcher.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/functions.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/functions.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/gpu.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/image.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/image.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/io_streams.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/io_streams.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/mount.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/mount.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/network_file_system.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/network_file_system.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/object.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/object.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/output.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/parallel_map.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/parallel_map.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/partial_function.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/partial_function.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/proxy.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/proxy.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/py.typed +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/queue.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/queue.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/requirements/2023.12.312.txt +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/requirements/2023.12.txt +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/requirements/2024.04.txt +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/requirements/2024.10.txt +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/requirements/README.md +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/requirements/base-images.json +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/retries.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/runner.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/runner.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/running_app.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/sandbox.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/sandbox.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/schedule.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/scheduler_placement.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/secret.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/secret.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/serving.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/serving.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/snapshot.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/snapshot.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/stream_type.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/token_flow.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/token_flow.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/volume.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal/volume.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal.egg-info/SOURCES.txt +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal.egg-info/dependency_links.txt +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal.egg-info/entry_points.txt +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal.egg-info/requires.txt +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal.egg-info/top_level.txt +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal_docs/__init__.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal_docs/gen_cli_docs.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal_docs/gen_reference_docs.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal_docs/mdmd/__init__.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal_docs/mdmd/signatures.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal_proto/__init__.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal_proto/api_grpc.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal_proto/api_pb2_grpc.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal_proto/api_pb2_grpc.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal_proto/modal_api_grpc.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal_proto/modal_options_grpc.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal_proto/options.proto +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal_proto/options_grpc.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal_proto/options_pb2.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal_proto/options_pb2.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal_proto/options_pb2_grpc.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal_proto/options_pb2_grpc.pyi +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal_proto/py.typed +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal_version/__init__.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/modal_version/__main__.py +0 -0
- {modal-0.73.88 → modal-0.73.90}/pyproject.toml +0 -0
- {modal-0.73.88 → modal-0.73.90}/setup.cfg +0 -0
@@ -312,6 +312,8 @@ def _web_endpoint(
|
|
312
312
|
) -> Callable[[Callable[P, ReturnType]], _PartialFunction[P, ReturnType, ReturnType]]:
|
313
313
|
"""Register a basic web endpoint with this application.
|
314
314
|
|
315
|
+
DEPRECATED: This decorator has been renamed to `@modal.fastapi_endpoint`.
|
316
|
+
|
315
317
|
This is the simple way to create a web endpoint on Modal. The function
|
316
318
|
behaves as a [FastAPI](https://fastapi.tiangolo.com/) handler and should
|
317
319
|
return a response object to the caller.
|
@@ -332,6 +334,10 @@ def _web_endpoint(
|
|
332
334
|
"Positional arguments are not allowed. Did you forget parentheses? Suggestion: `@web_endpoint()`."
|
333
335
|
)
|
334
336
|
|
337
|
+
deprecation_warning(
|
338
|
+
(2025, 3, 5), "The `@modal.web_endpoint` decorator has been renamed to `@modal.fastapi_endpoint`."
|
339
|
+
)
|
340
|
+
|
335
341
|
def wrapper(raw_f: Callable[..., Any]) -> _PartialFunction:
|
336
342
|
if isinstance(raw_f, _Function):
|
337
343
|
raw_f = raw_f.get_raw_f()
|
@@ -236,14 +236,14 @@ def wsgi_app_wrapper(wsgi_app, container_io_manager):
|
|
236
236
|
return asgi_app_wrapper(asgi_app, container_io_manager)
|
237
237
|
|
238
238
|
|
239
|
-
def
|
239
|
+
def magic_fastapi_app(fn: Callable[..., Any], method: str, docs: bool):
|
240
240
|
"""Return a FastAPI app wrapping a function handler."""
|
241
241
|
try:
|
242
242
|
from fastapi import FastAPI
|
243
243
|
from fastapi.middleware.cors import CORSMiddleware
|
244
244
|
except ImportError as exc:
|
245
245
|
message = (
|
246
|
-
"Modal
|
246
|
+
"Modal functions decorated with `fastapi_endpoint` require FastAPI to be installed in the modal.Image."
|
247
247
|
' Please update your Image definition code, e.g. with `.pip_install("fastapi[standard]")`.'
|
248
248
|
)
|
249
249
|
raise InvalidError(message) from exc
|
@@ -69,7 +69,7 @@ def construct_webhook_callable(
|
|
69
69
|
elif webhook_config.type == api_pb2.WEBHOOK_TYPE_FUNCTION:
|
70
70
|
# Function is a webhook without an ASGI app. Create one for it.
|
71
71
|
return asgi.asgi_app_wrapper(
|
72
|
-
asgi.
|
72
|
+
asgi.magic_fastapi_app(user_defined_callable, webhook_config.method, webhook_config.web_endpoint_docs),
|
73
73
|
container_io_manager,
|
74
74
|
)
|
75
75
|
|
@@ -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.73.
|
30
|
+
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.90"
|
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.73.
|
88
|
+
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.90"
|
89
89
|
): ...
|
90
90
|
def is_closed(self) -> bool: ...
|
91
91
|
@property
|