modal 0.67.1__py3-none-any.whl → 0.67.33__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.
Files changed (113) hide show
  1. modal/_clustered_functions.py +2 -2
  2. modal/_clustered_functions.pyi +2 -2
  3. modal/_container_entrypoint.py +8 -5
  4. modal/_output.py +29 -28
  5. modal/_pty.py +2 -2
  6. modal/_resolver.py +6 -5
  7. modal/_resources.py +3 -3
  8. modal/_runtime/asgi.py +46 -6
  9. modal/_runtime/container_io_manager.py +22 -26
  10. modal/_runtime/execution_context.py +2 -2
  11. modal/_runtime/telemetry.py +1 -2
  12. modal/_runtime/user_code_imports.py +12 -14
  13. modal/_serialization.py +3 -7
  14. modal/_traceback.py +5 -5
  15. modal/_tunnel.py +5 -4
  16. modal/_tunnel.pyi +2 -2
  17. modal/_utils/async_utils.py +53 -17
  18. modal/_utils/blob_utils.py +22 -7
  19. modal/_utils/function_utils.py +20 -10
  20. modal/_utils/grpc_testing.py +7 -6
  21. modal/_utils/grpc_utils.py +2 -3
  22. modal/_utils/hash_utils.py +2 -2
  23. modal/_utils/mount_utils.py +5 -4
  24. modal/_utils/package_utils.py +2 -3
  25. modal/_utils/pattern_matcher.py +6 -6
  26. modal/_utils/rand_pb_testing.py +3 -3
  27. modal/_utils/shell_utils.py +2 -1
  28. modal/_vendor/a2wsgi_wsgi.py +62 -72
  29. modal/_vendor/cloudpickle.py +1 -1
  30. modal/_watcher.py +8 -7
  31. modal/app.py +68 -62
  32. modal/app.pyi +104 -99
  33. modal/call_graph.py +6 -6
  34. modal/cli/_download.py +3 -2
  35. modal/cli/_traceback.py +4 -4
  36. modal/cli/app.py +4 -4
  37. modal/cli/container.py +4 -4
  38. modal/cli/dict.py +1 -1
  39. modal/cli/environment.py +2 -3
  40. modal/cli/import_refs.py +1 -1
  41. modal/cli/launch.py +2 -2
  42. modal/cli/network_file_system.py +1 -1
  43. modal/cli/profile.py +1 -1
  44. modal/cli/programs/run_jupyter.py +2 -2
  45. modal/cli/programs/vscode.py +3 -3
  46. modal/cli/queues.py +1 -1
  47. modal/cli/run.py +6 -6
  48. modal/cli/secret.py +3 -3
  49. modal/cli/utils.py +2 -1
  50. modal/cli/volume.py +3 -3
  51. modal/client.py +6 -11
  52. modal/client.pyi +18 -27
  53. modal/cloud_bucket_mount.py +3 -3
  54. modal/cloud_bucket_mount.pyi +2 -2
  55. modal/cls.py +100 -47
  56. modal/cls.pyi +40 -40
  57. modal/config.py +3 -2
  58. modal/container_process.py +6 -2
  59. modal/dict.py +6 -3
  60. modal/dict.pyi +10 -9
  61. modal/environments.py +3 -3
  62. modal/environments.pyi +3 -3
  63. modal/exception.py +2 -3
  64. modal/functions.py +112 -104
  65. modal/functions.pyi +77 -58
  66. modal/image.py +59 -57
  67. modal/image.pyi +104 -103
  68. modal/io_streams.py +20 -12
  69. modal/io_streams.pyi +24 -14
  70. modal/mount.py +24 -24
  71. modal/mount.pyi +28 -29
  72. modal/network_file_system.py +14 -11
  73. modal/network_file_system.pyi +12 -11
  74. modal/object.py +9 -8
  75. modal/object.pyi +47 -34
  76. modal/output.py +2 -1
  77. modal/parallel_map.py +4 -4
  78. modal/partial_function.py +10 -14
  79. modal/partial_function.pyi +17 -18
  80. modal/queue.py +11 -8
  81. modal/queue.pyi +23 -22
  82. modal/retries.py +38 -0
  83. modal/runner.py +8 -7
  84. modal/runner.pyi +8 -14
  85. modal/running_app.py +3 -3
  86. modal/sandbox.py +20 -13
  87. modal/sandbox.pyi +73 -72
  88. modal/scheduler_placement.py +2 -1
  89. modal/secret.py +7 -7
  90. modal/secret.pyi +12 -12
  91. modal/serving.py +4 -3
  92. modal/serving.pyi +5 -4
  93. modal/token_flow.py +3 -2
  94. modal/token_flow.pyi +3 -3
  95. modal/volume.py +16 -23
  96. modal/volume.pyi +17 -16
  97. {modal-0.67.1.dist-info → modal-0.67.33.dist-info}/METADATA +2 -2
  98. modal-0.67.33.dist-info/RECORD +168 -0
  99. modal_docs/mdmd/signatures.py +1 -2
  100. modal_global_objects/mounts/python_standalone.py +1 -1
  101. modal_proto/api.proto +15 -0
  102. modal_proto/api_grpc.py +32 -0
  103. modal_proto/api_pb2.py +674 -654
  104. modal_proto/api_pb2.pyi +45 -1
  105. modal_proto/api_pb2_grpc.py +66 -0
  106. modal_proto/api_pb2_grpc.pyi +20 -0
  107. modal_proto/modal_api_grpc.py +2 -0
  108. modal_version/_version_generated.py +1 -1
  109. modal-0.67.1.dist-info/RECORD +0 -168
  110. {modal-0.67.1.dist-info → modal-0.67.33.dist-info}/LICENSE +0 -0
  111. {modal-0.67.1.dist-info → modal-0.67.33.dist-info}/WHEEL +0 -0
  112. {modal-0.67.1.dist-info → modal-0.67.33.dist-info}/entry_points.txt +0 -0
  113. {modal-0.67.1.dist-info → modal-0.67.33.dist-info}/top_level.txt +0 -0
