modal 1.1.2.dev16__tar.gz → 1.1.2.dev18__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-1.1.2.dev16 → modal-1.1.2.dev18}/PKG-INFO +1 -1
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/client.pyi +2 -2
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/experimental/__init__.py +28 -2
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal.egg-info/PKG-INFO +1 -1
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal_proto/api.proto +1 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal_proto/api_pb2.py +536 -536
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal_proto/api_pb2.pyi +7 -2
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal_version/__init__.py +1 -1
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/LICENSE +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/README.md +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/__init__.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/__main__.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_clustered_functions.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_clustered_functions.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_container_entrypoint.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_functions.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_ipython.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_location.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_object.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_output.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_partial_function.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_pty.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_resolver.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_resources.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_runtime/__init__.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_runtime/asgi.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_runtime/container_io_manager.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_runtime/execution_context.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_runtime/execution_context.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_runtime/telemetry.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_runtime/user_code_imports.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_serialization.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_traceback.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_tunnel.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_tunnel.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_type_manager.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_utils/__init__.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_utils/app_utils.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_utils/async_utils.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_utils/auth_token_manager.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_utils/blob_utils.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_utils/deprecation.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_utils/docker_utils.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_utils/function_utils.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_utils/git_utils.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_utils/grpc_testing.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_utils/grpc_utils.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_utils/hash_utils.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_utils/http_utils.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_utils/jwt_utils.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_utils/logger.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_utils/mount_utils.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_utils/name_utils.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_utils/package_utils.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_utils/pattern_utils.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_utils/shell_utils.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_utils/time_utils.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_vendor/__init__.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_vendor/cloudpickle.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_vendor/tblib.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/_watcher.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/app.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/app.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/builder/2023.12.312.txt +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/builder/2023.12.txt +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/builder/2024.04.txt +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/builder/2024.10.txt +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/builder/2025.06.txt +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/builder/PREVIEW.txt +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/builder/README.md +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/builder/base-images.json +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/call_graph.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/cli/__init__.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/cli/_download.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/cli/_traceback.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/cli/app.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/cli/cluster.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/cli/config.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/cli/container.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/cli/dict.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/cli/entry_point.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/cli/environment.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/cli/import_refs.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/cli/launch.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/cli/network_file_system.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/cli/profile.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/cli/programs/__init__.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/cli/programs/launch_instance_ssh.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/cli/programs/run_jupyter.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/cli/programs/run_marimo.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/cli/programs/vscode.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/cli/queues.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/cli/run.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/cli/secret.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/cli/token.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/cli/utils.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/cli/volume.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/client.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/cloud_bucket_mount.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/cls.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/cls.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/config.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/container_process.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/container_process.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/dict.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/dict.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/environments.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/environments.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/exception.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/experimental/flash.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/experimental/flash.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/experimental/ipython.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/file_io.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/file_io.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/file_pattern_matcher.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/functions.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/functions.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/gpu.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/image.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/image.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/io_streams.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/io_streams.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/mount.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/mount.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/network_file_system.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/network_file_system.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/object.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/object.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/output.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/parallel_map.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/parallel_map.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/partial_function.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/partial_function.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/proxy.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/proxy.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/py.typed +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/queue.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/queue.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/retries.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/runner.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/runner.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/running_app.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/sandbox.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/sandbox.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/schedule.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/scheduler_placement.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/secret.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/secret.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/serving.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/serving.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/snapshot.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/snapshot.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/stream_type.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/token_flow.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/token_flow.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/volume.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal/volume.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal.egg-info/SOURCES.txt +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal.egg-info/dependency_links.txt +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal.egg-info/entry_points.txt +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal.egg-info/requires.txt +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal.egg-info/top_level.txt +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal_docs/__init__.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal_docs/gen_cli_docs.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal_docs/gen_reference_docs.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal_docs/mdmd/__init__.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal_docs/mdmd/signatures.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal_proto/__init__.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal_proto/api_grpc.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal_proto/api_pb2_grpc.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal_proto/api_pb2_grpc.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal_proto/modal_api_grpc.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal_proto/modal_options_grpc.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal_proto/options.proto +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal_proto/options_grpc.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal_proto/options_pb2.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal_proto/options_pb2.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal_proto/options_pb2_grpc.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal_proto/options_pb2_grpc.pyi +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal_proto/py.typed +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/modal_version/__main__.py +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/pyproject.toml +0 -0
- {modal-1.1.2.dev16 → modal-1.1.2.dev18}/setup.cfg +0 -0
@@ -33,7 +33,7 @@ class _Client:
|
|
33
33
|
server_url: str,
|
34
34
|
client_type: int,
|
35
35
|
credentials: typing.Optional[tuple[str, str]],
|
36
|
-
version: str = "1.1.2.
|
36
|
+
version: str = "1.1.2.dev18",
|
37
37
|
):
|
38
38
|
"""mdmd:hidden
|
39
39
|
The Modal client object is not intended to be instantiated directly by users.
|
@@ -164,7 +164,7 @@ class Client:
|
|
164
164
|
server_url: str,
|
165
165
|
client_type: int,
|
166
166
|
credentials: typing.Optional[tuple[str, str]],
|
167
|
-
version: str = "1.1.2.
|
167
|
+
version: str = "1.1.2.dev18",
|
168
168
|
):
|
169
169
|
"""mdmd:hidden
|
170
170
|
The Modal client object is not intended to be instantiated directly by users.
|
@@ -213,6 +213,24 @@ async def raw_registry_image(
|
|
213
213
|
)
|
214
214
|
|
215
215
|
|
216
|
+
def _install_cuda_command() -> str:
|
217
|
+
"""Command to install CUDA Toolkit (nvcc) inside a container."""
|
218
|
+
arch = "x86_64" # instruction set architecture for the CPU, all Modal machines are x86_64
|
219
|
+
distro = "debian12" # the distribution and version number of our OS (GNU/Linux)
|
220
|
+
filename = "cuda-keyring_1.1-1_all.deb" # NVIDIA signing key file
|
221
|
+
cuda_keyring_url = f"https://developer.download.nvidia.com/compute/cuda/repos/{distro}/{arch}/{filename}"
|
222
|
+
|
223
|
+
major, minor = 12, 8
|
224
|
+
max_cuda_version = f"{major}-{minor}"
|
225
|
+
|
226
|
+
return (
|
227
|
+
f"wget {cuda_keyring_url} && "
|
228
|
+
+ f"dpkg -i {filename} && "
|
229
|
+
+ f"rm -f {filename} && "
|
230
|
+
+ f"apt-get update && apt-get install -y cuda-nvcc-{max_cuda_version}"
|
231
|
+
)
|
232
|
+
|
233
|
+
|
216
234
|
@synchronizer.create_blocking
|
217
235
|
async def notebook_base_image(*, python_version: Optional[str] = None, force_build: bool = False) -> _Image:
|
218
236
|
"""Default image used for Modal notebook kernels, with common libraries.
|
@@ -293,7 +311,8 @@ async def notebook_base_image(*, python_version: Optional[str] = None, force_bui
|
|
293
311
|
|
294
312
|
commands: list[str] = [
|
295
313
|
"apt-get update",
|
296
|
-
"apt-get install -y libpq-dev pkg-config cmake git curl wget unzip zip libsqlite3-dev openssh-server",
|
314
|
+
"apt-get install -y libpq-dev pkg-config cmake git curl wget unzip zip libsqlite3-dev openssh-server vim",
|
315
|
+
_install_cuda_command(),
|
297
316
|
# Install uv since it's faster than pip for installing packages.
|
298
317
|
"pip install uv",
|
299
318
|
# https://github.com/astral-sh/uv/issues/11480
|
@@ -306,7 +325,14 @@ async def notebook_base_image(*, python_version: Optional[str] = None, force_bui
|
|
306
325
|
# https://github.com/charlesfrye/cuda-modal/blob/7fef8db12402986cf42d9c8cca8c63d1da6d7700/cuda/use_cuda.py#L158-L188
|
307
326
|
|
308
327
|
def build_dockerfile(version: ImageBuilderVersion) -> DockerfileSpec:
|
309
|
-
return DockerfileSpec(
|
328
|
+
return DockerfileSpec(
|
329
|
+
commands=[
|
330
|
+
"FROM base",
|
331
|
+
*(f"RUN {cmd}" for cmd in commands),
|
332
|
+
"ENV PATH=/usr/local/cuda/bin:$PATH",
|
333
|
+
],
|
334
|
+
context_files={},
|
335
|
+
)
|
310
336
|
|
311
337
|
return _Image._from_args(
|
312
338
|
base_images={"base": base_image},
|
@@ -1824,6 +1824,7 @@ message FunctionOptions {
|
|
1824
1824
|
optional uint32 batch_max_size = 15;
|
1825
1825
|
optional uint64 batch_linger_ms = 16;
|
1826
1826
|
optional SchedulerPlacement scheduler_placement = 17;
|
1827
|
+
optional string cloud_provider_str = 18;
|
1827
1828
|
}
|
1828
1829
|
|
1829
1830
|
message FunctionPrecreateRequest {
|