modal 1.0.4.dev12__tar.gz → 1.0.5.dev1__tar.gz

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 (184) hide show
  1. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/PKG-INFO +2 -2
  2. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_utils/async_utils.py +1 -1
  3. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/client.pyi +2 -2
  4. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/parallel_map.py +13 -10
  5. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal.egg-info/PKG-INFO +2 -2
  6. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal.egg-info/requires.txt +1 -1
  7. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal_version/__init__.py +1 -1
  8. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/pyproject.toml +1 -1
  9. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/LICENSE +0 -0
  10. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/README.md +0 -0
  11. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/__init__.py +0 -0
  12. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/__main__.py +0 -0
  13. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_clustered_functions.py +0 -0
  14. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_clustered_functions.pyi +0 -0
  15. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_container_entrypoint.py +0 -0
  16. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_functions.py +0 -0
  17. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_ipython.py +0 -0
  18. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_location.py +0 -0
  19. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_object.py +0 -0
  20. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_output.py +0 -0
  21. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_partial_function.py +0 -0
  22. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_pty.py +0 -0
  23. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_resolver.py +0 -0
  24. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_resources.py +0 -0
  25. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_runtime/__init__.py +0 -0
  26. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_runtime/asgi.py +0 -0
  27. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_runtime/container_io_manager.py +0 -0
  28. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_runtime/container_io_manager.pyi +0 -0
  29. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_runtime/execution_context.py +0 -0
  30. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_runtime/execution_context.pyi +0 -0
  31. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  32. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_runtime/telemetry.py +0 -0
  33. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_runtime/user_code_imports.py +0 -0
  34. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_serialization.py +0 -0
  35. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_traceback.py +0 -0
  36. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_tunnel.py +0 -0
  37. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_tunnel.pyi +0 -0
  38. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_type_manager.py +0 -0
  39. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_utils/__init__.py +0 -0
  40. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_utils/app_utils.py +0 -0
  41. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_utils/blob_utils.py +0 -0
  42. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_utils/bytes_io_segment_payload.py +0 -0
  43. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_utils/deprecation.py +0 -0
  44. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_utils/docker_utils.py +0 -0
  45. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_utils/function_utils.py +0 -0
  46. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_utils/git_utils.py +0 -0
  47. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_utils/grpc_testing.py +0 -0
  48. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_utils/grpc_utils.py +0 -0
  49. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_utils/hash_utils.py +0 -0
  50. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_utils/http_utils.py +0 -0
  51. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_utils/jwt_utils.py +0 -0
  52. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_utils/logger.py +0 -0
  53. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_utils/mount_utils.py +0 -0
  54. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_utils/name_utils.py +0 -0
  55. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_utils/package_utils.py +0 -0
  56. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_utils/pattern_utils.py +0 -0
  57. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_utils/rand_pb_testing.py +0 -0
  58. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_utils/shell_utils.py +0 -0
  59. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_utils/time_utils.py +0 -0
  60. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_vendor/__init__.py +0 -0
  61. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  62. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_vendor/cloudpickle.py +0 -0
  63. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_vendor/tblib.py +0 -0
  64. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/_watcher.py +0 -0
  65. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/app.py +0 -0
  66. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/app.pyi +0 -0
  67. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/call_graph.py +0 -0
  68. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/cli/__init__.py +0 -0
  69. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/cli/_download.py +0 -0
  70. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/cli/_traceback.py +0 -0
  71. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/cli/app.py +0 -0
  72. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/cli/cluster.py +0 -0
  73. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/cli/config.py +0 -0
  74. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/cli/container.py +0 -0
  75. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/cli/dict.py +0 -0
  76. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/cli/entry_point.py +0 -0
  77. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/cli/environment.py +0 -0
  78. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/cli/import_refs.py +0 -0
  79. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/cli/launch.py +0 -0
  80. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/cli/network_file_system.py +0 -0
  81. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/cli/profile.py +0 -0
  82. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/cli/programs/__init__.py +0 -0
  83. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/cli/programs/run_jupyter.py +0 -0
  84. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/cli/programs/vscode.py +0 -0
  85. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/cli/queues.py +0 -0
  86. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/cli/run.py +0 -0
  87. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/cli/secret.py +0 -0
  88. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/cli/token.py +0 -0
  89. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/cli/utils.py +0 -0
  90. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/cli/volume.py +0 -0
  91. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/client.py +0 -0
  92. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/cloud_bucket_mount.py +0 -0
  93. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/cloud_bucket_mount.pyi +0 -0
  94. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/cls.py +0 -0
  95. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/cls.pyi +0 -0
  96. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/config.py +0 -0
  97. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/container_process.py +0 -0
  98. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/container_process.pyi +0 -0
  99. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/dict.py +0 -0
  100. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/dict.pyi +0 -0
  101. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/environments.py +0 -0
  102. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/environments.pyi +0 -0
  103. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/exception.py +0 -0
  104. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/experimental/__init__.py +0 -0
  105. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/experimental/ipython.py +0 -0
  106. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/file_io.py +0 -0
  107. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/file_io.pyi +0 -0
  108. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/file_pattern_matcher.py +0 -0
  109. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/functions.py +0 -0
  110. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/functions.pyi +0 -0
  111. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/gpu.py +0 -0
  112. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/image.py +0 -0
  113. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/image.pyi +0 -0
  114. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/io_streams.py +0 -0
  115. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/io_streams.pyi +0 -0
  116. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/mount.py +0 -0
  117. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/mount.pyi +0 -0
  118. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/network_file_system.py +0 -0
  119. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/network_file_system.pyi +0 -0
  120. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/object.py +0 -0
  121. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/object.pyi +0 -0
  122. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/output.py +0 -0
  123. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/parallel_map.pyi +0 -0
  124. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/partial_function.py +0 -0
  125. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/partial_function.pyi +0 -0
  126. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/proxy.py +0 -0
  127. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/proxy.pyi +0 -0
  128. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/py.typed +0 -0
  129. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/queue.py +0 -0
  130. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/queue.pyi +0 -0
  131. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/requirements/2023.12.312.txt +0 -0
  132. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/requirements/2023.12.txt +0 -0
  133. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/requirements/2024.04.txt +0 -0
  134. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/requirements/2024.10.txt +0 -0
  135. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/requirements/PREVIEW.txt +0 -0
  136. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/requirements/README.md +0 -0
  137. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/requirements/base-images.json +0 -0
  138. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/retries.py +0 -0
  139. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/runner.py +0 -0
  140. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/runner.pyi +0 -0
  141. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/running_app.py +0 -0
  142. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/sandbox.py +0 -0
  143. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/sandbox.pyi +0 -0
  144. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/schedule.py +0 -0
  145. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/scheduler_placement.py +0 -0
  146. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/secret.py +0 -0
  147. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/secret.pyi +0 -0
  148. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/serving.py +0 -0
  149. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/serving.pyi +0 -0
  150. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/snapshot.py +0 -0
  151. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/snapshot.pyi +0 -0
  152. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/stream_type.py +0 -0
  153. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/token_flow.py +0 -0
  154. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/token_flow.pyi +0 -0
  155. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/volume.py +0 -0
  156. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal/volume.pyi +0 -0
  157. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal.egg-info/SOURCES.txt +0 -0
  158. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal.egg-info/dependency_links.txt +0 -0
  159. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal.egg-info/entry_points.txt +0 -0
  160. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal.egg-info/top_level.txt +0 -0
  161. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal_docs/__init__.py +0 -0
  162. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal_docs/gen_cli_docs.py +0 -0
  163. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal_docs/gen_reference_docs.py +0 -0
  164. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal_docs/mdmd/__init__.py +0 -0
  165. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal_docs/mdmd/mdmd.py +0 -0
  166. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal_docs/mdmd/signatures.py +0 -0
  167. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal_proto/__init__.py +0 -0
  168. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal_proto/api.proto +0 -0
  169. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal_proto/api_grpc.py +0 -0
  170. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal_proto/api_pb2.py +0 -0
  171. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal_proto/api_pb2.pyi +0 -0
  172. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal_proto/api_pb2_grpc.py +0 -0
  173. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal_proto/api_pb2_grpc.pyi +0 -0
  174. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal_proto/modal_api_grpc.py +0 -0
  175. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal_proto/modal_options_grpc.py +0 -0
  176. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal_proto/options.proto +0 -0
  177. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal_proto/options_grpc.py +0 -0
  178. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal_proto/options_pb2.py +0 -0
  179. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal_proto/options_pb2.pyi +0 -0
  180. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal_proto/options_pb2_grpc.py +0 -0
  181. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal_proto/options_pb2_grpc.pyi +0 -0
  182. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal_proto/py.typed +0 -0
  183. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/modal_version/__main__.py +0 -0
  184. {modal-1.0.4.dev12 → modal-1.0.5.dev1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.0.4.dev12
3
+ Version: 1.0.5.dev1
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -22,7 +22,7 @@ Requires-Dist: click~=8.1.0
22
22
  Requires-Dist: grpclib==0.4.7
23
23
  Requires-Dist: protobuf!=4.24.0,<7.0,>=3.19
24
24
  Requires-Dist: rich>=12.0.0
25
- Requires-Dist: synchronicity~=0.9.14
25
+ Requires-Dist: synchronicity~=0.9.15
26
26
  Requires-Dist: toml
27
27
  Requires-Dist: typer>=0.9
28
28
  Requires-Dist: types-certifi
@@ -396,7 +396,7 @@ class _WarnIfGeneratorIsNotConsumed:
396
396
  return await self.gen.aclose()
397
397
 
398
398
 
399
- synchronize_api(_WarnIfGeneratorIsNotConsumed)
399
+ _BlockingWarnIfGeneratorIsNotConsumed = synchronize_api(_WarnIfGeneratorIsNotConsumed)
400
400
 
401
401
 
402
402
  class _WarnIfNonWrappedGeneratorIsNotConsumed(_WarnIfGeneratorIsNotConsumed):
@@ -31,7 +31,7 @@ class _Client:
31
31
  server_url: str,
32
32
  client_type: int,
33
33
  credentials: typing.Optional[tuple[str, str]],
34
- version: str = "1.0.4.dev12",
34
+ version: str = "1.0.5.dev1",
35
35
  ): ...
