modal 0.73.11__py3-none-any.whl → 0.73.13__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.
@@ -36,15 +36,12 @@ def toggle():
36
36
  logger.debug(f"Toggling CUDA checkpoint state for PID {pid}")
37
37
 
38
38
  try:
39
- cuda_checkpoint_lock_timeout_ms = 5 * 1000
40
39
  subprocess.run(
41
40
  [
42
41
  CUDA_CHECKPOINT_PATH,
43
42
  "--toggle",
44
43
  "--pid",
45
44
  str(pid),
46
- "--timeout",
47
- str(cuda_checkpoint_lock_timeout_ms),
48
45
  ],
49
46
  check=True,
50
47
  capture_output=True,
@@ -68,7 +65,6 @@ def get_state() -> CudaCheckpointState:
68
65
 
69
66
  # Parse output to get state
70
67
  state_str = result.stdout.strip().lower()
71
- logger.debug(f"Raw state output: {state_str}")
72
68
  return CudaCheckpointState(state_str)
73
69
 
74
70
  except subprocess.CalledProcessError as e:
@@ -86,6 +82,7 @@ def wait_for_state(target_state: CudaCheckpointState, timeout_secs: float = 5.0)
86
82
 
87
83
  if current_state == target_state:
88
84
  logger.debug(f"Target state {target_state.value} reached")
85
+ break
89
86
 
90
87
  if current_state == CudaCheckpointState.FAILED:
91
88
  raise CudaCheckpointException(f"CUDA process state is {current_state}")
modal/client.pyi CHANGED
@@ -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.11"
30
+ self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.13"
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.11"
88
+ self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.13"
89
89
  ): ...
90
90
  def is_closed(self) -> bool: ...
91
91
  @property
modal/gpu.py CHANGED
@@ -12,14 +12,12 @@ class _GPUConfig:
12
12
  type: "api_pb2.GPUType.V" # Deprecated, at some point
13
13
  count: int
14
14
  gpu_type: str
15
- memory: int = 0
16
15
 
17
16
  def _to_proto(self) -> api_pb2.GPUConfig:
18
17
  """Convert this GPU config to an internal protobuf representation."""
19
18
  return api_pb2.GPUConfig(
20
19
  type=self.type,
21
20
  count=self.count,
22
- memory=self.memory,
23
21
  gpu_type=self.gpu_type,
24
22
  )
25
23
 
@@ -73,17 +71,14 @@ class A100(_GPUConfig):
73
71
  size: Union[str, None] = None, # Select GB configuration of GPU device: "40GB" or "80GB". Defaults to "40GB".
74
72
  ):
75
73
  if size == "40GB" or not size:
76
- super().__init__(api_pb2.GPU_TYPE_A100, count, "A100-40GB", 40)
74
+ super().__init__(api_pb2.GPU_TYPE_A100, count, "A100-40GB")
77
75
  elif size == "80GB":
78
- super().__init__(api_pb2.GPU_TYPE_A100_80GB, count, "A100-80GB", 80)
76
+ super().__init__(api_pb2.GPU_TYPE_A100_80GB, count, "A100-80GB")
79
77
  else:
80
78
  raise ValueError(f"size='{size}' is invalid. A100s can only have memory values of 40GB or 80GB.")
81
79
 
82
80
  def __repr__(self):
83
- if self.memory == 80:
84
- return f"GPU(A100-80GB, count={self.count})"
85
- else:
86
- return f"GPU(A100-40GB, count={self.count})"
81
+ return f"GPU({self.gpu_type}, count={self.count})"
87
82
 
88
83
 
89
84
  class A10G(_GPUConfig):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: modal
3
- Version: 0.73.11
3
+ Version: 0.73.13
4
4
  Summary: Python client library for Modal
5
5
  Author: Modal Labs
6
6
  Author-email: support@modal.com
@@ -21,7 +21,7 @@ modal/app.py,sha256=MaWCYgNx8y2GQhmaXQBMKKAAfCYfdxrdYs6zCBoJzwI,44628
21
21
  modal/app.pyi,sha256=lxiuWzE_OLb3WHg-H7Pek9DGBuCUzZ55P594VhJL5LA,26113
