modal 1.1.5.dev23__py3-none-any.whl → 1.1.5.dev25__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.
Potentially problematic release.
This version of modal might be problematic. Click here for more details.
- modal/_container_entrypoint.py +1 -1
- modal/_runtime/user_code_imports.py +13 -53
- modal/client.pyi +2 -2
- modal/functions.pyi +6 -6
- {modal-1.1.5.dev23.dist-info → modal-1.1.5.dev25.dist-info}/METADATA +1 -1
- {modal-1.1.5.dev23.dist-info → modal-1.1.5.dev25.dist-info}/RECORD +14 -14
- modal_proto/api.proto +22 -1
- modal_proto/api_pb2.py +902 -869
- modal_proto/api_pb2.pyi +78 -1
- modal_version/__init__.py +1 -1
- {modal-1.1.5.dev23.dist-info → modal-1.1.5.dev25.dist-info}/WHEEL +0 -0
- {modal-1.1.5.dev23.dist-info → modal-1.1.5.dev25.dist-info}/entry_points.txt +0 -0
- {modal-1.1.5.dev23.dist-info → modal-1.1.5.dev25.dist-info}/licenses/LICENSE +0 -0
- {modal-1.1.5.dev23.dist-info → modal-1.1.5.dev25.dist-info}/top_level.txt +0 -0
modal/_container_entrypoint.py
CHANGED
|
@@ -93,9 +93,9 @@ def construct_webhook_callable(
|
|
|
93
93
|
|
|
94
94
|
@dataclass
|
|
95
95
|
class ImportedFunction(Service):
|
|
96
|
-
user_cls_instance: Any
|
|
97
96
|
app: modal.app._App
|
|
98
97
|
service_deps: Optional[Sequence["modal._object._Object"]]
|
|
98
|
+
user_cls_instance = None
|
|
99
99
|
|
|
100
100
|
_user_defined_callable: Callable[..., Any]
|
|
101
101
|
|
|
@@ -199,7 +199,6 @@ def get_user_class_instance(_cls: modal.cls._Cls, args: tuple[Any, ...], kwargs:
|
|
|
199
199
|
|
|
200
200
|
def import_single_function_service(
|
|
201
201
|
function_def: api_pb2.Function,
|
|
202
|
-
ser_cls: Optional[type], # used only for @build functions
|
|
203
202
|
ser_fun: Optional[Callable[..., Any]],
|
|
204
203
|
) -> Service:
|
|
205
204
|
"""Imports a function dynamically, and locates the app.
|
|
@@ -228,12 +227,9 @@ def import_single_function_service(
|
|
|
228
227
|
service_deps: Optional[Sequence["modal._object._Object"]] = None
|
|
229
228
|
active_app: modal.app._App
|
|
230
229
|
|
|
231
|
-
user_cls_or_cls: typing.Union[None, type, modal.cls.Cls]
|
|
232
|
-
user_cls_instance = None
|
|
233
|
-
|
|
234
230
|
if ser_fun is not None:
|
|
235
231
|
# This is a serialized function we already fetched from the server
|
|
236
|
-
|
|
232
|
+
user_defined_callable = ser_fun
|
|
237
233
|
active_app = get_active_app_fallback(function_def)
|
|
238
234
|
else:
|
|
239
235
|
# Load the module dynamically
|
|
@@ -244,58 +240,22 @@ def import_single_function_service(
|
|
|
244
240
|
raise LocalFunctionError("Attempted to load a function defined in a function scope")
|
|
245
241
|
|
|
246
242
|
parts = qual_name.split(".")
|
|
247
|
-
if len(parts)
|
|
248
|
-
# This is a function
|
|
249
|
-
user_cls_or_cls = None
|
|
250
|
-
f = getattr(module, qual_name)
|
|
251
|
-
if isinstance(f, Function):
|
|
252
|
-
_function: modal._functions._Function[Any, Any, Any] = synchronizer._translate_in(f) # type: ignore
|
|
253
|
-
service_deps = _function.deps(only_explicit_mounts=True)
|
|
254
|
-
user_defined_callable = _function.get_raw_f()
|
|
255
|
-
assert _function._app # app should always be set on a decorated function
|
|
256
|
-
active_app = _function._app
|
|
257
|
-
else:
|
|
258
|
-
user_defined_callable = f
|
|
259
|
-
active_app = get_active_app_fallback(function_def)
|
|
260
|
-
|
|
261
|
-
elif len(parts) == 2:
|
|
262
|
-
# This path should only be triggered by @build class builder methods and can be removed
|
|
263
|
-
# once @build is deprecated.
|
|
264
|
-
assert not function_def.use_method_name # new "placeholder methods" should not be invoked directly!
|
|
265
|
-
assert function_def.is_builder_function
|
|
266
|
-
cls_name, fun_name = parts
|
|
267
|
-
user_cls_or_cls = getattr(module, cls_name)
|
|
268
|
-
if isinstance(user_cls_or_cls, modal.cls.Cls):
|
|
269
|
-
# The cls decorator is in global scope
|
|
270
|
-
_cls = typing.cast(modal.cls._Cls, synchronizer._translate_in(user_cls_or_cls))
|
|
271
|
-
user_defined_callable = _cls._callables[fun_name]
|
|
272
|
-
# Intentionally not including these, since @build functions don't actually
|
|
273
|
-
# forward the information from their parent class.
|
|
274
|
-
# service_deps = _cls._get_class_service_function().deps(only_explicit_mounts=True)
|
|
275
|
-
assert _cls._app
|
|
276
|
-
active_app = _cls._app
|
|
277
|
-
else:
|
|
278
|
-
# This is non-decorated class
|
|
279
|
-
user_defined_callable = getattr(user_cls_or_cls, fun_name) # unbound method
|
|
280
|
-
active_app = get_active_app_fallback(function_def)
|
|
281
|
-
else:
|
|
243
|
+
if len(parts) != 1:
|
|
282
244
|
raise InvalidError(f"Invalid function qualname {qual_name}")
|
|
283
245
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
246
|
+
f = getattr(module, qual_name)
|
|
247
|
+
if isinstance(f, Function):
|
|
248
|
+
_function: modal._functions._Function[Any, Any, Any] = synchronizer._translate_in(f) # type: ignore
|
|
249
|
+
service_deps = _function.deps(only_explicit_mounts=True)
|
|
250
|
+
user_defined_callable = _function.get_raw_f()
|
|
251
|
+
assert _function._app # app should always be set on a decorated function
|
|
252
|
+
active_app = _function._app
|
|
291
253
|
else:
|
|
292
|
-
#
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
user_defined_callable = user_defined_callable.__get__(user_cls_instance)
|
|
254
|
+
# function isn't decorated in global scope
|
|
255
|
+
user_defined_callable = f
|
|
256
|
+
active_app = get_active_app_fallback(function_def)
|
|
296
257
|
|
|
297
258
|
return ImportedFunction(
|
|
298
|
-
user_cls_instance,
|
|
299
259
|
active_app,
|
|
300
260
|
service_deps,
|
|
301
261
|
user_defined_callable,
|
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.5.
|
|
36
|
+
version: str = "1.1.5.dev25",
|
|
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.5.
|
|
167
|
+
version: str = "1.1.5.dev25",
|
|
168
168
|
):
|
|
169
169
|
"""mdmd:hidden
|
|
170
170
|
The Modal client object is not intended to be instantiated directly by users.
|
modal/functions.pyi
CHANGED
|
@@ -449,7 +449,7 @@ class Function(
|
|
|
449
449
|
|
|
450
450
|
_call_generator: ___call_generator_spec[typing_extensions.Self]
|
|
451
451
|
|
|
452
|
-
class __remote_spec(typing_extensions.Protocol[
|
|
452
|
+
class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
|
|
453
453
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER:
|
|
454
454
|
"""Calls the function remotely, executing it with the given arguments and returning the execution's result."""
|
|
455
455
|
...
|
|
@@ -458,7 +458,7 @@ class Function(
|
|
|
458
458
|
"""Calls the function remotely, executing it with the given arguments and returning the execution's result."""
|
|
459
459
|
...
|
|
460
460
|
|
|
461
|
-
remote: __remote_spec[modal._functions.
|
|
461
|
+
remote: __remote_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
|
|
462
462
|
|
|
463
463
|
class __remote_gen_spec(typing_extensions.Protocol[SUPERSELF]):
|
|
464
464
|
def __call__(self, /, *args, **kwargs) -> typing.Generator[typing.Any, None, None]:
|
|
@@ -485,7 +485,7 @@ class Function(
|
|
|
485
485
|
"""
|
|
486
486
|
...
|
|
487
487
|
|
|
488
|
-
class ___experimental_spawn_spec(typing_extensions.Protocol[
|
|
488
|
+
class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
|
|
489
489
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
|
|
490
490
|
"""[Experimental] Calls the function with the given arguments, without waiting for the results.
|
|
491
491
|
|
|
@@ -509,7 +509,7 @@ class Function(
|
|
|
509
509
|
...
|
|
510
510
|
|
|
511
511
|
_experimental_spawn: ___experimental_spawn_spec[
|
|
512
|
-
modal._functions.
|
|
512
|
+
modal._functions.P, modal._functions.ReturnType, typing_extensions.Self
|
|
513
513
|
]
|
|
514
514
|
|
|
515
515
|
class ___spawn_map_inner_spec(typing_extensions.Protocol[P_INNER, SUPERSELF]):
|
|
@@ -518,7 +518,7 @@ class Function(
|
|
|
518
518
|
|
|
519
519
|
_spawn_map_inner: ___spawn_map_inner_spec[modal._functions.P, typing_extensions.Self]
|
|
520
520
|
|
|
521
|
-
class __spawn_spec(typing_extensions.Protocol[
|
|
521
|
+
class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
|
|
522
522
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
|
|
523
523
|
"""Calls the function with the given arguments, without waiting for the results.
|
|
524
524
|
|
|
@@ -539,7 +539,7 @@ class Function(
|
|
|
539
539
|
"""
|
|
540
540
|
...
|
|
541
541
|
|
|
542
|
-
spawn: __spawn_spec[modal._functions.
|
|
542
|
+
spawn: __spawn_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
|
|
543
543
|
|
|
544
544
|
def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]:
|
|
545
545
|
"""Return the inner Python object wrapped by this Modal Function."""
|
|
@@ -2,7 +2,7 @@ modal/__init__.py,sha256=WMaRW-2IJRGA9ioNAaBhJYuyLvu-GS01L8wQD90fKBs,2682
|
|
|
2
2
|
modal/__main__.py,sha256=45H-GtwzaDfN-1nP4_HYvzN3s7AG_HXR4-ynrsjO_OI,2803
|
|
3
3
|
modal/_clustered_functions.py,sha256=Sy4Sf_17EO8OL-FUe8LYcm4hrqLyQFCssNhr3p0SroU,3013
|
|
4
4
|
modal/_clustered_functions.pyi,sha256=JmYwAGOLEnD5AF-gYF9O5tu-SgGjeoJz-X1j48b1Ijg,1157
|
|
5
|
-
modal/_container_entrypoint.py,sha256=
|
|
5
|
+
modal/_container_entrypoint.py,sha256=fLluT_sU34vGPCTG1Q58VI1RvxF5n7vQzCVCsL-MMk8,29033
|
|
6
6
|
modal/_functions.py,sha256=1ZG8TvI3TTByfzArrjSww6pQB1iH4be0I3yQfkMfgAY,89780
|
|
7
7
|
modal/_ipython.py,sha256=TW1fkVOmZL3YYqdS2YlM1hqpf654Yf8ZyybHdBnlhSw,301
|
|
8
8
|
modal/_location.py,sha256=joiX-0ZeutEUDTrrqLF1GHXCdVLF-rHzstocbMcd_-k,366
|
|
@@ -22,7 +22,7 @@ modal/app.py,sha256=OBFaL-8KVMtBMEmspHA76LvblPdnSgdoGioLkQBjhdQ,48851
|
|
|
22
22
|
modal/app.pyi,sha256=Cqk3pOeEEroCLejj3yJ3XHDqt0rMzeSA295gMKEx6Ww,43955
|
|
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=
|
|
25
|
+
modal/client.pyi,sha256=vkefOASnpZRE8T-EGMSJhS5Ng2EQ1uldJE7P2DGYheI,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=qb9h_ZKiz2q7fwKQ-5bdkz1x3tdu6sIm-UI09aQjPPc,41101
|
|
@@ -39,7 +39,7 @@ modal/file_io.py,sha256=OSKr77TujcXGJW1iikzYiHckLSmv07QBgBHcxxYEkoI,21456
|
|
|
39
39
|
modal/file_io.pyi,sha256=xtO6Glf_BFwDE7QiQQo24QqcMf_Vv-iz7WojcGVlLBU,15932
|
|
40
40
|
modal/file_pattern_matcher.py,sha256=A_Kdkej6q7YQyhM_2-BvpFmPqJ0oHb54B6yf9VqvPVE,8116
|
|
41
41
|
modal/functions.py,sha256=kcNHvqeGBxPI7Cgd57NIBBghkfbeFJzXO44WW0jSmao,325
|
|
42
|
-
modal/functions.pyi,sha256=
|
|
42
|
+
modal/functions.pyi,sha256=_xKitEUTNQStdZVtYBgWidtyHHsnjXUYgbirM0eMDyM,39558
|
|
43
43
|
modal/gpu.py,sha256=Fe5ORvVPDIstSq1xjmM6OoNgLYFWvogP9r5BgmD3hYg,6769
|
|
44
44
|
modal/image.py,sha256=wlOJ4bQxFLx2PlIIAmqZnFxFeERbZJGLYYWO7wlIZso,105969
|
|
45
45
|
modal/image.pyi,sha256=iFC8W6bl3KH_w15pm7B_UqeeGJZ44X7v20Ue_FlxPxw,71695
|
|
@@ -88,7 +88,7 @@ modal/_runtime/execution_context.py,sha256=AYrNQRHHXEqX2MwMf8zxelKZnYf25RE_B-NRL
|
|
|
88
88
|
modal/_runtime/execution_context.pyi,sha256=FVzakehz72ndL-ufe8-EC7TM4IHO_MEBcAdgWuU4W9k,2426
|
|
89
89
|
modal/_runtime/gpu_memory_snapshot.py,sha256=BWIMKkH-UXTQOJJuXbM15UWCHHSYlJ0XxGlZunKb0Ug,11877
|
|
90
90
|
modal/_runtime/telemetry.py,sha256=T1RoAGyjBDr1swiM6pPsGRSITm7LI5FDK18oNXxY08U,5163
|
|
91
|
-
modal/_runtime/user_code_imports.py,sha256=
|
|
91
|
+
modal/_runtime/user_code_imports.py,sha256=SSkrluFuOtcM0NIOwqVlcFhAKhkAGjnPKjJj_Ht_nzk,15574
|
|
92
92
|
modal/_utils/__init__.py,sha256=waLjl5c6IPDhSsdWAm9Bji4e2PVxamYABKAze6CHVXY,28
|
|
93
93
|
modal/_utils/app_utils.py,sha256=88BT4TPLWfYAQwKTHcyzNQRHg8n9B-QE2UyJs96iV-0,108
|
|
94
94
|
modal/_utils/async_utils.py,sha256=7uA4KJV7XRgak5nXZSGRE-RN1h91UOyNwK6v_ilUQMQ,29737
|
|
@@ -153,7 +153,7 @@ modal/experimental/__init__.py,sha256=fCqzo_f3vcY750vHtd7CtLs5dvdM_C0ZLLGb3zXuK9
|
|
|
153
153
|
modal/experimental/flash.py,sha256=7qRAL2Nrwbb60YKobcnpM0zJ8vw4xGJqabLPFgEzMZE,28295
|
|
154
154
|
modal/experimental/flash.pyi,sha256=R9VV0UDotiY9BRUjacB-xI4qhR3yBymAvEZFRFHztLs,15143
|
|
155
155
|
modal/experimental/ipython.py,sha256=TrCfmol9LGsRZMeDoeMPx3Hv3BFqQhYnmD_iH0pqdhk,2904
|
|
156
|
-
modal-1.1.5.
|
|
156
|
+
modal-1.1.5.dev25.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=
|
|
164
|
+
modal_proto/api.proto,sha256=gHMg2m42_AWoz1cyLFtkIkuCZq1zZS1eD-G8-S7OtjM,107273
|
|
165
165
|
modal_proto/api_grpc.py,sha256=aGfpsti-PnCuhHhvm-c8fSJyOkU4TWc8x8ydNkBrlec,130453
|
|
166
|
-
modal_proto/api_pb2.py,sha256=
|
|
167
|
-
modal_proto/api_pb2.pyi,sha256=
|
|
166
|
+
modal_proto/api_pb2.py,sha256=toZb4hKO6C-20AiXATPULVd2C5FjPWN3YB4-p_0fCWQ,374934
|
|
167
|
+
modal_proto/api_pb2.pyi,sha256=OshgJzsbZZ6SaxFv7AbTxYDr9PS14rzRbiSs3S7ucHA,516654
|
|
168
168
|
modal_proto/api_pb2_grpc.py,sha256=6QxudogSTZsePhr-pgXB8gIQdr4mkQ9yDKAhBH0G8lQ,281250
|
|
169
169
|
modal_proto/api_pb2_grpc.pyi,sha256=_jvw6GQVcGKDdxH0pLBDkIX3cQp9xaNYPSRoAq4McSg,65882
|
|
170
170
|
modal_proto/modal_api_grpc.py,sha256=A2Lpntle2d4zsBSpCQ-oR839lUppW0npyGlxEoGYCuM,19679
|
|
@@ -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=
|
|
179
|
+
modal_version/__init__.py,sha256=up2Yl70_orOAkIt8-seLx2WzJoh4xxep0MgfN7-nPvE,121
|
|
180
180
|
modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
|
|
181
|
-
modal-1.1.5.
|
|
182
|
-
modal-1.1.5.
|
|
183
|
-
modal-1.1.5.
|
|
184
|
-
modal-1.1.5.
|
|
185
|
-
modal-1.1.5.
|
|
181
|
+
modal-1.1.5.dev25.dist-info/METADATA,sha256=4uJTMD2003YFpKzq7tXZct5JXSBdq8-WgjUkVNxOekI,2460
|
|
182
|
+
modal-1.1.5.dev25.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
|
|
183
|
+
modal-1.1.5.dev25.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
|
|
184
|
+
modal-1.1.5.dev25.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
|
|
185
|
+
modal-1.1.5.dev25.dist-info/RECORD,,
|
modal_proto/api.proto
CHANGED
|
@@ -628,11 +628,26 @@ message AuthTokenGetResponse {
|
|
|
628
628
|
string token = 1;
|
|
629
629
|
}
|
|
630
630
|
|
|
631
|
+
// Message representing the current (coalesced) state of the autoscaler configuration
|
|
632
|
+
// As well as the different sources that were used to create it.
|
|
633
|
+
message AutoscalerConfiguration {
|
|
634
|
+
// The settings that are currently in effect.
|
|
635
|
+
AutoscalerSettings settings = 1;
|
|
636
|
+
// For tracking the source of the overridden value; keys correspond to fields in `settings`.
|
|
637
|
+
map<string, UserActionInfo> override_events = 2;
|
|
638
|
+
// The default settings that are used when no static settings are provided and no overrides are in effect.
|
|
639
|
+
AutoscalerSettings default_settings = 3;
|
|
640
|
+
// The static settings that were used to initialize the configuration.
|
|
641
|
+
AutoscalerSettings static_settings = 4;
|
|
642
|
+
// The merge of all overrides that were used to create the current configuration.
|
|
643
|
+
AutoscalerSettings override_settings = 5;
|
|
644
|
+
}
|
|
645
|
+
|
|
631
646
|
message AutoscalerSettings {
|
|
632
647
|
// A collection of user-configurable settings for Function autoscaling
|
|
633
648
|
// These are used for static configuration and for dynamic autoscaler updates
|
|
634
649
|
|
|
635
|
-
// Minimum containers when scale-to-zero is not
|
|
650
|
+
// Minimum containers when scale-to-zero is not desired; pka "keep_warm" or "warm_pool_size"
|
|
636
651
|
optional uint32 min_containers = 1;
|
|
637
652
|
// Limit on the number of containers that can be running for each Function; pka "concurrency_limit"
|
|
638
653
|
optional uint32 max_containers = 2;
|
|
@@ -3217,6 +3232,12 @@ message UploadUrlList {
|
|
|
3217
3232
|
repeated string items = 1;
|
|
3218
3233
|
}
|
|
3219
3234
|
|
|
3235
|
+
// Used for capturing context about an action performed by a user
|
|
3236
|
+
message UserActionInfo {
|
|
3237
|
+
string user_id = 1;
|
|
3238
|
+
double timestamp = 2;
|
|
3239
|
+
}
|
|
3240
|
+
|
|
3220
3241
|
message VolumeCommitRequest {
|
|
3221
3242
|
// NOTE(staffan): Mounting a volume in multiple locations is not supported, so volume_id alone uniquely identifies
|
|
3222
3243
|
// a volume mount.
|