modAL 1.6.1.dev0__py3-none-any.whl → 1.6.1.dev1__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.
@@ -307,20 +307,19 @@ def create_channel_config(*, sustained_keepalive: bool = False) -> grpclib.confi
307
307
  HTTP/2 keepalive probes keep idle transports warm through stateful
308
308
  middleboxes and surface dead connections before retries reuse them.
309
309
 
310
- `sustained_keepalive` clears the two grpclib defaults such that a probe
311
- actually goes out every `_keepalive_time`, for as long as the connection is
312
- open.
310
+ A probe goes out every `_keepalive_time` while the connection keeps sending
311
+ requests. `sustained_keepalive` also keeps probing a connection that only
312
+ awaits responses, for as long as it is open.
313
313
  """
314
- ping_throttle_overrides: dict[str, Any] = {}
314
+ ping_throttle_overrides: dict[str, Any] = {
315
+ # Default 300s floor between probes, applied regardless of data
316
+ # despite the name, so it has to stay under `_keepalive_time`.
317
+ "_http2_min_sent_ping_interval_without_data": GRPC_KEEPALIVE_TIME_SECS / 2,
318
+ }
315
319
  if sustained_keepalive:
316
- ping_throttle_overrides = {
317
- # Default 2: probing stops after two probes with no request sent in
318
- # between. Requests reset the count, acks don't. 0 = no cap.
319
- "_http2_max_pings_without_data": 0,
320
- # Default 300s floor between probes, applied regardless of data
321
- # despite the name, so it has to stay under `_keepalive_time`.
322
- "_http2_min_sent_ping_interval_without_data": GRPC_KEEPALIVE_TIME_SECS / 2,
323
- }
320
+ # Default 2: probing stops after two probes with no request sent in
321
+ # between. Requests reset the count, acks don't. 0 = no cap.
322
+ ping_throttle_overrides["_http2_max_pings_without_data"] = 0
324
323
 
325
324
  return grpclib.config.Configuration(
326
325
  _keepalive_time=GRPC_KEEPALIVE_TIME_SECS,
modal/client.pyi CHANGED
@@ -80,7 +80,7 @@ class _Client:
80
80
  server_url: str,
81
81
  client_type: int,
82
82
  credentials: typing.Optional[tuple[str, str]],
83
- version: str = "1.6.1.dev0",
83
+ version: str = "1.6.1.dev1",
84
84
  *,
85
85
  oauth_credentials: typing.Optional[_OAuthCredentials] = None,
86
86
  ):
@@ -290,7 +290,7 @@ class Client:
290
290
  server_url: str,
291
291
  client_type: int,
292
292
  credentials: typing.Optional[tuple[str, str]],
293
- version: str = "1.6.1.dev0",
293
+ version: str = "1.6.1.dev1",
294
294
  *,
295
295
  oauth_credentials: typing.Optional[_OAuthCredentials] = None,
296
296
  ):
modal/config.py CHANGED
@@ -422,6 +422,9 @@ class Config:
422
422
 
423
423
  Returns:
424
424
  The transformed configuration value (type depends on the setting).
425
+
426
+ Raises:
427
+ KeyError: If ``key`` is not the name of a setting.
425
428
  """
426
429
  if profile is None:
427
430
  profile = _profile
@@ -472,6 +475,7 @@ class Config:
472
475
  return repr(self.to_dict())
473
476
 
474
477
  def to_dict(self, *, include_internal: bool = False):
478
+ """Return every public setting along with its current value."""
475
479
  return {
476
480
  key: self.get(key) for key, setting in sorted(_SETTINGS.items()) if include_internal or not setting.internal
477
481
  }
@@ -479,6 +483,16 @@ class Config:
479
483
 
480
484
  config = Config()
481
485
 
486
+ __doc__config = """The process-wide `Config` instance the Modal client reads its settings from.
487
+
488
+ ```python
489
+ from modal.config import config
490
+
491
+ log_level = config.get("loglevel")
492
+ ```
493
+
494
+ """
495
+
482
496
  # Logging
