modal 1.2.1.dev0__tar.gz → 1.2.1.dev2__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.

Potentially problematic release.


This version of modal might be problematic. Click here for more details.

Files changed (197) hide show
  1. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/PKG-INFO +5 -5
  2. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/README.md +4 -4
  3. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/client.pyi +2 -2
  4. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/runner.py +11 -1
  5. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal.egg-info/PKG-INFO +5 -5
  6. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal_version/__init__.py +1 -1
  7. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/LICENSE +0 -0
  8. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/__init__.py +0 -0
  9. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/__main__.py +0 -0
  10. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_billing.py +0 -0
  11. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_clustered_functions.py +0 -0
  12. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_clustered_functions.pyi +0 -0
  13. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_container_entrypoint.py +0 -0
  14. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_functions.py +0 -0
  15. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_ipython.py +0 -0
  16. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_location.py +0 -0
  17. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_object.py +0 -0
  18. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_output.py +0 -0
  19. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_partial_function.py +0 -0
  20. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_pty.py +0 -0
  21. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_resolver.py +0 -0
  22. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_resources.py +0 -0
  23. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_runtime/__init__.py +0 -0
  24. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_runtime/asgi.py +0 -0
  25. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_runtime/container_io_manager.py +0 -0
  26. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_runtime/container_io_manager.pyi +0 -0
  27. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_runtime/execution_context.py +0 -0
  28. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_runtime/execution_context.pyi +0 -0
  29. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  30. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_runtime/telemetry.py +0 -0
  31. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_runtime/user_code_imports.py +0 -0
  32. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_serialization.py +0 -0
  33. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_traceback.py +0 -0
  34. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_tunnel.py +0 -0
  35. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_tunnel.pyi +0 -0
  36. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_type_manager.py +0 -0
  37. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_utils/__init__.py +0 -0
  38. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_utils/app_utils.py +0 -0
  39. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_utils/async_utils.py +0 -0
  40. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_utils/auth_token_manager.py +0 -0
  41. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_utils/blob_utils.py +0 -0
  42. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_utils/bytes_io_segment_payload.py +0 -0
  43. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_utils/deprecation.py +0 -0
  44. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_utils/docker_utils.py +0 -0
  45. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_utils/function_utils.py +0 -0
  46. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_utils/git_utils.py +0 -0
  47. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_utils/grpc_testing.py +0 -0
  48. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_utils/grpc_utils.py +0 -0
  49. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_utils/hash_utils.py +0 -0
  50. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_utils/http_utils.py +0 -0
  51. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_utils/jwt_utils.py +0 -0
  52. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_utils/logger.py +0 -0
  53. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_utils/mount_utils.py +0 -0
  54. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_utils/name_utils.py +0 -0
  55. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_utils/package_utils.py +0 -0
  56. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_utils/pattern_utils.py +0 -0
  57. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_utils/rand_pb_testing.py +0 -0
  58. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_utils/shell_utils.py +0 -0
  59. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_utils/time_utils.py +0 -0
  60. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_vendor/__init__.py +0 -0
  61. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  62. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_vendor/cloudpickle.py +0 -0
  63. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_vendor/tblib.py +0 -0
  64. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/_watcher.py +0 -0
  65. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/app.py +0 -0
  66. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/app.pyi +0 -0
  67. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/billing.py +0 -0
  68. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/builder/2023.12.312.txt +0 -0
  69. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/builder/2023.12.txt +0 -0
  70. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/builder/2024.04.txt +0 -0
  71. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/builder/2024.10.txt +0 -0
  72. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/builder/2025.06.txt +0 -0
  73. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/builder/PREVIEW.txt +0 -0
  74. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/builder/README.md +0 -0
  75. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/builder/base-images.json +0 -0
  76. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/call_graph.py +0 -0
  77. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/cli/__init__.py +0 -0
  78. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/cli/_download.py +0 -0
  79. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/cli/_traceback.py +0 -0
  80. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/cli/app.py +0 -0
  81. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/cli/cluster.py +0 -0
  82. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/cli/config.py +0 -0
  83. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/cli/container.py +0 -0
  84. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/cli/dict.py +0 -0
  85. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/cli/entry_point.py +0 -0
  86. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/cli/environment.py +0 -0
  87. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/cli/import_refs.py +0 -0
  88. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/cli/launch.py +0 -0
  89. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/cli/network_file_system.py +0 -0
  90. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/cli/profile.py +0 -0
  91. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/cli/programs/__init__.py +0 -0
  92. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/cli/programs/launch_instance_ssh.py +0 -0
  93. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/cli/programs/run_jupyter.py +0 -0
  94. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/cli/programs/run_marimo.py +0 -0
  95. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/cli/programs/vscode.py +0 -0
  96. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/cli/queues.py +0 -0
  97. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/cli/run.py +0 -0
  98. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/cli/secret.py +0 -0
  99. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/cli/token.py +0 -0
  100. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/cli/utils.py +0 -0
  101. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/cli/volume.py +0 -0
  102. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/client.py +0 -0
  103. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/cloud_bucket_mount.py +0 -0
  104. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/cloud_bucket_mount.pyi +0 -0
  105. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/cls.py +0 -0
  106. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/cls.pyi +0 -0
  107. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/config.py +0 -0
  108. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/container_process.py +0 -0
  109. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/container_process.pyi +0 -0
  110. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/dict.py +0 -0
  111. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/dict.pyi +0 -0
  112. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/environments.py +0 -0
  113. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/environments.pyi +0 -0
  114. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/exception.py +0 -0
  115. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/experimental/__init__.py +0 -0
  116. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/experimental/flash.py +0 -0
  117. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/experimental/flash.pyi +0 -0
  118. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/experimental/ipython.py +0 -0
  119. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/file_io.py +0 -0
  120. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/file_io.pyi +0 -0
  121. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/file_pattern_matcher.py +0 -0
  122. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/functions.py +0 -0
  123. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/functions.pyi +0 -0
  124. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/gpu.py +0 -0
  125. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/image.py +0 -0
  126. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/image.pyi +0 -0
  127. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/io_streams.py +0 -0
  128. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/io_streams.pyi +0 -0
  129. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/mount.py +0 -0
  130. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/mount.pyi +0 -0
  131. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/network_file_system.py +0 -0
  132. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/network_file_system.pyi +0 -0
  133. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/object.py +0 -0
  134. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/object.pyi +0 -0
  135. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/output.py +0 -0
  136. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/parallel_map.py +0 -0
  137. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/parallel_map.pyi +0 -0
  138. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/partial_function.py +0 -0
  139. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/partial_function.pyi +0 -0
  140. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/proxy.py +0 -0
  141. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/proxy.pyi +0 -0
  142. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/py.typed +0 -0
  143. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/queue.py +0 -0
  144. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/queue.pyi +0 -0
  145. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/retries.py +0 -0
  146. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/runner.pyi +0 -0
  147. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/running_app.py +0 -0
  148. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/sandbox.py +0 -0
  149. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/sandbox.pyi +0 -0
  150. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/schedule.py +0 -0
  151. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/scheduler_placement.py +0 -0
  152. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/secret.py +0 -0
  153. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/secret.pyi +0 -0
  154. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/serving.py +0 -0
  155. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/serving.pyi +0 -0
  156. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/snapshot.py +0 -0
  157. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/snapshot.pyi +0 -0
  158. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/stream_type.py +0 -0
  159. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/token_flow.py +0 -0
  160. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/token_flow.pyi +0 -0
  161. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/volume.py +0 -0
  162. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal/volume.pyi +0 -0
  163. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal.egg-info/SOURCES.txt +0 -0
  164. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal.egg-info/dependency_links.txt +0 -0
  165. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal.egg-info/entry_points.txt +0 -0
  166. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal.egg-info/requires.txt +0 -0
  167. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal.egg-info/top_level.txt +0 -0
  168. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal_docs/__init__.py +0 -0
  169. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal_docs/gen_cli_docs.py +0 -0
  170. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal_docs/gen_reference_docs.py +0 -0
  171. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal_docs/mdmd/__init__.py +0 -0
  172. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal_docs/mdmd/mdmd.py +0 -0
  173. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal_docs/mdmd/signatures.py +0 -0
  174. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal_proto/__init__.py +0 -0
  175. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal_proto/api.proto +0 -0
  176. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal_proto/api_grpc.py +0 -0
  177. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal_proto/api_pb2.py +0 -0
  178. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal_proto/api_pb2.pyi +0 -0
  179. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal_proto/api_pb2_grpc.py +0 -0
  180. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal_proto/api_pb2_grpc.pyi +0 -0
  181. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal_proto/modal_api_grpc.py +0 -0
  182. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal_proto/py.typed +0 -0
  183. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal_proto/sandbox_router.proto +0 -0
  184. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal_proto/sandbox_router_grpc.py +0 -0
  185. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal_proto/sandbox_router_pb2.py +0 -0
  186. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal_proto/sandbox_router_pb2.pyi +0 -0
  187. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal_proto/sandbox_router_pb2_grpc.py +0 -0
  188. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal_proto/sandbox_router_pb2_grpc.pyi +0 -0
  189. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal_proto/task_command_router.proto +0 -0
  190. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal_proto/task_command_router_grpc.py +0 -0
  191. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal_proto/task_command_router_pb2.py +0 -0
  192. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal_proto/task_command_router_pb2.pyi +0 -0
  193. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal_proto/task_command_router_pb2_grpc.py +0 -0
  194. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
  195. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/modal_version/__main__.py +0 -0
  196. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/pyproject.toml +0 -0
  197. {modal-1.2.1.dev0 → modal-1.2.1.dev2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.2.1.dev0
3
+ Version: 1.2.1.dev2
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -32,14 +32,14 @@ Requires-Dist: watchfiles
32
32
  Requires-Dist: typing_extensions~=4.6
33
33
  Dynamic: license-file
34
34
 
35
- # Modal Python Library
35
+ # Modal Python SDK
36
36
 
37
37
  [![PyPI Version](https://img.shields.io/pypi/v/modal.svg)](https://pypi.org/project/modal/)
38
38
  [![License](https://img.shields.io/badge/license-apache_2.0-darkviolet.svg)](https://github.com/modal-labs/modal-client/blob/master/LICENSE)
39
39
  [![Tests](https://github.com/modal-labs/modal-client/actions/workflows/ci-cd.yml/badge.svg)](https://github.com/modal-labs/modal-client/actions/workflows/ci-cd.yml)
40
40
  [![Slack](https://img.shields.io/badge/slack-join-blue.svg?logo=slack)](https://modal.com/slack)
41
41
 
42
- The [Modal](https://modal.com/) Python library provides convenient, on-demand
42
+ The [Modal](https://modal.com/) Python SDK provides convenient, on-demand
43
43
  access to serverless cloud compute from Python scripts on your local computer.
44
44
 
45
45
  ## Documentation
@@ -53,10 +53,10 @@ a [user guide](https://modal.com/docs/guide), and the detailed
53
53
 
54
54
  **This library requires Python 3.9 – 3.13.**
55
55
 
56
- Install the package with `pip`:
56
+ Install the package with `uv` or `pip`:
57
57
 
58
58
  ```bash
59
- pip install modal
59
+ uv pip install modal
60
60
  ```
61
61
 
62
62
  You can create a Modal account (or link your existing one) directly on the
@@ -1,11 +1,11 @@
1
- # Modal Python Library
1
+ # Modal Python SDK
2
2
 
3
3
  [![PyPI Version](https://img.shields.io/pypi/v/modal.svg)](https://pypi.org/project/modal/)
4
4
  [![License](https://img.shields.io/badge/license-apache_2.0-darkviolet.svg)](https://github.com/modal-labs/modal-client/blob/master/LICENSE)
5
5
  [![Tests](https://github.com/modal-labs/modal-client/actions/workflows/ci-cd.yml/badge.svg)](https://github.com/modal-labs/modal-client/actions/workflows/ci-cd.yml)
6
6
  [![Slack](https://img.shields.io/badge/slack-join-blue.svg?logo=slack)](https://modal.com/slack)
7
7
 
8
- The [Modal](https://modal.com/) Python library provides convenient, on-demand
8
+ The [Modal](https://modal.com/) Python SDK provides convenient, on-demand
9
9
  access to serverless cloud compute from Python scripts on your local computer.
10
10
 
11
11
  ## Documentation
@@ -19,10 +19,10 @@ a [user guide](https://modal.com/docs/guide), and the detailed
19
19
 
20
20
  **This library requires Python 3.9 – 3.13.**
21
21
 
22
- Install the package with `pip`:
22
+ Install the package with `uv` or `pip`:
23
23
 
24
24
  ```bash
25
- pip install modal
25
+ uv pip install modal
26
26
  ```
27
27
 
28
28
  You can create a Modal account (or link your existing one) directly on the
@@ -33,7 +33,7 @@ class _Client:
33
33
  server_url: str,
34
34
  client_type: int,
35
35
  credentials: typing.Optional[tuple[str, str]],
36
- version: str = "1.2.1.dev0",
36
+ version: str = "1.2.1.dev2",
37
37
  ):
38
38
  """mdmd:hidden
39
39
  The Modal client object is not intended to be instantiated directly by users.
@@ -164,7 +164,7 @@ class Client:
164
164
  server_url: str,
165
165
  client_type: int,
166
166
  credentials: typing.Optional[tuple[str, str]],
167
- version: str = "1.2.1.dev0",
167
+ version: str = "1.2.1.dev2",
168
168
  ):
169
169
  """mdmd:hidden
170
170
  The Modal client object is not intended to be instantiated directly by users.
@@ -35,7 +35,7 @@ from .client import HEARTBEAT_INTERVAL, HEARTBEAT_TIMEOUT, _Client
35
35
  from .cls import _Cls
36
36
  from .config import config, logger
37
37
  from .environments import _get_environment_cached
38
- from .exception import InteractiveTimeoutError, InvalidError, RemoteError, _CliUserExecutionError
38
+ from .exception import ConnectionError, InteractiveTimeoutError, InvalidError, RemoteError, _CliUserExecutionError
39
39
  from .output import _get_output_manager, enable_output
40
40
  from .running_app import RunningApp, running_app_from_layout
41
41
  from .sandbox import _Sandbox
@@ -405,6 +405,16 @@ async def _run_app(
405
405
  )
406
406
  )
407
407
  return
408
+ except ConnectionError as e:
409
+ # If we lose connection to the server after a detached App has started running, it will continue
410
+ # I think we can only exit "nicely" if we are able to print output though, otherwise we should raise
411
+ if detach and (output_mgr := _get_output_manager()):
412
+ output_mgr.print(
413
+ "Connection lost, but detached App will continue running: "
414
+ f"[magenta]{running_app.app_page_url}[/magenta]"
415
+ )
416
+ return
417
+ raise
408
418
  except BaseException as e:
409
419
  logger.info("Exception during app run")
410
420
  await _status_based_disconnect(client, running_app.app_id, e)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.2.1.dev0
3
+ Version: 1.2.1.dev2
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -32,14 +32,14 @@ Requires-Dist: watchfiles
32
32
  Requires-Dist: typing_extensions~=4.6
33
33
  Dynamic: license-file
34
34
 
35
- # Modal Python Library
35
+ # Modal Python SDK
36
36
 
37
37
  [![PyPI Version](https://img.shields.io/pypi/v/modal.svg)](https://pypi.org/project/modal/)
38
38
  [![License](https://img.shields.io/badge/license-apache_2.0-darkviolet.svg)](https://github.com/modal-labs/modal-client/blob/master/LICENSE)
39
39
  [![Tests](https://github.com/modal-labs/modal-client/actions/workflows/ci-cd.yml/badge.svg)](https://github.com/modal-labs/modal-client/actions/workflows/ci-cd.yml)
40
40
  [![Slack](https://img.shields.io/badge/slack-join-blue.svg?logo=slack)](https://modal.com/slack)
41
41
 
42
- The [Modal](https://modal.com/) Python library provides convenient, on-demand
42
+ The [Modal](https://modal.com/) Python SDK provides convenient, on-demand
43
43
  access to serverless cloud compute from Python scripts on your local computer.
44
44
 
45
45
  ## Documentation
@@ -53,10 +53,10 @@ a [user guide](https://modal.com/docs/guide), and the detailed
53
53
 
54
54
  **This library requires Python 3.9 – 3.13.**
55
55
 
56
- Install the package with `pip`:
56
+ Install the package with `uv` or `pip`:
57
57
 
58
58
  ```bash
59
- pip install modal
59
+ uv pip install modal
60
60
  ```
61
61
 
62
62
  You can create a Modal account (or link your existing one) directly on the
@@ -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.2.1.dev0"
4
+ __version__ = "1.2.1.dev2"
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
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