modal 1.1.2.dev16__py3-none-any.whl → 1.1.2.dev18__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/client.pyi CHANGED
@@ -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.dev16",
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.dev16",
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(commands=["FROM base", *(f"RUN {cmd}" for cmd in commands)], context_files={})
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},
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.1.2.dev16
3
+ Version: 1.1.2.dev18
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -22,7 +22,7 @@ modal/app.py,sha256=kpq4kXp7pch688y6g55QYAC10wqPTU5FXKoWPMirA3E,47899
22
22
  modal/app.pyi,sha256=-jKXlGDBWRPVsuenBhdMRqawK-L2eiJ7gHbmSblhltg,43525
23
23
  modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
24
24
  modal/client.py,sha256=kyAIVB3Ay-XKJizQ_1ufUFB__EagV0MLmHJpyYyJ7J0,18636
25
- modal/client.pyi,sha256=IwXcU0POnalVA3djJSCg_k5csRk3QaWhLOAF5OjT6xo,15831
25
+ modal/client.pyi,sha256=kRLvWN3479PexYdIOjmN3BzwA_Ex1lxPJwL3thvI6qE,15831
26
26
  modal/cloud_bucket_mount.py,sha256=YOe9nnvSr4ZbeCn587d7_VhE9IioZYRvF9VYQTQux08,5914
27
27
  modal/cloud_bucket_mount.pyi,sha256=-qSfYAQvIoO_l2wsCCGTG5ZUwQieNKXdAO00yP1-LYU,7394
28
28
  modal/cls.py,sha256=7A0xGnugQzm8dOfnKMjLjtqekRlRtQ0jPFRYgq6xdUM,40018
@@ -149,11 +149,11 @@ modal/cli/programs/launch_instance_ssh.py,sha256=GrwK_Vy8-7B4x5a6AqFaF7lqNVgu75J
149
149
  modal/cli/programs/run_jupyter.py,sha256=44Lpvqk2l3hH-uOkmAOzw60NEsfB5uaRDWDKVshvQhs,2682
150
150
  modal/cli/programs/run_marimo.py,sha256=HyZ2za0NYqg31-mGxFQxUIAJ3Q-jRaMocEwWwI5-cdw,2887
151
151
  modal/cli/programs/vscode.py,sha256=KbTAaIXyQBVCDXxXjmBHmKpgXkUw0q4R4KkJvUjCYgk,3380
152
- modal/experimental/__init__.py,sha256=v5uDRPVr2BNEyeOo6YNWNF5yFUddr66habUvEAqOAGE,14165
152
+ modal/experimental/__init__.py,sha256=dPBPpxsmjZMLF3YjRrXoTvT01pl65wxi4UdFZsOem3w,15082
153
153
  modal/experimental/flash.py,sha256=viXQumCIFp5VFsPFURdFTBTjP_QnsAi8nSWXAMmfjeQ,19744
154
154
  modal/experimental/flash.pyi,sha256=A8_qJGtGoXEzKDdHbvhmCw7oqfneFEvJQK3ZdTOvUdU,10830
155
155
  modal/experimental/ipython.py,sha256=TrCfmol9LGsRZMeDoeMPx3Hv3BFqQhYnmD_iH0pqdhk,2904
156
- modal-1.1.2.dev16.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
156
+ modal-1.1.2.dev18.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
157
157
  modal_docs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
158
158
  modal_docs/gen_cli_docs.py,sha256=c1yfBS_x--gL5bs0N4ihMwqwX8l3IBWSkBAKNNIi6bQ,3801
159
159
  modal_docs/gen_reference_docs.py,sha256=d_CQUGQ0rfw28u75I2mov9AlS773z9rG40-yq5o7g2U,6359
@@ -161,10 +161,10 @@ modal_docs/mdmd/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,2
161
161
  modal_docs/mdmd/mdmd.py,sha256=tUTImNd4UMFk1opkaw8J672gX8AkBO5gbY2S_NMxsxs,7140
162
162
  modal_docs/mdmd/signatures.py,sha256=XJaZrK7Mdepk5fdX51A8uENiLFNil85Ud0d4MH8H5f0,3218
163
163
  modal_proto/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
164
- modal_proto/api.proto,sha256=F4GTT-yAUTZcFrE1hn5wIRFda5EUSR89YEUZvnVSzoY,103814
164
+ modal_proto/api.proto,sha256=h8dFXyBZjvdeg1xz6-KqtITH6wYvwaHnuf2PvP8aYtY,103857
165
165
  modal_proto/api_grpc.py,sha256=1mDcIexGtoVq0675-sqlYVr_M2ncGETpmKsOP7VwE3Y,126369
166
- modal_proto/api_pb2.py,sha256=fiPCK5cxXaCc-t59iONnuBIp_bXjm0h4cS2kyEvB9Y0,364247
167
- modal_proto/api_pb2.pyi,sha256=HMXw-aMogEC9UC1jU54zU_1lAcMsuq0dOWK_g-E87Vg,502260
166
+ modal_proto/api_pb2.py,sha256=Oqb451HSGpro9ZZ9qLmHWWrM13VJpRGWeGlB8KCykCU,364345
167
+ modal_proto/api_pb2.pyi,sha256=f4GsaHHROjX93jidQMREJzWo-nHmzJo7w114IBuGbCo,502782
168
168
  modal_proto/api_pb2_grpc.py,sha256=8TyCjBX-IvJaO_v7vkF_-J9h72wwLOe4MKL_jyXTK0g,272649
169
169
  modal_proto/api_pb2_grpc.pyi,sha256=SQtAD1GR57oJOjxohW_8XTHpRRCahy02FTq0IYWzTNs,63669
170
170
  modal_proto/modal_api_grpc.py,sha256=KL5Nw4AS9hJNxfL6VIeuxHz4jIUN7Unz7hYnoSsqyx0,19071
@@ -176,10 +176,10 @@ modal_proto/options_pb2.pyi,sha256=l7DBrbLO7q3Ir-XDkWsajm0d0TQqqrfuX54i4BMpdQg,1
176
176
  modal_proto/options_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
177
177
  modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0yJSI,247
178
178
  modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
179
- modal_version/__init__.py,sha256=991qiLp7Gaj7KDTnPn2cQZzYs3lPFPPiUFmLVtqUyCk,121
179
+ modal_version/__init__.py,sha256=fa3Wn9TJLvgYuzTqpHri2jBsj3k6C_kkeZL6CzABr_s,121
180
180
  modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
181
- modal-1.1.2.dev16.dist-info/METADATA,sha256=ebR80hnI4tOEH63GsXjKYPZ0sYbuGzjnsLiktsrGxDk,2460
182
- modal-1.1.2.dev16.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
183
- modal-1.1.2.dev16.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
184
- modal-1.1.2.dev16.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
185
- modal-1.1.2.dev16.dist-info/RECORD,,
181
+ modal-1.1.2.dev18.dist-info/METADATA,sha256=MTovuvHghz6Htwv483bJHvtpp3wl6vRWTJ_K5zLOy0Y,2460
182
+ modal-1.1.2.dev18.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
183
+ modal-1.1.2.dev18.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
184
+ modal-1.1.2.dev18.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
185
+ modal-1.1.2.dev18.dist-info/RECORD,,
modal_proto/api.proto CHANGED
@@ -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 {