modal 1.1.2.dev24__tar.gz → 1.1.2.dev26__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 (190) hide show
  1. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/PKG-INFO +1 -1
  2. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/cli/entry_point.py +9 -3
  3. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/cli/launch.py +11 -2
  4. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/client.pyi +2 -2
  5. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal.egg-info/PKG-INFO +1 -1
  6. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal_version/__init__.py +1 -1
  7. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/LICENSE +0 -0
  8. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/README.md +0 -0
  9. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/__init__.py +0 -0
  10. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/__main__.py +0 -0
  11. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_clustered_functions.py +0 -0
  12. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_clustered_functions.pyi +0 -0
  13. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_container_entrypoint.py +0 -0
  14. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_functions.py +0 -0
  15. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_ipython.py +0 -0
  16. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_location.py +0 -0
  17. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_object.py +0 -0
  18. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_output.py +0 -0
  19. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_partial_function.py +0 -0
  20. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_pty.py +0 -0
  21. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_resolver.py +0 -0
  22. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_resources.py +0 -0
  23. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_runtime/__init__.py +0 -0
  24. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_runtime/asgi.py +0 -0
  25. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_runtime/container_io_manager.py +0 -0
  26. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_runtime/container_io_manager.pyi +0 -0
  27. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_runtime/execution_context.py +0 -0
  28. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_runtime/execution_context.pyi +0 -0
  29. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  30. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_runtime/telemetry.py +0 -0
  31. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_runtime/user_code_imports.py +0 -0
  32. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_serialization.py +0 -0
  33. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_traceback.py +0 -0
  34. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_tunnel.py +0 -0
  35. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_tunnel.pyi +0 -0
  36. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_type_manager.py +0 -0
  37. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_utils/__init__.py +0 -0
  38. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_utils/app_utils.py +0 -0
  39. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_utils/async_utils.py +0 -0
  40. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_utils/auth_token_manager.py +0 -0
  41. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_utils/blob_utils.py +0 -0
  42. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_utils/bytes_io_segment_payload.py +0 -0
  43. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_utils/deprecation.py +0 -0
  44. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_utils/docker_utils.py +0 -0
  45. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_utils/function_utils.py +0 -0
  46. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_utils/git_utils.py +0 -0
  47. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_utils/grpc_testing.py +0 -0
  48. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_utils/grpc_utils.py +0 -0
  49. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_utils/hash_utils.py +0 -0
  50. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_utils/http_utils.py +0 -0
  51. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_utils/jwt_utils.py +0 -0
  52. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_utils/logger.py +0 -0
  53. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_utils/mount_utils.py +0 -0
  54. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_utils/name_utils.py +0 -0
  55. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_utils/package_utils.py +0 -0
  56. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_utils/pattern_utils.py +0 -0
  57. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_utils/rand_pb_testing.py +0 -0
  58. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_utils/shell_utils.py +0 -0
  59. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_utils/time_utils.py +0 -0
  60. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_vendor/__init__.py +0 -0
  61. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  62. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_vendor/cloudpickle.py +0 -0
  63. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_vendor/tblib.py +0 -0
  64. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/_watcher.py +0 -0
  65. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/app.py +0 -0
  66. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/app.pyi +0 -0
  67. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/builder/2023.12.312.txt +0 -0
  68. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/builder/2023.12.txt +0 -0
  69. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/builder/2024.04.txt +0 -0
  70. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/builder/2024.10.txt +0 -0
  71. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/builder/2025.06.txt +0 -0
  72. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/builder/PREVIEW.txt +0 -0
  73. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/builder/README.md +0 -0
  74. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/builder/base-images.json +0 -0
  75. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/call_graph.py +0 -0
  76. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/cli/__init__.py +0 -0
  77. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/cli/_download.py +0 -0
  78. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/cli/_traceback.py +0 -0
  79. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/cli/app.py +0 -0
  80. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/cli/cluster.py +0 -0
  81. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/cli/config.py +0 -0
  82. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/cli/container.py +0 -0
  83. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/cli/dict.py +0 -0
  84. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/cli/environment.py +0 -0
  85. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/cli/import_refs.py +0 -0
  86. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/cli/network_file_system.py +0 -0
  87. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/cli/profile.py +0 -0
  88. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/cli/programs/__init__.py +0 -0
  89. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/cli/programs/launch_instance_ssh.py +0 -0
  90. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/cli/programs/run_jupyter.py +0 -0
  91. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/cli/programs/run_marimo.py +0 -0
  92. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/cli/programs/vscode.py +0 -0
  93. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/cli/queues.py +0 -0
  94. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/cli/run.py +0 -0
  95. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/cli/secret.py +0 -0
  96. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/cli/token.py +0 -0
  97. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/cli/utils.py +0 -0
  98. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/cli/volume.py +0 -0
  99. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/client.py +0 -0
  100. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/cloud_bucket_mount.py +0 -0
  101. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/cloud_bucket_mount.pyi +0 -0
  102. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/cls.py +0 -0
  103. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/cls.pyi +0 -0
  104. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/config.py +0 -0
  105. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/container_process.py +0 -0
  106. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/container_process.pyi +0 -0
  107. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/dict.py +0 -0
  108. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/dict.pyi +0 -0
  109. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/environments.py +0 -0
  110. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/environments.pyi +0 -0
  111. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/exception.py +0 -0
  112. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/experimental/__init__.py +0 -0
  113. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/experimental/flash.py +0 -0
  114. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/experimental/flash.pyi +0 -0
  115. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/experimental/ipython.py +0 -0
  116. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/file_io.py +0 -0
  117. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/file_io.pyi +0 -0
  118. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/file_pattern_matcher.py +0 -0
  119. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/functions.py +0 -0
  120. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/functions.pyi +0 -0
  121. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/gpu.py +0 -0
  122. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/image.py +0 -0
  123. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/image.pyi +0 -0
  124. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/io_streams.py +0 -0
  125. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/io_streams.pyi +0 -0
  126. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/mount.py +0 -0
  127. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/mount.pyi +0 -0
  128. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/network_file_system.py +0 -0
  129. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/network_file_system.pyi +0 -0
  130. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/object.py +0 -0
  131. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/object.pyi +0 -0
  132. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/output.py +0 -0
  133. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/parallel_map.py +0 -0
  134. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/parallel_map.pyi +0 -0
  135. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/partial_function.py +0 -0
  136. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/partial_function.pyi +0 -0
  137. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/proxy.py +0 -0
  138. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/proxy.pyi +0 -0
  139. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/py.typed +0 -0
  140. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/queue.py +0 -0
  141. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/queue.pyi +0 -0
  142. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/retries.py +0 -0
  143. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/runner.py +0 -0
  144. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/runner.pyi +0 -0
  145. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/running_app.py +0 -0
  146. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/sandbox.py +0 -0
  147. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/sandbox.pyi +0 -0
  148. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/schedule.py +0 -0
  149. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/scheduler_placement.py +0 -0
  150. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/secret.py +0 -0
  151. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/secret.pyi +0 -0
  152. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/serving.py +0 -0
  153. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/serving.pyi +0 -0
  154. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/snapshot.py +0 -0
  155. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/snapshot.pyi +0 -0
  156. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/stream_type.py +0 -0
  157. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/token_flow.py +0 -0
  158. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/token_flow.pyi +0 -0
  159. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/volume.py +0 -0
  160. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal/volume.pyi +0 -0
  161. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal.egg-info/SOURCES.txt +0 -0
  162. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal.egg-info/dependency_links.txt +0 -0
  163. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal.egg-info/entry_points.txt +0 -0
  164. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal.egg-info/requires.txt +0 -0
  165. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal.egg-info/top_level.txt +0 -0
  166. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal_docs/__init__.py +0 -0
  167. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal_docs/gen_cli_docs.py +0 -0
  168. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal_docs/gen_reference_docs.py +0 -0
  169. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal_docs/mdmd/__init__.py +0 -0
  170. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal_docs/mdmd/mdmd.py +0 -0
  171. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal_docs/mdmd/signatures.py +0 -0
  172. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal_proto/__init__.py +0 -0
  173. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal_proto/api.proto +0 -0
  174. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal_proto/api_grpc.py +0 -0
  175. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal_proto/api_pb2.py +0 -0
  176. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal_proto/api_pb2.pyi +0 -0
  177. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal_proto/api_pb2_grpc.py +0 -0
  178. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal_proto/api_pb2_grpc.pyi +0 -0
  179. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal_proto/modal_api_grpc.py +0 -0
  180. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal_proto/modal_options_grpc.py +0 -0
  181. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal_proto/options.proto +0 -0
  182. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal_proto/options_grpc.py +0 -0
  183. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal_proto/options_pb2.py +0 -0
  184. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal_proto/options_pb2.pyi +0 -0
  185. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal_proto/options_pb2_grpc.py +0 -0
  186. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal_proto/options_pb2_grpc.pyi +0 -0
  187. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal_proto/py.typed +0 -0
  188. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/modal_version/__main__.py +0 -0
  189. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/pyproject.toml +0 -0
  190. {modal-1.1.2.dev24 → modal-1.1.2.dev26}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.1.2.dev24
