modal 1.4.1.dev2__tar.gz → 1.4.1.dev4__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 (209) hide show
  1. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/PKG-INFO +1 -1
  2. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/sandbox_fs_utils.py +13 -1
  3. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/client.pyi +2 -2
  4. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal.egg-info/PKG-INFO +1 -1
  5. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_version/__init__.py +1 -1
  6. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/LICENSE +0 -0
  7. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/README.md +0 -0
  8. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/__init__.py +0 -0
  9. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/__main__.py +0 -0
  10. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_billing.py +0 -0
  11. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_clustered_functions.py +0 -0
  12. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_clustered_functions.pyi +0 -0
  13. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_container_entrypoint.py +0 -0
  14. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_functions.py +0 -0
  15. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_grpc_client.py +0 -0
  16. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_ipython.py +0 -0
  17. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_load_context.py +0 -0
  18. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_location.py +0 -0
  19. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_logs.py +0 -0
  20. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_object.py +0 -0
  21. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_output/__init__.py +0 -0
  22. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_output/manager.py +0 -0
  23. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_output/pty.py +0 -0
  24. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_output/rich.py +0 -0
  25. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_output/status.py +0 -0
  26. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_partial_function.py +0 -0
  27. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_resolver.py +0 -0
  28. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_resources.py +0 -0
  29. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_runtime/__init__.py +0 -0
  30. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_runtime/asgi.py +0 -0
  31. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_runtime/container_io_manager.py +0 -0
  32. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_runtime/container_io_manager.pyi +0 -0
  33. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_runtime/execution_context.py +0 -0
  34. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_runtime/execution_context.pyi +0 -0
  35. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  36. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_runtime/telemetry.py +0 -0
  37. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_runtime/user_code_event_loop.py +0 -0
  38. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_runtime/user_code_imports.py +0 -0
  39. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_serialization.py +0 -0
  40. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_server.py +0 -0
  41. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_traceback.py +0 -0
  42. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_tunnel.py +0 -0
  43. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_tunnel.pyi +0 -0
  44. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_type_manager.py +0 -0
  45. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/__init__.py +0 -0
  46. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/app_utils.py +0 -0
  47. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/async_utils.py +0 -0
  48. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/auth_token_manager.py +0 -0
  49. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/blob_utils.py +0 -0
  50. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/browser_utils.py +0 -0
  51. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/bytes_io_segment_payload.py +0 -0
  52. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/deprecation.py +0 -0
  53. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/docker_utils.py +0 -0
  54. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/function_utils.py +0 -0
  55. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/git_utils.py +0 -0
  56. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/grpc_testing.py +0 -0
  57. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/grpc_utils.py +0 -0
  58. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/hash_utils.py +0 -0
  59. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/http_utils.py +0 -0
  60. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/jwt_utils.py +0 -0
  61. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/logger.py +0 -0
  62. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/mount_utils.py +0 -0
  63. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/name_utils.py +0 -0
  64. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/package_utils.py +0 -0
  65. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/pattern_utils.py +0 -0
  66. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/rand_pb_testing.py +0 -0
  67. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/shell_utils.py +0 -0
  68. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/task_command_router_client.py +0 -0
  69. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/time_utils.py +0 -0
  70. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_vendor/__init__.py +0 -0
  71. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  72. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_vendor/cloudpickle.py +0 -0
  73. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_vendor/tblib.py +0 -0
  74. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_vendor/version.py +0 -0
  75. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_watcher.py +0 -0
  76. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/app.py +0 -0
  77. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/app.pyi +0 -0
  78. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/billing.py +0 -0
  79. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/builder/2023.12.312.txt +0 -0
  80. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/builder/2023.12.txt +0 -0
  81. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/builder/2024.04.txt +0 -0
  82. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/builder/2024.10.txt +0 -0
  83. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/builder/2025.06.txt +0 -0
  84. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/builder/PREVIEW.txt +0 -0
  85. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/builder/README.md +0 -0
  86. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/builder/base-images.json +0 -0
  87. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/call_graph.py +0 -0
  88. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/__init__.py +0 -0
  89. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/_download.py +0 -0
  90. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/_traceback.py +0 -0
  91. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/app.py +0 -0
  92. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/billing.py +0 -0
  93. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/changelog.py +0 -0
  94. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/cluster.py +0 -0
  95. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/config.py +0 -0
  96. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/container.py +0 -0
  97. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/dashboard.py +0 -0
  98. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/dict.py +0 -0
  99. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/entry_point.py +0 -0
  100. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/environment.py +0 -0
  101. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/import_refs.py +0 -0
  102. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/launch.py +0 -0
  103. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/network_file_system.py +0 -0
  104. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/profile.py +0 -0
  105. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/programs/__init__.py +0 -0
  106. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/programs/run_jupyter.py +0 -0
  107. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/programs/vscode.py +0 -0
  108. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/queues.py +0 -0
  109. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/run.py +0 -0
  110. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/secret.py +0 -0
  111. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/selector.py +0 -0
  112. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/shell.py +0 -0
  113. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/token.py +0 -0
  114. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/utils.py +0 -0
  115. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/volume.py +0 -0
  116. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/client.py +0 -0
  117. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cloud_bucket_mount.py +0 -0
  118. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cloud_bucket_mount.pyi +0 -0
  119. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cls.py +0 -0
  120. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cls.pyi +0 -0
  121. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/config.py +0 -0
  122. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/container_process.py +0 -0
  123. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/container_process.pyi +0 -0
  124. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/dict.py +0 -0
  125. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/dict.pyi +0 -0
  126. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/environments.py +0 -0
  127. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/environments.pyi +0 -0
  128. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/exception.py +0 -0
  129. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/experimental/__init__.py +0 -0
  130. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/experimental/flash.py +0 -0
  131. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/experimental/flash.pyi +0 -0
  132. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/experimental/ipython.py +0 -0
  133. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/file_io.py +0 -0
  134. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/file_io.pyi +0 -0
  135. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/file_pattern_matcher.py +0 -0
  136. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/functions.py +0 -0
  137. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/functions.pyi +0 -0
  138. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/image.py +0 -0
  139. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/image.pyi +0 -0
  140. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/io_streams.py +0 -0
  141. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/io_streams.pyi +0 -0
  142. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/mount.py +0 -0
  143. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/mount.pyi +0 -0
  144. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/network_file_system.py +0 -0
  145. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/network_file_system.pyi +0 -0
  146. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/object.py +0 -0
  147. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/object.pyi +0 -0
  148. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/output.py +0 -0
  149. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/parallel_map.py +0 -0
  150. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/parallel_map.pyi +0 -0
  151. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/partial_function.py +0 -0
  152. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/partial_function.pyi +0 -0
  153. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/proxy.py +0 -0
  154. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/proxy.pyi +0 -0
  155. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/py.typed +0 -0
  156. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/queue.py +0 -0
  157. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/queue.pyi +0 -0
  158. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/retries.py +0 -0
  159. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/runner.py +0 -0
  160. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/runner.pyi +0 -0
  161. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/running_app.py +0 -0
  162. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/sandbox.py +0 -0
  163. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/sandbox.pyi +0 -0
  164. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/sandbox_fs.py +0 -0
  165. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/sandbox_fs.pyi +0 -0
  166. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/schedule.py +0 -0
  167. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/scheduler_placement.py +0 -0
  168. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/secret.py +0 -0
  169. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/secret.pyi +0 -0
  170. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/server.py +0 -0
  171. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/server.pyi +0 -0
  172. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/serving.py +0 -0
  173. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/serving.pyi +0 -0
  174. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/snapshot.py +0 -0
  175. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/snapshot.pyi +0 -0
  176. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/stream_type.py +0 -0
  177. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/token_flow.py +0 -0
  178. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/token_flow.pyi +0 -0
  179. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/volume.py +0 -0
  180. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/volume.pyi +0 -0
  181. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal.egg-info/SOURCES.txt +0 -0
  182. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal.egg-info/dependency_links.txt +0 -0
  183. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal.egg-info/entry_points.txt +0 -0
  184. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal.egg-info/requires.txt +0 -0
  185. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal.egg-info/top_level.txt +0 -0
  186. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_docs/__init__.py +0 -0
  187. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_docs/gen_cli_docs.py +0 -0
  188. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_docs/gen_cli_docs_main.py +0 -0
  189. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_docs/gen_reference_docs.py +0 -0
  190. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_docs/gen_reference_docs_main.py +0 -0
  191. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_docs/mdmd/__init__.py +0 -0
  192. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_docs/mdmd/mdmd.py +0 -0
  193. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_docs/mdmd/signatures.py +0 -0
  194. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_proto/__init__.py +0 -0
  195. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_proto/api_grpc.py +0 -0
  196. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_proto/api_pb2.py +0 -0
  197. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_proto/api_pb2.pyi +0 -0
  198. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_proto/api_pb2_grpc.py +0 -0
  199. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_proto/api_pb2_grpc.pyi +0 -0
  200. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_proto/modal_api_grpc.py +0 -0
  201. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_proto/py.typed +0 -0
  202. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_proto/task_command_router_grpc.py +0 -0
  203. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_proto/task_command_router_pb2.py +0 -0
  204. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_proto/task_command_router_pb2.pyi +0 -0
  205. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_proto/task_command_router_pb2_grpc.py +0 -0
  206. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
  207. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_version/__main__.py +0 -0
  208. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/pyproject.toml +0 -0
  209. {modal-1.4.1.dev2 → modal-1.4.1.dev4}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.4.1.dev2
3
+ Version: 1.4.1.dev4
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License-Expression: Apache-2.0
@@ -28,6 +28,7 @@ _EXEC_SANDBOX_UNAVAILABLE_ERROR_TYPES = (NotFoundError, ServiceError, Connection
28
28
  class ErrorPayload:
29
29
  error_kind: str
30
30
  message: str
31
+ detail: str = ""
31
32
 
32
33
 
33
34
  def _stderr_to_text(stderr: Union[str, bytes]) -> str:
@@ -51,11 +52,18 @@ def try_parse_error_payload(stderr: Union[str, bytes]) -> Optional[ErrorPayload]
51
52
  return None
52
53
  if not isinstance(message, str) or not message.strip():
53
54
  return None
54
- return ErrorPayload(error_kind=error_kind, message=message)
55
+ detail = payload.get("detail", "")
56
+ if not isinstance(detail, str):
57
+ detail = ""
58
+ return ErrorPayload(error_kind=error_kind, message=message, detail=detail)
55
59
 
56
60
 
57
61
  def raise_read_file_error(returncode: int, stderr: Union[str, bytes], remote_path: str) -> NoReturn:
58
62
  if payload := try_parse_error_payload(stderr):
63
+ logger.debug(
64
+ f"sandbox-fs-tools read error: path={remote_path}, "
65
+ f"error_kind={payload.error_kind}, message={payload.message}, detail={payload.detail}"
66
+ )
59
67
  if payload.error_kind == "NotFound":
60
68
  raise SandboxFilesystemNotFoundError(f"{payload.message}: {remote_path}")
61
69
  if payload.error_kind == "IsDirectory":
@@ -106,6 +114,10 @@ def translate_exec_unexpected_error(operation: str, path: str, exc: Exception) -
106
114
 
107
115
  def raise_write_file_error(returncode: int, stderr: Union[str, bytes], remote_path: str) -> NoReturn:
108
116
  if payload := try_parse_error_payload(stderr):
117
+ logger.debug(
118
+ f"sandbox-fs-tools write error: path={remote_path}, "
119
+ f"error_kind={payload.error_kind}, message={payload.message}, detail={payload.detail}"
120
+ )
109
121
  if payload.error_kind == "NotDirectory" or payload.error_kind == "AlreadyExists":
110
122
  raise SandboxFilesystemNotADirectoryError(f"{payload.message}: {remote_path}")
111
123
  if payload.error_kind == "IsDirectory":
@@ -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.4.1.dev2",
38
+ version: str = "1.4.1.dev4",
39
39
  ):
40
40
  """mdmd:hidden
41
41
  The Modal client object is not intended to be instantiated directly by users.
@@ -171,7 +171,7 @@ class Client:
171
171
  server_url: str,
172
172
  client_type: int,
173
173
  credentials: typing.Optional[tuple[str, str]],
174
- version: str = "1.4.1.dev2",
174
+ version: str = "1.4.1.dev4",
175
175
  ):
176
176
  """mdmd:hidden
177
177
  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.4.1.dev2
3
+ Version: 1.4.1.dev4
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License-Expression: Apache-2.0
@@ -1,4 +1,4 @@
1
1
  # Copyright Modal Labs 2026
2
2
  """Supplies the current version of the modal client library."""
3
3
 
4
- __version__ = "1.4.1.dev2"
4
+ __version__ = "1.4.1.dev4"
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
File without changes
File without changes
File without changes