483
497
 
484
498
  logger = logging.getLogger("modal-client")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.6.1.dev0
3
+ Version: 1.6.1.dev1
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License-Expression: Apache-2.0
@@ -37,14 +37,14 @@ modal/billing.py,sha256=E1-P_P8bJFLp-bTaggYd4BaaViImPB5UdtXiY8VeAZQ,390
37
37
  modal/billing.pyi,sha256=4m7VLYNS8IiJ2I3CJx0awvrOM6BILWRVLfdeqtAYr8M,7189
38
38
  modal/call_graph.py,sha256=XGALIDn1bLchWo_goyX23bcPjzCZcfqKUo8INIfDapo,1775
39
39
  modal/client.py,sha256=cstrL0wpXCZmcvRs7Sy3QRw9Vz8zkZy8NNk0tPe38sk,22852
40
- modal/client.pyi,sha256=kCYgPsG3g9k4dfKNpiq8yk_RcwgOlpWYmH0dhg_raFQ,23488
40
+ modal/client.pyi,sha256=iMZtUyXHtAVK3vIjs4RJGU2HfcLRzPpAQh71EjXDWW8,23488
41
41
  modal/cloud_bucket_mount.py,sha256=ZOg69dhIFcJcwim4JP-6s1tqwOYAfgS9806jRpspifw,7511
42
42
  modal/cloud_bucket_mount.pyi,sha256=HoPe_NG5jYdVfmTNY-ZJ3-C8Eo_FzJovl9orJRjkGbE,10252
43
43
  modal/cls.py,sha256=sxKiVm8GQUuEnPx1KJfTHVdSqSmqnNj6U5CQbW37QsA,41771
44
44
  modal/cls.pyi,sha256=k1WybcP24RHBpnMuzSw4BTwiHxWw25cOTelomaBwW6c,30050
45
45
  modal/cluster.py,sha256=hx9Yztxlfpxl2Hu5BASU2kBfxzD42EWwZBtoiIPWeSg,212
46
46
  modal/cluster.pyi,sha256=-QPTxOJx7Isn_a7I07BoBqWxumJL_zqYt42J6FgZvWo,3906
47
- modal/config.py,sha256=EQ4VBrt7QsTTXb8f0_crfflJw1n1qrLmHZF1mfnxvpQ,19549
47
+ modal/config.py,sha256=gJxqu-voLx9hogJnEqTfwMdn7ixWPH00ukfIHQIS85Q,19886
48
48
  modal/container_process.py,sha256=gy7Dwh4kYtKj-9J4RHMowDFf5Gd4bfK1PV8Y23lpBl8,8822
49
49
  modal/container_process.pyi,sha256=lzMigs10shDgQ3kt-1ajkMFk-JJMHiD7dBJ3Lec7yNw,5489
50
50
  modal/dict.py,sha256=D8n8W8cwauSCAnG3w0IbLpKOtdGv2_x6MbcXYo2qJxM,24095
@@ -132,7 +132,7 @@ modal/_utils/docker_utils.py,sha256=k8fkYT6G-X_B3iamjxiSpwSE-k58xGVHtsk2_gR7i2Q,
132
132
  modal/_utils/function_utils.py,sha256=dVCCnovfSlYssRuQh0Woq5oqX4Kj_tAK4vJ3USFNUFw,27537
133
133
  modal/_utils/git_utils.py,sha256=Lat_l4O4hwOYgylEtWup3hyqWT8D7JoCIjCflXcX8BE,3148
134
134
  modal/_utils/grpc_testing.py,sha256=udyK_wRXX_yc9eLt8mIZZqx12XlaiUqORxaGNvfI_MM,8697
135
- modal/_utils/grpc_utils.py,sha256=4-ZDTZcoPLOjPXiy72ogPS5EVJC4dyXDbDZrs5uMI90,29997
135
+ modal/_utils/grpc_utils.py,sha256=Gcl5EyEMEHMaMlGh90F63Oi1l9K6cnmeTCbGCouwJ-A,29998
136
136
  modal/_utils/hash_utils.py,sha256=WHuMRwmB4fnaM-qmyWXR87C2CinvLnmRoygSzsTEunA,3008