modal_proto/api_pb2.pyi CHANGED
@@ -1806,12 +1806,14 @@ class CheckpointInfo(google.protobuf.message.Message):
1806
1806
  RUNTIME_FINGERPRINT_FIELD_NUMBER: builtins.int
1807
1807
  SIZE_FIELD_NUMBER: builtins.int
1808
1808
  CHECKSUM_IS_FILE_INDEX_FIELD_NUMBER: builtins.int
1809
+ ORIGINAL_TASK_ID_FIELD_NUMBER: builtins.int
1809
1810
  checksum: builtins.str
1810
1811
  status: global___CheckpointStatus.ValueType
1811
1812
  checkpoint_id: builtins.str
1812
1813
  runtime_fingerprint: builtins.str
1813
1814
  size: builtins.int
1814
1815
  checksum_is_file_index: builtins.bool
1816
+ original_task_id: builtins.str
1815
1817
  def __init__(
1816
1818
  self,
1817
1819
  *,
@@ -1821,8 +1823,9 @@ class CheckpointInfo(google.protobuf.message.Message):
1821
1823
  runtime_fingerprint: builtins.str = ...,
1822
1824
  size: builtins.int = ...,
1823
1825
  checksum_is_file_index: builtins.bool = ...,
1826
+ original_task_id: builtins.str = ...,
1824
1827
  ) -> None: ...
1825
- def ClearField(self, field_name: typing_extensions.Literal["checkpoint_id", b"checkpoint_id", "checksum", b"checksum", "checksum_is_file_index", b"checksum_is_file_index", "runtime_fingerprint", b"runtime_fingerprint", "size", b"size", "status", b"status"]) -> None: ...
1828
+ def ClearField(self, field_name: typing_extensions.Literal["checkpoint_id", b"checkpoint_id", "checksum", b"checksum", "checksum_is_file_index", b"checksum_is_file_index", "original_task_id", b"original_task_id", "runtime_fingerprint", b"runtime_fingerprint", "size", b"size", "status", b"status"]) -> None: ...
1826
1829
 
1827
1830
  global___CheckpointInfo = CheckpointInfo
1828
1831
 
@@ -6852,6 +6855,47 @@ class SandboxListResponse(google.protobuf.message.Message):
6852
6855
 
6853
6856
  global___SandboxListResponse = SandboxListResponse
6854
6857
 
6858
+ class SandboxSnapshotFsRequest(google.protobuf.message.Message):
6859
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
6860
+
6861
+ SANDBOX_ID_FIELD_NUMBER: builtins.int
6862
+ TIMEOUT_FIELD_NUMBER: builtins.int
6863
+ sandbox_id: builtins.str
6864
+ timeout: builtins.float
6865
+ def __init__(
6866
+ self,
6867
+ *,
6868
+ sandbox_id: builtins.str = ...,
6869
+ timeout: builtins.float = ...,
6870
+ ) -> None: ...
6871
+ def ClearField(self, field_name: typing_extensions.Literal["sandbox_id", b"sandbox_id", "timeout", b"timeout"]) -> None: ...
6872
+
6873
+ global___SandboxSnapshotFsRequest = SandboxSnapshotFsRequest
6874
+
6875
+ class SandboxSnapshotFsResponse(google.protobuf.message.Message):
6876
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
6877
+
6878
+ IMAGE_ID_FIELD_NUMBER: builtins.int
6879
+ RESULT_FIELD_NUMBER: builtins.int
6880
+ IMAGE_METADATA_FIELD_NUMBER: builtins.int
6881
+ image_id: builtins.str
6882
+ @property
6883
+ def result(self) -> global___GenericResult: ...
6884
+ @property
6885
+ def image_metadata(self) -> global___ImageMetadata:
6886
+ """Metadata may be empty since we may skip it for performance reasons."""
6887
+ def __init__(
6888
+ self,
6889
+ *,
6890
+ image_id: builtins.str = ...,
6891
+ result: global___GenericResult | None = ...,
6892
+ image_metadata: global___ImageMetadata | None = ...,
6893
+ ) -> None: ...
6894
+ def HasField(self, field_name: typing_extensions.Literal["image_metadata", b"image_metadata", "result", b"result"]) -> builtins.bool: ...
6895
+ def ClearField(self, field_name: typing_extensions.Literal["image_id", b"image_id", "image_metadata", b"image_metadata", "result", b"result"]) -> None: ...
6896
+
6897
+ global___SandboxSnapshotFsResponse = SandboxSnapshotFsResponse
6898
+
6855
6899
  class SandboxStdinWriteRequest(google.protobuf.message.Message):
6856
6900
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
6857
6901
 
@@ -155,6 +155,11 @@ class ModalClientStub(object):
155
155
  request_serializer=modal__proto_dot_api__pb2.ContainerHeartbeatRequest.SerializeToString,
156
156
  response_deserializer=modal__proto_dot_api__pb2.ContainerHeartbeatResponse.FromString,
157
157
  )
158
+ self.ContainerHello = channel.unary_unary(
159
+ '/modal.client.ModalClient/ContainerHello',
160
+ request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
161
+ response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
162
+ )
158
163
  self.ContainerLog = channel.unary_unary(
159
164
  '/modal.client.ModalClient/ContainerLog',
160
165
  request_serializer=modal__proto_dot_api__pb2.ContainerLogRequest.SerializeToString,
@@ -480,6 +485,11 @@ class ModalClientStub(object):
480
485
  request_serializer=modal__proto_dot_api__pb2.SandboxListRequest.SerializeToString,
481
486
  response_deserializer=modal__proto_dot_api__pb2.SandboxListResponse.FromString,
482
487
  )
