modal 0.73.140__tar.gz → 0.73.142__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 (184) hide show
  1. {modal-0.73.140 → modal-0.73.142}/PKG-INFO +1 -1
  2. {modal-0.73.140 → modal-0.73.142}/modal/client.pyi +2 -2
  3. {modal-0.73.140 → modal-0.73.142}/modal/functions.pyi +6 -6
  4. {modal-0.73.140 → modal-0.73.142}/modal/image.py +2 -5
  5. {modal-0.73.140 → modal-0.73.142}/modal.egg-info/PKG-INFO +1 -1
  6. {modal-0.73.140 → modal-0.73.142}/modal_proto/api.proto +1 -0
  7. {modal-0.73.140 → modal-0.73.142}/modal_proto/api_pb2.py +466 -466
  8. {modal-0.73.140 → modal-0.73.142}/modal_proto/api_pb2.pyi +4 -1
  9. {modal-0.73.140 → modal-0.73.142}/modal_version/_version_generated.py +1 -1
  10. {modal-0.73.140 → modal-0.73.142}/LICENSE +0 -0
  11. {modal-0.73.140 → modal-0.73.142}/README.md +0 -0
  12. {modal-0.73.140 → modal-0.73.142}/modal/__init__.py +0 -0
  13. {modal-0.73.140 → modal-0.73.142}/modal/__main__.py +0 -0
  14. {modal-0.73.140 → modal-0.73.142}/modal/_clustered_functions.py +0 -0
  15. {modal-0.73.140 → modal-0.73.142}/modal/_clustered_functions.pyi +0 -0
  16. {modal-0.73.140 → modal-0.73.142}/modal/_container_entrypoint.py +0 -0
  17. {modal-0.73.140 → modal-0.73.142}/modal/_functions.py +0 -0
  18. {modal-0.73.140 → modal-0.73.142}/modal/_ipython.py +0 -0
  19. {modal-0.73.140 → modal-0.73.142}/modal/_location.py +0 -0
  20. {modal-0.73.140 → modal-0.73.142}/modal/_object.py +0 -0
  21. {modal-0.73.140 → modal-0.73.142}/modal/_output.py +0 -0
  22. {modal-0.73.140 → modal-0.73.142}/modal/_partial_function.py +0 -0
  23. {modal-0.73.140 → modal-0.73.142}/modal/_proxy_tunnel.py +0 -0
  24. {modal-0.73.140 → modal-0.73.142}/modal/_pty.py +0 -0
  25. {modal-0.73.140 → modal-0.73.142}/modal/_resolver.py +0 -0
  26. {modal-0.73.140 → modal-0.73.142}/modal/_resources.py +0 -0
  27. {modal-0.73.140 → modal-0.73.142}/modal/_runtime/__init__.py +0 -0
  28. {modal-0.73.140 → modal-0.73.142}/modal/_runtime/asgi.py +0 -0
  29. {modal-0.73.140 → modal-0.73.142}/modal/_runtime/container_io_manager.py +0 -0
  30. {modal-0.73.140 → modal-0.73.142}/modal/_runtime/container_io_manager.pyi +0 -0
  31. {modal-0.73.140 → modal-0.73.142}/modal/_runtime/execution_context.py +0 -0
  32. {modal-0.73.140 → modal-0.73.142}/modal/_runtime/execution_context.pyi +0 -0
  33. {modal-0.73.140 → modal-0.73.142}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  34. {modal-0.73.140 → modal-0.73.142}/modal/_runtime/telemetry.py +0 -0
  35. {modal-0.73.140 → modal-0.73.142}/modal/_runtime/user_code_imports.py +0 -0
  36. {modal-0.73.140 → modal-0.73.142}/modal/_serialization.py +0 -0
  37. {modal-0.73.140 → modal-0.73.142}/modal/_traceback.py +0 -0
  38. {modal-0.73.140 → modal-0.73.142}/modal/_tunnel.py +0 -0
  39. {modal-0.73.140 → modal-0.73.142}/modal/_tunnel.pyi +0 -0
  40. {modal-0.73.140 → modal-0.73.142}/modal/_type_manager.py +0 -0
  41. {modal-0.73.140 → modal-0.73.142}/modal/_utils/__init__.py +0 -0
  42. {modal-0.73.140 → modal-0.73.142}/modal/_utils/app_utils.py +0 -0
  43. {modal-0.73.140 → modal-0.73.142}/modal/_utils/async_utils.py +0 -0
  44. {modal-0.73.140 → modal-0.73.142}/modal/_utils/blob_utils.py +0 -0
  45. {modal-0.73.140 → modal-0.73.142}/modal/_utils/bytes_io_segment_payload.py +0 -0
  46. {modal-0.73.140 → modal-0.73.142}/modal/_utils/deprecation.py +0 -0
  47. {modal-0.73.140 → modal-0.73.142}/modal/_utils/docker_utils.py +0 -0
  48. {modal-0.73.140 → modal-0.73.142}/modal/_utils/function_utils.py +0 -0
  49. {modal-0.73.140 → modal-0.73.142}/modal/_utils/git_utils.py +0 -0
  50. {modal-0.73.140 → modal-0.73.142}/modal/_utils/grpc_testing.py +0 -0
  51. {modal-0.73.140 → modal-0.73.142}/modal/_utils/grpc_utils.py +0 -0
  52. {modal-0.73.140 → modal-0.73.142}/modal/_utils/hash_utils.py +0 -0
  53. {modal-0.73.140 → modal-0.73.142}/modal/_utils/http_utils.py +0 -0
  54. {modal-0.73.140 → modal-0.73.142}/modal/_utils/jwt_utils.py +0 -0
  55. {modal-0.73.140 → modal-0.73.142}/modal/_utils/logger.py +0 -0
  56. {modal-0.73.140 → modal-0.73.142}/modal/_utils/mount_utils.py +0 -0
  57. {modal-0.73.140 → modal-0.73.142}/modal/_utils/name_utils.py +0 -0
  58. {modal-0.73.140 → modal-0.73.142}/modal/_utils/package_utils.py +0 -0
  59. {modal-0.73.140 → modal-0.73.142}/modal/_utils/pattern_utils.py +0 -0
  60. {modal-0.73.140 → modal-0.73.142}/modal/_utils/rand_pb_testing.py +0 -0
  61. {modal-0.73.140 → modal-0.73.142}/modal/_utils/shell_utils.py +0 -0
  62. {modal-0.73.140 → modal-0.73.142}/modal/_vendor/__init__.py +0 -0
  63. {modal-0.73.140 → modal-0.73.142}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  64. {modal-0.73.140 → modal-0.73.142}/modal/_vendor/cloudpickle.py +0 -0
  65. {modal-0.73.140 → modal-0.73.142}/modal/_vendor/tblib.py +0 -0
  66. {modal-0.73.140 → modal-0.73.142}/modal/_watcher.py +0 -0
  67. {modal-0.73.140 → modal-0.73.142}/modal/app.py +0 -0
  68. {modal-0.73.140 → modal-0.73.142}/modal/app.pyi +0 -0
  69. {modal-0.73.140 → modal-0.73.142}/modal/call_graph.py +0 -0
  70. {modal-0.73.140 → modal-0.73.142}/modal/cli/__init__.py +0 -0
  71. {modal-0.73.140 → modal-0.73.142}/modal/cli/_download.py +0 -0
  72. {modal-0.73.140 → modal-0.73.142}/modal/cli/_traceback.py +0 -0
  73. {modal-0.73.140 → modal-0.73.142}/modal/cli/app.py +0 -0
  74. {modal-0.73.140 → modal-0.73.142}/modal/cli/config.py +0 -0
  75. {modal-0.73.140 → modal-0.73.142}/modal/cli/container.py +0 -0
  76. {modal-0.73.140 → modal-0.73.142}/modal/cli/dict.py +0 -0
  77. {modal-0.73.140 → modal-0.73.142}/modal/cli/entry_point.py +0 -0
  78. {modal-0.73.140 → modal-0.73.142}/modal/cli/environment.py +0 -0
  79. {modal-0.73.140 → modal-0.73.142}/modal/cli/import_refs.py +0 -0
  80. {modal-0.73.140 → modal-0.73.142}/modal/cli/launch.py +0 -0
  81. {modal-0.73.140 → modal-0.73.142}/modal/cli/network_file_system.py +0 -0
  82. {modal-0.73.140 → modal-0.73.142}/modal/cli/profile.py +0 -0
  83. {modal-0.73.140 → modal-0.73.142}/modal/cli/programs/__init__.py +0 -0
  84. {modal-0.73.140 → modal-0.73.142}/modal/cli/programs/run_jupyter.py +0 -0
  85. {modal-0.73.140 → modal-0.73.142}/modal/cli/programs/vscode.py +0 -0
  86. {modal-0.73.140 → modal-0.73.142}/modal/cli/queues.py +0 -0
  87. {modal-0.73.140 → modal-0.73.142}/modal/cli/run.py +0 -0
  88. {modal-0.73.140 → modal-0.73.142}/modal/cli/secret.py +0 -0
  89. {modal-0.73.140 → modal-0.73.142}/modal/cli/token.py +0 -0
  90. {modal-0.73.140 → modal-0.73.142}/modal/cli/utils.py +0 -0
  91. {modal-0.73.140 → modal-0.73.142}/modal/cli/volume.py +0 -0
  92. {modal-0.73.140 → modal-0.73.142}/modal/client.py +0 -0
  93. {modal-0.73.140 → modal-0.73.142}/modal/cloud_bucket_mount.py +0 -0
  94. {modal-0.73.140 → modal-0.73.142}/modal/cloud_bucket_mount.pyi +0 -0
  95. {modal-0.73.140 → modal-0.73.142}/modal/cls.py +0 -0
  96. {modal-0.73.140 → modal-0.73.142}/modal/cls.pyi +0 -0
  97. {modal-0.73.140 → modal-0.73.142}/modal/config.py +0 -0
  98. {modal-0.73.140 → modal-0.73.142}/modal/container_process.py +0 -0
  99. {modal-0.73.140 → modal-0.73.142}/modal/container_process.pyi +0 -0
  100. {modal-0.73.140 → modal-0.73.142}/modal/dict.py +0 -0
  101. {modal-0.73.140 → modal-0.73.142}/modal/dict.pyi +0 -0
  102. {modal-0.73.140 → modal-0.73.142}/modal/environments.py +0 -0
  103. {modal-0.73.140 → modal-0.73.142}/modal/environments.pyi +0 -0
  104. {modal-0.73.140 → modal-0.73.142}/modal/exception.py +0 -0
  105. {modal-0.73.140 → modal-0.73.142}/modal/experimental/__init__.py +0 -0
  106. {modal-0.73.140 → modal-0.73.142}/modal/experimental/ipython.py +0 -0
  107. {modal-0.73.140 → modal-0.73.142}/modal/file_io.py +0 -0
  108. {modal-0.73.140 → modal-0.73.142}/modal/file_io.pyi +0 -0
  109. {modal-0.73.140 → modal-0.73.142}/modal/file_pattern_matcher.py +0 -0
  110. {modal-0.73.140 → modal-0.73.142}/modal/functions.py +0 -0
  111. {modal-0.73.140 → modal-0.73.142}/modal/gpu.py +0 -0
  112. {modal-0.73.140 → modal-0.73.142}/modal/image.pyi +0 -0
  113. {modal-0.73.140 → modal-0.73.142}/modal/io_streams.py +0 -0
  114. {modal-0.73.140 → modal-0.73.142}/modal/io_streams.pyi +0 -0
  115. {modal-0.73.140 → modal-0.73.142}/modal/mount.py +0 -0
  116. {modal-0.73.140 → modal-0.73.142}/modal/mount.pyi +0 -0
  117. {modal-0.73.140 → modal-0.73.142}/modal/network_file_system.py +0 -0
  118. {modal-0.73.140 → modal-0.73.142}/modal/network_file_system.pyi +0 -0
  119. {modal-0.73.140 → modal-0.73.142}/modal/object.py +0 -0
  120. {modal-0.73.140 → modal-0.73.142}/modal/object.pyi +0 -0
  121. {modal-0.73.140 → modal-0.73.142}/modal/output.py +0 -0
  122. {modal-0.73.140 → modal-0.73.142}/modal/parallel_map.py +0 -0
  123. {modal-0.73.140 → modal-0.73.142}/modal/parallel_map.pyi +0 -0
  124. {modal-0.73.140 → modal-0.73.142}/modal/partial_function.py +0 -0
  125. {modal-0.73.140 → modal-0.73.142}/modal/partial_function.pyi +0 -0
  126. {modal-0.73.140 → modal-0.73.142}/modal/proxy.py +0 -0
  127. {modal-0.73.140 → modal-0.73.142}/modal/proxy.pyi +0 -0
  128. {modal-0.73.140 → modal-0.73.142}/modal/py.typed +0 -0
  129. {modal-0.73.140 → modal-0.73.142}/modal/queue.py +0 -0
  130. {modal-0.73.140 → modal-0.73.142}/modal/queue.pyi +0 -0
  131. {modal-0.73.140 → modal-0.73.142}/modal/requirements/2023.12.312.txt +0 -0
  132. {modal-0.73.140 → modal-0.73.142}/modal/requirements/2023.12.txt +0 -0
  133. {modal-0.73.140 → modal-0.73.142}/modal/requirements/2024.04.txt +0 -0
  134. {modal-0.73.140 → modal-0.73.142}/modal/requirements/2024.10.txt +0 -0
  135. {modal-0.73.140 → modal-0.73.142}/modal/requirements/PREVIEW.txt +0 -0
  136. {modal-0.73.140 → modal-0.73.142}/modal/requirements/README.md +0 -0
  137. {modal-0.73.140 → modal-0.73.142}/modal/requirements/base-images.json +0 -0
  138. {modal-0.73.140 → modal-0.73.142}/modal/retries.py +0 -0
  139. {modal-0.73.140 → modal-0.73.142}/modal/runner.py +0 -0
  140. {modal-0.73.140 → modal-0.73.142}/modal/runner.pyi +0 -0
  141. {modal-0.73.140 → modal-0.73.142}/modal/running_app.py +0 -0
  142. {modal-0.73.140 → modal-0.73.142}/modal/sandbox.py +0 -0
  143. {modal-0.73.140 → modal-0.73.142}/modal/sandbox.pyi +0 -0
  144. {modal-0.73.140 → modal-0.73.142}/modal/schedule.py +0 -0
  145. {modal-0.73.140 → modal-0.73.142}/modal/scheduler_placement.py +0 -0
  146. {modal-0.73.140 → modal-0.73.142}/modal/secret.py +0 -0
  147. {modal-0.73.140 → modal-0.73.142}/modal/secret.pyi +0 -0
  148. {modal-0.73.140 → modal-0.73.142}/modal/serving.py +0 -0
  149. {modal-0.73.140 → modal-0.73.142}/modal/serving.pyi +0 -0
  150. {modal-0.73.140 → modal-0.73.142}/modal/snapshot.py +0 -0
  151. {modal-0.73.140 → modal-0.73.142}/modal/snapshot.pyi +0 -0
  152. {modal-0.73.140 → modal-0.73.142}/modal/stream_type.py +0 -0
  153. {modal-0.73.140 → modal-0.73.142}/modal/token_flow.py +0 -0
  154. {modal-0.73.140 → modal-0.73.142}/modal/token_flow.pyi +0 -0
  155. {modal-0.73.140 → modal-0.73.142}/modal/volume.py +0 -0
  156. {modal-0.73.140 → modal-0.73.142}/modal/volume.pyi +0 -0
  157. {modal-0.73.140 → modal-0.73.142}/modal.egg-info/SOURCES.txt +0 -0
  158. {modal-0.73.140 → modal-0.73.142}/modal.egg-info/dependency_links.txt +0 -0
  159. {modal-0.73.140 → modal-0.73.142}/modal.egg-info/entry_points.txt +0 -0
  160. {modal-0.73.140 → modal-0.73.142}/modal.egg-info/requires.txt +0 -0
  161. {modal-0.73.140 → modal-0.73.142}/modal.egg-info/top_level.txt +0 -0
  162. {modal-0.73.140 → modal-0.73.142}/modal_docs/__init__.py +0 -0
  163. {modal-0.73.140 → modal-0.73.142}/modal_docs/gen_cli_docs.py +0 -0
  164. {modal-0.73.140 → modal-0.73.142}/modal_docs/gen_reference_docs.py +0 -0
  165. {modal-0.73.140 → modal-0.73.142}/modal_docs/mdmd/__init__.py +0 -0
  166. {modal-0.73.140 → modal-0.73.142}/modal_docs/mdmd/mdmd.py +0 -0
  167. {modal-0.73.140 → modal-0.73.142}/modal_docs/mdmd/signatures.py +0 -0
  168. {modal-0.73.140 → modal-0.73.142}/modal_proto/__init__.py +0 -0
  169. {modal-0.73.140 → modal-0.73.142}/modal_proto/api_grpc.py +0 -0
  170. {modal-0.73.140 → modal-0.73.142}/modal_proto/api_pb2_grpc.py +0 -0
  171. {modal-0.73.140 → modal-0.73.142}/modal_proto/api_pb2_grpc.pyi +0 -0
  172. {modal-0.73.140 → modal-0.73.142}/modal_proto/modal_api_grpc.py +0 -0
  173. {modal-0.73.140 → modal-0.73.142}/modal_proto/modal_options_grpc.py +0 -0
  174. {modal-0.73.140 → modal-0.73.142}/modal_proto/options.proto +0 -0
  175. {modal-0.73.140 → modal-0.73.142}/modal_proto/options_grpc.py +0 -0
  176. {modal-0.73.140 → modal-0.73.142}/modal_proto/options_pb2.py +0 -0
  177. {modal-0.73.140 → modal-0.73.142}/modal_proto/options_pb2.pyi +0 -0
  178. {modal-0.73.140 → modal-0.73.142}/modal_proto/options_pb2_grpc.py +0 -0
  179. {modal-0.73.140 → modal-0.73.142}/modal_proto/options_pb2_grpc.pyi +0 -0
  180. {modal-0.73.140 → modal-0.73.142}/modal_proto/py.typed +0 -0
  181. {modal-0.73.140 → modal-0.73.142}/modal_version/__init__.py +0 -0
  182. {modal-0.73.140 → modal-0.73.142}/modal_version/__main__.py +0 -0
  183. {modal-0.73.140 → modal-0.73.142}/pyproject.toml +0 -0
  184. {modal-0.73.140 → modal-0.73.142}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: modal
