modal 1.1.1.dev41__py3-none-any.whl → 1.1.2__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.

Files changed (68) hide show
  1. modal/__main__.py +1 -2
  2. modal/_container_entrypoint.py +18 -7
  3. modal/_functions.py +135 -13
  4. modal/_object.py +13 -2
  5. modal/_partial_function.py +8 -8
  6. modal/_runtime/asgi.py +3 -2
  7. modal/_runtime/container_io_manager.py +20 -14
  8. modal/_runtime/container_io_manager.pyi +38 -13
  9. modal/_runtime/execution_context.py +18 -2
  10. modal/_runtime/execution_context.pyi +4 -1
  11. modal/_runtime/gpu_memory_snapshot.py +158 -54
  12. modal/_utils/blob_utils.py +83 -24
  13. modal/_utils/function_utils.py +4 -3
  14. modal/_utils/time_utils.py +28 -4
  15. modal/app.py +8 -4
  16. modal/app.pyi +8 -8
  17. modal/cli/dict.py +14 -11
  18. modal/cli/entry_point.py +9 -3
  19. modal/cli/launch.py +102 -4
  20. modal/cli/profile.py +1 -0
  21. modal/cli/programs/launch_instance_ssh.py +94 -0
  22. modal/cli/programs/run_marimo.py +95 -0
  23. modal/cli/queues.py +49 -19
  24. modal/cli/secret.py +45 -18
  25. modal/cli/volume.py +14 -16
  26. modal/client.pyi +2 -10
  27. modal/cls.py +12 -2
  28. modal/cls.pyi +9 -1
  29. modal/config.py +7 -7
  30. modal/dict.py +206 -12
  31. modal/dict.pyi +358 -4
  32. modal/experimental/__init__.py +130 -0
  33. modal/file_io.py +1 -1
  34. modal/file_io.pyi +2 -2
  35. modal/file_pattern_matcher.py +25 -16
  36. modal/functions.pyi +111 -11
  37. modal/image.py +9 -3
  38. modal/image.pyi +7 -7
  39. modal/mount.py +20 -13
  40. modal/mount.pyi +16 -3
  41. modal/network_file_system.py +8 -2
  42. modal/object.pyi +3 -0
  43. modal/parallel_map.py +346 -101
  44. modal/parallel_map.pyi +108 -0
  45. modal/proxy.py +2 -1
  46. modal/queue.py +199 -9
  47. modal/queue.pyi +357 -3
  48. modal/sandbox.py +6 -5
  49. modal/sandbox.pyi +17 -14
  50. modal/secret.py +196 -3
  51. modal/secret.pyi +372 -0
  52. modal/volume.py +239 -23
  53. modal/volume.pyi +405 -10
  54. {modal-1.1.1.dev41.dist-info → modal-1.1.2.dist-info}/METADATA +2 -2
  55. {modal-1.1.1.dev41.dist-info → modal-1.1.2.dist-info}/RECORD +68 -66
  56. modal_docs/mdmd/mdmd.py +11 -1
  57. modal_proto/api.proto +37 -10
  58. modal_proto/api_grpc.py +32 -0
  59. modal_proto/api_pb2.py +627 -597
  60. modal_proto/api_pb2.pyi +107 -19
  61. modal_proto/api_pb2_grpc.py +67 -2
  62. modal_proto/api_pb2_grpc.pyi +24 -8
  63. modal_proto/modal_api_grpc.py +2 -0
  64. modal_version/__init__.py +1 -1
  65. {modal-1.1.1.dev41.dist-info → modal-1.1.2.dist-info}/WHEEL +0 -0
  66. {modal-1.1.1.dev41.dist-info → modal-1.1.2.dist-info}/entry_points.txt +0 -0
  67. {modal-1.1.1.dev41.dist-info → modal-1.1.2.dist-info}/licenses/LICENSE +0 -0
  68. {modal-1.1.1.dev41.dist-info → modal-1.1.2.dist-info}/top_level.txt +0 -0
@@ -1,14 +1,14 @@
1
1
  modal/__init__.py,sha256=WMaRW-2IJRGA9ioNAaBhJYuyLvu-GS01L8wQD90fKBs,2682
2
- modal/__main__.py,sha256=uBjSb_5cdlxmr9AwLkznYsW2tGEJRBjEcCGILvgR_1s,2844
2
+ modal/__main__.py,sha256=45H-GtwzaDfN-1nP4_HYvzN3s7AG_HXR4-ynrsjO_OI,2803
3
3
  modal/_clustered_functions.py,sha256=zmrKbptRbqp4euS3LWncKaLXb8Kjj4YreusOzpEpRMk,2856
4
4
  modal/_clustered_functions.pyi,sha256=_wtFjWocGf1WgI-qYBpbJPArNkg2H9JV7BVaGgMesEQ,1103
5
- modal/_container_entrypoint.py,sha256=1qBMNY_E9ICC_sRCtillMxmKPsmxJl1J0_qOAG8rH-0,28288
6
- modal/_functions.py,sha256=n4Tjvf2Gw4DMYw5-O4OUeTUt2GucbuK3RA1orseQJEc,82727
5
+ modal/_container_entrypoint.py,sha256=a1HAQYh1gGpqHuhSw6AW7XDYHztbeYr5a8iNnfCnoks,29023
6
+ modal/_functions.py,sha256=lPDk_KBKTS_FhOuLu15EXkvQndmoiNOnEe5A7BBd0ek,88003
7
7
  modal/_ipython.py,sha256=TW1fkVOmZL3YYqdS2YlM1hqpf654Yf8ZyybHdBnlhSw,301
8
8
  modal/_location.py,sha256=joiX-0ZeutEUDTrrqLF1GHXCdVLF-rHzstocbMcd_-k,366
9
- modal/_object.py,sha256=nCkQeLibSuvVAEIheGaLnUfN5PIh1CGpJCnzPIXymGY,11563
9
+ modal/_object.py,sha256=gwsLdXb-Ecd8nH8LVCo8oVZPzzdyo9BrN1DjgQmsSuM,11967
10
10
  modal/_output.py,sha256=G9CeSQEBzjhveWWEzWmYa5Uwbu4lZf8N8IFH1UM4fU0,25803
11
- modal/_partial_function.py,sha256=B1J4S9W-La0NHaVmY1aCuH0E3QxJHIX6ZWY5eNTQ7io,37142
11
+ modal/_partial_function.py,sha256=Yqk97hLS6vi8nWWVpzS5TSWbndWMdCtkhccdnyDJgBk,37302
12
12
  modal/_pty.py,sha256=JZfPDDpzqICZqtyPI_oMJf_9w-p_lLNuzHhwhodUXio,1329