36
36
  def is_closed(self) -> bool: ...
37
37
  @property
@@ -94,7 +94,7 @@ class Client:
94
94
  server_url: str,
95
95
  client_type: int,
96
96
  credentials: typing.Optional[tuple[str, str]],
97
- version: str = "1.0.4.dev12",
97
+ version: str = "1.0.5.dev1",
98
98
  ): ...
99
99
  def is_closed(self) -> bool: ...
100
100
  @property
@@ -278,17 +278,19 @@ async def _map_invocation(
278
278
  )
279
279
  )
280
280
  map_done_task = asyncio.create_task(map_done_event.wait())
281
- done, pending = await asyncio.wait([get_response_task, map_done_task], return_when=FIRST_COMPLETED)
282
- if get_response_task in done:
283
- map_done_task.cancel()
284
- response = get_response_task.result()
285
- else:
286
- assert map_done_event.is_set()
287
- # map is done, cancel the pending call
281
+ try:
282
+ done, pending = await asyncio.wait([get_response_task, map_done_task], return_when=FIRST_COMPLETED)
283
+ if get_response_task in done:
284
+ map_done_task.cancel()
285
+ response = get_response_task.result()
286
+ else:
287
+ assert map_done_event.is_set()
288
+ # map is done - no more outputs, so return early
289
+ return
290
+ finally:
291
+ # clean up tasks, in case of cancellations etc.
288
292
  get_response_task.cancel()
