modAL 1.3.1.dev29__tar.gz → 1.3.1.dev31__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 (197) hide show
  1. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/PKG-INFO +1 -1
  2. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/__main__.py +2 -1
  3. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/cli/_traceback.py +2 -1
  4. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/client.pyi +2 -2
  5. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal.egg-info/PKG-INFO +1 -1
  6. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal_proto/api.proto +2 -0
  7. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal_proto/api_pb2.py +314 -314
  8. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal_proto/api_pb2.pyi +9 -2
  9. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal_version/__init__.py +1 -1
  10. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/LICENSE +0 -0
  11. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/README.md +0 -0
  12. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/__init__.py +0 -0
  13. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_billing.py +0 -0
  14. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_clustered_functions.py +0 -0
  15. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_clustered_functions.pyi +0 -0
  16. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_container_entrypoint.py +0 -0
  17. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_functions.py +0 -0
  18. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_grpc_client.py +0 -0
  19. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_ipython.py +0 -0
  20. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_load_context.py +0 -0
  21. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_location.py +0 -0
  22. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_object.py +0 -0
  23. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_output.py +0 -0
  24. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_partial_function.py +0 -0
  25. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_pty.py +0 -0
  26. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_resolver.py +0 -0
  27. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_resources.py +0 -0
  28. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_runtime/__init__.py +0 -0
  29. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_runtime/asgi.py +0 -0
  30. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_runtime/container_io_manager.py +0 -0
  31. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_runtime/container_io_manager.pyi +0 -0
  32. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_runtime/execution_context.py +0 -0
  33. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_runtime/execution_context.pyi +0 -0
  34. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  35. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_runtime/telemetry.py +0 -0
  36. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_runtime/user_code_event_loop.py +0 -0
  37. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_runtime/user_code_imports.py +0 -0
  38. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_serialization.py +0 -0
  39. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_server.py +0 -0
  40. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_traceback.py +0 -0
  41. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_tunnel.py +0 -0
  42. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_tunnel.pyi +0 -0
  43. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_type_manager.py +0 -0
  44. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_utils/__init__.py +0 -0
  45. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_utils/app_utils.py +0 -0
  46. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_utils/async_utils.py +0 -0
  47. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_utils/auth_token_manager.py +0 -0
  48. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_utils/blob_utils.py +0 -0
  49. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_utils/bytes_io_segment_payload.py +0 -0
  50. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_utils/deprecation.py +0 -0
  51. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_utils/docker_utils.py +0 -0
  52. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_utils/function_utils.py +0 -0
  53. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_utils/git_utils.py +0 -0
  54. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_utils/grpc_testing.py +0 -0
  55. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_utils/grpc_utils.py +0 -0
  56. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_utils/hash_utils.py +0 -0
  57. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_utils/http_utils.py +0 -0
  58. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_utils/jwt_utils.py +0 -0
  59. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_utils/logger.py +0 -0
  60. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_utils/mount_utils.py +0 -0
  61. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_utils/name_utils.py +0 -0
  62. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_utils/package_utils.py +0 -0
  63. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_utils/pattern_utils.py +0 -0
  64. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_utils/rand_pb_testing.py +0 -0
  65. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_utils/shell_utils.py +0 -0
  66. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_utils/task_command_router_client.py +0 -0
  67. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_utils/time_utils.py +0 -0
  68. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_vendor/__init__.py +0 -0
  69. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  70. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_vendor/cloudpickle.py +0 -0
  71. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_vendor/tblib.py +0 -0
  72. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/_watcher.py +0 -0
  73. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/app.py +0 -0
  74. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/app.pyi +0 -0
  75. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/billing.py +0 -0
  76. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/builder/2023.12.312.txt +0 -0
  77. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/builder/2023.12.txt +0 -0
  78. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/builder/2024.04.txt +0 -0
  79. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/builder/2024.10.txt +0 -0
  80. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/builder/2025.06.txt +0 -0
  81. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/builder/PREVIEW.txt +0 -0
  82. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/builder/README.md +0 -0
  83. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/builder/base-images.json +0 -0
  84. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/call_graph.py +0 -0
  85. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/cli/__init__.py +0 -0
  86. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/cli/_download.py +0 -0
  87. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/cli/app.py +0 -0
  88. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/cli/cluster.py +0 -0
  89. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/cli/config.py +0 -0
  90. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/cli/container.py +0 -0
  91. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/cli/dict.py +0 -0
  92. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/cli/entry_point.py +0 -0
  93. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/cli/environment.py +0 -0
  94. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/cli/import_refs.py +0 -0
  95. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/cli/launch.py +0 -0
  96. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/cli/network_file_system.py +0 -0
  97. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/cli/profile.py +0 -0
  98. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/cli/programs/__init__.py +0 -0
  99. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/cli/programs/run_jupyter.py +0 -0
  100. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/cli/programs/vscode.py +0 -0
  101. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/cli/queues.py +0 -0
  102. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/cli/run.py +0 -0
  103. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/cli/secret.py +0 -0
  104. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/cli/shell.py +0 -0
  105. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/cli/token.py +0 -0
  106. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/cli/utils.py +0 -0
  107. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/cli/volume.py +0 -0
  108. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/client.py +0 -0
  109. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/cloud_bucket_mount.py +0 -0
  110. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/cloud_bucket_mount.pyi +0 -0
  111. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/cls.py +0 -0
  112. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/cls.pyi +0 -0
  113. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/config.py +0 -0
  114. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/container_process.py +0 -0
  115. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/container_process.pyi +0 -0
  116. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/dict.py +0 -0
  117. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/dict.pyi +0 -0
  118. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/environments.py +0 -0
  119. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/environments.pyi +0 -0
  120. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/exception.py +0 -0
  121. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/experimental/__init__.py +0 -0
  122. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/experimental/flash.py +0 -0
  123. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/experimental/flash.pyi +0 -0
  124. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/experimental/ipython.py +0 -0
  125. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/file_io.py +0 -0
  126. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/file_io.pyi +0 -0
  127. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/file_pattern_matcher.py +0 -0
  128. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/functions.py +0 -0
  129. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/functions.pyi +0 -0
  130. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/gpu.py +0 -0
  131. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/image.py +0 -0
  132. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/image.pyi +0 -0
  133. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/io_streams.py +0 -0
  134. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/io_streams.pyi +0 -0
  135. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/mount.py +0 -0
  136. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/mount.pyi +0 -0
  137. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/network_file_system.py +0 -0
  138. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/network_file_system.pyi +0 -0
  139. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/object.py +0 -0
  140. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/object.pyi +0 -0
  141. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/output.py +0 -0
  142. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/parallel_map.py +0 -0
  143. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/parallel_map.pyi +0 -0
  144. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/partial_function.py +0 -0
  145. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/partial_function.pyi +0 -0
  146. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/proxy.py +0 -0
  147. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/proxy.pyi +0 -0
  148. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/py.typed +0 -0
  149. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/queue.py +0 -0
  150. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/queue.pyi +0 -0
  151. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/retries.py +0 -0
  152. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/runner.py +0 -0
  153. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/runner.pyi +0 -0
  154. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/running_app.py +0 -0
  155. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/sandbox.py +0 -0
  156. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/sandbox.pyi +0 -0
  157. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/schedule.py +0 -0
  158. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/scheduler_placement.py +0 -0
  159. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/secret.py +0 -0
  160. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/secret.pyi +0 -0
  161. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/server.py +0 -0
  162. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/server.pyi +0 -0
  163. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/serving.py +0 -0
  164. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/serving.pyi +0 -0
  165. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/snapshot.py +0 -0
  166. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/snapshot.pyi +0 -0
  167. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/stream_type.py +0 -0
  168. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/token_flow.py +0 -0
  169. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/token_flow.pyi +0 -0
  170. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/volume.py +0 -0
  171. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal/volume.pyi +0 -0
  172. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal.egg-info/SOURCES.txt +0 -0
  173. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal.egg-info/dependency_links.txt +0 -0
  174. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal.egg-info/entry_points.txt +0 -0
  175. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal.egg-info/requires.txt +0 -0
  176. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal.egg-info/top_level.txt +0 -0
  177. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal_docs/__init__.py +0 -0
  178. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal_docs/gen_cli_docs.py +0 -0
  179. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal_docs/gen_reference_docs.py +0 -0
  180. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal_docs/mdmd/__init__.py +0 -0
  181. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal_docs/mdmd/mdmd.py +0 -0
  182. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal_docs/mdmd/signatures.py +0 -0
  183. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal_proto/__init__.py +0 -0
  184. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal_proto/api_grpc.py +0 -0
  185. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal_proto/api_pb2_grpc.py +0 -0
  186. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal_proto/api_pb2_grpc.pyi +0 -0
  187. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal_proto/modal_api_grpc.py +0 -0
  188. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal_proto/py.typed +0 -0
  189. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal_proto/task_command_router.proto +0 -0
  190. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal_proto/task_command_router_grpc.py +0 -0
  191. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal_proto/task_command_router_pb2.py +0 -0
  192. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal_proto/task_command_router_pb2.pyi +0 -0
  193. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal_proto/task_command_router_pb2_grpc.py +0 -0
  194. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
  195. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/modal_version/__main__.py +0 -0
  196. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/pyproject.toml +0 -0
  197. {modal-1.3.1.dev29 → modal-1.3.1.dev31}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.3.1.dev29