13
13
  modal/_resolver.py,sha256=2RWvm34cNSnbv1v7izJMNZgfvpLDD6LzaBlr0lIrLnY,7364
14
14
  modal/_resources.py,sha256=NMAp0GCLutiZI4GuKSIVnRHVlstoD3hNGUabjTUtzf4,1794
@@ -18,59 +18,59 @@ modal/_tunnel.py,sha256=zTBxBiuH1O22tS1OliAJdIsSmaZS8PlnifS_6S5z-mk,6320
18
18
  modal/_tunnel.pyi,sha256=rvC7USR2BcKkbZIeCJXwf7-UfGE-LPLjKsGNiK7Lxa4,13366
19
19
  modal/_type_manager.py,sha256=DWjgmjYJuOagw2erin506UUbG2H5UzZCFEekS-7hmfA,9087
20
20
  modal/_watcher.py,sha256=K6LYnlmSGQB4tWWI9JADv-tvSvQ1j522FwT71B51CX8,3584
21
- modal/app.py,sha256=kpq4kXp7pch688y6g55QYAC10wqPTU5FXKoWPMirA3E,47899
22
- modal/app.pyi,sha256=-jKXlGDBWRPVsuenBhdMRqawK-L2eiJ7gHbmSblhltg,43525
21
+ modal/app.py,sha256=hJU3DGzP5GwYRmBj57XajljkQtLxkKftxXih2TYRcKo,48047
22
+ modal/app.pyi,sha256=0U2xVKD3yfHe5l2bcihTDjPl__tzOvx1AIYOTebu-5o,43375
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=dosAowxz0zzyxbJRKGOSm3OtJxmf0yXhFJTHCI6XzQU,15831
25
+ modal/client.pyi,sha256=kr4lXK8_4JCCL4JbZHsen2BLedBOBTb0fntzdRXDJ9I,15753
26
26
  modal/cloud_bucket_mount.py,sha256=YOe9nnvSr4ZbeCn587d7_VhE9IioZYRvF9VYQTQux08,5914
27
27
  modal/cloud_bucket_mount.pyi,sha256=-qSfYAQvIoO_l2wsCCGTG5ZUwQieNKXdAO00yP1-LYU,7394
28
- modal/cls.py,sha256=7A0xGnugQzm8dOfnKMjLjtqekRlRtQ0jPFRYgq6xdUM,40018
29
- modal/cls.pyi,sha256=_tZ5qrlL-ZDEcD-mf9BZkkNH5XPr4SmGTEQ-RVmqF3I,27772
30
- modal/config.py,sha256=FqVewLPVVR4feq_46JBENiCzqTuXKpnvQZxaeWbS39g,12009
28
+ modal/cls.py,sha256=1mBcExFrLDTZwkD3Dzu8F26_CL0CGktOV9pE60Y8g_E,40689
29
+ modal/cls.pyi,sha256=TevKBrBez2R0_4Epsx5GB5gyQX_kQV-uVHPxpqEokhQ,28357
30
+ modal/config.py,sha256=tW-SEGjVvAt3D_MNi3LhxXnFKIA9fjLd3UIgbW8uSJE,12121
31
31
  modal/container_process.py,sha256=XkPwNIW-iD_GB9u9yqv9q8y-i5cQ8eBbLZZ_GvEw9t8,6858
32
32
  modal/container_process.pyi,sha256=9m-st3hCUlNN1GOTctfPPvIvoLtEl7FbuGWwif5-7YU,6037
33
- modal/dict.py,sha256=IWpPQtBwR96TJN7ogpIZvL9Ge9rxY4KJ2CjkUKfWr6g,15864
34
- modal/dict.pyi,sha256=vUrNmCKWZqiPIQSdbMT6fCq9q1QV3qkGVdz2B_yld34,22578
33
+ modal/dict.py,sha256=azL6WHOAR49OsqB33Rqyd1j9ljbbW7blHZDuRV8xPrA,22676
34
+ modal/dict.pyi,sha256=x0PxEqfC8wNGe5u4Y1GI5W1J0H51e3ZG9kHdYFRVLvQ,33575
35
35
  modal/environments.py,sha256=gHFNLG78bqgizpQ4w_elz27QOqmcgAonFsmLs7NjUJ4,6804
36
36
  modal/environments.pyi,sha256=9-KtrzAcUe55cCP4020lSUD7-fWS7OPakAHssq4-bro,4219
37
37
  modal/exception.py,sha256=o0V93PK8Hcg2YQ2aeOB1Y-qWBw4Gz5ATfyokR8GapuQ,5634
38
- modal/file_io.py,sha256=BVqAJ0sgPUfN8QsYztWiGB4j56he60TncM02KsylnCw,21449
39
- modal/file_io.pyi,sha256=cPT_hsplE5iLCXhYOLn1Sp9eDdk7DxdFmicQHanJZyg,15918
40
- modal/file_pattern_matcher.py,sha256=urAue8es8jxqX94k9EYoZxxhtfgOlsEES8lbFHOorzc,7734
38
+ modal/file_io.py,sha256=OSKr77TujcXGJW1iikzYiHckLSmv07QBgBHcxxYEkoI,21456
39
+ modal/file_io.pyi,sha256=xtO6Glf_BFwDE7QiQQo24QqcMf_Vv-iz7WojcGVlLBU,15932
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=cS7QYPHcFD_p95hrAU-TWxBIraIzzG-uO9KyPAwfxdw,34766
42
+ modal/functions.pyi,sha256=vXmQ5-tlrxSV8E8eI0yEF2HUeF0Bd6VyQVxMCW3SpBE,38890
43
43
  modal/gpu.py,sha256=Fe5ORvVPDIstSq1xjmM6OoNgLYFWvogP9r5BgmD3hYg,6769
44
- modal/image.py,sha256=Gm1TGIy1IzaNaYG659C6Jl_flPe6YYzGdSRpf0epDAg,102833
45
- modal/image.pyi,sha256=mlGwmpkKdwNK_VRrCa0WMDURmQPSOohm7hgiiFTfdXI,68541
44
+ modal/image.py,sha256=9pSLEGMxwal55AY-hbL4eTf0lq3xMwuQ0mN-Gc3E99M,103134
45
+ modal/image.pyi,sha256=zwCW80xe2BL7q4_kswfljKRrKjMkK5paTY26e5ITM1U,68507
46
46
  modal/io_streams.py,sha256=ut9tY_yEtiBsgQ40u_72Ns87IZHfbMxfnh8t6U9RSGA,16204