3
- Version: 0.73.140
3
+ Version: 0.73.142
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -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 = "0.73.140",
34
+ version: str = "0.73.142",
35
35
  ): ...
36
36
  def is_closed(self) -> bool: ...
37
37
  @property
@@ -93,7 +93,7 @@ class Client:
93
93
  server_url: str,
94
94
  client_type: int,
95
95
  credentials: typing.Optional[tuple[str, str]],
96
- version: str = "0.73.140",
96
+ version: str = "0.73.142",
97
97
  ): ...
98
98
  def is_closed(self) -> bool: ...
99
99
  @property
@@ -199,11 +199,11 @@ class Function(
199
199
 
200
200
  _call_generator_nowait: ___call_generator_nowait_spec[typing_extensions.Self]
201
201
 
202
- class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
202
+ class __remote_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
203
203
  def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
204
204
  async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
205
205
 
206
- remote: __remote_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
206
+ remote: __remote_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
207
207
 
208
208
  class __remote_gen_spec(typing_extensions.Protocol[SUPERSELF]):
209
209
  def __call__(self, *args, **kwargs) -> typing.Generator[typing.Any, None, None]: ...
@@ -218,19 +218,19 @@ class Function(
218
218
  self, *args: modal._functions.P.args, **kwargs: modal._functions.P.kwargs
219
219
  ) -> modal._functions.OriginalReturnType: ...
220
220
 
221
- class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
221
+ class ___experimental_spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
222
222
  def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
223
223
  async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
224
224
 
225
225
  _experimental_spawn: ___experimental_spawn_spec[
226
- modal._functions.P, modal._functions.ReturnType, typing_extensions.Self
226
+ modal._functions.ReturnType, modal._functions.P, typing_extensions.Self
227
227
  ]
228
228
 
229
- class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
229
+ class __spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
230
230
  def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
231
231
  async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
232
232
 
233
- spawn: __spawn_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
233
+ spawn: __spawn_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
234
234
 
235
235
  def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]: ...