3
+ Version: 1.1.2.dev26
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -33,7 +33,7 @@ def version_callback(value: bool):
33
33
 
34
34
 
35
35
  entrypoint_cli_typer = typer.Typer(
36
- no_args_is_help=True,
36
+ no_args_is_help=False,
37
37
  add_completion=False,
38
38
  rich_markup_mode="markdown",
39
39
  help="""
@@ -45,12 +45,18 @@ entrypoint_cli_typer = typer.Typer(
45
45
  )
46
46
 
47
47
 
48
- @entrypoint_cli_typer.callback()
48
+ @entrypoint_cli_typer.callback(invoke_without_command=True)
49
49
  def modal(
50
50
  ctx: typer.Context,
51
51
  version: bool = typer.Option(None, "--version", callback=version_callback),
52
52
  ):
53
- pass
53
+ # TODO: When https://github.com/fastapi/typer/pull/1240 gets shipped, then
54
+ # - set invoke_without_command=False in the callback decorator
55
+ # - set no_args_is_help=True in entrypoint_cli_typer
56
+ if ctx.invoked_subcommand is None:
57
+ console = make_console()
58
+ console.print(ctx.get_help())
59
+ raise typer.Exit()
54
60
 
55
61
 
56
62
  def check_path():
@@ -9,6 +9,7 @@ from pathlib import Path
9
9
  from typing import Any, Optional
10
10
 
11
11
  import rich.panel
12
+ from rich.markdown import Markdown
12
13
  from typer import Typer
13
14
 
14
15
  from .._output import make_console
@@ -20,10 +21,10 @@ from .import_refs import ImportRef, _get_runnable_app, import_file_or_module
20
21
  launch_cli = Typer(
21
22
  name="launch",
22
23
  no_args_is_help=True,
24
+ rich_markup_mode="markdown",
23
25
  help="""
24
26
  Open a serverless app instance on Modal.
25
-
26
- This command is in preview and may change in the future.
27
+ >⚠️ `modal launch` is **experimental** and may change in the future.
27
28
  """,
28
29
  )
29
30
 
@@ -31,6 +32,14 @@ launch_cli = Typer(
31
32
  def _launch_program(
32
33
  name: str, filename: str, detach: bool, args: dict[str, Any], *, description: Optional[str] = None
33
34
  ) -> None:
35
+ console = make_console()
36
+ console.print(
37
+ rich.panel.Panel(
38
+ Markdown(f"⚠️ `modal launch {name}` is **experimental** and may change in the future."),
39
+ border_style="yellow",
40
+ ),
41
+ )
42
+
34
43
  os.environ["MODAL_LAUNCH_ARGS"] = json.dumps(args)
35
44
 
36
45
  program_path = str(Path(__file__).parent / "programs" / filename)
@@ -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.1.2.dev24",
36
+ version: str = "1.1.2.dev26",
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.1.2.dev24",
167
+ version: str = "1.1.2.dev26",
168
168
  ):
169
169
  """mdmd:hidden
170
170
  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.1.2.dev24
3
+ Version: 1.1.2.dev26
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.1.2.dev24"
4
+ __version__ = "1.1.2.dev26"
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