47
47
  modal/io_streams.pyi,sha256=aOun_jUFKHSJyUY6-7gKvNoxzcULsa8_hxdtEO7v-gk,13980
48
- modal/mount.py,sha256=EHttd7D0HNtGUDyB3DS26dJMdabG-SlIaD5c52dJnbE,36729
49
- modal/mount.pyi,sha256=n6AuS8J3bTCQj750nVZZdVBvzCAlSM2fyxAt_5LLFik,20264
50
- modal/network_file_system.py,sha256=AdjxI_hCYaDZz60gOuJeig8yourfWhHmEpn13C_fnMA,14775
48
+ modal/mount.py,sha256=AObt5puO-jgtH5EtUfgAkz130bR-8Qvo5Am1_4tg3mE,37215
49
+ modal/mount.pyi,sha256=Q99V40Va5JuRrmc9PbpQXakYzTSVvgFNgSlJDcfWIyQ,20488
50
+ modal/network_file_system.py,sha256=S5WhQEUv55u0YDpgeEQP-PGIcq2o1gJZVBHAO5vSR2Q,14933
51
51
  modal/network_file_system.pyi,sha256=Td_IobHr84iLo_9LZKQ4tNdUB60yjX8QWBaFiUvhfi8,17685
52
52
  modal/object.py,sha256=bTeskuY8JFrESjU4_UL_nTwYlBQdOLmVaOX3X6EMxsg,164
53
- modal/object.pyi,sha256=sgbaq_d3QSmnPKg5jRbMG3dOceKs0l54kHUAhAyZKAE,6796
53
+ modal/object.pyi,sha256=qlyVVMezW3XgJe_iqhtzWRSki3Nuk-KrpXc1g-r8ujA,6944
54
54
  modal/output.py,sha256=q4T9uHduunj4NwY-YSwkHGgjZlCXMuJbfQ5UFaAGRAc,1968
55
- modal/parallel_map.py,sha256=qZjvo33YAifqCVGz-d_PCRhA70sAF01EbqxQHBAdVsg,59293
56
- modal/parallel_map.pyi,sha256=T2HsEJVYT0KpDy8kqGz98WgH3HnIqz4kvIhZXs7c3Dw,11724
55
+ modal/parallel_map.py,sha256=Pi6WrgVGmjUrz7hCGPbOCDeRKnKLGXxP3B0HuujIa9c,67508
56
+ modal/parallel_map.pyi,sha256=dp_ip_JrbAf9qCkSyaKDdop8LjfRj5r_oc5LG26umOo,15527
57
57
  modal/partial_function.py,sha256=aIdlGfTjjgqY6Fpr-biCjvRU9W542_S5N2xkNN_rYGM,1127
58
58
  modal/partial_function.pyi,sha256=lqqOzZ9-QvHTDWKQ_oAYYOvsXgTOBKhO9u-RI98JbUk,13986
59
- modal/proxy.py,sha256=NQJJMGo-D2IfmeU0vb10WWaE4oTLcuf9jTeEJvactOg,1446
59
+ modal/proxy.py,sha256=CQydu_NPDgApN2GLdd7rrcg8PM-pXyFdVYcTaGMBRCQ,1491
60
60
  modal/proxy.pyi,sha256=yWGWwADCRGrC2w81B7671UTH4Uv3HMZKy5vVqlJUZoA,1417
61
61
  modal/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
- modal/queue.py,sha256=6oKACWiFus03vx5-cDxowxX80a1J7sAwNpBBHLJM8sk,20366
63
- modal/queue.pyi,sha256=Pv4OtY7j17Yb89HGKaMQRiIv0yol-aV-ZtelxQ9GrlU,28330
62
+ modal/queue.py,sha256=ooD_-z3gthje_kxBZQ_xDfwyTy_cxtyn5oM9wt2sXTo,27133
63
+ modal/queue.pyi,sha256=EJ6extEFKclbEUBXk-PuRJ4bkUYRwWgAAUNofQBbBmo,39509
64
64
  modal/retries.py,sha256=IvNLDM0f_GLUDD5VgEDoN09C88yoxSrCquinAuxT1Sc,5205
65
65
  modal/runner.py,sha256=ostdzYpQb-20tlD6dIq7bpWTkZkOhjJBNuMNektqnJA,24068
66
66
  modal/runner.pyi,sha256=lbwLljm1cC8d6PcNvmYQhkE8501V9fg0bYqqKX6G4r4,8489
67
67
  modal/running_app.py,sha256=v61mapYNV1-O-Uaho5EfJlryMLvIT9We0amUOSvSGx8,1188
68
- modal/sandbox.py,sha256=eQd0Cf9yTFCNshnj7oH8WvecbhVIwsEsmuXB9O-REis,40927
69
- modal/sandbox.pyi,sha256=_ddnvZGauSRG-WelsMB5oPil8KVWb0PSvmuAzAzrLIw,41713
68
+ modal/sandbox.py,sha256=O_vB-VgJ2ZMw2yyT2-ATYIWHdeDXCPf4cFcc-3JSB5Q,40895
69
+ modal/sandbox.pyi,sha256=HoHgwb167i83qiGhUE7UAy79l45wqfXKfOA9hZ5HiEo,41572
70
70
  modal/schedule.py,sha256=ng0g0AqNY5GQI9KhkXZQ5Wam5G42glbkqVQsNpBtbDE,3078
71
71
  modal/scheduler_placement.py,sha256=BAREdOY5HzHpzSBqt6jDVR6YC_jYfHMVqOzkyqQfngU,1235
72
- modal/secret.py,sha256=_d_OQUE1S0v_wO5Ck728dsC_1v8-B_4ku4TS4BgC4Bc,12027
73
- modal/secret.pyi,sha256=zcC_OM0JzIF1ccnhNvVIlL6sY3xVjq3t0s3fE1ZDDVs,9732
72
+ modal/secret.py,sha256=jcNJKc4ZB2nvAn7HJFawInqE-_7sbB43IWLZwyLBQ28,19308
73
+ modal/secret.pyi,sha256=7EzD7nZGSZHQR-Hf5aRi0ooZGxvy1-G8A4ul-M04Qs4,21552
74
74
  modal/serving.py,sha256=3I3WBeVbzZY258u9PXBCW_dZBgypq3OhwBuTVvlgubE,4423
75
75
  modal/serving.pyi,sha256=YfixTaWikyYpwhnNxCHMZnDDQiPmV1xJ87QF91U_WGU,1924