488
+ self.SandboxSnapshotFs = channel.unary_unary(
489
+ '/modal.client.ModalClient/SandboxSnapshotFs',
490
+ request_serializer=modal__proto_dot_api__pb2.SandboxSnapshotFsRequest.SerializeToString,
491
+ response_deserializer=modal__proto_dot_api__pb2.SandboxSnapshotFsResponse.FromString,
492
+ )
483
493
  self.SandboxStdinWrite = channel.unary_unary(
484
494
  '/modal.client.ModalClient/SandboxStdinWrite',
485
495
  request_serializer=modal__proto_dot_api__pb2.SandboxStdinWriteRequest.SerializeToString,
@@ -838,6 +848,12 @@ class ModalClientServicer(object):
838
848
  context.set_details('Method not implemented!')
839
849
  raise NotImplementedError('Method not implemented!')
840
850
 
851
+ def ContainerHello(self, request, context):
852
+ """Missing associated documentation comment in .proto file."""
853
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
854
+ context.set_details('Method not implemented!')
855
+ raise NotImplementedError('Method not implemented!')
856
+
841
857
  def ContainerLog(self, request, context):
842
858
  """Missing associated documentation comment in .proto file."""
843
859
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
@@ -1241,6 +1257,12 @@ class ModalClientServicer(object):
1241
1257
  context.set_details('Method not implemented!')
1242
1258
  raise NotImplementedError('Method not implemented!')
1243
1259
 
1260
+ def SandboxSnapshotFs(self, request, context):
1261
+ """Missing associated documentation comment in .proto file."""
1262
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
1263
+ context.set_details('Method not implemented!')
1264
+ raise NotImplementedError('Method not implemented!')
1265
+
1244
1266
  def SandboxStdinWrite(self, request, context):
1245
1267
  """Missing associated documentation comment in .proto file."""
1246
1268
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
@@ -1607,6 +1629,11 @@ def add_ModalClientServicer_to_server(servicer, server):
1607
1629
  request_deserializer=modal__proto_dot_api__pb2.ContainerHeartbeatRequest.FromString,
1608
1630
  response_serializer=modal__proto_dot_api__pb2.ContainerHeartbeatResponse.SerializeToString,
1609
1631
  ),
1632
+ 'ContainerHello': grpc.unary_unary_rpc_method_handler(
1633
+ servicer.ContainerHello,
1634
+ request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
1635
+ response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
1636
+ ),
1610
1637
  'ContainerLog': grpc.unary_unary_rpc_method_handler(
1611
1638
  servicer.ContainerLog,
1612
1639
  request_deserializer=modal__proto_dot_api__pb2.ContainerLogRequest.FromString,
@@ -1932,6 +1959,11 @@ def add_ModalClientServicer_to_server(servicer, server):
1932
1959
  request_deserializer=modal__proto_dot_api__pb2.SandboxListRequest.FromString,
1933
1960
  response_serializer=modal__proto_dot_api__pb2.SandboxListResponse.SerializeToString,
1934
1961
  ),
