modal 1.0.0.dev10__tar.gz → 1.0.0.dev12__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 (183) hide show
  1. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/PKG-INFO +1 -1
  2. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_functions.py +9 -11
  3. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_partial_function.py +1 -1
  4. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/app.py +0 -8
  5. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/app.pyi +0 -6
  6. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/cli/app.py +0 -19
  7. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/client.pyi +2 -2
  8. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/cls.py +8 -11
  9. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/cls.pyi +2 -17
  10. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/config.py +5 -11
  11. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/dict.py +2 -1
  12. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/functions.pyi +6 -6
  13. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/image.py +4 -15
  14. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/image.pyi +0 -1
  15. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/network_file_system.py +2 -1
  16. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/queue.py +2 -1
  17. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/sandbox.py +5 -8
  18. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/volume.py +2 -1
  19. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal.egg-info/PKG-INFO +1 -1
  20. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal_proto/api.proto +9 -1
  21. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal_proto/api_pb2.py +756 -756
  22. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal_proto/api_pb2.pyi +22 -8
  23. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal_version/__init__.py +1 -1
  24. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/LICENSE +0 -0
  25. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/README.md +0 -0
  26. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/__init__.py +0 -0
  27. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/__main__.py +0 -0
  28. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_clustered_functions.py +0 -0
  29. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_clustered_functions.pyi +0 -0
  30. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_container_entrypoint.py +0 -0
  31. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_ipython.py +0 -0
  32. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_location.py +0 -0
  33. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_object.py +0 -0
  34. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_output.py +0 -0
  35. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_pty.py +0 -0
  36. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_resolver.py +0 -0
  37. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_resources.py +0 -0
  38. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_runtime/__init__.py +0 -0
  39. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_runtime/asgi.py +0 -0
  40. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_runtime/container_io_manager.py +0 -0
  41. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_runtime/container_io_manager.pyi +0 -0
  42. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_runtime/execution_context.py +0 -0
  43. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_runtime/execution_context.pyi +0 -0
  44. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  45. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_runtime/telemetry.py +0 -0
  46. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_runtime/user_code_imports.py +0 -0
  47. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_serialization.py +0 -0
  48. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_traceback.py +0 -0
  49. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_tunnel.py +0 -0
  50. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_tunnel.pyi +0 -0
  51. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_type_manager.py +0 -0
  52. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_utils/__init__.py +0 -0
  53. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_utils/app_utils.py +0 -0
  54. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_utils/async_utils.py +0 -0
  55. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_utils/blob_utils.py +0 -0
  56. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_utils/bytes_io_segment_payload.py +0 -0
  57. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_utils/deprecation.py +0 -0
  58. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_utils/docker_utils.py +0 -0
  59. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_utils/function_utils.py +0 -0
  60. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_utils/git_utils.py +0 -0
  61. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_utils/grpc_testing.py +0 -0
  62. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_utils/grpc_utils.py +0 -0
  63. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_utils/hash_utils.py +0 -0
  64. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_utils/http_utils.py +0 -0
  65. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_utils/jwt_utils.py +0 -0
  66. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_utils/logger.py +0 -0
  67. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_utils/mount_utils.py +0 -0
  68. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_utils/name_utils.py +0 -0
  69. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_utils/package_utils.py +0 -0
  70. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_utils/pattern_utils.py +0 -0
  71. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_utils/rand_pb_testing.py +0 -0
  72. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_utils/shell_utils.py +0 -0
  73. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_vendor/__init__.py +0 -0
  74. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  75. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_vendor/cloudpickle.py +0 -0
  76. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_vendor/tblib.py +0 -0
  77. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/_watcher.py +0 -0
  78. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/call_graph.py +0 -0
  79. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/cli/__init__.py +0 -0
  80. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/cli/_download.py +0 -0
  81. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/cli/_traceback.py +0 -0
  82. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/cli/cluster.py +0 -0
  83. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/cli/config.py +0 -0
  84. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/cli/container.py +0 -0
  85. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/cli/dict.py +0 -0
  86. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/cli/entry_point.py +0 -0
  87. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/cli/environment.py +0 -0
  88. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/cli/import_refs.py +0 -0
  89. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/cli/launch.py +0 -0
  90. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/cli/network_file_system.py +0 -0
  91. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/cli/profile.py +0 -0
  92. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/cli/programs/__init__.py +0 -0
  93. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/cli/programs/run_jupyter.py +0 -0
  94. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/cli/programs/vscode.py +0 -0
  95. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/cli/queues.py +0 -0
  96. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/cli/run.py +0 -0
  97. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/cli/secret.py +0 -0
  98. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/cli/token.py +0 -0
  99. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/cli/utils.py +0 -0
  100. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/cli/volume.py +0 -0
  101. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/client.py +0 -0
  102. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/cloud_bucket_mount.py +0 -0
  103. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/cloud_bucket_mount.pyi +0 -0
  104. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/container_process.py +0 -0
  105. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/container_process.pyi +0 -0
  106. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/dict.pyi +0 -0
  107. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/environments.py +0 -0
  108. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/environments.pyi +0 -0
  109. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/exception.py +0 -0
  110. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/experimental/__init__.py +0 -0
  111. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/experimental/ipython.py +0 -0
  112. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/file_io.py +0 -0
  113. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/file_io.pyi +0 -0
  114. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/file_pattern_matcher.py +0 -0
  115. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/functions.py +0 -0
  116. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/gpu.py +0 -0
  117. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/io_streams.py +0 -0
  118. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/io_streams.pyi +0 -0
  119. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/mount.py +0 -0
  120. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/mount.pyi +0 -0
  121. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/network_file_system.pyi +0 -0
  122. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/object.py +0 -0
  123. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/object.pyi +0 -0
  124. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/output.py +0 -0
  125. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/parallel_map.py +0 -0
  126. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/parallel_map.pyi +0 -0
  127. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/partial_function.py +0 -0
  128. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/partial_function.pyi +0 -0
  129. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/proxy.py +0 -0
  130. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/proxy.pyi +0 -0
  131. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/py.typed +0 -0
  132. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/queue.pyi +0 -0
  133. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/requirements/2023.12.312.txt +0 -0
  134. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/requirements/2023.12.txt +0 -0
  135. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/requirements/2024.04.txt +0 -0
  136. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/requirements/2024.10.txt +0 -0
  137. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/requirements/PREVIEW.txt +0 -0
  138. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/requirements/README.md +0 -0
  139. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/requirements/base-images.json +0 -0
  140. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/retries.py +0 -0
  141. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/runner.py +0 -0
  142. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/runner.pyi +0 -0
  143. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/running_app.py +0 -0
  144. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/sandbox.pyi +0 -0
  145. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/schedule.py +0 -0
  146. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/scheduler_placement.py +0 -0
  147. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/secret.py +0 -0
  148. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/secret.pyi +0 -0
  149. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/serving.py +0 -0
  150. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/serving.pyi +0 -0
  151. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/snapshot.py +0 -0
  152. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/snapshot.pyi +0 -0
  153. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/stream_type.py +0 -0
  154. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/token_flow.py +0 -0
  155. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/token_flow.pyi +0 -0
  156. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal/volume.pyi +0 -0
  157. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal.egg-info/SOURCES.txt +0 -0
  158. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal.egg-info/dependency_links.txt +0 -0
  159. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal.egg-info/entry_points.txt +0 -0
  160. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal.egg-info/requires.txt +0 -0
  161. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal.egg-info/top_level.txt +0 -0
  162. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal_docs/__init__.py +0 -0
  163. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal_docs/gen_cli_docs.py +0 -0
  164. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal_docs/gen_reference_docs.py +0 -0
  165. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal_docs/mdmd/__init__.py +0 -0
  166. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal_docs/mdmd/mdmd.py +0 -0
  167. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal_docs/mdmd/signatures.py +0 -0
  168. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal_proto/__init__.py +0 -0
  169. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal_proto/api_grpc.py +0 -0
  170. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal_proto/api_pb2_grpc.py +0 -0
  171. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal_proto/api_pb2_grpc.pyi +0 -0
  172. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal_proto/modal_api_grpc.py +0 -0
  173. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal_proto/modal_options_grpc.py +0 -0
  174. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal_proto/options.proto +0 -0
  175. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal_proto/options_grpc.py +0 -0
  176. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal_proto/options_pb2.py +0 -0
  177. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal_proto/options_pb2.pyi +0 -0
  178. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal_proto/options_pb2_grpc.py +0 -0
  179. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal_proto/options_pb2_grpc.pyi +0 -0
  180. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal_proto/py.typed +0 -0
  181. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/modal_version/__main__.py +0 -0
  182. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/pyproject.toml +0 -0
  183. {modal-1.0.0.dev10 → modal-1.0.0.dev12}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.0.0.dev10