236
236
 
@@ -1309,8 +1309,7 @@ class _Image(_Object, type_prefix="im"):
1309
1309
  context_files: dict[str, str] = {},
1310
1310
  secrets: Sequence[_Secret] = [],
1311
1311
  gpu: GPU_T = None,
1312
- # modal.Mount with local files to supply as build context for COPY commands
1313
- context_mount: Optional[_Mount] = None,
1312
+ context_mount: Optional[_Mount] = None, # Deprecated: the context is now inferred
1314
1313
  force_build: bool = False, # Ignore cached builds, similar to 'docker build --no-cache'
1315
1314
  ignore: Union[Sequence[str], Callable[[Path], bool]] = AUTO_DOCKERIGNORE,
1316
1315
  ) -> "_Image":
@@ -1706,9 +1705,7 @@ class _Image(_Object, type_prefix="im"):
1706
1705
  def from_dockerfile(
1707
1706
  # Filepath to Dockerfile.
1708
1707
  path: Union[str, Path],
1709
- # modal.Mount with local files to supply as build context for COPY commands.
1710
- # NOTE: The remote_path of the Mount should match the Dockerfile's WORKDIR.
1711
- context_mount: Optional[_Mount] = None,
1708
+ context_mount: Optional[_Mount] = None, # Deprecated: the context is now inferred
1712
1709
  # Ignore cached builds, similar to 'docker build --no-cache'
1713
1710
  force_build: bool = False,
1714
1711
  *,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: modal
3
- Version: 0.73.140
3
+ Version: 0.73.142
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -1619,6 +1619,7 @@ message FunctionMapResponse {
1619
1619
  FunctionRetryPolicy retry_policy = 3;
1620
1620
  string function_call_jwt = 4;
1621
1621
  bool sync_client_retries_enabled = 5;
1622
+ uint32 max_inputs_outstanding = 6;
1622
1623
  }
1623
1624
 
1624
1625
  message FunctionOptions {