22
22
  modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
23
23
  modal/client.py,sha256=8SQawr7P1PNUCq1UmJMUQXG2jIo4Nmdcs311XqrNLRE,15276
24
- modal/client.pyi,sha256=ALJFDxGokLAB9KoQ5frmUZt3pg2VcXN2CAp_v7ukNuw,7593
24
+ modal/client.pyi,sha256=iN1HdOxRFw1Xq2eLnhlYAm36HxUiLxMIw01L0CCyR30,7593
25
25
  modal/cloud_bucket_mount.py,sha256=YOe9nnvSr4ZbeCn587d7_VhE9IioZYRvF9VYQTQux08,5914
26
26
  modal/cloud_bucket_mount.pyi,sha256=30T3K1a89l6wzmEJ_J9iWv9SknoGqaZDx59Xs-ZQcmk,1607
27
27
  modal/cls.py,sha256=kNnZrBYVXOhgEXU0rDWk2Hr-bQRrsZkMKDgC-TD_6Bs,31063
@@ -41,7 +41,7 @@ modal/file_io.pyi,sha256=NTRft1tbPSWf9TlWVeZmTlgB5AZ_Zhu2srWIrWr7brk,9445
41
41
  modal/file_pattern_matcher.py,sha256=1cZ4V2wSLiaXqAqStETSwp3bzDD6QZOt6pmmjk3Okz4,6505
42
42
  modal/functions.py,sha256=kcNHvqeGBxPI7Cgd57NIBBghkfbeFJzXO44WW0jSmao,325
43
43
  modal/functions.pyi,sha256=YflJx4BhzmJLJzpVWbuAMv0Qv63Mgb3r9qZqrgBEr1w,14289
44
- modal/gpu.py,sha256=2qZMNnoMrjU-5Bu7fx68pANUAKTtZq0EWEEeBA9OUVQ,7426
44
+ modal/gpu.py,sha256=emiPRWAgr10f5twtUhC3kBZQZ91fZ74VNdePy7YAspE,7267
45
45
  modal/image.py,sha256=ekE2693foy30Xi1LM3swKZPW6HuaACj-OBvfspVSyIE,91509
46
46
  modal/image.pyi,sha256=kdJzy1eaxNPZeCpE0TMYYLhJ6UWmkfRDeb_vzngJUoQ,26462
47
47
  modal/io_streams.py,sha256=QkQiizKRzd5bnbKQsap31LJgBYlAnj4-XkV_50xPYX0,15079
@@ -85,7 +85,7 @@ modal/_runtime/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
85
85
  modal/_runtime/asgi.py,sha256=c4hmaMW1pLo-cm7ouriJjieuFm4ZF6D2LMy0638sfOs,22139
86
86
  modal/_runtime/container_io_manager.py,sha256=L6qv-Mo3mN3ttR5GX-G36cUhH_oz8wdP5WG0HT5FFzg,44619
87
87
  modal/_runtime/execution_context.py,sha256=E6ofm6j1POXGPxS841X3V7JU6NheVb8OkQc7JpLq4Kg,2712
88
- modal/_runtime/gpu_memory_snapshot.py,sha256=vV6igsqN9CxOoH91kUkuaZQ32QfX5wdoXIS-6MIYX2Y,3315
88
+ modal/_runtime/gpu_memory_snapshot.py,sha256=tA3m1d1cwnmHpvpCeN_WijDd6n8byn7LWlpicbIxiOI,3144
89
89
  modal/_runtime/telemetry.py,sha256=T1RoAGyjBDr1swiM6pPsGRSITm7LI5FDK18oNXxY08U,5163
90
90
  modal/_runtime/user_code_imports.py,sha256=zl_Mq9dsrVF62x3w-iNK1YAhZKYAXeFaGpd4G7AySTc,14746
91
91
  modal/_utils/__init__.py,sha256=waLjl5c6IPDhSsdWAm9Bji4e2PVxamYABKAze6CHVXY,28
@@ -154,10 +154,10 @@ modal_global_objects/mounts/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0
154
154
  modal_global_objects/mounts/modal_client_package.py,sha256=W0E_yShsRojPzWm6LtIQqNVolapdnrZkm2hVEQuZK_4,767