76
76
  modal/snapshot.py,sha256=E3oxYQkYVRB_LeFBfmUV1Y6vHz8-azXJfC4x7A1QKnI,1455
@@ -78,26 +78,26 @@ modal/snapshot.pyi,sha256=0q83hlmWxAhDu8xwZyL5VmYh0i8Tigf7S60or2k30L8,1682
78
78
  modal/stream_type.py,sha256=A6320qoAAWhEfwOCZfGtymQTu5AfLfJXXgARqooTPvY,417
79
79
  modal/token_flow.py,sha256=GWpar0gANs71vm9Bd_Cj87UG1K3ljTURbkEjG3JLsrY,7616
80
80
  modal/token_flow.pyi,sha256=eirYjyqbRiT3GCKMIPHJPpkvBTu8WxDKqSHehWaJI_4,2533
81
- modal/volume.py,sha256=6sMyykbz9lvwzClAOW9Pdbl9naXo9CipYf65t-eJdrs,45418
82
- modal/volume.pyi,sha256=lMXzeyeC85ji8g2j0Ghy1WQrk2A2J0LPVpLFpabbr6A,41933
81
+ modal/volume.py,sha256=OQ0BxOpx5RGmM7qywiK8YWAkB9InrIRFbOOevxJ4NAM,53185
82
+ modal/volume.pyi,sha256=5VppIgoqoJqpivESYt5_oWgVTL__zlmpNZkOPk43JF8,54443
83
83
  modal/_runtime/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
84
- modal/_runtime/asgi.py,sha256=_2xSTsDD27Cit7xnMs4lzkJA2wzer2_N4Oa3BkXFzVA,22521
85
- modal/_runtime/container_io_manager.py,sha256=hjkK4gke_A8_mULSfm3F1hZKR0C61lKbRUI8mHS-LGE,45464
86
- modal/_runtime/container_io_manager.pyi,sha256=_HvYZzpXX-msFDFuOvk1z6L5DBbv5Dfly16PgYDOojY,23065
87
- modal/_runtime/execution_context.py,sha256=73Y5zH_o-MhVCrkJXakYVlFkKqCa2CWvqoHjOfJrJGg,3034
88
- modal/_runtime/execution_context.pyi,sha256=IFcW1jphqTchX4fy-45rqfz91RhkZPWtIhIvLvGsNGM,2294
89
- modal/_runtime/gpu_memory_snapshot.py,sha256=HXgqPHQj0LARhmie_h62V95L-M2R1Kg21INUm_IStn8,7574
84
+ modal/_runtime/asgi.py,sha256=yewQjvqPdXQ9SeEMMM53-h3Y22WlJNe28tFvPrrwguk,22607
85
+ modal/_runtime/container_io_manager.py,sha256=iiFxPfnJjnZd_l2Aj5TCR_O1dQwBcrvHccq0LSIJGZY,45719
86
+ modal/_runtime/container_io_manager.pyi,sha256=pcGX7wUdidc2IO3eWOnsEgl9N8e8HG3yFIItXL6JgJI,23626
87
+ modal/_runtime/execution_context.py,sha256=AYrNQRHHXEqX2MwMf8zxelKZnYf25RE_B-NRLWf93n8,3521
88
+ modal/_runtime/execution_context.pyi,sha256=FVzakehz72ndL-ufe8-EC7TM4IHO_MEBcAdgWuU4W9k,2426
89
+ modal/_runtime/gpu_memory_snapshot.py,sha256=BWIMKkH-UXTQOJJuXbM15UWCHHSYlJ0XxGlZunKb0Ug,11877
90
90
  modal/_runtime/telemetry.py,sha256=T1RoAGyjBDr1swiM6pPsGRSITm7LI5FDK18oNXxY08U,5163
91
91
  modal/_runtime/user_code_imports.py,sha256=78wJyleqY2RVibqcpbDQyfWVBVT9BjyHPeoV9WdwV5Y,17720
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
95
95
  modal/_utils/auth_token_manager.py,sha256=i-kfLgDd4BMAw6wouO5aKfNGHo27VAZoVOsbEWqDr2I,5252
96
- modal/_utils/blob_utils.py,sha256=bySVr9M7hlFzZo-u4ikovxMdcdEE8yfGOs94Zex2k4o,20913
96
+ modal/_utils/blob_utils.py,sha256=N5ZEKdGggJgHkO2SeavT505qvewZrvd-6QV2_7cYFbk,22673
97
97
  modal/_utils/bytes_io_segment_payload.py,sha256=vaXPq8b52-x6G2hwE7SrjS58pg_aRm7gV3bn3yjmTzQ,4261
98
98
  modal/_utils/deprecation.py,sha256=-Bgg7jZdcJU8lROy18YyVnQYbM8hue-hVmwJqlWAGH0,5504
99
99
  modal/_utils/docker_utils.py,sha256=h1uETghR40mp_y3fSWuZAfbIASH1HMzuphJHghAL6DU,3722
100
- modal/_utils/function_utils.py,sha256=uEs3hkVQr46m2_LthJqKaI02LLMgHeiD8CsoNWxEpnk,27417
100
+ modal/_utils/function_utils.py,sha256=NWoVg9UgUSS9RSfT9wQUDNcPMmZxjM68-Ch6u4Cp_hk,27481
101
101
  modal/_utils/git_utils.py,sha256=qtUU6JAttF55ZxYq51y55OR58B0tDPZsZWK5dJe6W5g,3182
102
102
  modal/_utils/grpc_testing.py,sha256=H1zHqthv19eGPJz2HKXDyWXWGSqO4BRsxah3L5Xaa8A,8619
103
103
  modal/_utils/grpc_utils.py,sha256=HBZdMcBHCk6uozILYTjGnR0mV8fg7WOdJldoyZ-ZhSg,10137
@@ -111,7 +111,7 @@ modal/_utils/package_utils.py,sha256=LcL2olGN4xaUzu2Tbv-C-Ft9Qp6bsLxEfETOAVd-mjU
111
111
  modal/_utils/pattern_utils.py,sha256=ZUffaECfe2iYBhH6cvCB-0-UWhmEBTZEl_TwG_So3ag,6714
112
112
  modal/_utils/rand_pb_testing.py,sha256=mmVPk1rZldHwHZx0DnHTuHQlRLAiiAYdxjwEJpxvT9c,3900
113
113
  modal/_utils/shell_utils.py,sha256=hWHzv730Br2Xyj6cGPiMZ-198Z3RZuOu3pDXhFSZ22c,2157