3
+ Version: 1.0.0.dev12
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -41,7 +41,7 @@ from ._utils.async_utils import (
41
41
  synchronizer,
42
42
  warn_if_generator_is_not_consumed,
43
43
  )
44
- from ._utils.deprecation import deprecation_error, deprecation_warning
44
+ from ._utils.deprecation import deprecation_warning
45
45
  from ._utils.function_utils import (
46
46
  ATTEMPT_TIMEOUT_GRACE_PERIOD,
47
47
  OUTPUTS_TIMEOUT,
@@ -405,12 +405,6 @@ class FunctionStats:
405
405
  backlog: int
406
406
  num_total_runners: int
407
407
 
408
- def __getattr__(self, name):
409
- if name == "num_active_runners":
410
- msg = "'FunctionStats.num_active_runners' is no longer available."
411
- deprecation_error((2024, 6, 14), msg)
412
- raise AttributeError(f"'FunctionStats' object has no attribute '{name}'")
413
-
414
408
 
415
409
  def _parse_retries(
416
410
  retries: Optional[Union[int, Retries]],
@@ -1166,7 +1160,8 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
1166
1160
 
1167
1161
  @live_method
1168
1162
  async def keep_warm(self, warm_pool_size: int) -> None:
1169
- """Set the warm pool size for the Function.
1163
+ """mdmd:hidden
1164
+ Set the warm pool size for the Function.
1170
1165
 
1171
1166
  DEPRECATED: Please adapt your code to use the more general `update_autoscaler` method instead:
1172
1167
 
@@ -1270,7 +1265,8 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
1270
1265
  client: Optional[_Client] = None,
1271
1266
  environment_name: Optional[str] = None,
1272
1267
  ) -> "_Function":
1273
- """Lookup a Function from a deployed App by its name.
1268
+ """mdmd:hidden
1269
+ Lookup a Function from a deployed App by its name.
1274
1270
 
1275
1271
  DEPRECATED: This method is deprecated in favor of `modal.Function.from_name`.
1276
1272
 
@@ -1394,7 +1390,8 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
1394
1390
  @property
1395
1391
  @live_method
1396
1392
  async def web_url(self) -> Optional[str]:
1397
- """Deprecated. Use the `Function.get_web_url()` method instead.
1393
+ """mdmd:hidden
1394
+ Deprecated. Use the `Function.get_web_url()` method instead.
1398
1395
 
1399
1396
  URL of a Function running as a web endpoint.
1400
1397
  """
@@ -1837,7 +1834,8 @@ class _FunctionCall(typing.Generic[ReturnType], _Object, type_prefix="fc"):
1837
1834
 
1838
1835
 
1839
1836
  async def _gather(*function_calls: _FunctionCall[T]) -> typing.Sequence[T]:
1840
- """Deprecated: Please use `modal.FunctionCall.gather()` instead."""
1837
+ """mdmd:hidden
1838
+ Deprecated: Please use `modal.FunctionCall.gather()` instead."""
1841
1839
  deprecation_warning(
1842
1840
  (2025, 2, 24),
1843
1841
  "`modal.functions.gather()` is deprecated; please use `modal.FunctionCall.gather()` instead.",
@@ -649,7 +649,7 @@ def _web_server(
649
649
  def _build(
650
650
  _warn_parentheses_missing=None, *, force: bool = False, timeout: int = 86400
651
651
  ) -> Callable[[Union[_PartialFunction, NullaryMethod]], _PartialFunction]:
652
- """
652
+ """mdmd:hidden
653
653
  Decorator for methods that execute at _build time_ to create a new Image layer.
654
654
 
655
655
  **Deprecated**: This function is deprecated. We recommend using `modal.Volume`
@@ -534,14 +534,6 @@ class _App:
534
534
  """All local CLI entrypoints registered on the app."""
535
535
  return self._local_entrypoints
536
536
 
537
- @property
538
- def indexed_objects(self) -> dict[str, _Object]:
539
- deprecation_warning(
540
- (2024, 11, 25),
541
- "`app.indexed_objects` is deprecated! Use `app.registered_functions` or `app.registered_classes` instead.",
542
- )
543
- return dict(**self._functions, **self._classes)
544
-
545
537
  @property
546
538
  def registered_web_endpoints(self) -> list[str]:
547
539
  """Names of web endpoint (ie. webhook) functions registered on the app."""
@@ -1,6 +1,5 @@
1
1
  import collections.abc
2
2
  import modal._functions
3
- import modal._object
4
3
  import modal._partial_function
5
4
  import modal._utils.function_utils
6
5
  import modal.client
@@ -11,7 +10,6 @@ import modal.gpu
11
10
  import modal.image
12
11
  import modal.mount
13
12
  import modal.network_file_system
14
- import modal.object
15
13
  import modal.partial_function
16
14
  import modal.proxy
17
15
  import modal.retries
@@ -157,8 +155,6 @@ class _App:
157
155
  @property
158
156
  def registered_entrypoints(self) -> dict[str, _LocalEntrypoint]: ...
159
157
  @property
160
- def indexed_objects(self) -> dict[str, modal._object._Object]: ...
161
- @property
162
158
  def registered_web_endpoints(self) -> list[str]: ...
163
159
  def local_entrypoint(
164
160
  self, _warn_parentheses_missing: typing.Any = None, *, name: typing.Optional[str] = None
@@ -405,8 +401,6 @@ class App:
405
401
  @property
406
402
  def registered_entrypoints(self) -> dict[str, LocalEntrypoint]: ...
407
403
  @property
408
- def indexed_objects(self) -> dict[str, modal.object.Object]: ...
409
- @property
410
404
  def registered_web_endpoints(self) -> list[str]: ...
411
405
  def local_entrypoint(
412
406
  self, _warn_parentheses_missing: typing.Any = None, *, name: typing.Optional[str] = None
@@ -11,7 +11,6 @@ from typer import Argument
11
11
 
12
12
  from modal._object import _get_environment_name
13
13
  from modal._utils.async_utils import synchronizer
14
- from modal._utils.deprecation import deprecation_warning
15
14
  from modal.client import _Client
16
15
  from modal.environments import ensure_env
17
16
  from modal_proto import api_pb2
@@ -43,18 +42,6 @@ async def get_app_id(app_identifier: str, env: Optional[str], client: Optional[_
43
42
  return await get_app_id_from_name.aio(app_identifier, env, client)
44
43
 
45
44
 
46
- def warn_on_name_option(command: str, app_identifier: str, name: str) -> str:
47
- if name:
48
- message = (
49
- "Passing an App name using --name is deprecated;"
50
- " App names can now be passed directly as positional arguments:"
51
- f"\n\n modal app {command} {name} ..."
52
- )
53
- deprecation_warning((2024, 8, 15), message, show_source=False)
54
- return name
55
- return app_identifier
56
-
57
-
58
45
  @app_cli.command("list")
59
46
  @synchronizer.create_blocking
60
47
  async def list_(env: Optional[str] = ENV_OPTION, json: bool = False):
@@ -96,7 +83,6 @@ async def list_(env: Optional[str] = ENV_OPTION, json: bool = False):
96
83
  def logs(
97
84
  app_identifier: str = APP_IDENTIFIER,
98
85
  *,
99
- name: str = NAME_OPTION,
100
86
  env: Optional[str] = ENV_OPTION,
101
87
  ):
102
88
  """Show App logs, streaming while active.
@@ -116,7 +102,6 @@ def logs(
116
102
  ```
117
103
 
118
104
  """
119
- app_identifier = warn_on_name_option("logs", app_identifier, name)
120
105
  app_id = get_app_id(app_identifier, env)
121
106
  stream_app_logs(app_id)
122
107
 
@@ -176,11 +161,9 @@ async def rollback(
176
161
  async def stop(
177
162
  app_identifier: str = APP_IDENTIFIER,
178
163
  *,
179
- name: str = NAME_OPTION,
180
164
  env: Optional[str] = ENV_OPTION,
181
165
  ):
182
166
  """Stop an app."""
183
- app_identifier = warn_on_name_option("stop", app_identifier, name)
184
167
  client = await _Client.from_env()
185
168
  app_id = await get_app_id.aio(app_identifier, env)
186
169
  req = api_pb2.AppStopRequest(app_id=app_id, source=api_pb2.APP_STOP_SOURCE_CLI)
@@ -193,7 +176,6 @@ async def history(
193
176
  app_identifier: str = APP_IDENTIFIER,
194
177
  *,
195
178
  env: Optional[str] = ENV_OPTION,
196
- name: str = NAME_OPTION,
197
179
  json: bool = False,
198
180
  ):
199
181
  """Show App deployment history, for a currently deployed app
@@ -213,7 +195,6 @@ async def history(
213
195
  ```
214
196
 
215
197
  """
216
- app_identifier = warn_on_name_option("history", app_identifier, name)
217
198
  env = ensure_env(env)
218
199
  client = await _Client.from_env()
219
200
  app_id = await get_app_id.aio(app_identifier, env, client)
@@ -31,7 +31,7 @@ class _Client:
31
31
  server_url: str,
32
32
  client_type: int,
33
33
  credentials: typing.Optional[tuple[str, str]],
34
- version: str = "1.0.0.dev10",
34
+ version: str = "1.0.0.dev12",
35
35
  ): ...
36
36
  def is_closed(self) -> bool: ...
37
37
  @property
@@ -94,7 +94,7 @@ class Client:
94
94
  server_url: str,
95
95
  client_type: int,
96
96
  credentials: typing.Optional[tuple[str, str]],
97
- version: str = "1.0.0.dev10",
97
+ version: str = "1.0.0.dev12",
98
98
  ): ...
99
99
  def is_closed(self) -> bool: ...
100
100
  @property
@@ -276,7 +276,8 @@ class _Obj:
276
276
  )
277
277
 
278
278
  async def keep_warm(self, warm_pool_size: int) -> None:
279
- """Set the warm pool size for the class containers
279
+ """mdmd:hidden
280
+ Set the warm pool size for the class containers
280
281
 
281
282
  DEPRECATED: Please adapt your code to use the more general `update_autoscaler` method instead:
282
283
 
@@ -593,7 +594,6 @@ More information on class parameterization can be found here: https://modal.com/
593
594
  *,
594
595
  namespace=api_pb2.DEPLOYMENT_NAMESPACE_WORKSPACE,
595
596
  environment_name: Optional[str] = None,
596
- workspace: Optional[str] = None, # Deprecated and unused
597
597
  ) -> "_Cls":
598
598
  """Reference a Cls from a deployed App by its name.
599
599
 
@@ -607,18 +607,12 @@ More information on class parameterization can be found here: https://modal.com/
607
607
  """
608
608
  _environment_name = environment_name or config.get("environment")
609
609
 
610
- if workspace is not None:
611
- deprecation_warning(
612
- (2025, 1, 27), "The `workspace` argument is no longer used and will be removed in a future release."
613
- )
614
-
615
610
  async def _load_remote(self: _Cls, resolver: Resolver, existing_object_id: Optional[str]):
616
611
  request = api_pb2.ClassGetRequest(
617
612
  app_name=app_name,
618
613
  object_tag=name,
619
614
  namespace=namespace,
620
615
  environment_name=_environment_name,
621
- lookup_published=workspace is not None,
622
616
  only_class_function=True,
623
617
  )
624
618
  try:
@@ -791,9 +785,9 @@ More information on class parameterization can be found here: https://modal.com/
791
785
  namespace=api_pb2.DEPLOYMENT_NAMESPACE_WORKSPACE,
792
786
  client: Optional[_Client] = None,
793
787
  environment_name: Optional[str] = None,
794
- workspace: Optional[str] = None, # Deprecated and unused
795
788
  ) -> "_Cls":
796
- """Lookup a Cls from a deployed App by its name.
789
+ """mdmd:hidden
790
+ Lookup a Cls from a deployed App by its name.
797
791
 
798
792
  DEPRECATED: This method is deprecated in favor of `modal.Cls.from_name`.
799
793
 
@@ -813,7 +807,10 @@ More information on class parameterization can be found here: https://modal.com/
813
807
  "\n\nSee https://modal.com/docs/guide/modal-1-0-migration for more information.",
814
808
  )
815
809
  obj = _Cls.from_name(
816
- app_name, name, namespace=namespace, environment_name=environment_name, workspace=workspace
810
+ app_name,
811
+ name,
812
+ namespace=namespace,
813
+ environment_name=environment_name,
817
814
  )
818
815
  if client is None:
819
816
  client = await _Client.from_env()
@@ -172,13 +172,7 @@ class _Cls(modal._object._Object):
172
172
  def from_local(user_cls, app: modal.app._App, class_service_function: modal._functions._Function) -> _Cls: ...
173
173
  @classmethod
174
174
  def from_name(
175
- cls: type[_Cls],
176
- app_name: str,
177
- name: str,
178
- *,
179
- namespace=1,
180
- environment_name: typing.Optional[str] = None,
181
- workspace: typing.Optional[str] = None,
175
+ cls: type[_Cls], app_name: str, name: str, *, namespace=1, environment_name: typing.Optional[str] = None
182
176
  ) -> _Cls: ...
183
177
  def with_options(
184
178
  self: _Cls,
@@ -206,7 +200,6 @@ class _Cls(modal._object._Object):
206
200
  namespace=1,
207
201
  client: typing.Optional[modal.client._Client] = None,
208
202
  environment_name: typing.Optional[str] = None,
209
- workspace: typing.Optional[str] = None,
210
203
  ) -> _Cls: ...
211
204
  def __call__(self, *args, **kwargs) -> _Obj: ...
212
205
  def __getattr__(self, k): ...
@@ -238,13 +231,7 @@ class Cls(modal.object.Object):
238
231
  def from_local(user_cls, app: modal.app.App, class_service_function: modal.functions.Function) -> Cls: ...
239
232
  @classmethod
240
233
  def from_name(
241
- cls: type[Cls],
242
- app_name: str,
243
- name: str,
244
- *,
245
- namespace=1,
246
- environment_name: typing.Optional[str] = None,
247
- workspace: typing.Optional[str] = None,
234
+ cls: type[Cls], app_name: str, name: str, *, namespace=1, environment_name: typing.Optional[str] = None
248
235
  ) -> Cls: ...
249
236
  def with_options(
250
237
  self: Cls,
@@ -275,7 +262,6 @@ class Cls(modal.object.Object):
275
262
  namespace=1,
276
263
  client: typing.Optional[modal.client.Client] = None,
277
264
  environment_name: typing.Optional[str] = None,
278
- workspace: typing.Optional[str] = None,
279
265
  ) -> Cls: ...
280
266
  async def aio(
281
267
  self,
@@ -285,7 +271,6 @@ class Cls(modal.object.Object):
285
271
  namespace=1,
286
272
  client: typing.Optional[modal.client.Client] = None,
287
273
  environment_name: typing.Optional[str] = None,
288
- workspace: typing.Optional[str] = None,
289
274
  ) -> Cls: ...
290
275
 
291
276
  lookup: __lookup_spec
@@ -87,14 +87,12 @@ import logging
87
87
  import os
88
88
  import typing
89
89
  import warnings
90
- from textwrap import dedent
91
90
  from typing import Any, Callable, Optional
92
91
 
93
92
  from google.protobuf.empty_pb2 import Empty
94
93
 
95
94
  from modal_proto import api_pb2
96
95
 
97
- from ._utils.deprecation import deprecation_error
98
96
  from ._utils.logger import configure_logger
99
97
  from .exception import InvalidError
100
98
 
@@ -182,16 +180,12 @@ def _check_config() -> None:
182
180
  f"({user_config_path})."
183
181
  )
184
182
  elif num_profiles > 1 and num_active == 0 and _profile == "default":
185
- # Eventually we plan to have num_profiles > 1 with num_active = 0 be an error
186
- # But we want to give users time to activate one of their profiles without disruption
187
- message = dedent(
188
- """
189
- Support for using an implicit 'default' profile is deprecated.
190
- Please use `modal profile activate` to activate one of your profiles.
191
- (Use `modal profile list` to see the options.)
192
- """
183
+ # TODO: We should get rid of the `_profile = "default"` concept entirely now
184
+ raise InvalidError(
185
+ "No Modal profile is active.\n\n"
186
+ "Please fix by running `modal profile activate` or by editing your Modal config file "
187
+ f"({user_config_path})."
193
188
  )
194
- deprecation_error((2024, 2, 6), message)
195
189
 
196
190
 
197
191
  _profile = os.environ.get("MODAL_PROFILE") or _config_active_profile()
@@ -166,7 +166,8 @@ class _Dict(_Object, type_prefix="di"):
166
166
  environment_name: Optional[str] = None,
167
167
  create_if_missing: bool = False,
168
168
  ) -> "_Dict":
169
- """Lookup a named Dict.
169
+ """mdmd:hidden
170
+ Lookup a named Dict.
170
171
 
171
172
  DEPRECATED: This method is deprecated in favor of `modal.Dict.from_name`.
172
173
 
@@ -234,11 +234,11 @@ class Function(
234
234
 
235
235
  _call_generator_nowait: ___call_generator_nowait_spec[typing_extensions.Self]
236
236
 
237
- class __remote_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
237
+ class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
238
238
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
239
239
  async def aio(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
240
240
 
241
- remote: __remote_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
241
+ remote: __remote_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
242
242
 
243
243
  class __remote_gen_spec(typing_extensions.Protocol[SUPERSELF]):
244
244
  def __call__(self, /, *args, **kwargs) -> typing.Generator[typing.Any, None, None]: ...
@@ -253,12 +253,12 @@ class Function(
253
253
  self, *args: modal._functions.P.args, **kwargs: modal._functions.P.kwargs
254
254
  ) -> modal._functions.OriginalReturnType: ...
255
255
 
256
- class ___experimental_spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
256
+ class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
257
257
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
258
258
  async def aio(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
259
259
 
260
260
  _experimental_spawn: ___experimental_spawn_spec[
261
- modal._functions.ReturnType, modal._functions.P, typing_extensions.Self
261
+ modal._functions.P, modal._functions.ReturnType, typing_extensions.Self
262
262
  ]
263
263
 
264
264
  class ___spawn_map_inner_spec(typing_extensions.Protocol[P_INNER, SUPERSELF]):
@@ -267,11 +267,11 @@ class Function(
267
267
 
268
268
  _spawn_map_inner: ___spawn_map_inner_spec[modal._functions.P, typing_extensions.Self]
269
269
 
270
- class __spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
270
+ class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
271
271
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
272
272
  async def aio(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
273
273
 
274
- spawn: __spawn_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
274
+ spawn: __spawn_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
275
275
 
276
276
  def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]: ...
277
277
 
@@ -193,18 +193,6 @@ def _validate_packages(packages: list[str]) -> bool:
193
193
  return not any(pkg.startswith("-") for pkg in packages)
194
194
 
195
195
 
196
- def _warn_invalid_packages(old_command: str) -> None:
197
- deprecation_warning(
198
- (2024, 7, 3),
199
- "Passing flags to `pip` via the `packages` argument of `pip_install` is deprecated."
200
- " Please pass flags via the `extra_options` argument instead."
201
- "\nNote that this will cause a rebuild of this image layer."
202
- " To avoid rebuilding, you can pass the following to `run_commands` instead:"
203
- f'\n`image.run_commands("{old_command}")`',
204
- show_source=False,
205
- )
206
-
207
-
208
196
  def _make_pip_install_args(
209
197
  find_links: Optional[str] = None, # Passes -f (--find-links) pip install
210
198
  index_url: Optional[str] = None, # Passes -i (--index-url) to pip install
@@ -685,7 +673,7 @@ class _Image(_Object, type_prefix="im"):
685
673
  return obj
686
674
 
687
675
  def copy_mount(self, mount: _Mount, remote_path: Union[str, Path] = ".") -> "_Image":
688
- """
676
+ """mdmd:hidden
689
677
  **Deprecated**: Use image.add_local_dir(..., copy=True) or similar instead.
690
678
 
691
679
  Copy the entire contents of a `modal.Mount` into an image.
@@ -815,7 +803,8 @@ class _Image(_Object, type_prefix="im"):
815
803
  return self._add_mount_layer_or_copy(mount, copy=copy)
816
804
 
817
805
  def copy_local_file(self, local_path: Union[str, Path], remote_path: Union[str, Path] = "./") -> "_Image":
818
- """Copy a file into the image as a part of building it.
806
+ """mdmd:hidden
807
+ Copy a file into the image as a part of building it.
819
808
 
820
809
  This works in a similar way to [`COPY`](https://docs.docker.com/engine/reference/builder/#copy)
821
810
  works in a `Dockerfile`.
@@ -888,7 +877,7 @@ class _Image(_Object, type_prefix="im"):
888
877
  # Which follows dockerignore syntax.
889
878
  ignore: Union[Sequence[str], Callable[[Path], bool]] = [],
890
879
  ) -> "_Image":
891
- """
880
+ """mdmd:hidden
892
881
  **Deprecated**: Use image.add_local_dir instead
893
882
 
894
883
  Copy a directory into the image as a part of building the image.
@@ -45,7 +45,6 @@ def _flatten_str_args(
45
45
  function_name: str, arg_name: str, args: collections.abc.Sequence[typing.Union[str, list[str]]]
46
46
  ) -> list[str]: ...
47
47
  def _validate_packages(packages: list[str]) -> bool: ...
48
- def _warn_invalid_packages(old_command: str) -> None: ...
49
48
  def _make_pip_install_args(
50
49
  find_links: typing.Optional[str] = None,
51
50
  index_url: typing.Optional[str] = None,
@@ -172,7 +172,8 @@ class _NetworkFileSystem(_Object, type_prefix="sv"):
172
172
  environment_name: Optional[str] = None,
173
173
  create_if_missing: bool = False,
174
174
  ) -> "_NetworkFileSystem":
175
- """Lookup a named NetworkFileSystem.
175
+ """mdmd:hidden
176
+ Lookup a named NetworkFileSystem.
176
177
 
177
178
  DEPRECATED: This method is deprecated in favor of `modal.NetworkFileSystem.from_name`.
178
179
 
@@ -185,7 +185,8 @@ class _Queue(_Object, type_prefix="qu"):
185
185
  environment_name: Optional[str] = None,
186
186
  create_if_missing: bool = False,
187
187
  ) -> "_Queue":
188
- """Lookup a named Queue.
188
+ """mdmd:hidden
189
+ Lookup a named Queue.
189
190
 
190
191
  DEPRECATED: This method is deprecated in favor of `modal.Queue.from_name`.
191
192
 
@@ -19,7 +19,6 @@ from ._object import _get_environment_name, _Object
19
19
  from ._resolver import Resolver
20
20
  from ._resources import convert_fn_config_to_resources_config
21
21
  from ._utils.async_utils import TaskContext, synchronize_api
22
- from ._utils.deprecation import deprecation_error
23
22
  from ._utils.grpc_utils import retry_transient_errors
24
23
  from ._utils.mount_utils import validate_network_file_systems, validate_volumes
25
24
  from .client import _Client
@@ -315,14 +314,12 @@ class _Sandbox(_Object, type_prefix="sb"):
315
314
  app_id = container_app.app_id
316
315
  app_client = container_app._client
317
316
  else:
318
- arglist = ", ".join(repr(s) for s in entrypoint_args)
319
- deprecation_error(
320
- (2024, 9, 14),
321
- "Creating a `Sandbox` without an `App` is deprecated.\n\n"
322
- "You may pass in an `App` object, or reference one by name with `App.lookup`:\n\n"
317
+ raise InvalidError(
318
+ "Sandboxes require an App when created outside of a Modal container.\n\n"
319
+ "Run an ephemeral App (`with app.run(): ...`), or reference a deployed App using `App.lookup`:\n\n"
323
320
  "```\n"
324
- "app = modal.App.lookup('sandbox-app', create_if_missing=True)\n"
325
- f"sb = modal.Sandbox.create({arglist}, app=app)\n"
321
+ 'app = modal.App.lookup("sandbox-app", create_if_missing=True)\n'
322
+ "sb = modal.Sandbox.create(..., app=app)\n"
326
323
  "```",
327
324
  )
328
325
 
@@ -251,7 +251,8 @@ class _Volume(_Object, type_prefix="vo"):
251
251
  create_if_missing: bool = False,
252
252
  version: "typing.Optional[modal_proto.api_pb2.VolumeFsVersion.ValueType]" = None,
253
253
  ) -> "_Volume":
254
- """Lookup a named Volume.
254
+ """mdmd:hidden
255
+ Lookup a named Volume.
255
256
 
256
257
  DEPRECATED: This method is deprecated in favor of `modal.Volume.from_name`.
257
258
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.0.0.dev10
3
+ Version: 1.0.0.dev12
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -694,7 +694,7 @@ message ClassGetRequest {
694
694
  DeploymentNamespace namespace = 3;
695
695
  string environment_name = 4;
696
696
 
697
- bool lookup_published = 8; // Lookup class on app published by another workspace
697
+ reserved 8; // lookup_published
698
698
  reserved 9; // workspace_name
699
699
  bool only_class_function = 10; // True starting with 0.67.x clients, which don't create method placeholder functions
700
700
  }
@@ -1380,6 +1380,10 @@ message Function {
1380
1380
  // Note the value type as string. Internally we'll coerce all values to string with str().
1381
1381
  // On the server, it's necessary to convert back to the most natural type (e.g. int) when relevant.
1382
1382
  map<string, string> experimental_options = 81;
1383
+
1384
+ // If set, client deps will be mounted into the container, and are
1385
+ // no longer expected to exist in the image itself.
1386
+ bool mount_client_dependencies = 82;
1383
1387
  }
1384
1388
 
1385
1389
  message FunctionAsyncInvokeRequest {
@@ -1946,6 +1950,10 @@ message ImageMetadata {
1946
1950
  map<string, string> python_packages = 2;
1947
1951
  // The work directory of the image, defaulting to "/". Not set if missing
1948
1952
  optional string workdir = 3;
1953
+ // The image's libc version
1954
+ optional string libc_version_info = 4;
1955
+ // The builder version for/with which the image was created.
1956
+ optional string image_builder_version = 5;
1949
1957
  }
1950
1958
 
1951
1959