155
155
  modal_global_objects/mounts/python_standalone.py,sha256=EsC-hdPtiAPOwgW9emHN6muNUkrJwR8dYxroVArxHxM,1841
156
156
  modal_proto/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
157
- modal_proto/api.proto,sha256=_RV_hQIWR_CmanZcjieKll-P9P5qVsRDDS7TtGWL4AU,85264
157
+ modal_proto/api.proto,sha256=0sTvOLxxQPMLMLN5YDreXf8KhLhZF3xDOBDkz3wnmdI,85243
158
158
  modal_proto/api_grpc.py,sha256=FYGqDegM_w_qxdtlxum8k31mDibKoMvmNxv_p9cKdKs,109056
159
- modal_proto/api_pb2.py,sha256=7hj3Dqmv3Xb6nEzLVMt-zai1EGqUT5uAU5nbGjnk85A,311104
160
- modal_proto/api_pb2.pyi,sha256=ScYf3xdzV3TQZZR-uPusjrEHoHIxKCRPseS7e8Ee_EI,415384
159
+ modal_proto/api_pb2.py,sha256=XQDiHbY5FwTt4y_mdFnGmKajgRk8ABhDygcdZQ-FDWw,311068
160
+ modal_proto/api_pb2.pyi,sha256=InI2402-j9scYBCnlNTFSb8lmstfGeUqNar-2IteJdQ,415264
161
161
  modal_proto/api_pb2_grpc.py,sha256=DNp0Et5i_Ey4dKx_1o1LRtYhyWYyT0NzTcAY4EcHn-c,235765
162
162
  modal_proto/api_pb2_grpc.pyi,sha256=RI6tWC3L8EIN4-izFSEGPPJl5Ta0lXPNuHUJaWAr35s,54892
163
163
  modal_proto/modal_api_grpc.py,sha256=UG8WJU81afrWPwItWB4Ag64E9EpyREMpBbAVGVEYJiM,14550
@@ -171,10 +171,10 @@ modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0y
171
171
  modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
172
172
  modal_version/__init__.py,sha256=wiJQ53c-OMs0Xf1UeXOxQ7FwlV1VzIjnX6o-pRYZ_Pk,470
173
173
  modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
174
- modal_version/_version_generated.py,sha256=c8Anvfl2gD2odGTQ0RxHnfa44Y9okAWKU0eMINv_kPQ,149
175
- modal-0.73.11.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
176
- modal-0.73.11.dist-info/METADATA,sha256=zjTqoWXVVpSM6DjsVRIsiwjIK07gCrXAVodMWTUuXUQ,2330
177
- modal-0.73.11.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
178
- modal-0.73.11.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
179
- modal-0.73.11.dist-info/top_level.txt,sha256=1nvYbOSIKcmU50fNrpnQnrrOpj269ei3LzgB6j9xGqg,64
180
- modal-0.73.11.dist-info/RECORD,,
174
+ modal_version/_version_generated.py,sha256=2drcLOG3ZiHBj7SzNwPG-zzUN85-bt5e0PFZoJnajJg,149
175
+ modal-0.73.13.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
176
+ modal-0.73.13.dist-info/METADATA,sha256=obTzgYG7UDe0iMbJLuSi6T5qU_QpxZQBi0uTMnSEF7w,2330
177
+ modal-0.73.13.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
178
+ modal-0.73.13.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
179
+ modal-0.73.13.dist-info/top_level.txt,sha256=1nvYbOSIKcmU50fNrpnQnrrOpj269ei3LzgB6j9xGqg,64
180
+ modal-0.73.13.dist-info/RECORD,,
modal_proto/api.proto CHANGED
@@ -1680,7 +1680,6 @@ message FunctionUpdateSchedulingParamsResponse {}
1680
1680
  message GPUConfig {
1681
1681
  GPUType type = 1; // Deprecated, at some point
1682
1682
  uint32 count = 2;
1683
- uint32 memory = 3;
1684
1683
  string gpu_type = 4;
1685
1684
  }
1686
1685