289
- # not strictly necessary - don't leave dangling task
290
- await asyncio.gather(get_response_task, return_exceptions=True)
291
- return
293
+ map_done_task.cancel()
292
294
 
293
295
  last_entry_id = response.last_entry_id
294
296
  now_seconds = int(time.time())
@@ -716,6 +718,7 @@ class _MapItemContext:
716
718
  Return True if input state was changed to COMPLETE, otherwise False.
717
719
  """
718
720
  # If the item is already complete, this is a duplicate output and can be ignored.
721
+
719
722
  if self.state == _MapItemState.COMPLETE:
720
723
  logger.debug(
721
724
  f"Received output for input marked as complete. Must be duplicate, so ignoring. "
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.0.4.dev12
3
+ Version: 1.0.5.dev1
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -22,7 +22,7 @@ Requires-Dist: click~=8.1.0
22
22
  Requires-Dist: grpclib==0.4.7
23
23
  Requires-Dist: protobuf!=4.24.0,<7.0,>=3.19
24
24
  Requires-Dist: rich>=12.0.0
25
- Requires-Dist: synchronicity~=0.9.14
25
+ Requires-Dist: synchronicity~=0.9.15
26
26
  Requires-Dist: toml
27
27
  Requires-Dist: typer>=0.9
28
28
  Requires-Dist: types-certifi
@@ -4,7 +4,7 @@ click~=8.1.0
4
4
  grpclib==0.4.7
5
5
  protobuf!=4.24.0,<7.0,>=3.19
6
6
  rich>=12.0.0
7
- synchronicity~=0.9.14
7
+ synchronicity~=0.9.15
8
8
  toml
9
9
  typer>=0.9
10
10
  types-certifi
@@ -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.0.4.dev12"
4
+ __version__ = "1.0.5.dev1"
@@ -20,7 +20,7 @@ dependencies = [
20
20
  "grpclib==0.4.7",
21
21
  "protobuf>=3.19,<7.0,!=4.24.0",
22
22
  "rich>=12.0.0",
23
- "synchronicity~=0.9.14",
23
+ "synchronicity~=0.9.15",
24
24
  "toml",
25
25
  "typer>=0.9",
26
26
  "types-certifi",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes