modal 1.0.3.dev1__tar.gz → 1.0.3.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.
Files changed (184) hide show
  1. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/PKG-INFO +1 -1
  2. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/client.pyi +2 -2
  3. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/image.py +38 -22
  4. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal.egg-info/PKG-INFO +1 -1
  5. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal_version/__init__.py +1 -1
  6. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/LICENSE +0 -0
  7. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/README.md +0 -0
  8. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/__init__.py +0 -0
  9. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/__main__.py +0 -0
  10. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_clustered_functions.py +0 -0
  11. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_clustered_functions.pyi +0 -0
  12. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_container_entrypoint.py +0 -0
  13. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_functions.py +0 -0
  14. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_ipython.py +0 -0
  15. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_location.py +0 -0
  16. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_object.py +0 -0
  17. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_output.py +0 -0
  18. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_partial_function.py +0 -0
  19. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_pty.py +0 -0
  20. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_resolver.py +0 -0
  21. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_resources.py +0 -0
  22. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_runtime/__init__.py +0 -0
  23. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_runtime/asgi.py +0 -0
  24. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_runtime/container_io_manager.py +0 -0
  25. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_runtime/container_io_manager.pyi +0 -0
  26. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_runtime/execution_context.py +0 -0
  27. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_runtime/execution_context.pyi +0 -0
  28. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  29. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_runtime/telemetry.py +0 -0
  30. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_runtime/user_code_imports.py +0 -0
  31. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_serialization.py +0 -0
  32. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_traceback.py +0 -0
  33. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_tunnel.py +0 -0
  34. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_tunnel.pyi +0 -0
  35. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_type_manager.py +0 -0
  36. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_utils/__init__.py +0 -0
  37. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_utils/app_utils.py +0 -0
  38. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_utils/async_utils.py +0 -0
  39. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_utils/blob_utils.py +0 -0
  40. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_utils/bytes_io_segment_payload.py +0 -0
  41. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_utils/deprecation.py +0 -0
  42. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_utils/docker_utils.py +0 -0
  43. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_utils/function_utils.py +0 -0
  44. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_utils/git_utils.py +0 -0
  45. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_utils/grpc_testing.py +0 -0
  46. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_utils/grpc_utils.py +0 -0
  47. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_utils/hash_utils.py +0 -0
  48. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_utils/http_utils.py +0 -0
  49. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_utils/jwt_utils.py +0 -0
  50. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_utils/logger.py +0 -0
  51. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_utils/mount_utils.py +0 -0
  52. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_utils/name_utils.py +0 -0
  53. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_utils/package_utils.py +0 -0
  54. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_utils/pattern_utils.py +0 -0
  55. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_utils/rand_pb_testing.py +0 -0
  56. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_utils/shell_utils.py +0 -0
  57. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_utils/time_utils.py +0 -0
  58. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_vendor/__init__.py +0 -0
  59. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  60. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_vendor/cloudpickle.py +0 -0
  61. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_vendor/tblib.py +0 -0
  62. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/_watcher.py +0 -0
  63. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/app.py +0 -0
  64. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/app.pyi +0 -0
  65. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/call_graph.py +0 -0
  66. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/cli/__init__.py +0 -0
  67. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/cli/_download.py +0 -0
  68. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/cli/_traceback.py +0 -0
  69. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/cli/app.py +0 -0
  70. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/cli/cluster.py +0 -0
  71. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/cli/config.py +0 -0
  72. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/cli/container.py +0 -0
  73. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/cli/dict.py +0 -0
  74. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/cli/entry_point.py +0 -0
  75. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/cli/environment.py +0 -0
  76. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/cli/import_refs.py +0 -0
  77. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/cli/launch.py +0 -0
  78. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/cli/network_file_system.py +0 -0
  79. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/cli/profile.py +0 -0
  80. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/cli/programs/__init__.py +0 -0
  81. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/cli/programs/run_jupyter.py +0 -0
  82. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/cli/programs/vscode.py +0 -0
  83. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/cli/queues.py +0 -0
  84. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/cli/run.py +0 -0
  85. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/cli/secret.py +0 -0
  86. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/cli/token.py +0 -0
  87. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/cli/utils.py +0 -0
  88. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/cli/volume.py +0 -0
  89. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/client.py +0 -0
  90. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/cloud_bucket_mount.py +0 -0
  91. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/cloud_bucket_mount.pyi +0 -0
  92. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/cls.py +0 -0
  93. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/cls.pyi +0 -0
  94. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/config.py +0 -0
  95. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/container_process.py +0 -0
  96. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/container_process.pyi +0 -0
  97. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/dict.py +0 -0
  98. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/dict.pyi +0 -0
  99. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/environments.py +0 -0
  100. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/environments.pyi +0 -0
  101. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/exception.py +0 -0
  102. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/experimental/__init__.py +0 -0
  103. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/experimental/ipython.py +0 -0
  104. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/file_io.py +0 -0
  105. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/file_io.pyi +0 -0
  106. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/file_pattern_matcher.py +0 -0
  107. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/functions.py +0 -0
  108. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/functions.pyi +0 -0
  109. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/gpu.py +0 -0
  110. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/image.pyi +0 -0
  111. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/io_streams.py +0 -0
  112. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/io_streams.pyi +0 -0
  113. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/mount.py +0 -0
  114. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/mount.pyi +0 -0
  115. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/network_file_system.py +0 -0
  116. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/network_file_system.pyi +0 -0
  117. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/object.py +0 -0
  118. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/object.pyi +0 -0
  119. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/output.py +0 -0
  120. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/parallel_map.py +0 -0
  121. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/parallel_map.pyi +0 -0
  122. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/partial_function.py +0 -0
  123. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/partial_function.pyi +0 -0
  124. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/proxy.py +0 -0
  125. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/proxy.pyi +0 -0
  126. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/py.typed +0 -0
  127. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/queue.py +0 -0
  128. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/queue.pyi +0 -0
  129. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/requirements/2023.12.312.txt +0 -0
  130. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/requirements/2023.12.txt +0 -0
  131. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/requirements/2024.04.txt +0 -0
  132. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/requirements/2024.10.txt +0 -0
  133. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/requirements/PREVIEW.txt +0 -0
  134. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/requirements/README.md +0 -0
  135. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/requirements/base-images.json +0 -0
  136. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/retries.py +0 -0
  137. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/runner.py +0 -0
  138. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/runner.pyi +0 -0
  139. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/running_app.py +0 -0
  140. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/sandbox.py +0 -0
  141. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/sandbox.pyi +0 -0
  142. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/schedule.py +0 -0
  143. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/scheduler_placement.py +0 -0
  144. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/secret.py +0 -0
  145. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/secret.pyi +0 -0
  146. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/serving.py +0 -0
  147. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/serving.pyi +0 -0
  148. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/snapshot.py +0 -0
  149. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/snapshot.pyi +0 -0
  150. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/stream_type.py +0 -0
  151. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/token_flow.py +0 -0
  152. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/token_flow.pyi +0 -0
  153. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/volume.py +0 -0
  154. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal/volume.pyi +0 -0
  155. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal.egg-info/SOURCES.txt +0 -0
  156. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal.egg-info/dependency_links.txt +0 -0
  157. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal.egg-info/entry_points.txt +0 -0
  158. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal.egg-info/requires.txt +0 -0
  159. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal.egg-info/top_level.txt +0 -0
  160. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal_docs/__init__.py +0 -0
  161. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal_docs/gen_cli_docs.py +0 -0
  162. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal_docs/gen_reference_docs.py +0 -0
  163. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal_docs/mdmd/__init__.py +0 -0
  164. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal_docs/mdmd/mdmd.py +0 -0
  165. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal_docs/mdmd/signatures.py +0 -0
  166. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal_proto/__init__.py +0 -0
  167. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal_proto/api.proto +0 -0
  168. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal_proto/api_grpc.py +0 -0
  169. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal_proto/api_pb2.py +0 -0
  170. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal_proto/api_pb2.pyi +0 -0
  171. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal_proto/api_pb2_grpc.py +0 -0
  172. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal_proto/api_pb2_grpc.pyi +0 -0
  173. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal_proto/modal_api_grpc.py +0 -0
  174. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal_proto/modal_options_grpc.py +0 -0
  175. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal_proto/options.proto +0 -0
  176. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal_proto/options_grpc.py +0 -0
  177. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal_proto/options_pb2.py +0 -0
  178. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal_proto/options_pb2.pyi +0 -0
  179. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal_proto/options_pb2_grpc.py +0 -0
  180. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal_proto/options_pb2_grpc.pyi +0 -0
  181. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal_proto/py.typed +0 -0
  182. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/modal_version/__main__.py +0 -0
  183. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/pyproject.toml +0 -0
  184. {modal-1.0.3.dev1 → modal-1.0.3.dev2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.0.3.dev1
3
+ Version: 1.0.3.dev2
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -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.3.dev1",
34
+ version: str = "1.0.3.dev2",
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.3.dev1",
97
+ version: str = "1.0.3.dev2",
98
98
  ): ...
