modal 1.1.5.dev83__py3-none-any.whl → 1.3.1.dev8__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 (139) hide show
  1. modal/__init__.py +4 -4
  2. modal/__main__.py +4 -29
  3. modal/_billing.py +84 -0
  4. modal/_clustered_functions.py +1 -3
  5. modal/_container_entrypoint.py +33 -208
  6. modal/_functions.py +146 -121
  7. modal/_grpc_client.py +191 -0
  8. modal/_ipython.py +16 -6
  9. modal/_load_context.py +106 -0
  10. modal/_object.py +72 -21
  11. modal/_output.py +12 -14
  12. modal/_partial_function.py +31 -4
  13. modal/_resolver.py +44 -57
  14. modal/_runtime/container_io_manager.py +26 -28
  15. modal/_runtime/container_io_manager.pyi +42 -44
  16. modal/_runtime/gpu_memory_snapshot.py +9 -7
  17. modal/_runtime/user_code_event_loop.py +80 -0
  18. modal/_runtime/user_code_imports.py +236 -10
  19. modal/_serialization.py +2 -1
  20. modal/_traceback.py +4 -13
  21. modal/_tunnel.py +16 -11
  22. modal/_tunnel.pyi +25 -3
  23. modal/_utils/async_utils.py +337 -10
  24. modal/_utils/auth_token_manager.py +1 -4
  25. modal/_utils/blob_utils.py +29 -22
  26. modal/_utils/function_utils.py +20 -21
  27. modal/_utils/grpc_testing.py +6 -3
  28. modal/_utils/grpc_utils.py +223 -64
  29. modal/_utils/mount_utils.py +26 -1
  30. modal/_utils/package_utils.py +0 -1
  31. modal/_utils/rand_pb_testing.py +8 -1
  32. modal/_utils/task_command_router_client.py +524 -0
  33. modal/_vendor/cloudpickle.py +144 -48
  34. modal/app.py +215 -96
  35. modal/app.pyi +78 -37
  36. modal/billing.py +5 -0
  37. modal/builder/2025.06.txt +6 -3
  38. modal/builder/PREVIEW.txt +2 -1
  39. modal/builder/base-images.json +4 -2
  40. modal/cli/_download.py +19 -3
  41. modal/cli/cluster.py +4 -2
  42. modal/cli/config.py +3 -1
  43. modal/cli/container.py +5 -4
  44. modal/cli/dict.py +5 -2
  45. modal/cli/entry_point.py +26 -2
  46. modal/cli/environment.py +2 -16
  47. modal/cli/launch.py +1 -76
  48. modal/cli/network_file_system.py +5 -20
  49. modal/cli/queues.py +5 -4
  50. modal/cli/run.py +24 -204
  51. modal/cli/secret.py +1 -2
  52. modal/cli/shell.py +375 -0
  53. modal/cli/utils.py +1 -13
  54. modal/cli/volume.py +11 -17
  55. modal/client.py +16 -125
  56. modal/client.pyi +94 -144
  57. modal/cloud_bucket_mount.py +3 -1
  58. modal/cloud_bucket_mount.pyi +4 -0
  59. modal/cls.py +101 -64
  60. modal/cls.pyi +9 -8
  61. modal/config.py +21 -1
  62. modal/container_process.py +288 -12
  63. modal/container_process.pyi +99 -38
  64. modal/dict.py +72 -33
  65. modal/dict.pyi +88 -57
  66. modal/environments.py +16 -8
  67. modal/environments.pyi +6 -2
  68. modal/exception.py +154 -16
  69. modal/experimental/__init__.py +23 -5
  70. modal/experimental/flash.py +161 -74
  71. modal/experimental/flash.pyi +97 -49
  72. modal/file_io.py +50 -92
  73. modal/file_io.pyi +117 -89
  74. modal/functions.pyi +70 -87
  75. modal/image.py +73 -47
  76. modal/image.pyi +33 -30
  77. modal/io_streams.py +500 -149
  78. modal/io_streams.pyi +279 -189
  79. modal/mount.py +60 -45
  80. modal/mount.pyi +41 -17
  81. modal/network_file_system.py +19 -11
  82. modal/network_file_system.pyi +72 -39
  83. modal/object.pyi +114 -22
  84. modal/parallel_map.py +42 -44
  85. modal/parallel_map.pyi +9 -17
  86. modal/partial_function.pyi +4 -2
  87. modal/proxy.py +14 -6
  88. modal/proxy.pyi +10 -2
  89. modal/queue.py +45 -38
  90. modal/queue.pyi +88 -52
  91. modal/runner.py +96 -96
  92. modal/runner.pyi +44 -27
  93. modal/sandbox.py +225 -108
  94. modal/sandbox.pyi +226 -63
  95. modal/secret.py +58 -56
  96. modal/secret.pyi +28 -13
  97. modal/serving.py +7 -11
  98. modal/serving.pyi +7 -8
  99. modal/snapshot.py +29 -15
  100. modal/snapshot.pyi +18 -10
  101. modal/token_flow.py +1 -1
  102. modal/token_flow.pyi +4 -6
  103. modal/volume.py +102 -55
  104. modal/volume.pyi +125 -66
  105. {modal-1.1.5.dev83.dist-info → modal-1.3.1.dev8.dist-info}/METADATA +10 -9
  106. modal-1.3.1.dev8.dist-info/RECORD +189 -0
  107. modal_proto/api.proto +86 -30
  108. modal_proto/api_grpc.py +10 -25
  109. modal_proto/api_pb2.py +1080 -1047
  110. modal_proto/api_pb2.pyi +253 -79
  111. modal_proto/api_pb2_grpc.py +14 -48
  112. modal_proto/api_pb2_grpc.pyi +6 -18
  113. modal_proto/modal_api_grpc.py +175 -176
  114. modal_proto/{sandbox_router.proto → task_command_router.proto} +62 -45
  115. modal_proto/task_command_router_grpc.py +138 -0
  116. modal_proto/task_command_router_pb2.py +180 -0
  117. modal_proto/{sandbox_router_pb2.pyi → task_command_router_pb2.pyi} +110 -63
  118. modal_proto/task_command_router_pb2_grpc.py +272 -0
  119. modal_proto/task_command_router_pb2_grpc.pyi +100 -0
  120. modal_version/__init__.py +1 -1
  121. modal_version/__main__.py +1 -1
  122. modal/cli/programs/launch_instance_ssh.py +0 -94
  123. modal/cli/programs/run_marimo.py +0 -95
  124. modal-1.1.5.dev83.dist-info/RECORD +0 -191
  125. modal_proto/modal_options_grpc.py +0 -3
  126. modal_proto/options.proto +0 -19
  127. modal_proto/options_grpc.py +0 -3
  128. modal_proto/options_pb2.py +0 -35
  129. modal_proto/options_pb2.pyi +0 -20
  130. modal_proto/options_pb2_grpc.py +0 -4
  131. modal_proto/options_pb2_grpc.pyi +0 -7
  132. modal_proto/sandbox_router_grpc.py +0 -105
  133. modal_proto/sandbox_router_pb2.py +0 -148
  134. modal_proto/sandbox_router_pb2_grpc.py +0 -203
  135. modal_proto/sandbox_router_pb2_grpc.pyi +0 -75
  136. {modal-1.1.5.dev83.dist-info → modal-1.3.1.dev8.dist-info}/WHEEL +0 -0
  137. {modal-1.1.5.dev83.dist-info → modal-1.3.1.dev8.dist-info}/entry_points.txt +0 -0
  138. {modal-1.1.5.dev83.dist-info → modal-1.3.1.dev8.dist-info}/licenses/LICENSE +0 -0
  139. {modal-1.1.5.dev83.dist-info → modal-1.3.1.dev8.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,100 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+ import abc
6
+ import collections.abc
7
+ import google.protobuf.empty_pb2
8
+ import grpc
9
+ import modal_proto.task_command_router_pb2
10
+
11
+ class TaskCommandRouterStub:
12
+ def __init__(self, channel: grpc.Channel) -> None: ...
13
+ TaskExecPoll: grpc.UnaryUnaryMultiCallable[
14
+ modal_proto.task_command_router_pb2.TaskExecPollRequest,
15
+ modal_proto.task_command_router_pb2.TaskExecPollResponse,
16
+ ]
17
+ """Poll for the exit status of an exec'd command."""
18
+ TaskExecStart: grpc.UnaryUnaryMultiCallable[
19
+ modal_proto.task_command_router_pb2.TaskExecStartRequest,
20
+ modal_proto.task_command_router_pb2.TaskExecStartResponse,
21
+ ]
22
+ """Execute a command in the task."""
23
+ TaskExecStdinWrite: grpc.UnaryUnaryMultiCallable[
24
+ modal_proto.task_command_router_pb2.TaskExecStdinWriteRequest,
25
+ modal_proto.task_command_router_pb2.TaskExecStdinWriteResponse,
26
+ ]
27
+ """Write to the stdin stream of an exec'd command."""
28
+ TaskExecStdioRead: grpc.UnaryStreamMultiCallable[
29
+ modal_proto.task_command_router_pb2.TaskExecStdioReadRequest,
30
+ modal_proto.task_command_router_pb2.TaskExecStdioReadResponse,
31
+ ]
32
+ """Get a stream of output from the stdout or stderr stream of an exec'd command."""
33
+ TaskExecWait: grpc.UnaryUnaryMultiCallable[
34
+ modal_proto.task_command_router_pb2.TaskExecWaitRequest,
35
+ modal_proto.task_command_router_pb2.TaskExecWaitResponse,
36
+ ]
37
+ """Wait for an exec'd command to exit and return the exit code."""
38
+ TaskMountDirectory: grpc.UnaryUnaryMultiCallable[
39
+ modal_proto.task_command_router_pb2.TaskMountDirectoryRequest,
40
+ google.protobuf.empty_pb2.Empty,
41
+ ]
42
+ """Mount an image at a directory in the container."""
43
+ TaskSnapshotDirectory: grpc.UnaryUnaryMultiCallable[
44
+ modal_proto.task_command_router_pb2.TaskSnapshotDirectoryRequest,
45
+ modal_proto.task_command_router_pb2.TaskSnapshotDirectoryResponse,
46
+ ]
47
+ """Snapshot a directory with a mounted image, including any local changes, into a new image."""
48
+
49
+ class TaskCommandRouterServicer(metaclass=abc.ABCMeta):
50
+ @abc.abstractmethod
51
+ def TaskExecPoll(
52
+ self,
53
+ request: modal_proto.task_command_router_pb2.TaskExecPollRequest,
54
+ context: grpc.ServicerContext,
55
+ ) -> modal_proto.task_command_router_pb2.TaskExecPollResponse:
56
+ """Poll for the exit status of an exec'd command."""
57
+ @abc.abstractmethod
58
+ def TaskExecStart(
59
+ self,
60
+ request: modal_proto.task_command_router_pb2.TaskExecStartRequest,
61
+ context: grpc.ServicerContext,
62
+ ) -> modal_proto.task_command_router_pb2.TaskExecStartResponse:
63
+ """Execute a command in the task."""
64
+ @abc.abstractmethod
65
+ def TaskExecStdinWrite(
66
+ self,
67
+ request: modal_proto.task_command_router_pb2.TaskExecStdinWriteRequest,
68
+ context: grpc.ServicerContext,
69
+ ) -> modal_proto.task_command_router_pb2.TaskExecStdinWriteResponse:
70
+ """Write to the stdin stream of an exec'd command."""
71
+ @abc.abstractmethod
72
+ def TaskExecStdioRead(
73
+ self,
74
+ request: modal_proto.task_command_router_pb2.TaskExecStdioReadRequest,
75
+ context: grpc.ServicerContext,
76
+ ) -> collections.abc.Iterator[modal_proto.task_command_router_pb2.TaskExecStdioReadResponse]:
77
+ """Get a stream of output from the stdout or stderr stream of an exec'd command."""
78
+ @abc.abstractmethod
79
+ def TaskExecWait(
80
+ self,
81
+ request: modal_proto.task_command_router_pb2.TaskExecWaitRequest,
82
+ context: grpc.ServicerContext,
83
+ ) -> modal_proto.task_command_router_pb2.TaskExecWaitResponse:
84
+ """Wait for an exec'd command to exit and return the exit code."""
85
+ @abc.abstractmethod
86
+ def TaskMountDirectory(
87
+ self,
88
+ request: modal_proto.task_command_router_pb2.TaskMountDirectoryRequest,
89
+ context: grpc.ServicerContext,
90
+ ) -> google.protobuf.empty_pb2.Empty:
91
+ """Mount an image at a directory in the container."""
92
+ @abc.abstractmethod
93
+ def TaskSnapshotDirectory(
94
+ self,
95
+ request: modal_proto.task_command_router_pb2.TaskSnapshotDirectoryRequest,
96
+ context: grpc.ServicerContext,
97
+ ) -> modal_proto.task_command_router_pb2.TaskSnapshotDirectoryResponse:
98
+ """Snapshot a directory with a mounted image, including any local changes, into a new image."""
99
+
100
+ def add_TaskCommandRouterServicer_to_server(servicer: TaskCommandRouterServicer, server: grpc.Server) -> None: ...
modal_version/__init__.py CHANGED
@@ -1,4 +1,4 @@
1
1
  # Copyright Modal Labs 2025
2
2
  """Supplies the current version of the modal client library."""
3
3
 
4
- __version__ = "1.1.5.dev83"
4
+ __version__ = "1.3.1.dev8"
modal_version/__main__.py CHANGED
@@ -2,4 +2,4 @@
2
2
  from . import __version__
3
3
 
4
4
  if __name__ == "__main__":
5
- print(__version__)
5
+ print(__version__) # noqa: T201
@@ -1,94 +0,0 @@
1
- # Copyright Modal Labs 2023
2
- # type: ignore
3
- import json
4
- import os
5
- import sys
6
- from typing import Any
7
-
8
- import rich
9
- import rich.panel
10
- import rich.rule
11
-
12
- import modal
13
- import modal.experimental
14
-
15
- # Passed by `modal launch` locally via CLI.
16
- args: dict[str, Any] = json.loads(os.environ.get("MODAL_LAUNCH_ARGS", "{}"))
17
-
18
- app = modal.App()
19
-
20
- image: modal.Image
21
- if args.get("image"):
22
- image = modal.Image.from_registry(args.get("image"))
23
- else:
24
- # Must be set to the same image builder version as the notebook base image.
25
- os.environ["MODAL_IMAGE_BUILDER_VERSION"] = "2024.10"
26
- image = modal.experimental.notebook_base_image(python_version="3.12")
27
-
28
- volume = (
29
- modal.Volume.from_name(
30
- args.get("volume"),
31
- create_if_missing=True,
32
- )
33
- if args.get("volume")
34
- else None
35
- )
36
- volumes = {"/workspace": volume} if volume else {}
37
-
38
-
39
- startup_script = """
40
- set -eu
41
- mkdir -p /run/sshd
42
-
43
- # Check if sshd is installed, install if not
44
- test -x /usr/sbin/sshd || (apt-get update && apt-get install -y openssh-server)
45
-
46
- # Change default working directory to /workspace
47
- echo "cd /workspace" >> /root/.profile
48
-
49
- mkdir -p /root/.ssh
50
- echo "$SSH_PUBLIC_KEY" >> /root/.ssh/authorized_keys
51
- /usr/sbin/sshd -D -e
52
- """
53
-
54
-
55
- @app.local_entrypoint()
56
- def main():
57
- if not os.environ.get("SSH_PUBLIC_KEY"):
58
- raise ValueError("SSH_PUBLIC_KEY environment variable is not set")
59
-
60
- sb = modal.Sandbox.create(
61
- *("sh", "-c", startup_script),
62
- app=app,
63
- image=image,
64
- cpu=args.get("cpu"),
65
- memory=args.get("memory"),
66
- gpu=args.get("gpu"),
67
- timeout=args.get("timeout"),
68
- volumes=volumes,
69
- unencrypted_ports=[22], # Forward SSH port
70
- secrets=[modal.Secret.from_dict({"SSH_PUBLIC_KEY": os.environ.get("SSH_PUBLIC_KEY")})],
71
- )
72
- hostname, port = sb.tunnels()[22].tcp_socket
73
- connection_cmd = f"ssh -A -p {port} root@{hostname}"
74
-
75
- rich.print(
76
- rich.rule.Rule(style="yellow"),
77
- rich.panel.Panel(
78
- f"""Your instance is ready! You can SSH into it using the following command:
79
-
80
- [dim gray]>[/dim gray] [bold cyan]{connection_cmd}[/bold cyan]
81
-
82
- [italic]Details:[/italic]
83
- • Name: [magenta]{app.description}[/magenta]
84
- • CPU: [yellow]{args.get("cpu")} cores[/yellow]
85
- • Memory: [yellow]{args.get("memory")} MiB[/yellow]
86
- • Timeout: [yellow]{args.get("timeout")} seconds[/yellow]
87
- • GPU: [green]{(args.get("gpu") or "N/A").upper()}[/green]""",
88
- title="SSH Connection",
89
- expand=False,
90
- ),
91
- rich.rule.Rule(style="yellow"),
92
- )
93
-
94
- sys.exit(0) # Exit immediately to prevent "Timed out waiting for final apps log."
@@ -1,95 +0,0 @@
1
- # Copyright Modal Labs 2025
2
- # type: ignore
3
- import json
4
- import os
5
- import secrets
6
- import socket
7
- import subprocess
8
- import threading
9
- import time
10
- import webbrowser
11
- from typing import Any
12
-
13
- from modal import App, Image, Queue, Secret, Volume, forward
14
-
15
- # Args injected by `modal launch` CLI.
16
- args: dict[str, Any] = json.loads(os.environ.get("MODAL_LAUNCH_ARGS", "{}"))
17
-
18
- app = App()
19
-
20
- image = Image.from_registry(args.get("image"), add_python=args.get("add_python")).uv_pip_install("marimo")
21
-
22
- # Optional host-filesystem mount (read-only snapshot of your project, useful for editing)
23
- if args.get("mount"):
24
- image = image.add_local_dir(args["mount"], remote_path="/root/marimo/mount")
25
-
26
- # Optional persistent Modal volume
27
- volume = Volume.from_name(args["volume"], create_if_missing=True) if args.get("volume") else None
28
- volumes = {"/root/marimo/volume": volume} if volume else {}
29
-
30
-
31
- def _wait_for_port(url: str, q: Queue) -> None:
32
- start = time.monotonic()
33
- while True:
34
- try:
35
- with socket.create_connection(("localhost", 8888), timeout=30):
36
- break
37
- except OSError as exc:
38
- if time.monotonic() - start > 30:
39
- raise TimeoutError("marimo server did not start within 30 s") from exc
40
- time.sleep(0.05)
41
- q.put(url)
42
-
43
-
44
- @app.function(
45
- image=image,
46
- cpu=args.get("cpu"),
47
- memory=args.get("memory"),
48
- gpu=args.get("gpu"),
49
- timeout=args.get("timeout", 3600),
50
- secrets=[Secret.from_dict({"MODAL_LAUNCH_ARGS": json.dumps(args)})],
51
- volumes=volumes,
52
- max_containers=1 if volume else None,
53
- )
54
- def run_marimo(q: Queue):
55
- os.makedirs("/root/marimo", exist_ok=True)
56
-
57
- # marimo supports token-based auth; generate one so only you can connect
58
- token = secrets.token_urlsafe(12)
59
-
60
- with forward(8888) as tunnel:
61
- url = f"{tunnel.url}/?access_token={token}"
62
- threading.Thread(target=_wait_for_port, args=(url, q), daemon=True).start()
63
-
64
- print("\nmarimo on Modal, opening in browser …")
65
- print(f" -> {url}\n")
66
-
67
- # Launch the headless edit server
68
- subprocess.run(
69
- [
70
- "marimo",
71
- "edit",
72
- "--headless", # don't open browser in container
73
- "--host",
74
- "0.0.0.0", # bind all interfaces
75
- "--port",
76
- "8888",
77
- "--token-password",
78
- token, # enable session-based auth
79
- "--skip-update-check",
80
- "/root/marimo", # workspace directory
81
- ],
82
- env={**os.environ, "SHELL": "/bin/bash"},
83
- )
84
-
85
- q.put("done")
86
-
87
-
88
- @app.local_entrypoint()
89
- def main():
90
- with Queue.ephemeral() as q:
91
- run_marimo.spawn(q)
92
- url = q.get() # first message = connect URL
93
- time.sleep(1) # give server a heartbeat
94
- webbrowser.open(url)
95
- assert q.get() == "done"
@@ -1,191 +0,0 @@
1
- modal/__init__.py,sha256=WMaRW-2IJRGA9ioNAaBhJYuyLvu-GS01L8wQD90fKBs,2682
2
- modal/__main__.py,sha256=45H-GtwzaDfN-1nP4_HYvzN3s7AG_HXR4-ynrsjO_OI,2803
3
- modal/_clustered_functions.py,sha256=Sy4Sf_17EO8OL-FUe8LYcm4hrqLyQFCssNhr3p0SroU,3013
4
- modal/_clustered_functions.pyi,sha256=JmYwAGOLEnD5AF-gYF9O5tu-SgGjeoJz-X1j48b1Ijg,1157
5
- modal/_container_entrypoint.py,sha256=B_fIKKjWposiNsYOePifX7S6cR9hf5LRPhDfVums5O8,27867
6
- modal/_functions.py,sha256=7YbMBWtMMWLFxCaD3MSD-2iU1R7v5HRxfve-vGNzHnE,90991
7
- modal/_ipython.py,sha256=TW1fkVOmZL3YYqdS2YlM1hqpf654Yf8ZyybHdBnlhSw,301
8
- modal/_location.py,sha256=joiX-0ZeutEUDTrrqLF1GHXCdVLF-rHzstocbMcd_-k,366
9
- modal/_object.py,sha256=gwsLdXb-Ecd8nH8LVCo8oVZPzzdyo9BrN1DjgQmsSuM,11967
10
- modal/_output.py,sha256=sdQqEuWVknHwLPzuz_7eUYqF9TvmQkSfEjm1E__bzbY,26892
11
- modal/_partial_function.py,sha256=Yqk97hLS6vi8nWWVpzS5TSWbndWMdCtkhccdnyDJgBk,37302
12
- modal/_pty.py,sha256=E58MQ8d5-wkbMatRKpQR-G9FdbCRcZGiZxOpGy__VuY,1481
13
- modal/_resolver.py,sha256=2RWvm34cNSnbv1v7izJMNZgfvpLDD6LzaBlr0lIrLnY,7364
14
- modal/_resources.py,sha256=NMAp0GCLutiZI4GuKSIVnRHVlstoD3hNGUabjTUtzf4,1794
15
- modal/_serialization.py,sha256=_3-Z9jSoleDnv2HghH2kfo0m_WG8Iajs1wop1Iqnam8,26341
16
- modal/_traceback.py,sha256=muKP7RbAXq74UGwkaVIdOxDdfDug0UcDKr9fe4LL3m8,6503
17
- modal/_tunnel.py,sha256=zTBxBiuH1O22tS1OliAJdIsSmaZS8PlnifS_6S5z-mk,6320
18
- modal/_tunnel.pyi,sha256=rvC7USR2BcKkbZIeCJXwf7-UfGE-LPLjKsGNiK7Lxa4,13366
19
- modal/_type_manager.py,sha256=DWjgmjYJuOagw2erin506UUbG2H5UzZCFEekS-7hmfA,9087
20
- modal/_watcher.py,sha256=K6LYnlmSGQB4tWWI9JADv-tvSvQ1j522FwT71B51CX8,3584
21
- modal/app.py,sha256=W-24GIIBTKBqBWF6n4aB_heUhCb8d4KJfGF8oWteZn8,52454
22
- modal/app.pyi,sha256=6wlYK9nNp0GuHXyUxGmcZ6J92EjsWS-KK6KRuejqXEY,49718
23
- modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
24
- modal/client.py,sha256=kyAIVB3Ay-XKJizQ_1ufUFB__EagV0MLmHJpyYyJ7J0,18636
25
- modal/client.pyi,sha256=57Tez1O5fiSJA40Rrnv6rO0MZah5jWMlUEPSZeFapjc,15831
26
- modal/cloud_bucket_mount.py,sha256=I2GRXYhOWLIz2kJZjXu75jAm9EJkBNcutGc6jR2ReUw,5928
27
- modal/cloud_bucket_mount.pyi,sha256=VuUOipMIHqFXMkD-3g2bsoqpSxV5qswlFHDOqPQzYAo,7405
28
- modal/cls.py,sha256=IZG9gLlssbhTgIn6iSEmBSKkbbkst3skASMae-59FII,40239
29
- modal/cls.pyi,sha256=jJsDPFoqzM4ht-V-e-xEJKJ5TINLF0fYtoBm_UeAW5Y,27281
30
- modal/config.py,sha256=OLxJU1K7ijiV_65g700QcHX8hIPH-dgzuybyQAOf6cg,12333
31
- modal/container_process.py,sha256=Mutkl7sg_WR5zP4oJiWSC-3UdYRqp0zdKi1shZbi-bk,6996
32
- modal/container_process.pyi,sha256=9m-st3hCUlNN1GOTctfPPvIvoLtEl7FbuGWwif5-7YU,6037
33
- modal/dict.py,sha256=XkaxuojMVtcc4bZvCjJcd6DedU5xxfF8H4w-mDzFPCo,21580
34
- modal/dict.pyi,sha256=deOiwuwZtwXqedC3h19SwoQIWc4mUnDTBM5XkONt48Y,31712
35
- modal/environments.py,sha256=xXYDfgzd20CuFdww_zQ53OB0qANQG-j_ls_fT7mGdoQ,6028
36
- modal/environments.pyi,sha256=YwI2zClQ5vZHqqKaBJYX2eK4QHRlUuqRlF0lM1JrMOs,3673
37
- modal/exception.py,sha256=o0V93PK8Hcg2YQ2aeOB1Y-qWBw4Gz5ATfyokR8GapuQ,5634
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
- modal/functions.py,sha256=kcNHvqeGBxPI7Cgd57NIBBghkfbeFJzXO44WW0jSmao,325
42
- modal/functions.pyi,sha256=Z6VuukLrjASAgf0kV9I6c09WvP_b2gCujX6f9j2bBaw,37988
43
- modal/gpu.py,sha256=Fe5ORvVPDIstSq1xjmM6OoNgLYFWvogP9r5BgmD3hYg,6769
44
- modal/image.py,sha256=HDkOnhIAN8g63a8LTN4J5SjC9ciReFQQJIxTS2z5KFM,107216
45
- modal/image.pyi,sha256=dMvMwAuvWkNN2BRYJFijkEy2m_xtEXgCKK0T7FVldsc,77514
46
- modal/io_streams.py,sha256=hZOVc5beOAm8S_VQQmmKUbk_BJ9OltN83RY0yMPqUDo,16545
47
- modal/io_streams.pyi,sha256=aOun_jUFKHSJyUY6-7gKvNoxzcULsa8_hxdtEO7v-gk,13980
48
- modal/mount.py,sha256=G7_xhQMZqokgfsaFLMch0YR3fs-OUNqYUm3f4jHTSMQ,33161
49
- modal/mount.pyi,sha256=MD_zV2M7eCWxbOpQRjU60aHevN-bmbiywaCX82QoFlw,15380
50
- modal/network_file_system.py,sha256=ZdEIRgdcR-p_ILyw_AecEtPOhhrSWJeADYCtFnhtaHM,13509
51
- modal/network_file_system.pyi,sha256=zF4PIaiuIaC4OLQ0YCj1e2O3uepW9-2Jo1T3blc7RVg,15365
52
- modal/object.py,sha256=bTeskuY8JFrESjU4_UL_nTwYlBQdOLmVaOX3X6EMxsg,164
53
- modal/object.pyi,sha256=qlyVVMezW3XgJe_iqhtzWRSki3Nuk-KrpXc1g-r8ujA,6944
54
- modal/output.py,sha256=q4T9uHduunj4NwY-YSwkHGgjZlCXMuJbfQ5UFaAGRAc,1968
55
- modal/parallel_map.py,sha256=BkAQER2p3uus2VaODO6r_NhYDGtrh6dBF4AK2AhfIGI,69110
56
- modal/parallel_map.pyi,sha256=NZrtfZljig59hcMKU7Cz8lYZZFOiwK9l7oWrBtX6Oy8,15838
57
- modal/partial_function.py,sha256=aIdlGfTjjgqY6Fpr-biCjvRU9W542_S5N2xkNN_rYGM,1127
58
- modal/partial_function.pyi,sha256=lqqOzZ9-QvHTDWKQ_oAYYOvsXgTOBKhO9u-RI98JbUk,13986
59
- modal/proxy.py,sha256=CQydu_NPDgApN2GLdd7rrcg8PM-pXyFdVYcTaGMBRCQ,1491
60
- modal/proxy.pyi,sha256=yWGWwADCRGrC2w81B7671UTH4Uv3HMZKy5vVqlJUZoA,1417
61
- modal/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
- modal/queue.py,sha256=aaH3SNWeh_HjEyVUtFiN345v0GJFoucJ6aNDrDggWZQ,25775
63
- modal/queue.pyi,sha256=mFu7GFFVFNLU9VZshnfekEsb-ABgpjdhJ07KXHvdv3A,37256
64
- modal/retries.py,sha256=IvNLDM0f_GLUDD5VgEDoN09C88yoxSrCquinAuxT1Sc,5205
65
- modal/runner.py,sha256=A_zaRmJ4dNpQJWNlwUI_GJIy2GMuaQBRjMAabX0Fmvg,24599
66
- modal/runner.pyi,sha256=vUDRKqLz09QvZsaCH1gTG_iujewj-eGxxb6-VmN6eAw,8531
67
- modal/running_app.py,sha256=v61mapYNV1-O-Uaho5EfJlryMLvIT9We0amUOSvSGx8,1188
68
- modal/sandbox.py,sha256=oxFhpz3PuIgybsS4k36EuVmGcEvtYqjJBx0fAFMX7ak,45981
69
- modal/sandbox.pyi,sha256=OXDrF4y6BZDbtjy6XDcIJ4sNy11IU1evjW2gR725a-s,50781
70
- modal/schedule.py,sha256=ng0g0AqNY5GQI9KhkXZQ5Wam5G42glbkqVQsNpBtbDE,3078
71
- modal/scheduler_placement.py,sha256=BAREdOY5HzHpzSBqt6jDVR6YC_jYfHMVqOzkyqQfngU,1235
72
- modal/secret.py,sha256=ThwP-PkwUZwiYkygqumh15n8P_77-N5ZyRWLc6I3r28,18323
73
- modal/secret.pyi,sha256=2dj8FPBlAJodp_yvwwzV0_Q1VevMNpKxri0rDvlIn4U,20493
74
- modal/serving.py,sha256=3I3WBeVbzZY258u9PXBCW_dZBgypq3OhwBuTVvlgubE,4423
75
- modal/serving.pyi,sha256=YfixTaWikyYpwhnNxCHMZnDDQiPmV1xJ87QF91U_WGU,1924
76
- modal/snapshot.py,sha256=E3oxYQkYVRB_LeFBfmUV1Y6vHz8-azXJfC4x7A1QKnI,1455
77
- modal/snapshot.pyi,sha256=0q83hlmWxAhDu8xwZyL5VmYh0i8Tigf7S60or2k30L8,1682
78
- modal/stream_type.py,sha256=A6320qoAAWhEfwOCZfGtymQTu5AfLfJXXgARqooTPvY,417
79
- modal/token_flow.py,sha256=GWpar0gANs71vm9Bd_Cj87UG1K3ljTURbkEjG3JLsrY,7616
80
- modal/token_flow.pyi,sha256=eirYjyqbRiT3GCKMIPHJPpkvBTu8WxDKqSHehWaJI_4,2533
81
- modal/volume.py,sha256=LNfy3GZVuPZdG9LaBjHiLtpw2OdKpuOfOvw6bK1yKT8,51798
82
- modal/volume.pyi,sha256=Fgq-QDo4iwWO-CFAgG879AbbyBuSvwOaIRbGclcTQik,51972
83
- modal/_runtime/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
84
- modal/_runtime/asgi.py,sha256=AOcduIlijmlxhXVWo7AIUhigo-bqm6nDkHj4Q4JLy6o,22607
85
- modal/_runtime/container_io_manager.py,sha256=Q3JUEYrsfWsG0DuuVUiYXAUccfb8RhM8ExQEQJXR0nc,52200
86
- modal/_runtime/container_io_manager.pyi,sha256=GDNLirCcPMRc6gckInYKmGmJZY3LNcgUVXKftt9P9jI,23493
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=8T85kyfGJ11AnhFRCZTeWj9zin9e9f5XbrRqU8_WjAk,11955
90
- modal/_runtime/telemetry.py,sha256=T1RoAGyjBDr1swiM6pPsGRSITm7LI5FDK18oNXxY08U,5163
91
- modal/_runtime/user_code_imports.py,sha256=1MlOgw810aj0MeDvFPvHBIz-aHd7jUX6dwRfIcM3-KE,16498
92
- modal/_utils/__init__.py,sha256=waLjl5c6IPDhSsdWAm9Bji4e2PVxamYABKAze6CHVXY,28
93
- modal/_utils/app_utils.py,sha256=88BT4TPLWfYAQwKTHcyzNQRHg8n9B-QE2UyJs96iV-0,108
94
- modal/_utils/async_utils.py,sha256=7uA4KJV7XRgak5nXZSGRE-RN1h91UOyNwK6v_ilUQMQ,29737
95
- modal/_utils/auth_token_manager.py,sha256=i-kfLgDd4BMAw6wouO5aKfNGHo27VAZoVOsbEWqDr2I,5252
96
- modal/_utils/blob_utils.py,sha256=bmPPHfLy8Kdna8e2xS3lvKwnN5pJUUt_rN39kVIYPFM,22874
97
- modal/_utils/bytes_io_segment_payload.py,sha256=vaXPq8b52-x6G2hwE7SrjS58pg_aRm7gV3bn3yjmTzQ,4261
98
- modal/_utils/deprecation.py,sha256=-Bgg7jZdcJU8lROy18YyVnQYbM8hue-hVmwJqlWAGH0,5504
99
- modal/_utils/docker_utils.py,sha256=h1uETghR40mp_y3fSWuZAfbIASH1HMzuphJHghAL6DU,3722
100
- modal/_utils/function_utils.py,sha256=sXYXLpkGVGChnR-wFGu11-ovW640wePBvcc7f9aTUe8,28505
101
- modal/_utils/git_utils.py,sha256=qtUU6JAttF55ZxYq51y55OR58B0tDPZsZWK5dJe6W5g,3182
102
- modal/_utils/grpc_testing.py,sha256=H1zHqthv19eGPJz2HKXDyWXWGSqO4BRsxah3L5Xaa8A,8619
103
- modal/_utils/grpc_utils.py,sha256=1dQgTvdHG9KSfyVTc26HhKjGnIDJpdDEJ0xZARklOrU,10205
104
- modal/_utils/hash_utils.py,sha256=zg3J6OGxTFGSFri1qQ12giDz90lWk8bzaxCTUCRtiX4,3034
105
- modal/_utils/http_utils.py,sha256=yeTFsXYr0rYMEhB7vBP7audG9Uc7OLhzKBANFDZWVt0,2451
106
- modal/_utils/jwt_utils.py,sha256=fxH9plyrbAemTbjSsQtzIdDXE9QXxvMC4DiUZ16G0aA,1360
107
- modal/_utils/logger.py,sha256=NgbMKFT9chYYt_TU01DdIior5ByYr2gZtrWIk1SFRLc,1782
108
- modal/_utils/mount_utils.py,sha256=gGCgIlWwYiJbUtgFY2GJcWYismYvazbMAeUOgf7NhFQ,3205
109
- modal/_utils/name_utils.py,sha256=CIQL0Y4z47tq0rfNL2Kdo5dxsGrxoN2hR9Ko0HapeE4,2517
110
- modal/_utils/package_utils.py,sha256=LcL2olGN4xaUzu2Tbv-C-Ft9Qp6bsLxEfETOAVd-mjU,2073
111
- modal/_utils/pattern_utils.py,sha256=ZUffaECfe2iYBhH6cvCB-0-UWhmEBTZEl_TwG_So3ag,6714
112
- modal/_utils/rand_pb_testing.py,sha256=mmVPk1rZldHwHZx0DnHTuHQlRLAiiAYdxjwEJpxvT9c,3900
113
- modal/_utils/shell_utils.py,sha256=hWHzv730Br2Xyj6cGPiMZ-198Z3RZuOu3pDXhFSZ22c,2157
114
- modal/_utils/time_utils.py,sha256=43tpFVwT7ykOjlETIFLVt9auMsRZqYYRYBEKxGCrRSA,1212
115
- modal/_vendor/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
116
- modal/_vendor/a2wsgi_wsgi.py,sha256=Q1AsjpV_Q_vzQsz_cSqmP9jWzsGsB-ARFU6vpQYml8k,21878
117
- modal/_vendor/cloudpickle.py,sha256=avxOIgNKqL9KyPNuIOVQzBm0D1l9ipeB4RrcUMUGmeQ,55216
118
- modal/_vendor/tblib.py,sha256=g1O7QUDd3sDoLd8YPFltkXkih7r_fyZOjgmGuligv3s,9722
119
- modal/builder/2023.12.312.txt,sha256=zWWUVgVQ92GXBKNYYr2-5vn9rlnXcmkqlwlX5u1eTYw,400
120
- modal/builder/2023.12.txt,sha256=OjsbXFkCSdkzzryZP82Q73osr5wxQ6EUzmGcK7twfkA,502
121
- modal/builder/2024.04.txt,sha256=6NnrbIE-mflwMyKyQ0tsWeY8XFE1kSW9oE8DVDoD8QU,544
122
- modal/builder/2024.10.txt,sha256=qD-5cVIVM9wXesJ6JC89Ew-3m2KjEElUz3jaw_MddRo,296
123
- modal/builder/2025.06.txt,sha256=XM4z76RPnrcbCx3o3sqXijWnumyOGiTCLGhKaaS4xz0,325
124
- modal/builder/PREVIEW.txt,sha256=XM4z76RPnrcbCx3o3sqXijWnumyOGiTCLGhKaaS4xz0,325
125
- modal/builder/README.md,sha256=9tK76KP0Uph7O0M5oUgsSwEZDj5y-dcUPsnpR0Sc-Ik,854
126
- modal/builder/base-images.json,sha256=JYSDAgHTl-WrV_TZW5icY-IJEnbe2eQ4CZ_KN6EOZKU,1304
127
- modal/cli/__init__.py,sha256=6FRleWQxBDT19y7OayO4lBOzuL6Bs9r0rLINYYYbHwQ,769
128
- modal/cli/_download.py,sha256=tV8JFkncTtQKh85bSguQg6AW5aRRlynf-rvyN7ruigc,4337
129
- modal/cli/_traceback.py,sha256=IKj9xtc6LjAxyhGJWolNIXEX3MhAIulnRqywZNOFmkU,7324
130
- modal/cli/app.py,sha256=rbuAG92my-1eZN0olk6p2eD4oBnyBliUsrCOUW-U-9k,7832
131
- modal/cli/cluster.py,sha256=MMdFXqyOOeNO7P2VIUN78xKJLvesLIy_28Dt56XEXhM,3307
132
- modal/cli/config.py,sha256=lhp2Pq4RbTDhaZJ-ZJvhrMqJj8c-WjuRX6gjE3TrvXc,1691
133
- modal/cli/container.py,sha256=9Ti-TIZ6vjDSmn9mk9h6SRwyhkQjtwirBN18LjpLyvE,3719
134
- modal/cli/dict.py,sha256=YAJtiv41YcCd5Fqam3hXCNTs4Y0yOgGR_i6RfQNSAFM,4572
135
- modal/cli/entry_point.py,sha256=F06p54rPOs1xAUeYW76RaimFOgLW_I17RCvNwfZRqPc,4747
136
- modal/cli/environment.py,sha256=LGBq8RVQjfBH3EWz8QgmYe19UO66JKSDNxOXMUjw7JM,4285
137
- modal/cli/import_refs.py,sha256=X59Z5JwgliRO6C-cIFto2Pr7o3SwlZMKQPKA0aI4ZK4,13927
138
- modal/cli/launch.py,sha256=VARim2SCzgtI1ZuxQ6JgTTtvFwGA5czCwQZQHWC8Zcc,6498
139
- modal/cli/network_file_system.py,sha256=I9IqTpVfk32uKYwGd8LTldkQx6UKYrQYNZ26q7Ab5Oo,8126
140
- modal/cli/profile.py,sha256=g8X6tFFK9ccKyu2he9Yu19WLSLNdztzECgmIV__XJFs,3257
141
- modal/cli/queues.py,sha256=5vKtKQ7YExdaxNPYZ0g5suU9sX0-F5h0zy0qBV-hN80,6140
142
- modal/cli/run.py,sha256=PHqAt2H_NTAK5FjwNovNqfCaYmTYvxFDqty7Ar8EEA0,25438
143
- modal/cli/secret.py,sha256=-Nnk3fq1IEzMtC9VUn61AKmdvZzZ9XQyiKVgQYRpajo,8127
144
- modal/cli/token.py,sha256=NAmQzKBfEHkcldWKeFxAVIqQBoo1RTp7_A4yc7-8qM0,1911
145
- modal/cli/utils.py,sha256=aUXDU9_VgcJrGaGRy4bGf4dqwKYXHCpoO27x4m_bpuo,3293
146
- modal/cli/volume.py,sha256=QUHG28kKuL0UG6gO3wNdLQD1yVBUNVNZL70bxs0jBNo,10759
147
- modal/cli/programs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
148
- modal/cli/programs/launch_instance_ssh.py,sha256=GrwK_Vy8-7B4x5a6AqFaF7lqNVgu75JYZ2BtFV0_DOw,2660
149
- modal/cli/programs/run_jupyter.py,sha256=IJw8nds8Cjl9j4dxBqMGxhz-bIyVX0kle7jbt8HFOhM,2688
150
- modal/cli/programs/run_marimo.py,sha256=QlCGPkwQ0XLajt2LtujR_BGsRV1AZ3OCUgZxkkM1lug,2893
151
- modal/cli/programs/vscode.py,sha256=E1aJPU7b8RWWj-JX71DifsCoLYsCAnre7lATiBJjUms,3386
152
- modal/experimental/__init__.py,sha256=9gkVuDmu3m4TlKoU3MzEtTOemUSs8EEOWba40s7Aa0M,14043
153
- modal/experimental/flash.py,sha256=C4sef08rARYFllsgtqukFmYL18SZW0_JpMS0BejDcUs,28552
154
- modal/experimental/flash.pyi,sha256=vV_OQhtdrPn8SW0XrBK-aLLHHIvxAzLzwFbWrke-m74,15463
155
- modal/experimental/ipython.py,sha256=TrCfmol9LGsRZMeDoeMPx3Hv3BFqQhYnmD_iH0pqdhk,2904
156
- modal-1.1.5.dev83.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
157
- modal_docs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
158
- modal_docs/gen_cli_docs.py,sha256=c1yfBS_x--gL5bs0N4ihMwqwX8l3IBWSkBAKNNIi6bQ,3801
159
- modal_docs/gen_reference_docs.py,sha256=d_CQUGQ0rfw28u75I2mov9AlS773z9rG40-yq5o7g2U,6359
160
- modal_docs/mdmd/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
161
- modal_docs/mdmd/mdmd.py,sha256=tUTImNd4UMFk1opkaw8J672gX8AkBO5gbY2S_NMxsxs,7140
162
- modal_docs/mdmd/signatures.py,sha256=XJaZrK7Mdepk5fdX51A8uENiLFNil85Ud0d4MH8H5f0,3218
163
- modal_proto/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
164
- modal_proto/api.proto,sha256=BJvChnmHwPHqAzPctoawlFbH_UNNw8Fut88FNfbRSHk,108830
165
- modal_proto/api_grpc.py,sha256=plTpsjLCcRpciQdTxwh1Y6fZaAMBbSzoUYFOTF9uMIE,135333
166
- modal_proto/api_pb2.py,sha256=AXfiWULiO4EcttRDWnqZVImhXIvZVqv0Xbf1ojRAc_k,381192
167
- modal_proto/api_pb2.pyi,sha256=5qCe0VixKCd2TMSmtpgJuiF9pMbfP9ZLG76z7M5iN98,532059
168
- modal_proto/api_pb2_grpc.py,sha256=KGm4HHBQsge8Ww3eSVr9KWbl1IPomf-l3qqbfXWrej0,291534
169
- modal_proto/api_pb2_grpc.pyi,sha256=FVAP6dDZgGHVR3xP7ZxrUVQZLXY0PgT9EG3l2UXh10w,68311
170
- modal_proto/modal_api_grpc.py,sha256=WDbmh9XNSXIsnQ3KePkDlclEHRQpeDtRBuBIdGsvvHU,20394
171
- modal_proto/modal_options_grpc.py,sha256=qJ1cuwA54oRqrdTyPTbvfhFZYd9HhJKK5UCwt523r3Y,120
172
- modal_proto/options.proto,sha256=zp9h5r61ivsp0XwEWwNBsVqNTbRA1VSY_UtN7sEcHtE,549
173
- modal_proto/options_grpc.py,sha256=M18X3d-8F_cNYSVM3I25dUTO5rZ0rd-vCCfynfh13Nc,125
174
- modal_proto/options_pb2.py,sha256=sD482Yqmy3kpyVpg7Yy55j7nHeQlmLpveQPP1npM5b4,1944
175
- modal_proto/options_pb2.pyi,sha256=l7DBrbLO7q3Ir-XDkWsajm0d0TQqqrfuX54i4BMpdQg,1018
176
- modal_proto/options_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
177
- modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0yJSI,247
178
- modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
179
- modal_proto/sandbox_router.proto,sha256=NWmNYbxgcGoV3XlR-pp8cQEgyVNn43U83e4gyWjKtmQ,5296
180
- modal_proto/sandbox_router_grpc.py,sha256=27daOTX2N5hADDG-5Qnn4Yj3VfekyJwrDUkrQ12mPuU,5004
181
- modal_proto/sandbox_router_pb2.py,sha256=QTT32WuusbyZwciNo-UUa6wl9-juOE2xRlv0JrB6WYw,10743
182
- modal_proto/sandbox_router_pb2.pyi,sha256=Ihf7LHmh0V5XfMHwYQobZiQ1_3xPoDJgIueyUxC4fMQ,15088
183
- modal_proto/sandbox_router_pb2_grpc.py,sha256=8kPFo84rpRHfeRdZuHyoWuuIAphGmjM0s3ygGJSBVck,10006
184
- modal_proto/sandbox_router_pb2_grpc.pyi,sha256=iAr1ornlIEYP7pfrFMrw91-F3PNs7amH6z6J2oCwYxk,3276
185
- modal_version/__init__.py,sha256=AspLz1bnxO9dw0LzXWLGTLKiv1HAt5dF6lPm9Y0tYAk,121
186
- modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
187
- modal-1.1.5.dev83.dist-info/METADATA,sha256=hZOgpV32Kz6qfRnvjNZxpsggjN7bTQwwesbrvaMJ3Aw,2481
188
- modal-1.1.5.dev83.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
189
- modal-1.1.5.dev83.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
190
- modal-1.1.5.dev83.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
191
- modal-1.1.5.dev83.dist-info/RECORD,,
@@ -1,3 +0,0 @@
1
- # Generated by the Modal Protocol Buffers compiler. DO NOT EDIT!
2
- # source: modal_proto/options.proto
3
- # plugin: __main__
modal_proto/options.proto DELETED
@@ -1,19 +0,0 @@
1
- // Defines custom options used internally at Modal.
2
- // Custom options must be in the range 50000-99999.
3
- // Reference: https://protobuf.dev/programming-guides/proto2/#customoptions
4
- syntax = "proto3";
5
-
6
- option go_package = "github.com/modal-labs/modal/go/proto";
7
-
8
- import "google/protobuf/descriptor.proto";
9
-
10
- package modal.options;
11
-
12
- extend google.protobuf.FieldOptions {
13
- optional bool audit_target_attr = 50000;
14
- }
15
-
16
- extend google.protobuf.MethodOptions {
17
- optional string audit_event_name = 50000;
18
- optional string audit_event_description = 50001;
19
- }
@@ -1,3 +0,0 @@
1
- # Generated by the Protocol Buffers compiler. DO NOT EDIT!
2
- # source: modal_proto/options.proto
3
- # plugin: grpclib.plugin.main
@@ -1,35 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- # Generated by the protocol buffer compiler. DO NOT EDIT!
3
- # source: modal_proto/options.proto
4
- """Generated protocol buffer code."""
5
- from google.protobuf import descriptor as _descriptor
6
- from google.protobuf import descriptor_pool as _descriptor_pool
7
- from google.protobuf import message as _message
8
- from google.protobuf import reflection as _reflection
9
- from google.protobuf import symbol_database as _symbol_database
10
- # @@protoc_insertion_point(imports)
11
-
12
- _sym_db = _symbol_database.Default()
13
-
14
-
15
- from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2
16
-
17
-
18
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x19modal_proto/options.proto\x12\rmodal.options\x1a google/protobuf/descriptor.proto:=\n\x11\x61udit_target_attr\x12\x1d.google.protobuf.FieldOptions\x18\xd0\x86\x03 \x01(\x08\x88\x01\x01:=\n\x10\x61udit_event_name\x12\x1e.google.protobuf.MethodOptions\x18\xd0\x86\x03 \x01(\t\x88\x01\x01:D\n\x17\x61udit_event_description\x12\x1e.google.protobuf.MethodOptions\x18\xd1\x86\x03 \x01(\t\x88\x01\x01\x42&Z$github.com/modal-labs/modal/go/protob\x06proto3')
19
-
20
-
21
- AUDIT_TARGET_ATTR_FIELD_NUMBER = 50000
22
- audit_target_attr = DESCRIPTOR.extensions_by_name['audit_target_attr']
23
- AUDIT_EVENT_NAME_FIELD_NUMBER = 50000
24
- audit_event_name = DESCRIPTOR.extensions_by_name['audit_event_name']
25
- AUDIT_EVENT_DESCRIPTION_FIELD_NUMBER = 50001
26
- audit_event_description = DESCRIPTOR.extensions_by_name['audit_event_description']
27
-
28
- if _descriptor._USE_C_DESCRIPTORS == False:
29
- google_dot_protobuf_dot_descriptor__pb2.FieldOptions.RegisterExtension(audit_target_attr)
30
- google_dot_protobuf_dot_descriptor__pb2.MethodOptions.RegisterExtension(audit_event_name)
31
- google_dot_protobuf_dot_descriptor__pb2.MethodOptions.RegisterExtension(audit_event_description)
32
-
33
- DESCRIPTOR._options = None
34
- DESCRIPTOR._serialized_options = b'Z$github.com/modal-labs/modal/go/proto'
35
- # @@protoc_insertion_point(module_scope)
@@ -1,20 +0,0 @@
1
- """
2
- @generated by mypy-protobuf. Do not edit manually!
3
- isort:skip_file
4
- Defines custom options used internally at Modal.
5
- Custom options must be in the range 50000-99999.
6
- Reference: https://protobuf.dev/programming-guides/proto2/#customoptions
7
- """
8
- import builtins
9
- import google.protobuf.descriptor
10
- import google.protobuf.descriptor_pb2
11
- import google.protobuf.internal.extension_dict
12
-
13
- DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
14
-
15
- AUDIT_TARGET_ATTR_FIELD_NUMBER: builtins.int
16
- AUDIT_EVENT_NAME_FIELD_NUMBER: builtins.int
17
- AUDIT_EVENT_DESCRIPTION_FIELD_NUMBER: builtins.int
18
- audit_target_attr: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.FieldOptions, builtins.bool]
19
- audit_event_name: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MethodOptions, builtins.str]
20
- audit_event_description: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MethodOptions, builtins.str]
@@ -1,4 +0,0 @@
1
- # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
- """Client and server classes corresponding to protobuf-defined services."""
3
- import grpc
4
-
@@ -1,7 +0,0 @@
1
- """
2
- @generated by mypy-protobuf. Do not edit manually!
3
- isort:skip_file
4
- Defines custom options used internally at Modal.
5
- Custom options must be in the range 50000-99999.
6
- Reference: https://protobuf.dev/programming-guides/proto2/#customoptions
7
- """