114
- modal/_utils/time_utils.py,sha256=Un_nCG9ZXPMPKK5kJayrFVl1eFckVikPyqrWtI2553M,553
114
+ modal/_utils/time_utils.py,sha256=43tpFVwT7ykOjlETIFLVt9auMsRZqYYRYBEKxGCrRSA,1212
115
115
  modal/_vendor/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
116
116
  modal/_vendor/a2wsgi_wsgi.py,sha256=Q1AsjpV_Q_vzQsz_cSqmP9jWzsGsB-ARFU6vpQYml8k,21878
117
117
  modal/_vendor/cloudpickle.py,sha256=avxOIgNKqL9KyPNuIOVQzBm0D1l9ipeB4RrcUMUGmeQ,55216
@@ -131,41 +131,43 @@ modal/cli/app.py,sha256=rbuAG92my-1eZN0olk6p2eD4oBnyBliUsrCOUW-U-9k,7832
131
131
  modal/cli/cluster.py,sha256=8pQurDUvLP_HdSeHH5ZB6WIoDh48FR8qP9vGOtSsFXI,3168
132
132
  modal/cli/config.py,sha256=lhp2Pq4RbTDhaZJ-ZJvhrMqJj8c-WjuRX6gjE3TrvXc,1691
133
133
  modal/cli/container.py,sha256=9Ti-TIZ6vjDSmn9mk9h6SRwyhkQjtwirBN18LjpLyvE,3719
134
- modal/cli/dict.py,sha256=XsySnxSOcfF9ZehHO3whRgFuxZGGNE_I87Hiye36wE4,4655
135
- modal/cli/entry_point.py,sha256=M9ZeIsYx7rxdc6XP2iOIptVzmpj39D3rU8nfW7Dc3CQ,4388
134
+ modal/cli/dict.py,sha256=YAJtiv41YcCd5Fqam3hXCNTs4Y0yOgGR_i6RfQNSAFM,4572
135
+ modal/cli/entry_point.py,sha256=F06p54rPOs1xAUeYW76RaimFOgLW_I17RCvNwfZRqPc,4747
136
136
  modal/cli/environment.py,sha256=Ayddkiq9jdj3XYDJ8ZmUqFpPPH8xajYlbexRkzGtUcg,4334
137
137
  modal/cli/import_refs.py,sha256=X59Z5JwgliRO6C-cIFto2Pr7o3SwlZMKQPKA0aI4ZK4,13927
138
- modal/cli/launch.py,sha256=0_sBu6bv2xJEPWi-rbGS6Ri9ggnkWQvrGlgpYSUBMyY,3097
138
+ modal/cli/launch.py,sha256=VARim2SCzgtI1ZuxQ6JgTTtvFwGA5czCwQZQHWC8Zcc,6498
139
139
  modal/cli/network_file_system.py,sha256=I9IqTpVfk32uKYwGd8LTldkQx6UKYrQYNZ26q7Ab5Oo,8126
140
- modal/cli/profile.py,sha256=r5hnA_GPe_2zwgv6n0Mi8XQXyejQgShb17yjD4dPXcw,3212
141
- modal/cli/queues.py,sha256=6Ck7B-Eu3ZEV6oOX0GxnVMQ5k9DWrIZPYXxaHVqUhKU,4565
140
+ modal/cli/profile.py,sha256=g8X6tFFK9ccKyu2he9Yu19WLSLNdztzECgmIV__XJFs,3257
141
+ modal/cli/queues.py,sha256=5vKtKQ7YExdaxNPYZ0g5suU9sX0-F5h0zy0qBV-hN80,6140
142
142
  modal/cli/run.py,sha256=96m6fpJKbjtva4xzJut0pxS36Z5WCMq0umpAry96im0,24946
143
- modal/cli/secret.py,sha256=PqAvgaiIHTYDbXsKLLQcDvwQn283QnmtgfIr5jH4Prw,6646
143
+ modal/cli/secret.py,sha256=-Nnk3fq1IEzMtC9VUn61AKmdvZzZ9XQyiKVgQYRpajo,8127
144
144
  modal/cli/token.py,sha256=NAmQzKBfEHkcldWKeFxAVIqQBoo1RTp7_A4yc7-8qM0,1911
145
145
  modal/cli/utils.py,sha256=aUXDU9_VgcJrGaGRy4bGf4dqwKYXHCpoO27x4m_bpuo,3293
146
- modal/cli/volume.py,sha256=L4ryL-_yjgUyr0Zwy390DYsFCLtMxeOW2elm7J76y7w,10985
146
+ modal/cli/volume.py,sha256=QUHG28kKuL0UG6gO3wNdLQD1yVBUNVNZL70bxs0jBNo,10759
147
147
  modal/cli/programs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
148
+ modal/cli/programs/launch_instance_ssh.py,sha256=GrwK_Vy8-7B4x5a6AqFaF7lqNVgu75JYZ2BtFV0_DOw,2660
148
149
  modal/cli/programs/run_jupyter.py,sha256=44Lpvqk2l3hH-uOkmAOzw60NEsfB5uaRDWDKVshvQhs,2682
150
+ modal/cli/programs/run_marimo.py,sha256=HyZ2za0NYqg31-mGxFQxUIAJ3Q-jRaMocEwWwI5-cdw,2887
149
151
  modal/cli/programs/vscode.py,sha256=KbTAaIXyQBVCDXxXjmBHmKpgXkUw0q4R4KkJvUjCYgk,3380
150
- modal/experimental/__init__.py,sha256=nuc7AL4r_Fs08DD5dciWFZhrV1nanwoClOfdTcudU0M,10869
152
+ modal/experimental/__init__.py,sha256=dPBPpxsmjZMLF3YjRrXoTvT01pl65wxi4UdFZsOem3w,15082
151
153
  modal/experimental/flash.py,sha256=viXQumCIFp5VFsPFURdFTBTjP_QnsAi8nSWXAMmfjeQ,19744
152
154
  modal/experimental/flash.pyi,sha256=A8_qJGtGoXEzKDdHbvhmCw7oqfneFEvJQK3ZdTOvUdU,10830
153
155
  modal/experimental/ipython.py,sha256=TrCfmol9LGsRZMeDoeMPx3Hv3BFqQhYnmD_iH0pqdhk,2904
154
- modal-1.1.1.dev41.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
156
+ modal-1.1.2.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
155
157
  modal_docs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
156
158
  modal_docs/gen_cli_docs.py,sha256=c1yfBS_x--gL5bs0N4ihMwqwX8l3IBWSkBAKNNIi6bQ,3801