1962
+ 'SandboxSnapshotFs': grpc.unary_unary_rpc_method_handler(
1963
+ servicer.SandboxSnapshotFs,
1964
+ request_deserializer=modal__proto_dot_api__pb2.SandboxSnapshotFsRequest.FromString,
1965
+ response_serializer=modal__proto_dot_api__pb2.SandboxSnapshotFsResponse.SerializeToString,
1966
+ ),
1935
1967
  'SandboxStdinWrite': grpc.unary_unary_rpc_method_handler(
1936
1968
  servicer.SandboxStdinWrite,
1937
1969
  request_deserializer=modal__proto_dot_api__pb2.SandboxStdinWriteRequest.FromString,
@@ -2598,6 +2630,23 @@ class ModalClient(object):
2598
2630
  options, channel_credentials,
2599
2631
  insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
2600
2632
 
2633
+ @staticmethod
2634
+ def ContainerHello(request,
2635
+ target,
2636
+ options=(),
2637
+ channel_credentials=None,
2638
+ call_credentials=None,
2639
+ insecure=False,
2640
+ compression=None,
2641
+ wait_for_ready=None,
2642
+ timeout=None,
2643
+ metadata=None):
2644
+ return grpc.experimental.unary_unary(request, target, '/modal.client.ModalClient/ContainerHello',
2645
+ google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
2646
+ google_dot_protobuf_dot_empty__pb2.Empty.FromString,
2647
+ options, channel_credentials,
2648
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
2649
+
2601
2650
  @staticmethod
2602
2651
  def ContainerLog(request,
2603
2652
  target,
@@ -3703,6 +3752,23 @@ class ModalClient(object):
3703
3752
  options, channel_credentials,
3704
3753
  insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
3705
3754
 
3755
+ @staticmethod
3756
+ def SandboxSnapshotFs(request,
3757
+ target,
3758
+ options=(),
3759
+ channel_credentials=None,
3760
+ call_credentials=None,
3761
+ insecure=False,
3762
+ compression=None,
3763
+ wait_for_ready=None,
3764
+ timeout=None,
3765
+ metadata=None):
3766
+ return grpc.experimental.unary_unary(request, target, '/modal.client.ModalClient/SandboxSnapshotFs',
3767
+ modal__proto_dot_api__pb2.SandboxSnapshotFsRequest.SerializeToString,
3768
+ modal__proto_dot_api__pb2.SandboxSnapshotFsResponse.FromString,
3769
+ options, channel_credentials,
3770
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
3771
+
3706
3772
  @staticmethod
3707
3773
  def SandboxStdinWrite(request,
3708
3774
  target,
@@ -127,6 +127,10 @@ class ModalClientStub:
127
127
  modal_proto.api_pb2.ContainerHeartbeatRequest,
128
128
  modal_proto.api_pb2.ContainerHeartbeatResponse,
129
129
  ]
130
+ ContainerHello: grpc.UnaryUnaryMultiCallable[
131
+ google.protobuf.empty_pb2.Empty,
132
+ google.protobuf.empty_pb2.Empty,
133
+ ]
130
134
  ContainerLog: grpc.UnaryUnaryMultiCallable[
131
135
  modal_proto.api_pb2.ContainerLogRequest,
132
136
  google.protobuf.empty_pb2.Empty,
@@ -400,6 +404,10 @@ class ModalClientStub:
400
404
  modal_proto.api_pb2.SandboxListRequest,
401
405
  modal_proto.api_pb2.SandboxListResponse,
402
406
  ]
407
+ SandboxSnapshotFs: grpc.UnaryUnaryMultiCallable[
408
+ modal_proto.api_pb2.SandboxSnapshotFsRequest,
409
+ modal_proto.api_pb2.SandboxSnapshotFsResponse,
410
+ ]
403
411
  SandboxStdinWrite: grpc.UnaryUnaryMultiCallable[
404
412
  modal_proto.api_pb2.SandboxStdinWriteRequest,
405
413
  modal_proto.api_pb2.SandboxStdinWriteResponse,
@@ -727,6 +735,12 @@ class ModalClientServicer(metaclass=abc.ABCMeta):
727
735
  context: grpc.ServicerContext,
728
736
  ) -> modal_proto.api_pb2.ContainerHeartbeatResponse: ...
729
737
  @abc.abstractmethod
738
+ def ContainerHello(
739
+ self,
740
+ request: google.protobuf.empty_pb2.Empty,
741
+ context: grpc.ServicerContext,
742
+ ) -> google.protobuf.empty_pb2.Empty: ...
743
+ @abc.abstractmethod
730
744
  def ContainerLog(
731
745
  self,
732
746
  request: modal_proto.api_pb2.ContainerLogRequest,
@@ -1130,6 +1144,12 @@ class ModalClientServicer(metaclass=abc.ABCMeta):
1130
1144
  context: grpc.ServicerContext,
1131
1145
  ) -> modal_proto.api_pb2.SandboxListResponse: ...
1132
1146
  @abc.abstractmethod
1147
+ def SandboxSnapshotFs(
1148
+ self,
1149
+ request: modal_proto.api_pb2.SandboxSnapshotFsRequest,
1150
+ context: grpc.ServicerContext,
1151
+ ) -> modal_proto.api_pb2.SandboxSnapshotFsResponse: ...
1152
+ @abc.abstractmethod
1133
1153
  def SandboxStdinWrite(
1134
1154
  self,
1135
1155
  request: modal_proto.api_pb2.SandboxStdinWriteRequest,
@@ -40,6 +40,7 @@ class ModalClientModal:
40
40
  self.ContainerFilesystemExec = modal.client.UnaryUnaryWrapper(grpclib_stub.ContainerFilesystemExec, client)
41
41
  self.ContainerFilesystemExecGetOutput = modal.client.UnaryStreamWrapper(grpclib_stub.ContainerFilesystemExecGetOutput, client)
42
42
  self.ContainerHeartbeat = modal.client.UnaryUnaryWrapper(grpclib_stub.ContainerHeartbeat, client)
43
+ self.ContainerHello = modal.client.UnaryUnaryWrapper(grpclib_stub.ContainerHello, client)
43
44
  self.ContainerLog = modal.client.UnaryUnaryWrapper(grpclib_stub.ContainerLog, client)
44
45
  self.ContainerStop = modal.client.UnaryUnaryWrapper(grpclib_stub.ContainerStop, client)
45
46
  self.DictClear = modal.client.UnaryUnaryWrapper(grpclib_stub.DictClear, client)
@@ -105,6 +106,7 @@ class ModalClientModal:
105
106
  self.SandboxGetTaskId = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxGetTaskId, client)
106
107
  self.SandboxGetTunnels = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxGetTunnels, client)
107
108
  self.SandboxList = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxList, client)
109
+ self.SandboxSnapshotFs = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxSnapshotFs, client)
108
110
  self.SandboxStdinWrite = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxStdinWrite, client)
109
111
  self.SandboxTagsSet = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxTagsSet, client)
110
112
  self.SandboxTerminate = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxTerminate, client)
@@ -1,4 +1,4 @@
1
1
  # Copyright Modal Labs 2024
2
2
 
3
3
  # Note: Reset this value to -1 whenever you make a minor `0.X` release of the client.
