modal 0.73.38__tar.gz → 0.73.40__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.
Files changed (187) hide show
  1. {modal-0.73.38 → modal-0.73.40}/PKG-INFO +1 -1
  2. {modal-0.73.38 → modal-0.73.40}/modal/_functions.py +3 -6
  3. {modal-0.73.38 → modal-0.73.40}/modal/client.pyi +2 -2
  4. {modal-0.73.38 → modal-0.73.40}/modal/functions.pyi +1 -1
  5. {modal-0.73.38 → modal-0.73.40}/modal/image.py +1 -2
  6. {modal-0.73.38 → modal-0.73.40}/modal.egg-info/PKG-INFO +1 -1
  7. {modal-0.73.38 → modal-0.73.40}/modal_proto/api.proto +0 -3
  8. {modal-0.73.38 → modal-0.73.40}/modal_proto/api_pb2.py +418 -418
  9. {modal-0.73.38 → modal-0.73.40}/modal_proto/api_pb2.pyi +2 -7
  10. {modal-0.73.38 → modal-0.73.40}/modal_version/_version_generated.py +1 -1
  11. {modal-0.73.38 → modal-0.73.40}/LICENSE +0 -0
  12. {modal-0.73.38 → modal-0.73.40}/README.md +0 -0
  13. {modal-0.73.38 → modal-0.73.40}/modal/__init__.py +0 -0
  14. {modal-0.73.38 → modal-0.73.40}/modal/__main__.py +0 -0
  15. {modal-0.73.38 → modal-0.73.40}/modal/_clustered_functions.py +0 -0
  16. {modal-0.73.38 → modal-0.73.40}/modal/_clustered_functions.pyi +0 -0
  17. {modal-0.73.38 → modal-0.73.40}/modal/_container_entrypoint.py +0 -0
  18. {modal-0.73.38 → modal-0.73.40}/modal/_ipython.py +0 -0
  19. {modal-0.73.38 → modal-0.73.40}/modal/_location.py +0 -0
  20. {modal-0.73.38 → modal-0.73.40}/modal/_object.py +0 -0
  21. {modal-0.73.38 → modal-0.73.40}/modal/_output.py +0 -0
  22. {modal-0.73.38 → modal-0.73.40}/modal/_partial_function.py +0 -0
  23. {modal-0.73.38 → modal-0.73.40}/modal/_proxy_tunnel.py +0 -0
  24. {modal-0.73.38 → modal-0.73.40}/modal/_pty.py +0 -0
  25. {modal-0.73.38 → modal-0.73.40}/modal/_resolver.py +0 -0
  26. {modal-0.73.38 → modal-0.73.40}/modal/_resources.py +0 -0
  27. {modal-0.73.38 → modal-0.73.40}/modal/_runtime/__init__.py +0 -0
  28. {modal-0.73.38 → modal-0.73.40}/modal/_runtime/asgi.py +0 -0
  29. {modal-0.73.38 → modal-0.73.40}/modal/_runtime/container_io_manager.py +0 -0
  30. {modal-0.73.38 → modal-0.73.40}/modal/_runtime/execution_context.py +0 -0
  31. {modal-0.73.38 → modal-0.73.40}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  32. {modal-0.73.38 → modal-0.73.40}/modal/_runtime/telemetry.py +0 -0
  33. {modal-0.73.38 → modal-0.73.40}/modal/_runtime/user_code_imports.py +0 -0
  34. {modal-0.73.38 → modal-0.73.40}/modal/_serialization.py +0 -0
  35. {modal-0.73.38 → modal-0.73.40}/modal/_traceback.py +0 -0
  36. {modal-0.73.38 → modal-0.73.40}/modal/_tunnel.py +0 -0
  37. {modal-0.73.38 → modal-0.73.40}/modal/_tunnel.pyi +0 -0
  38. {modal-0.73.38 → modal-0.73.40}/modal/_utils/__init__.py +0 -0
  39. {modal-0.73.38 → modal-0.73.40}/modal/_utils/app_utils.py +0 -0
  40. {modal-0.73.38 → modal-0.73.40}/modal/_utils/async_utils.py +0 -0
  41. {modal-0.73.38 → modal-0.73.40}/modal/_utils/blob_utils.py +0 -0
  42. {modal-0.73.38 → modal-0.73.40}/modal/_utils/bytes_io_segment_payload.py +0 -0
  43. {modal-0.73.38 → modal-0.73.40}/modal/_utils/deprecation.py +0 -0
  44. {modal-0.73.38 → modal-0.73.40}/modal/_utils/docker_utils.py +0 -0
  45. {modal-0.73.38 → modal-0.73.40}/modal/_utils/function_utils.py +0 -0
  46. {modal-0.73.38 → modal-0.73.40}/modal/_utils/grpc_testing.py +0 -0
  47. {modal-0.73.38 → modal-0.73.40}/modal/_utils/grpc_utils.py +0 -0
  48. {modal-0.73.38 → modal-0.73.40}/modal/_utils/hash_utils.py +0 -0
  49. {modal-0.73.38 → modal-0.73.40}/modal/_utils/http_utils.py +0 -0
  50. {modal-0.73.38 → modal-0.73.40}/modal/_utils/logger.py +0 -0
  51. {modal-0.73.38 → modal-0.73.40}/modal/_utils/mount_utils.py +0 -0
  52. {modal-0.73.38 → modal-0.73.40}/modal/_utils/name_utils.py +0 -0
  53. {modal-0.73.38 → modal-0.73.40}/modal/_utils/package_utils.py +0 -0
  54. {modal-0.73.38 → modal-0.73.40}/modal/_utils/pattern_utils.py +0 -0
  55. {modal-0.73.38 → modal-0.73.40}/modal/_utils/rand_pb_testing.py +0 -0
  56. {modal-0.73.38 → modal-0.73.40}/modal/_utils/shell_utils.py +0 -0
  57. {modal-0.73.38 → modal-0.73.40}/modal/_vendor/__init__.py +0 -0
  58. {modal-0.73.38 → modal-0.73.40}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  59. {modal-0.73.38 → modal-0.73.40}/modal/_vendor/cloudpickle.py +0 -0
  60. {modal-0.73.38 → modal-0.73.40}/modal/_vendor/tblib.py +0 -0
  61. {modal-0.73.38 → modal-0.73.40}/modal/_watcher.py +0 -0
  62. {modal-0.73.38 → modal-0.73.40}/modal/app.py +0 -0
  63. {modal-0.73.38 → modal-0.73.40}/modal/app.pyi +0 -0
  64. {modal-0.73.38 → modal-0.73.40}/modal/call_graph.py +0 -0
  65. {modal-0.73.38 → modal-0.73.40}/modal/cli/__init__.py +0 -0
  66. {modal-0.73.38 → modal-0.73.40}/modal/cli/_download.py +0 -0
  67. {modal-0.73.38 → modal-0.73.40}/modal/cli/_traceback.py +0 -0
  68. {modal-0.73.38 → modal-0.73.40}/modal/cli/app.py +0 -0
  69. {modal-0.73.38 → modal-0.73.40}/modal/cli/config.py +0 -0
  70. {modal-0.73.38 → modal-0.73.40}/modal/cli/container.py +0 -0
  71. {modal-0.73.38 → modal-0.73.40}/modal/cli/dict.py +0 -0
  72. {modal-0.73.38 → modal-0.73.40}/modal/cli/entry_point.py +0 -0
  73. {modal-0.73.38 → modal-0.73.40}/modal/cli/environment.py +0 -0
  74. {modal-0.73.38 → modal-0.73.40}/modal/cli/import_refs.py +0 -0
  75. {modal-0.73.38 → modal-0.73.40}/modal/cli/launch.py +0 -0
  76. {modal-0.73.38 → modal-0.73.40}/modal/cli/network_file_system.py +0 -0
  77. {modal-0.73.38 → modal-0.73.40}/modal/cli/profile.py +0 -0
  78. {modal-0.73.38 → modal-0.73.40}/modal/cli/programs/__init__.py +0 -0
  79. {modal-0.73.38 → modal-0.73.40}/modal/cli/programs/run_jupyter.py +0 -0
  80. {modal-0.73.38 → modal-0.73.40}/modal/cli/programs/vscode.py +0 -0
  81. {modal-0.73.38 → modal-0.73.40}/modal/cli/queues.py +0 -0
  82. {modal-0.73.38 → modal-0.73.40}/modal/cli/run.py +0 -0
  83. {modal-0.73.38 → modal-0.73.40}/modal/cli/secret.py +0 -0
  84. {modal-0.73.38 → modal-0.73.40}/modal/cli/token.py +0 -0
  85. {modal-0.73.38 → modal-0.73.40}/modal/cli/utils.py +0 -0
  86. {modal-0.73.38 → modal-0.73.40}/modal/cli/volume.py +0 -0
  87. {modal-0.73.38 → modal-0.73.40}/modal/client.py +0 -0
  88. {modal-0.73.38 → modal-0.73.40}/modal/cloud_bucket_mount.py +0 -0
  89. {modal-0.73.38 → modal-0.73.40}/modal/cloud_bucket_mount.pyi +0 -0
  90. {modal-0.73.38 → modal-0.73.40}/modal/cls.py +0 -0
  91. {modal-0.73.38 → modal-0.73.40}/modal/cls.pyi +0 -0
  92. {modal-0.73.38 → modal-0.73.40}/modal/config.py +0 -0
  93. {modal-0.73.38 → modal-0.73.40}/modal/container_process.py +0 -0
  94. {modal-0.73.38 → modal-0.73.40}/modal/container_process.pyi +0 -0
  95. {modal-0.73.38 → modal-0.73.40}/modal/dict.py +0 -0
  96. {modal-0.73.38 → modal-0.73.40}/modal/dict.pyi +0 -0
  97. {modal-0.73.38 → modal-0.73.40}/modal/environments.py +0 -0
  98. {modal-0.73.38 → modal-0.73.40}/modal/environments.pyi +0 -0
  99. {modal-0.73.38 → modal-0.73.40}/modal/exception.py +0 -0
  100. {modal-0.73.38 → modal-0.73.40}/modal/experimental.py +0 -0
  101. {modal-0.73.38 → modal-0.73.40}/modal/experimental.pyi +0 -0
  102. {modal-0.73.38 → modal-0.73.40}/modal/extensions/__init__.py +0 -0
  103. {modal-0.73.38 → modal-0.73.40}/modal/extensions/ipython.py +0 -0
  104. {modal-0.73.38 → modal-0.73.40}/modal/file_io.py +0 -0
  105. {modal-0.73.38 → modal-0.73.40}/modal/file_io.pyi +0 -0
  106. {modal-0.73.38 → modal-0.73.40}/modal/file_pattern_matcher.py +0 -0
  107. {modal-0.73.38 → modal-0.73.40}/modal/functions.py +0 -0
  108. {modal-0.73.38 → modal-0.73.40}/modal/gpu.py +0 -0
  109. {modal-0.73.38 → modal-0.73.40}/modal/image.pyi +0 -0
  110. {modal-0.73.38 → modal-0.73.40}/modal/io_streams.py +0 -0
  111. {modal-0.73.38 → modal-0.73.40}/modal/io_streams.pyi +0 -0
  112. {modal-0.73.38 → modal-0.73.40}/modal/mount.py +0 -0
  113. {modal-0.73.38 → modal-0.73.40}/modal/mount.pyi +0 -0
  114. {modal-0.73.38 → modal-0.73.40}/modal/network_file_system.py +0 -0
  115. {modal-0.73.38 → modal-0.73.40}/modal/network_file_system.pyi +0 -0
  116. {modal-0.73.38 → modal-0.73.40}/modal/object.py +0 -0
  117. {modal-0.73.38 → modal-0.73.40}/modal/object.pyi +0 -0
  118. {modal-0.73.38 → modal-0.73.40}/modal/output.py +0 -0
  119. {modal-0.73.38 → modal-0.73.40}/modal/parallel_map.py +0 -0
  120. {modal-0.73.38 → modal-0.73.40}/modal/parallel_map.pyi +0 -0
  121. {modal-0.73.38 → modal-0.73.40}/modal/partial_function.py +0 -0
  122. {modal-0.73.38 → modal-0.73.40}/modal/partial_function.pyi +0 -0
  123. {modal-0.73.38 → modal-0.73.40}/modal/proxy.py +0 -0
  124. {modal-0.73.38 → modal-0.73.40}/modal/proxy.pyi +0 -0
  125. {modal-0.73.38 → modal-0.73.40}/modal/py.typed +0 -0
  126. {modal-0.73.38 → modal-0.73.40}/modal/queue.py +0 -0
  127. {modal-0.73.38 → modal-0.73.40}/modal/queue.pyi +0 -0
  128. {modal-0.73.38 → modal-0.73.40}/modal/requirements/2023.12.312.txt +0 -0
  129. {modal-0.73.38 → modal-0.73.40}/modal/requirements/2023.12.txt +0 -0
  130. {modal-0.73.38 → modal-0.73.40}/modal/requirements/2024.04.txt +0 -0
  131. {modal-0.73.38 → modal-0.73.40}/modal/requirements/2024.10.txt +0 -0
  132. {modal-0.73.38 → modal-0.73.40}/modal/requirements/README.md +0 -0
  133. {modal-0.73.38 → modal-0.73.40}/modal/requirements/base-images.json +0 -0
  134. {modal-0.73.38 → modal-0.73.40}/modal/retries.py +0 -0
  135. {modal-0.73.38 → modal-0.73.40}/modal/runner.py +0 -0
  136. {modal-0.73.38 → modal-0.73.40}/modal/runner.pyi +0 -0
  137. {modal-0.73.38 → modal-0.73.40}/modal/running_app.py +0 -0
  138. {modal-0.73.38 → modal-0.73.40}/modal/sandbox.py +0 -0
  139. {modal-0.73.38 → modal-0.73.40}/modal/sandbox.pyi +0 -0
  140. {modal-0.73.38 → modal-0.73.40}/modal/schedule.py +0 -0
  141. {modal-0.73.38 → modal-0.73.40}/modal/scheduler_placement.py +0 -0
  142. {modal-0.73.38 → modal-0.73.40}/modal/secret.py +0 -0
  143. {modal-0.73.38 → modal-0.73.40}/modal/secret.pyi +0 -0
  144. {modal-0.73.38 → modal-0.73.40}/modal/serving.py +0 -0
  145. {modal-0.73.38 → modal-0.73.40}/modal/serving.pyi +0 -0
  146. {modal-0.73.38 → modal-0.73.40}/modal/snapshot.py +0 -0
  147. {modal-0.73.38 → modal-0.73.40}/modal/snapshot.pyi +0 -0
  148. {modal-0.73.38 → modal-0.73.40}/modal/stream_type.py +0 -0
  149. {modal-0.73.38 → modal-0.73.40}/modal/token_flow.py +0 -0
  150. {modal-0.73.38 → modal-0.73.40}/modal/token_flow.pyi +0 -0
  151. {modal-0.73.38 → modal-0.73.40}/modal/volume.py +0 -0
  152. {modal-0.73.38 → modal-0.73.40}/modal/volume.pyi +0 -0
  153. {modal-0.73.38 → modal-0.73.40}/modal.egg-info/SOURCES.txt +0 -0
  154. {modal-0.73.38 → modal-0.73.40}/modal.egg-info/dependency_links.txt +0 -0
  155. {modal-0.73.38 → modal-0.73.40}/modal.egg-info/entry_points.txt +0 -0
  156. {modal-0.73.38 → modal-0.73.40}/modal.egg-info/requires.txt +0 -0
  157. {modal-0.73.38 → modal-0.73.40}/modal.egg-info/top_level.txt +0 -0
  158. {modal-0.73.38 → modal-0.73.40}/modal_docs/__init__.py +0 -0
  159. {modal-0.73.38 → modal-0.73.40}/modal_docs/gen_cli_docs.py +0 -0
  160. {modal-0.73.38 → modal-0.73.40}/modal_docs/gen_reference_docs.py +0 -0
  161. {modal-0.73.38 → modal-0.73.40}/modal_docs/mdmd/__init__.py +0 -0
  162. {modal-0.73.38 → modal-0.73.40}/modal_docs/mdmd/mdmd.py +0 -0
  163. {modal-0.73.38 → modal-0.73.40}/modal_docs/mdmd/signatures.py +0 -0
  164. {modal-0.73.38 → modal-0.73.40}/modal_global_objects/__init__.py +0 -0
  165. {modal-0.73.38 → modal-0.73.40}/modal_global_objects/images/__init__.py +0 -0
  166. {modal-0.73.38 → modal-0.73.40}/modal_global_objects/images/base_images.py +0 -0
  167. {modal-0.73.38 → modal-0.73.40}/modal_global_objects/mounts/__init__.py +0 -0
  168. {modal-0.73.38 → modal-0.73.40}/modal_global_objects/mounts/modal_client_package.py +0 -0
  169. {modal-0.73.38 → modal-0.73.40}/modal_global_objects/mounts/python_standalone.py +0 -0
  170. {modal-0.73.38 → modal-0.73.40}/modal_proto/__init__.py +0 -0
  171. {modal-0.73.38 → modal-0.73.40}/modal_proto/api_grpc.py +0 -0
  172. {modal-0.73.38 → modal-0.73.40}/modal_proto/api_pb2_grpc.py +0 -0
  173. {modal-0.73.38 → modal-0.73.40}/modal_proto/api_pb2_grpc.pyi +0 -0
  174. {modal-0.73.38 → modal-0.73.40}/modal_proto/modal_api_grpc.py +0 -0
  175. {modal-0.73.38 → modal-0.73.40}/modal_proto/modal_options_grpc.py +0 -0
  176. {modal-0.73.38 → modal-0.73.40}/modal_proto/options.proto +0 -0
  177. {modal-0.73.38 → modal-0.73.40}/modal_proto/options_grpc.py +0 -0
  178. {modal-0.73.38 → modal-0.73.40}/modal_proto/options_pb2.py +0 -0
  179. {modal-0.73.38 → modal-0.73.40}/modal_proto/options_pb2.pyi +0 -0
  180. {modal-0.73.38 → modal-0.73.40}/modal_proto/options_pb2_grpc.py +0 -0
  181. {modal-0.73.38 → modal-0.73.40}/modal_proto/options_pb2_grpc.pyi +0 -0
  182. {modal-0.73.38 → modal-0.73.40}/modal_proto/py.typed +0 -0
  183. {modal-0.73.38 → modal-0.73.40}/modal_version/__init__.py +0 -0
  184. {modal-0.73.38 → modal-0.73.40}/modal_version/__main__.py +0 -0
  185. {modal-0.73.38 → modal-0.73.40}/pyproject.toml +0 -0
  186. {modal-0.73.38 → modal-0.73.40}/setup.cfg +0 -0
  187. {modal-0.73.38 → modal-0.73.40}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: modal