99
99
  def is_closed(self) -> bool: ...
100
100
  @property
@@ -647,7 +647,13 @@ class _Image(_Object, type_prefix="im"):
647
647
  metadata = resp.metadata
648
648
 
649
649
  if result.status == api_pb2.GenericResult.GENERIC_STATUS_FAILURE:
650
- raise RemoteError(f"Image build for {image_id} failed with the exception:\n{result.exception}")
650
+ if result.exception:
651
+ raise RemoteError(f"Image build for {image_id} failed with the exception:\n{result.exception}")
652
+ else:
653
+ msg = f"Image build for {image_id} failed. See build logs for more details."
654
+ if not _get_output_manager():
655
+ msg += " (Hint: Use `modal.enable_output()` to see logs from the process building the Image.)"
656
+ raise RemoteError(msg)
651
657
  elif result.status == api_pb2.GenericResult.GENERIC_STATUS_TERMINATED:
652
658
  raise RemoteError(f"Image build for {image_id} terminated due to external shut-down. Please try again.")
653
659
  elif result.status == api_pb2.GenericResult.GENERIC_STATUS_TIMEOUT:
@@ -1522,12 +1528,14 @@ class _Image(_Object, type_prefix="im"):
1522
1528
  modal_requirements_commands = []
1523
1529
  if builder_version <= "2024.10":