3
+ Version: 1.3.1.dev31
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -35,6 +35,7 @@ def main():
35
35
  ):
36
36
  raise
37
37
 
38
+ from rich.markup import escape
38
39
  from rich.panel import Panel
39
40
 
40
41
  title = "Error"
@@ -43,7 +44,7 @@ def main():
43
44
  content = f"{content}\n\nNote: {' '.join(notes)}"
44
45
 
45
46
  console = make_console(stderr=True)
46
- panel = Panel(content, title=title, title_align="left", border_style="red")
47
+ panel = Panel(escape(content), title=title, title_align="left", border_style="red")
47
48
  console.print(panel, highlight=False)
48
49
  sys.exit(1)
49
50
 
@@ -7,6 +7,7 @@ import warnings
7
7
  from typing import Optional
8
8
 
9
9
  from rich.console import RenderResult, group
10
+ from rich.markup import escape
10
11
  from rich.panel import Panel
11
12
  from rich.syntax import Syntax
12
13
  from rich.text import Text
@@ -189,7 +190,7 @@ def highlight_modal_warnings() -> None:
189
190
  if date:
190
191
  title += f" ({date})"
191
192
  panel = Panel(
192
- message,
193
+ escape(message),
193
194
  border_style="yellow",
194
195
  title=title,
195
196
  title_align="left",
@@ -35,7 +35,7 @@ class _Client:
35
35
  server_url: str,
36
36
  client_type: int,
37
37
  credentials: typing.Optional[tuple[str, str]],
38
- version: str = "1.3.1.dev29",
38
+ version: str = "1.3.1.dev31",
39
39
  ):
40
40
  """mdmd:hidden
41
41
  The Modal client object is not intended to be instantiated directly by users.
@@ -166,7 +166,7 @@ class Client:
166
166
  server_url: str,
167
167
  client_type: int,
168
168
  credentials: typing.Optional[tuple[str, str]],
169
- version: str = "1.3.1.dev29",
169
+ version: str = "1.3.1.dev31",
170
170
  ):
171
171
  """mdmd:hidden
172
172
  The Modal client object is not intended to be instantiated directly by users.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.3.1.dev29
3
+ Version: 1.3.1.dev31
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -2906,6 +2906,8 @@ message SandboxInfo {
2906
2906
  string image_id = 8;
2907
2907
  ResourceInfo resource_info = 9;
2908
2908
  repeated string regions = 10;
2909
+ uint32 timeout_secs = 11;
2910
+ optional uint32 idle_timeout_secs = 12;
2909
2911
  }
2910
2912
 
2911
2913