3
- Version: 0.73.38
3
+ Version: 0.73.40
4
4
  Summary: Python client library for Modal
5
5
  Author: Modal Labs
6
6
  Author-email: support@modal.com
@@ -1258,13 +1258,10 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
1258
1258
  # TODO (live_method on properties is not great, since it could be blocking the event loop from async contexts)
1259
1259
  @property
1260
1260
  @live_method
1261
- async def web_url(self) -> str:
1261
+ async def web_url(self) -> Optional[str]:
1262
1262
  """URL of a Function running as a web endpoint."""
1263
- if not self._web_url:
1264
- raise ValueError(
1265
- f"No web_url can be found for function {self._function_name}. web_url "
1266
- "can only be referenced from a running app context"
1267
- )
1263
+ # TODO If we remove the @live_method above, we may want to provide better feedback when the underlying
1264
+ # attribute is None because the object is not hydrated, rather than because it's not a web endpoint.
1268
1265
  return self._web_url
1269
1266
 
1270
1267
  @property
@@ -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.38"
30
+ self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.40"
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.38"
88
+ self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.40"
89
89
  ): ...
90
90
  def is_closed(self) -> bool: ...
91
91
  @property
@@ -160,7 +160,7 @@ class Function(
160
160
  def _get_metadata(self): ...
161
161
  def _check_no_web_url(self, fn_name: str): ...
162
162
  @property
163
- def web_url(self) -> str: ...
163
+ def web_url(self) -> typing.Optional[str]: ...
164
164
  @property
165
165
  def is_generator(self) -> bool: ...
166
166
  @property
@@ -601,9 +601,8 @@ class _Image(_Object, type_prefix="im"):
601
601
  dockerfile_commands=dockerfile.commands,
602
602
  context_files=context_file_pb2s,
603
603
  secret_ids=[secret.object_id for secret in secrets],
604
- gpu=gpu_config.count > 0, # Note: as of 2023-01-27, server still uses this
605
604
  context_mount_id=(context_mount.object_id if context_mount else ""),
606
- gpu_config=gpu_config, # Note: as of 2023-01-27, server ignores this
605
+ gpu_config=gpu_config,
607
606
  image_registry_config=image_registry_config.get_proto(),
608
607
  runtime=config.get("function_runtime"),
609
608
  runtime_debug=config.get("function_runtime_debug"),
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: modal
3
- Version: 0.73.38
3
+ Version: 0.73.40
4
4
  Summary: Python client library for Modal
5
5
  Author: Modal Labs
6
6
  Author-email: support@modal.com
@@ -1748,9 +1748,6 @@ message Image {
1748
1748
  repeated string secret_ids = 12;
1749
1749
  // Part of Image definition, because presence of GPU drivers
1750
1750
  // affects the image that's built.
1751
- // Note: field 13 is getting replaced field 16. The client now sends both fields,
1752
- // but the server still only reads field 13.
1753
- bool gpu = 13;
1754
1751
  string context_mount_id = 15;
1755
1752
  GPUConfig gpu_config = 16;
1756
1753
  ImageRegistryConfig image_registry_config = 17;