1524
1530
  # past 2024.10, client dependencies are mounted at runtime
1525
- modal_requirements_commands.extend([
1526
- f"COPY {CONTAINER_REQUIREMENTS_PATH} {CONTAINER_REQUIREMENTS_PATH}",
1527
- f"RUN python -m pip install --upgrade {_base_image_config('package_tools', builder_version)}",
1528
- f"RUN {requirements_prefix}{_get_modal_requirements_command(builder_version)}",
1529
- ])
1530
- if "2024.10" >= builder_version > "2023.12":
1531
+ modal_requirements_commands.extend(
1532
+ [
1533
+ f"COPY {CONTAINER_REQUIREMENTS_PATH} {CONTAINER_REQUIREMENTS_PATH}",
1534
+ f"RUN python -m pip install --upgrade {_base_image_config('package_tools', builder_version)}",
1535
+ f"RUN {requirements_prefix}{_get_modal_requirements_command(builder_version)}",
1536
+ ]
1537
+ )
1538
+ if "2024.10" >= builder_version > "2023.12":
1531
1539
  modal_requirements_commands.append(f"RUN rm {CONTAINER_REQUIREMENTS_PATH}")
1532
1540
 
1533
1541
  return [
@@ -1830,23 +1838,31 @@ class _Image(_Object, type_prefix="im"):
1830
1838
  f"FROM python:{full_python_version}-slim-{debian_codename}",
1831
1839
  ]
1832
1840
  if version <= "2024.10":
1833
- commands.extend([
1834
- f"COPY {CONTAINER_REQUIREMENTS_PATH} {CONTAINER_REQUIREMENTS_PATH}",
1835
- ])
1836
- commands.extend([
1837
- "RUN apt-get update",
1838
- "RUN apt-get install -y gcc gfortran build-essential",
1839
- f"RUN pip install --upgrade {_base_image_config('package_tools', version)}",
1840
- ])
1841
+ commands.extend(
1842
+ [
1843
+ f"COPY {CONTAINER_REQUIREMENTS_PATH} {CONTAINER_REQUIREMENTS_PATH}",
1844
+ ]
1845
+ )
1846
+ commands.extend(
1847
+ [
1848
+ "RUN apt-get update",
1849
+ "RUN apt-get install -y gcc gfortran build-essential",
1850
+ f"RUN pip install --upgrade {_base_image_config('package_tools', version)}",
1851
+ ]
1852
+ )
1841
1853
  if version <= "2024.10":
1842
1854
  # after 2024.10, modal requirements are mounted at runtime
1843
- commands.extend([
1844
- f"RUN {_get_modal_requirements_command(version)}",
1845
- ])
1846
- commands.extend([
1847
- # Set debian front-end to non-interactive to avoid users getting stuck with input prompts.
1848
- "RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections",
1849
- ])
1855
+ commands.extend(
1856
+ [
1857
+ f"RUN {_get_modal_requirements_command(version)}",
1858
+ ]
1859
+ )
1860
+ commands.extend(
1861
+ [
1862
+ # Set debian front-end to non-interactive to avoid users getting stuck with input prompts.
1863
+ "RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections",
1864
+ ]
1865
+ )
1850
1866
  if "2024.10" >= version > "2023.12":
1851
1867
  commands.append(f"RUN rm {CONTAINER_REQUIREMENTS_PATH}")
1852
1868
  if version > "2024.10":
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.0.3.dev1
3
+ Version: 1.0.3.dev2
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -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.3.dev1"
4
+ __version__ = "1.0.3.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