4
- build_number = 1 # git: bd320d8
4
+ build_number = 33 # git: 14899d6
@@ -1,168 +0,0 @@
1
- modal/__init__.py,sha256=Yn8zS7Jxl5uZjPM331Pc4FdSmp9Rt6VdE7TiE4ZKRc8,2151
2
- modal/__main__.py,sha256=scYhGFqh8OJcVDo-VOxIT6CCwxOgzgflYWMnIZiMRqE,2871
3
- modal/_clustered_functions.py,sha256=58spAmCbOk8eyjFKW-H21W-FGyYiJmfpEMK4BnTEUrk,2706
4
- modal/_clustered_functions.pyi,sha256=UQ7DHiQFI3A2Z8kC3gltNHJkQfvgvPuSbFsse9lSPkw,785
5
- modal/_container_entrypoint.py,sha256=qP7TRT92_wKlxR-XuLg1FzJ7w4oknlrWDlp68XE0CwQ,28670
6
- modal/_ipython.py,sha256=HF_DYy0e0qM9WnGDmTY30s1RxzGya9GeORCauCEpRaE,450
7
- modal/_location.py,sha256=S3lSxIU3h9HkWpkJ3Pwo0pqjIOSB1fjeSgUsY3x7eec,1202
8
- modal/_output.py,sha256=SMaLrf1btBzHTV_tH5NzA8ZTWNJh5J0b31iG3sQU8_4,25494
9
- modal/_proxy_tunnel.py,sha256=gnKyCfmVB7x2d1A6c-JDysNIP3kEFxmXzhcXhPrzPn0,1906
10
- modal/_pty.py,sha256=GhzrHKZpoI-YHMDN7LoySlSYLpoJ4yGPSF-fqiNsFrM,1336
11
- modal/_resolver.py,sha256=s2YSLnpZbwUQHLs2ahltvEVDMLRYyIagdTcWr2-qkeA,6760
12
- modal/_resources.py,sha256=zTCcXvmG1erERnTvUcN0r4IjjwVEs4N8fs7OnkpvbJQ,1740
13
- modal/_serialization.py,sha256=b1X44hDP7WDTX3iz3HrPyFJJz51a69luq5Tyhnm1fK0,18762
14
- modal/_traceback.py,sha256=1yNp1Dqq4qRIQp8idDp5PEqjwH4eA8MNI0FhFkCOFgo,4408
15
- modal/_tunnel.py,sha256=SVmQxGbV7dcLwyY9eB2PIWmXw8QQmcKg2ppTcRQgZrU,6283
16
- modal/_tunnel.pyi,sha256=SA_Q0UGB-D9skFjv6CqlTnCEWU67a2xJxfwVdXtar3Y,1259
17
- modal/_watcher.py,sha256=STlDe73R7IS33a_GMW2HnDc3hCDKLdsBfMxRpVh-flA,3581
18
- modal/app.py,sha256=IBOZQBq6T3l-uzNCM4eFWLkWfcc7r3kQExbKpcN4qgA,45486
19
- modal/app.pyi,sha256=sX2BXX_178lp8O_GvwZqsxDdxQi1j3DjNfthMvlMlJU,25273
20
- modal/call_graph.py,sha256=l-Wi6vM8aosCdHTWegcCyGeVJGFdZ_fzlCmbRVPBXFI,2593
21
- modal/client.py,sha256=4SpWb4n0nolITR36kADZl1tYLOg6avukmzZU56UQjCo,16385
22
- modal/client.pyi,sha256=suptGj0uNTcyh19J_hlCmXDW6gj9ojLAeoyqU-6Vb8U,7370
23
- modal/cloud_bucket_mount.py,sha256=eWQhCtMIczpokjfTZEgNBCGO_s5ft46PqTSLfKBykq4,5748
24
- modal/cloud_bucket_mount.pyi,sha256=tTF7M4FR9bTA30cFkz8qq3ZTlFL19NHU_36e_5GgAGA,1424
25
- modal/cls.py,sha256=W3fGE7wdShFwCeWS1oT0LX2_SHBCXy04DgfVt4ggXZA,24692
26
- modal/cls.pyi,sha256=eVQ3QQC2XwGe2rvYFvjQ57d8ToBXbpI6M-9_YyVQkbo,8214
27
- modal/config.py,sha256=bij_YRIynxQtwDmS73BNMR9YZf6CHcqbFYdfRqDrWV0,10929
28
- modal/container_process.py,sha256=c_jBPtyPeSxbIcbLfs_FzTrt-1eErtRSnsfxkDozFoY,5589
29
- modal/container_process.pyi,sha256=k2kClwaSzz11eci1pzFZgCm-ptXapHAyHTOENorlazA,2594
30
- modal/dict.py,sha256=axbUKiXhgOVvE1IrNMK3uHg3rp3N0Uji5elQNijnhH4,12571
31
- modal/dict.pyi,sha256=4Rh5HNzXk99hotPUzoj1kYOHNlEgndZFfA-hlmBtBIc,7223
32
- modal/environments.py,sha256=KwKdrWfSnz2XF5eYXZyd0kdac1x1PVw2uxPYsGy8cys,6517
33
- modal/environments.pyi,sha256=oScvFAclF55-tL9UioLIL_SPBwgy_9O-BBvJ-PLbRgY,3542
34
- modal/exception.py,sha256=K-czk1oK8wFvK8snWrytXSByo2WNb9SJAlgBVPGWZBs,6417
35
- modal/experimental.py,sha256=jFuNbwrNHos47viMB9q-cHJSvf2RDxDdoEcss9plaZE,2302
36
- modal/functions.py,sha256=Z7nTQ51gMyjtSNQNEj55nEhoGWm2scHAFaShfOdPVMM,66939
37
- modal/functions.pyi,sha256=5i5CTK6Eic-80o8NAPXHPujg_qpLj9d95eN71lpYSxE,24375
38
- modal/gpu.py,sha256=r4rL6uH3UJIQthzYvfWauXNyh01WqCPtKZCmmSX1fd4,6881
39
- modal/image.py,sha256=f4OB4gfyaSz3mQjumzEMeZT4Uq0SzsGBMN5NkPQQSec,79550
40
- modal/image.pyi,sha256=3rfae_E0KuNHqdi5j33nHXp_7P3tTkt7QKH5cXYczUc,24672
41
- modal/io_streams.py,sha256=XUsNsxRzDrhkjyb2Hx0hugCoOEz266SHQF8wP-VgsfY,14582
42
- modal/io_streams.pyi,sha256=WJmSI1WvZITUNBO7mnIuJgYdSKdbLaHk10V4GbttAVw,4452
43
- modal/mount.py,sha256=QZ4nabpbNU9tjLIPCq86rlHor9CXzADMkhJWBYfKKgg,27750
44
- modal/mount.pyi,sha256=nywUmeUELLY2OEnAc1NNBHmSxuEylTWBzkh6nuXkkuc,9965
45
- modal/network_file_system.py,sha256=P_LsILecyda1SRHU76Hk4Lq3M1HSx9shFJbaLThzw0U,14071
46
- modal/network_file_system.pyi,sha256=XLyUnDx55ExbJcF_xlKxRax_r06XTvSsQh-a-_EyCOU,7239
47
- modal/object.py,sha256=Qgee_lQJY_583YsGIVrSNuDF_gJA_qmTAeVTVI1tf-g,9637
48
- modal/object.pyi,sha256=uGGD5A2B_mj8jxLfFiHama5wzCcBS_GNvPSKsIfsCO0,8518
49
- modal/output.py,sha256=FtPR7yvjZMgdSKD_KYkIcwYgCOiV9EKYjaj7K55Hjvg,1940
50
- modal/parallel_map.py,sha256=11scW-3n4JWKT2o5xESkc8GncXeyEnOSIgur058Kf8g,16020
51
- modal/parallel_map.pyi,sha256=pOhT0P3DDYlwLx0fR3PTsecA7DI8uOdXC1N8i-ZkyOY,2328
52
- modal/partial_function.py,sha256=xkEqMPG0rnP_BUDqGikerv6uiWxDkwZdIFSdoHMDm2A,28216
53
- modal/partial_function.pyi,sha256=BqKN7It5QLxS2yhhhDX0RgI8EyNMPBD6Duk21kN_fvA,8908
54
- modal/proxy.py,sha256=ZrOsuQP7dSZFq1OrIxalNnt0Zvsnp1h86Th679sSL40,1417
55
- modal/proxy.pyi,sha256=UvygdOYneLTuoDY6hVaMNCyZ947Tmx93IdLjErUqkvM,368
56
- modal/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
- modal/queue.py,sha256=qCBE-V2QRl_taSDUR5bDJL91J0A8xwbTxfEU3taA4Es,18338
58
- modal/queue.pyi,sha256=t5yhDqXRtexy7AVraCexPyT6Xo3QA_H5OxVe_JLzTps,9999
59
- modal/retries.py,sha256=z4dYXdksUcjkefM3vGLkhCQ_m_TUPLJgC4uSYDzWSOU,3750
60
- modal/runner.py,sha256=Yx8SdnxGzHIlqMxhIQiBukF12yj7wh-c6jWwy8w76u8,24081
61
- modal/runner.pyi,sha256=b2qoID4HO-ww6Q0jdboR9iCTxVWTzGiC2taIx7kA-U0,5135
62
- modal/running_app.py,sha256=AhWWCB16_k5R80oQxEVSNrmRq3fVInUCxtXKrAvcEPQ,566
63
- modal/sandbox.py,sha256=_7_sqTrEiC2zFo1XN7UCHA1L9NFXj6Kb6xu6Ecfancg,24878
64
- modal/sandbox.pyi,sha256=LIh3cIs9Wm0x2WBpyLqmlOvqJYB2806sO4JCIJRQOi4,17231
65
- modal/schedule.py,sha256=0ZFpKs1bOxeo5n3HZjoL7OE2ktsb-_oGtq-WJEPO4tY,2615
66
- modal/scheduler_placement.py,sha256=2B7CAR4UMUu5AtFVWgwVFDjkKtppwKY6ek7gD0jzBYI,1208
67
- modal/secret.py,sha256=d65hZF-CQCccEP_6H97gqsLQCUfRetnbycLysbNy6VE,10019
68
- modal/secret.pyi,sha256=lotQ8Z07jx9qP214K7LYU4spT9RGG7CWZcN3rwFIltU,3041
69
- modal/serving.py,sha256=h9JJ2Y4BHwkCPb70UNuwxTNKMfDzcgkgRlXIzKvx6T4,4433
70
- modal/serving.pyi,sha256=0KWUH5rdYnihSv1XB8bK9GokzpfzrCq8Sf6nYlUvQI8,1689
71
- modal/stream_type.py,sha256=A6320qoAAWhEfwOCZfGtymQTu5AfLfJXXgARqooTPvY,417
72
- modal/token_flow.py,sha256=lsVpJACut76AeJLw44vJKMSlpcqp8wcvxdUOoX6CIOc,6754
73
- modal/token_flow.pyi,sha256=qEYP7grgqSA440w7kBREU9Ezeo_NxCT67OciIPgDzcc,1958
74
- modal/volume.py,sha256=5IdcerxXjP9MpAZm9QXPTWRDYZD5UJSFebWGglCha8k,29301
75
- modal/volume.pyi,sha256=3lB6wiC75u3o44cwJVqDsmvR4wsP2JXSxJrVXi9KrK4,11127
76
- modal/_runtime/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
77
- modal/_runtime/asgi.py,sha256=WoAwIiGKpk089MOca3_iA73h36v0uBuoPx0-87ajIDY,19843
78
- modal/_runtime/container_io_manager.py,sha256=qFxBdmOh6Vz_Jc9HW27yM-Wt6rOvhMi1yHUW1CzCneg,44146
79
- modal/_runtime/execution_context.py,sha256=cXEVY4wEK-oZJVJptyj1ZplZvVQ1HDzFsyHxhaY4o8M,2718
80
- modal/_runtime/telemetry.py,sha256=3NbrfwYH6mvDckzdTppymmda2lQKX2oHGc2JwdFZdUc,5191
81
- modal/_runtime/user_code_imports.py,sha256=2COhqA77zwbP__-DWiDHEScHM-Go3CmI-AlKvT_oBOU,14545
82
- modal/_utils/__init__.py,sha256=waLjl5c6IPDhSsdWAm9Bji4e2PVxamYABKAze6CHVXY,28
83
- modal/_utils/app_utils.py,sha256=88BT4TPLWfYAQwKTHcyzNQRHg8n9B-QE2UyJs96iV-0,108
84
- modal/_utils/async_utils.py,sha256=3H4pBC4DW6rCA6hgRux6FMxGqPgHM-G-BTs7KXZiWz4,23958
85
- modal/_utils/blob_utils.py,sha256=pAY22w0oVc6ujGfI7La7HPUMOf42FehIapuhSDeeqEs,15835
86
- modal/_utils/function_utils.py,sha256=28mxgg_-7JF1DDiNnp3iNVsFQkOzMFjORsetdvZZTHU,24475
87
- modal/_utils/grpc_testing.py,sha256=LOzWygTdHINzV-o_Ajbl7sOFbUQFoonP0iKpsJjA_nc,8301
88
- modal/_utils/grpc_utils.py,sha256=tM1Q32VOU2WG733IfVHTLZdiyCe8Ga0f0Dx0iDLLy_8,7724
89
- modal/_utils/hash_utils.py,sha256=HefF7zPQPxFxyx3fpz-AdSm4QsHZNNvgL9-iQHY-_F4,1790
90
- modal/_utils/http_utils.py,sha256=VKXYNPJtrSwZ1ttcXVGQUWmn8cLAXiOTv05g2ac3GbU,2179
91
- modal/_utils/logger.py,sha256=ePzdudrtx9jJCjuO6-bcL_kwUJfi4AwloUmIiNtqkY0,1330
92
- modal/_utils/mount_utils.py,sha256=5MrS5IgD6c46SRzRvenc3zzOh9OWPQ3z7dDEVzT2W6w,3198
93
- modal/_utils/name_utils.py,sha256=TW1iyJedvDNPEJ5UVp93u8xuD5J2gQL_CUt1mgov_aI,1939
94
- modal/_utils/package_utils.py,sha256=Bi7KYfWCV1GLE29PoX_b1JplMauhKj4w_zfygFS9ijQ,2105
95
- modal/_utils/pattern_matcher.py,sha256=y5A_JJEA2neaorJrIiZ1oK6maW01tnGjWjRCj-OktKg,9252
96
- modal/_utils/rand_pb_testing.py,sha256=_dRz09XhVoY9ZO7SN7xqi0MDVT22sY_ONnS0ts_3sUg,3857
97
- modal/_utils/shell_utils.py,sha256=lld-ffjJ_0WW4qHxPY4KlhCEdEw2Fr7N_qm9FU2BqRo,1919
98
- modal/_vendor/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
99
- modal/_vendor/a2wsgi_wsgi.py,sha256=2AnQcS5VhLZxod0trVNxnIYGH1SRbzT3dmJ4owVXzxA,22144
100
- modal/_vendor/cloudpickle.py,sha256=CcpkVlNqP3rtFiPK1Ffpub_i0bc7EThN8kU7nC0WXlc,55225
101
- modal/_vendor/tblib.py,sha256=g1O7QUDd3sDoLd8YPFltkXkih7r_fyZOjgmGuligv3s,9722
102
- modal/cli/__init__.py,sha256=waLjl5c6IPDhSsdWAm9Bji4e2PVxamYABKAze6CHVXY,28
103
- modal/cli/_download.py,sha256=9onXaExi55VJowurB5eDSSCZHyt9NwtS8iLn6Il0WwY,3964
104
- modal/cli/_traceback.py,sha256=SWa-emP5A63gvfspJsZgxWQbl_xif8nkIqkvukyG61Y,6954
105
- modal/cli/app.py,sha256=KqH4eS_w9rbdactdqSJEx8kVUalFPJ_jpsbdHuvwSTI,7722
106
- modal/cli/config.py,sha256=pXPLmX0bIoV57rQNqIPK7V-yllj-GPRY4jiBO_EklGg,1667
107
- modal/cli/container.py,sha256=LGrF9iz8D3PGst6IUl0VB1Y1LJ0BWLrNRNFxWa4z-tg,3199
108
- modal/cli/dict.py,sha256=lIEl6uxygFt3omC-oF6tHUxnFjVhy4d0InC_kZrlkvM,4454
109
- modal/cli/entry_point.py,sha256=aaNxFAqZcmtSjwzkYIA_Ba9CkL4cL4_i2gy5VjoXxkM,4228
110
- modal/cli/environment.py,sha256=eq8Rixbo8u-nJPvtGwW4-I1lXZPnevsFEv65WlSxFXY,4362
111
- modal/cli/import_refs.py,sha256=A866-P6OfZ5kyb1rHUIeaVokR9RVMHyiKvkxg4Ul1_s,9177
112
- modal/cli/launch.py,sha256=FgZ0L-e3dLl9vRJ_IVHfSRUzCbmdyS8-u_abC42tTDo,2941
113
- modal/cli/network_file_system.py,sha256=p_o3wu8rh2tjHXJYrjaad__pD8hv93ypeDtfSY2fSEU,7527
114
- modal/cli/profile.py,sha256=s4jCYHwriOorEFCKxeGZoSWX8rXTR_hDTNFZhOA565s,3109
115
- modal/cli/queues.py,sha256=mJ44A319sPIrysH3A0HCIz4Or0jFey6miiuQKZoEQxo,4493
116
- modal/cli/run.py,sha256=RjcN3uLe_y9wLjGGBPjlnq-A7Shsbk7EEkGvy8e15L0,17079
117
- modal/cli/secret.py,sha256=GWz425Fhdftb2hDljQzO2NS1NY5ogg298Uu-e0JAQWs,4211
118
- modal/cli/token.py,sha256=mxSgOWakXG6N71hQb1ko61XAR9ZGkTMZD-Txn7gmTac,1924
119
- modal/cli/utils.py,sha256=59-cqBHSg00oFMRHtRbFZZnoIJfW6w9Gfno63XfNpt4,3633
120
- modal/cli/volume.py,sha256=SxcN6G-scgSmq882Usxb-w9XE4uz2yXWod2Y-SNCoCg,10009
121
- modal/cli/programs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
122
- modal/cli/programs/run_jupyter.py,sha256=a9KU12ZlTR98dDwtNgkx6m38Q92Pvkv9DqMmlflFm-M,2761
123
- modal/cli/programs/vscode.py,sha256=68LW7WKJG1W8rAFDErkYu-Y61oK6ghceu25nRJZv8SI,2492
124
- modal/extensions/__init__.py,sha256=waLjl5c6IPDhSsdWAm9Bji4e2PVxamYABKAze6CHVXY,28
125
- modal/extensions/ipython.py,sha256=Xvzy-A7cvwMSDa9p4c4CEMLOX2_Xsg9DkM1J9uyu7jc,983
126
- modal/requirements/2023.12.312.txt,sha256=zWWUVgVQ92GXBKNYYr2-5vn9rlnXcmkqlwlX5u1eTYw,400
127
- modal/requirements/2023.12.txt,sha256=OjsbXFkCSdkzzryZP82Q73osr5wxQ6EUzmGcK7twfkA,502
128
- modal/requirements/2024.04.txt,sha256=6NnrbIE-mflwMyKyQ0tsWeY8XFE1kSW9oE8DVDoD8QU,544
129
- modal/requirements/2024.10.txt,sha256=qD-5cVIVM9wXesJ6JC89Ew-3m2KjEElUz3jaw_MddRo,296
130
- modal/requirements/README.md,sha256=9tK76KP0Uph7O0M5oUgsSwEZDj5y-dcUPsnpR0Sc-Ik,854
131
- modal/requirements/base-images.json,sha256=kLNo5Sqmnhp9H6Hr9IcaGJFrRaRg1yfuepUWkm-y8iQ,571
132
- modal_docs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
133
- modal_docs/gen_cli_docs.py,sha256=c1yfBS_x--gL5bs0N4ihMwqwX8l3IBWSkBAKNNIi6bQ,3801
134
- modal_docs/gen_reference_docs.py,sha256=AI8h-JKfwn7Tohm3P3D5G0SivSpdGgN6gnw-fED-S0s,6613
135
- modal_docs/mdmd/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
136
- modal_docs/mdmd/mdmd.py,sha256=F6EXKkjwrTbOiG6I7wKtNGVVmmeWLAJ5pnE7DUkDpvM,6231
137
- modal_docs/mdmd/signatures.py,sha256=Jqy5AosHsQLAQJJe5cgYbciyFvb8xVwPIYwyBn-6RzU,3243
138
- modal_global_objects/__init__.py,sha256=waLjl5c6IPDhSsdWAm9Bji4e2PVxamYABKAze6CHVXY,28
139
- modal_global_objects/images/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
140
- modal_global_objects/images/base_images.py,sha256=tFc7tzQRJHtq23kURd6DTrnnO4Yp5ujr34WdJOM5ubI,775
141
- modal_global_objects/mounts/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
142
- modal_global_objects/mounts/modal_client_package.py,sha256=W0E_yShsRojPzWm6LtIQqNVolapdnrZkm2hVEQuZK_4,767
143
- modal_global_objects/mounts/python_standalone.py,sha256=_vTEX3PECUsatzhDs8lyJmDK0LbFetT1sJB6MIDfFAo,1870
144
- modal_proto/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
145
- modal_proto/api.proto,sha256=1zr0aMwKHYgPfkvAjQ5hCRiWbJcuVXxwiuOlLpDU46Y,77644
146
- modal_proto/api_grpc.py,sha256=S7h8xe-msb3-Q8oSd7DUoB46z-dcRhsXGb6LjFCLNFI,99013
147
- modal_proto/api_pb2.py,sha256=PLRmPloiKDiiziRzbZrzF3Cr-Cn5uCv9USwc7nC_eeg,282809
148
- modal_proto/api_pb2.pyi,sha256=LAs_gmu_GYKzfa_8dxXiXsNejnWyWjX5hQ-6MuJmww0,378389
149
- modal_proto/api_pb2_grpc.py,sha256=g7EfCSir3xStPPjJOU2U668zz6cGdN6u7SxvTTwU9aU,214126
150
- modal_proto/api_pb2_grpc.pyi,sha256=9GhLZVRm69Qhyj_jmGqEGv1rD37Tzj6E6hGzKV08u48,49961
151
- modal_proto/modal_api_grpc.py,sha256=en48QTR5fwA7x0twtlsqLKRjjDEAKVoh6EeSznQfQ3U,13236
152
- modal_proto/modal_options_grpc.py,sha256=qJ1cuwA54oRqrdTyPTbvfhFZYd9HhJKK5UCwt523r3Y,120
153
- modal_proto/options.proto,sha256=a-siq4swVbZPfaFRXAipRZzGP2bq8OsdUvjlyzAeodQ,488
154
- modal_proto/options_grpc.py,sha256=M18X3d-8F_cNYSVM3I25dUTO5rZ0rd-vCCfynfh13Nc,125
155
- modal_proto/options_pb2.py,sha256=OC2Oob8Yz_3Gs58hwpS_jSFWpGsWMcxlgXbJCyw3gMk,1827
156
- modal_proto/options_pb2.pyi,sha256=l7DBrbLO7q3Ir-XDkWsajm0d0TQqqrfuX54i4BMpdQg,1018
157
- modal_proto/options_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
158
- modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0yJSI,247
159
- modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
160
- modal_version/__init__.py,sha256=3IY-AWLH55r35_mQXIaut0jrJvoPuf1NZJBQQfSbPuo,470
161
- modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
162
- modal_version/_version_generated.py,sha256=rovVazB4vqHr5HAyfiVAZJmm1D6GrZvk39X1IbGTkRg,148
163
- modal-0.67.1.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
164
- modal-0.67.1.dist-info/METADATA,sha256=65AuiyGXtdF6hTgAgaLzS3cSAe6mRofbhZo_ngXIb-c,2328
165
- modal-0.67.1.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
166
- modal-0.67.1.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
167
- modal-0.67.1.dist-info/top_level.txt,sha256=1nvYbOSIKcmU50fNrpnQnrrOpj269ei3LzgB6j9xGqg,64
168
- modal-0.67.1.dist-info/RECORD,,