157
159
  modal_docs/gen_reference_docs.py,sha256=d_CQUGQ0rfw28u75I2mov9AlS773z9rG40-yq5o7g2U,6359
158
160
  modal_docs/mdmd/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
159
- modal_docs/mdmd/mdmd.py,sha256=eW5MzrEl7mSclDo4Uv64sQ1-4IyLggldbgUJdBVLDdI,6449
161
+ modal_docs/mdmd/mdmd.py,sha256=tUTImNd4UMFk1opkaw8J672gX8AkBO5gbY2S_NMxsxs,7140
160
162
  modal_docs/mdmd/signatures.py,sha256=XJaZrK7Mdepk5fdX51A8uENiLFNil85Ud0d4MH8H5f0,3218
161
163
  modal_proto/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
162
- modal_proto/api.proto,sha256=BhH6QQvIbZ-08MmZUxxK_BuU9718ruM29SX8NGqLV9s,103769
163
- modal_proto/api_grpc.py,sha256=1mDcIexGtoVq0675-sqlYVr_M2ncGETpmKsOP7VwE3Y,126369
164
- modal_proto/api_pb2.py,sha256=fk7VQgT6VAuQrP-caTU1Wxx2stTGOGPABD9pHxb_c8E,363956
165
- modal_proto/api_pb2.pyi,sha256=7CzSDCotsAG22rOhA01TOrP1A2Unjo69ypiI_Q1Fzfw,500527
166
- modal_proto/api_pb2_grpc.py,sha256=tug2WESqUM6l_M8mCkumK0RkDpD_GnMbx-3cH8-Waig,272807
167
- modal_proto/api_pb2_grpc.pyi,sha256=w1bj43sKHDFOqZnR28_jWWvkFjSFBcRNY8HLGqKO__g,63991
168
- modal_proto/modal_api_grpc.py,sha256=KL5Nw4AS9hJNxfL6VIeuxHz4jIUN7Unz7hYnoSsqyx0,19071
164
+ modal_proto/api.proto,sha256=kMP25zmjHXX9UHd4Fn5urktJ0GjcXY5QQa9VDmsqKGM,104563
165
+ modal_proto/api_grpc.py,sha256=AWsKZFdXr_T6LpWGlMM6BDY30RdOPjqgoPMijR-R1lI,127964
166
+ modal_proto/api_pb2.py,sha256=W1pFgLJxlMwIIUPLmaFHzGhQQtTzrmcIL0flh_WVEek,366713
167
+ modal_proto/api_pb2.pyi,sha256=Le-NezvMy-R1fFrLZqX9OzF6SVl5REgWWV1O68jUA4k,505382
168
+ modal_proto/api_pb2_grpc.py,sha256=kDZBX6i1KdRpm4P3c2wdRbGe3XOFtqGHSbWE0vOe4F4,276062
169
+ modal_proto/api_pb2_grpc.pyi,sha256=s1hjXmqaB3jGCSgnOouzncdfMVX0umPZd4TC1zObhgU,64579
170
+ modal_proto/modal_api_grpc.py,sha256=faBxtXAqoz6ei8ntNu1MQTL859FFHH_LZww_FP9wubw,19311
169
171
  modal_proto/modal_options_grpc.py,sha256=qJ1cuwA54oRqrdTyPTbvfhFZYd9HhJKK5UCwt523r3Y,120
170
172
  modal_proto/options.proto,sha256=zp9h5r61ivsp0XwEWwNBsVqNTbRA1VSY_UtN7sEcHtE,549
171
173
  modal_proto/options_grpc.py,sha256=M18X3d-8F_cNYSVM3I25dUTO5rZ0rd-vCCfynfh13Nc,125
@@ -174,10 +176,10 @@ modal_proto/options_pb2.pyi,sha256=l7DBrbLO7q3Ir-XDkWsajm0d0TQqqrfuX54i4BMpdQg,1
174
176
  modal_proto/options_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
175
177
  modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0yJSI,247
176
178
  modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
177
- modal_version/__init__.py,sha256=H7o0nawv5Ihvp-u2YCzUw9fZYTWrNhPd1SroM0Tnew8,121
179
+ modal_version/__init__.py,sha256=qhE2WU9vtQ0KTOXqxGtFlYQrWXLNU6sWr2FFRQyB4_8,115
178
180
  modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
179
- modal-1.1.1.dev41.dist-info/METADATA,sha256=XYmGY6ycIO-2HUks5ImD3uc4UCdiWQdSdx1zaAIc06E,2460
180
- modal-1.1.1.dev41.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
181
- modal-1.1.1.dev41.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
182
- modal-1.1.1.dev41.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
183
- modal-1.1.1.dev41.dist-info/RECORD,,
181
+ modal-1.1.2.dist-info/METADATA,sha256=5EQpInLv-xmAcIEI12I3xa8g7khXZKSzZYJet5upJZk,2454
182
+ modal-1.1.2.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
183
+ modal-1.1.2.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
184
+ modal-1.1.2.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
185
+ modal-1.1.2.dist-info/RECORD,,
modal_docs/mdmd/mdmd.py CHANGED
@@ -80,7 +80,17 @@ class {name}{bases_str}
80
80
  rec_update_attributes(obj)
81
81
 
82
82
  for member_name, member in entries.items():
83
- if isinstance(member, classmethod) or isinstance(member, staticmethod):
83
+ if isinstance(member, synchronicity.synchronizer.classproperty):
84
+ member_obj = getattr(obj, member_name)
85
+ if not inspect.isclass(member_obj):
86
+ # A little hacky; right now we are only using classproperty for the .objects manager classes
87
+ # I'm adding this constraint to avoid refactoring this to support more recursive calling
88
+ print(f"* Skipping {member_name}; we currnetly assume classproperty is a class")
89
+ continue
90
+ parts.append(f"{member_title_level} {member_name}\n\n")
91
+ parts.append(class_str(member_name, member_obj, title_level=title_level + "#"))
92
+ continue
93
+ elif isinstance(member, classmethod) or isinstance(member, staticmethod):
84
94
  # get the original function definition instead of the descriptor object
85
95
  member = getattr(obj, member_name)
86
96
  elif isinstance(member, property):