137
137
  modal/_utils/http_utils.py,sha256=TO9nnKR0Cc-iWCmkou56wJh9MHgNZwQMosK8WK-GD5Y,3133
138
138
  modal/_utils/idle_countdown.py,sha256=oh653Syrjvv--RzJCf4nPaS-U2FK0snmuG_lRJ5KB9A,2229
@@ -203,7 +203,7 @@ modal/experimental/flash_server.py,sha256=iqxVoQij6aM58_h0la6Y_Vy3CCQj8iYmjzt79r
203
203
  modal/experimental/flash_server.pyi,sha256=LuIBqeOJ1NAapKWnJMRzzrwIHlIK2GcOLOI2r-z_QN0,1025
204
204
  modal/experimental/ipython.py,sha256=kJ6o9wkAY_MiSb7paewI7f1MJAeqdi8TX5pBdhr_mUI,2925
205
205
  modal/skills/modal/SKILL.md,sha256=ERhA-zss3OoPXU_d3Qo8-PNrK2QI_ctyhGavou3egd0,5276
206
- modal-1.6.1.dev0.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
206
+ modal-1.6.1.dev1.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
207
207
  modal_docs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
208
208
  modal_docs/gen_cli_docs.py,sha256=9-b8vl2EsLWD9zJqpCK8IUi5h44Bjn3i3rSdedZV4bA,6415
209
209
  modal_docs/gen_cli_docs_main.py,sha256=UPGr7O1DYTIRLwfINe2rbdh89J3cPVTU1OWL-SjxnOQ,198
@@ -227,10 +227,10 @@ modal_proto/task_command_router_pb2.py,sha256=8oitx2CgBejhVsuQFfOgpuiFL2Mv7PZxmW
227
227
  modal_proto/task_command_router_pb2.pyi,sha256=O0acwTxAC9u6afCt2pts9xyL6CwCu1UhGEySFkBAlMc,49620
228
228
  modal_proto/task_command_router_pb2_grpc.py,sha256=XvHEJvi-Dd6gco-Wo8UtP1SiEEF8wOHvsWgZQ4VyXFc,44447
229
229
  modal_proto/task_command_router_pb2_grpc.pyi,sha256=3sNk2lY6EMk_GaYds-RwZ_tY6KbMCP-yimKAm2qDKVc,14837
230
- modal_version/__init__.py,sha256=0tbLPt3Z4nrzEW_AXXS9fmigZYluUBcNJ-fnWa6xUMU,120
230
+ modal_version/__init__.py,sha256=vyRbuzGU7zHY_YHUlxGzfRgdNSnMhMd4y2FJQfb50qk,120
231
231
  modal_version/__main__.py,sha256=nLUbubxKx7GXNzJIkTB7M7_u8080LyLM0IS0rzFkC_c,119
232
- modal-1.6.1.dev0.dist-info/METADATA,sha256=-eGQ-3UwXHQpB67kd9HDr4mxwJesTa0DhW7cqtKRS94,2512
233
- modal-1.6.1.dev0.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
234
- modal-1.6.1.dev0.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
235
- modal-1.6.1.dev0.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
236
- modal-1.6.1.dev0.dist-info/RECORD,,
232
+ modal-1.6.1.dev1.dist-info/METADATA,sha256=dRrNJLZhDZ27-ACBZSKZ68wFjlKg_ss7c4nhXZB9THc,2512
233
+ modal-1.6.1.dev1.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
234
+ modal-1.6.1.dev1.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
235
+ modal-1.6.1.dev1.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
236
+ modal-1.6.1.dev1.dist-info/RECORD,,
modal_version/__init__.py CHANGED
@@ -1,4 +1,4 @@
1
1
  # Copyright Modal Labs 2026
2
2
  """Supplies the current version of the modal client library."""
3
3
 
4
- __version__ = "1.6.1.dev0"
4
+ __version__ = "1.6.1.dev1"