modal_proto/api.proto CHANGED
@@ -1147,7 +1147,7 @@ message DictListRequest {
1147
1147
  message DictListResponse {
1148
1148
  message DictInfo {
1149
1149
  string name = 1;
1150
- double created_at = 2; // Superseded by metadata, used by clients up to 1.1.1
1150
+ double created_at = 2; // Superseded by metadata, used by clients up to 1.1.2
1151
1151
  string dict_id = 3;
1152
1152
  DictMetadata metadata = 4;
1153
1153
  }
@@ -1510,10 +1510,22 @@ message FunctionCallCancelRequest {
1510
1510
  optional string function_id = 3; // Only provided for sync input cancellation on the input plane. Async input cancellation does not provide this field this.
1511
1511
  }
1512
1512
 
1513
- message FunctionCallGetDataRequest {
1513
+ message FunctionCallFromIdRequest {
1514
+ string function_call_id = 1;
1515
+ }
1516
+
1517
+ // Everything you need to build a FunctionCallHandler.
1518
+ message FunctionCallFromIdResponse {
1514
1519
  string function_call_id = 1;
1520
+ int32 num_inputs = 2;
1521
+ }
1522
+
1523
+ message FunctionCallGetDataRequest {
1524
+ oneof call_info {
1525
+ string function_call_id = 1;
1526
+ string attempt_token = 3;
1527
+ }
1515
1528
  uint64 last_index = 2;
1516
- optional string attempt_token = 3;
1517
1529
  }
1518
1530
 
1519
1531
  message FunctionCallInfo {
@@ -1540,9 +1552,11 @@ message FunctionCallListResponse {
1540
1552
  }
1541
1553
 
1542
1554
  message FunctionCallPutDataRequest {
1543
- string function_call_id = 1;
1555
+ oneof call_info {
1556
+ string function_call_id = 1;
1557
+ string attempt_token = 3;
1558
+ }
1544
1559
  repeated DataChunk data_chunks = 2;
1545
- reserved 3; // attempt_token
1546
1560
  }
1547
1561
 
1548
1562
  message FunctionCreateRequest {
@@ -1644,6 +1658,12 @@ message FunctionExtended {
1644
1658
  }
1645
1659
  }
1646
1660
 
1661
+ message FunctionFinishInputsRequest {
1662
+ string function_id = 1;
1663
+ string function_call_id = 2;
1664
+ uint32 num_inputs = 3;
1665
+ }
1666
+
1647
1667
 
1648
1668
  message FunctionGetCallGraphRequest {
1649
1669
  // TODO: use input_id once we switch client submit API to return those.
@@ -1678,6 +1698,7 @@ message FunctionGetInputsItem {
1678
1698
  FunctionCallInvocationType function_call_invocation_type = 6;
1679
1699
  uint32 retry_count = 7;
1680
1700
  optional int32 function_map_idx = 8; // intercepted and only used by the worker.
1701
+ string attempt_token = 9;
1681
1702
  }
1682
1703
 
1683
1704
  message FunctionGetInputsRequest {
@@ -1718,6 +1739,7 @@ message FunctionGetOutputsRequest {
1718
1739
  // The jwts the client expects the server to be processing. This is optional and used for sync inputs only.
1719
1740
  repeated string input_jwts = 9;
1720
1741
  optional int32 start_idx = 10; // for async batch requests. this indicates which index to start from.
1742
+ optional int32 end_idx = 11; // for async batch requests. this indicates which index to end at.
1721
1743
  }
1722
1744
 
1723
1745
  message FunctionGetOutputsResponse {
@@ -1819,6 +1841,8 @@ message FunctionOptions {
1819
1841
  optional uint32 max_concurrent_inputs = 14;
1820
1842
  optional uint32 batch_max_size = 15;
1821
1843
  optional uint64 batch_linger_ms = 16;
1844
+ optional SchedulerPlacement scheduler_placement = 17;
1845
+ optional string cloud_provider_str = 18;
1822
1846
  }
1823
1847
 
1824
1848
  message FunctionPrecreateRequest {
@@ -2459,7 +2483,7 @@ message QueueListRequest {
2459
2483
  message QueueListResponse {
2460
2484
  message QueueInfo {
2461
2485
  string name = 1;
2462
- double created_at = 2; // Superseded by metadata, used by clients up to 1.1.1
2486
+ double created_at = 2; // Superseded by metadata, used by clients up to 1.1.2
2463
2487
  int32 num_partitions = 3;
2464
2488
  int32 total_size = 4;
2465
2489
  string queue_id = 5;
@@ -2609,6 +2633,8 @@ message Sandbox {
2609
2633
 
2610
2634
  // Experimental options
2611
2635
  map<string, bool> experimental_options = 31;
2636
+
2637
+ repeated string preload_path_prefixes = 32; // Internal use only.
2612
2638
  }
2613
2639
 
2614
2640
  message SandboxCreateRequest {
@@ -2868,7 +2894,7 @@ message SecretGetOrCreateResponse {
2868
2894
 
2869
2895
  message SecretListItem {
2870
2896
  string label = 1;
2871
- double created_at = 2; // Superseded by metadata, used by clients up to 1.1.1
2897
+ double created_at = 2; // Superseded by metadata, used by clients up to 1.1.2
2872
2898
  double last_used_at = 3;
2873
2899
  string environment_name = 4; // Unused by client
2874
2900
  string secret_id = 5;
@@ -3008,6 +3034,7 @@ message TaskInfo {
3008
3034
  string gpu_type = 6;
3009
3035
  string sandbox_id = 7;
3010
3036
  TaskSnapshotBehavior snapshot_behavior = 8;
3037
+ GPUConfig gpu_config = 9;
3011
3038
  }
3012
3039
 
3013
3040
  message TaskListRequest {
@@ -3234,7 +3261,7 @@ message VolumeListFilesResponse {
3234
3261
  message VolumeListItem {
3235
3262
  string label = 1; // app name of object entity app
3236
3263
  string volume_id = 2;
3237
- double created_at = 3; // Superseded by metadata, used by clients up to 1.1.1
3264
+ double created_at = 3; // Superseded by metadata, used by clients up to 1.1.2
3238
3265
  VolumeMetadata metadata = 4;
3239
3266
  }
3240
3267
 
@@ -3414,8 +3441,6 @@ service ModalClient {
3414
3441
  rpc AppStop(AppStopRequest) returns (google.protobuf.Empty);
3415
3442
 
3416
3443
  // Input Plane
3417
- // These RPCs are experimental, not deployed to production, and can be changed / removed
3418
- // without needing to worry about backwards compatibility.
3419
3444
  rpc AttemptAwait(AttemptAwaitRequest) returns (AttemptAwaitResponse);
3420
3445
  rpc AttemptRetry(AttemptRetryRequest) returns (AttemptRetryResponse);
3421
3446
  rpc AttemptStart(AttemptStartRequest) returns (AttemptStartResponse);
@@ -3486,11 +3511,13 @@ service ModalClient {
3486
3511
  rpc FunctionAsyncInvoke(FunctionAsyncInvokeRequest) returns (FunctionAsyncInvokeResponse);
3487
3512
  rpc FunctionBindParams(FunctionBindParamsRequest) returns (FunctionBindParamsResponse);
3488
3513
  rpc FunctionCallCancel(FunctionCallCancelRequest) returns (google.protobuf.Empty);
3514
+ rpc FunctionCallFromId(FunctionCallFromIdRequest) returns (FunctionCallFromIdResponse);
3489
3515
  rpc FunctionCallGetDataIn(FunctionCallGetDataRequest) returns (stream DataChunk);
3490
3516
  rpc FunctionCallGetDataOut(FunctionCallGetDataRequest) returns (stream DataChunk);
3491
3517
  rpc FunctionCallList(FunctionCallListRequest) returns (FunctionCallListResponse);
3492
3518
  rpc FunctionCallPutDataOut(FunctionCallPutDataRequest) returns (google.protobuf.Empty);
3493
3519
  rpc FunctionCreate(FunctionCreateRequest) returns (FunctionCreateResponse);
3520
+ rpc FunctionFinishInputs(FunctionFinishInputsRequest) returns (google.protobuf.Empty); // For map RPCs, to signal that all inputs have been sent
3494
3521
  rpc FunctionGet(FunctionGetRequest) returns (FunctionGetResponse);
3495
3522
  rpc FunctionGetCallGraph(FunctionGetCallGraphRequest) returns (FunctionGetCallGraphResponse);
3496
3523
  rpc FunctionGetCurrentStats(FunctionGetCurrentStatsRequest) returns (FunctionStats);
modal_proto/api_grpc.py CHANGED
@@ -274,6 +274,10 @@ class ModalClientBase(abc.ABC):
274
274
  async def FunctionCallCancel(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.FunctionCallCancelRequest, google.protobuf.empty_pb2.Empty]') -> None:
275
275
  pass
276
276
 
277
+ @abc.abstractmethod
278
+ async def FunctionCallFromId(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.FunctionCallFromIdRequest, modal_proto.api_pb2.FunctionCallFromIdResponse]') -> None:
279
+ pass
280
+
277
281
  @abc.abstractmethod
278
282
  async def FunctionCallGetDataIn(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.FunctionCallGetDataRequest, modal_proto.api_pb2.DataChunk]') -> None:
279
283
  pass
@@ -294,6 +298,10 @@ class ModalClientBase(abc.ABC):
294
298
  async def FunctionCreate(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.FunctionCreateRequest, modal_proto.api_pb2.FunctionCreateResponse]') -> None:
295
299
  pass
296
300
 
301
+ @abc.abstractmethod
302
+ async def FunctionFinishInputs(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.FunctionFinishInputsRequest, google.protobuf.empty_pb2.Empty]') -> None:
303
+ pass
304
+
297
305
  @abc.abstractmethod
298
306
  async def FunctionGet(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.FunctionGetRequest, modal_proto.api_pb2.FunctionGetResponse]') -> None:
299
307
  pass
@@ -1060,6 +1068,12 @@ class ModalClientBase(abc.ABC):
1060
1068
  modal_proto.api_pb2.FunctionCallCancelRequest,
1061
1069
  google.protobuf.empty_pb2.Empty,
1062
1070
  ),
1071
+ '/modal.client.ModalClient/FunctionCallFromId': grpclib.const.Handler(
1072
+ self.FunctionCallFromId,
1073
+ grpclib.const.Cardinality.UNARY_UNARY,
1074
+ modal_proto.api_pb2.FunctionCallFromIdRequest,
1075
+ modal_proto.api_pb2.FunctionCallFromIdResponse,
1076
+ ),
1063
1077
  '/modal.client.ModalClient/FunctionCallGetDataIn': grpclib.const.Handler(
1064
1078
  self.FunctionCallGetDataIn,
1065
1079
  grpclib.const.Cardinality.UNARY_STREAM,
@@ -1090,6 +1104,12 @@ class ModalClientBase(abc.ABC):
1090
1104
  modal_proto.api_pb2.FunctionCreateRequest,
1091
1105
  modal_proto.api_pb2.FunctionCreateResponse,
1092
1106
  ),
1107
+ '/modal.client.ModalClient/FunctionFinishInputs': grpclib.const.Handler(
1108
+ self.FunctionFinishInputs,
1109
+ grpclib.const.Cardinality.UNARY_UNARY,
1110
+ modal_proto.api_pb2.FunctionFinishInputsRequest,
1111
+ google.protobuf.empty_pb2.Empty,
1112
+ ),
1093
1113
  '/modal.client.ModalClient/FunctionGet': grpclib.const.Handler(
1094
1114
  self.FunctionGet,
1095
1115
  grpclib.const.Cardinality.UNARY_UNARY,
@@ -2050,6 +2070,12 @@ class ModalClientStub:
2050
2070
  modal_proto.api_pb2.FunctionCallCancelRequest,
2051
2071
  google.protobuf.empty_pb2.Empty,
2052
2072
  )
2073
+ self.FunctionCallFromId = grpclib.client.UnaryUnaryMethod(
2074
+ channel,
2075
+ '/modal.client.ModalClient/FunctionCallFromId',
2076
+ modal_proto.api_pb2.FunctionCallFromIdRequest,
2077
+ modal_proto.api_pb2.FunctionCallFromIdResponse,
2078
+ )
2053
2079
  self.FunctionCallGetDataIn = grpclib.client.UnaryStreamMethod(
2054
2080
  channel,
2055
2081
  '/modal.client.ModalClient/FunctionCallGetDataIn',
@@ -2080,6 +2106,12 @@ class ModalClientStub:
2080
2106
  modal_proto.api_pb2.FunctionCreateRequest,
2081
2107
  modal_proto.api_pb2.FunctionCreateResponse,
2082
2108
  )
2109
+ self.FunctionFinishInputs = grpclib.client.UnaryUnaryMethod(
2110
+ channel,
2111
+ '/modal.client.ModalClient/FunctionFinishInputs',
2112
+ modal_proto.api_pb2.FunctionFinishInputsRequest,
2113
+ google.protobuf.empty_pb2.Empty,
2114
+ )
2083
2115
  self.FunctionGet = grpclib.client.UnaryUnaryMethod(
2084
2116
  channel,
2085
2117
  '/modal.client.ModalClient/FunctionGet',