modal 0.73.112__tar.gz → 0.73.113__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-0.73.112 → modal-0.73.113}/PKG-INFO +1 -1
  2. {modal-0.73.112 → modal-0.73.113}/modal/_utils/git_utils.py +24 -0
  3. {modal-0.73.112 → modal-0.73.113}/modal/client.pyi +2 -2
  4. {modal-0.73.112 → modal-0.73.113}/modal.egg-info/PKG-INFO +1 -1
  5. {modal-0.73.112 → modal-0.73.113}/modal_version/_version_generated.py +1 -1
  6. {modal-0.73.112 → modal-0.73.113}/LICENSE +0 -0
  7. {modal-0.73.112 → modal-0.73.113}/README.md +0 -0
  8. {modal-0.73.112 → modal-0.73.113}/modal/__init__.py +0 -0
  9. {modal-0.73.112 → modal-0.73.113}/modal/__main__.py +0 -0
  10. {modal-0.73.112 → modal-0.73.113}/modal/_clustered_functions.py +0 -0
  11. {modal-0.73.112 → modal-0.73.113}/modal/_clustered_functions.pyi +0 -0
  12. {modal-0.73.112 → modal-0.73.113}/modal/_container_entrypoint.py +0 -0
  13. {modal-0.73.112 → modal-0.73.113}/modal/_functions.py +0 -0
  14. {modal-0.73.112 → modal-0.73.113}/modal/_ipython.py +0 -0
  15. {modal-0.73.112 → modal-0.73.113}/modal/_location.py +0 -0
  16. {modal-0.73.112 → modal-0.73.113}/modal/_object.py +0 -0
  17. {modal-0.73.112 → modal-0.73.113}/modal/_output.py +0 -0
  18. {modal-0.73.112 → modal-0.73.113}/modal/_partial_function.py +0 -0
  19. {modal-0.73.112 → modal-0.73.113}/modal/_proxy_tunnel.py +0 -0
  20. {modal-0.73.112 → modal-0.73.113}/modal/_pty.py +0 -0
  21. {modal-0.73.112 → modal-0.73.113}/modal/_resolver.py +0 -0
  22. {modal-0.73.112 → modal-0.73.113}/modal/_resources.py +0 -0
  23. {modal-0.73.112 → modal-0.73.113}/modal/_runtime/__init__.py +0 -0
  24. {modal-0.73.112 → modal-0.73.113}/modal/_runtime/asgi.py +0 -0
  25. {modal-0.73.112 → modal-0.73.113}/modal/_runtime/container_io_manager.py +0 -0
  26. {modal-0.73.112 → modal-0.73.113}/modal/_runtime/container_io_manager.pyi +0 -0
  27. {modal-0.73.112 → modal-0.73.113}/modal/_runtime/execution_context.py +0 -0
  28. {modal-0.73.112 → modal-0.73.113}/modal/_runtime/execution_context.pyi +0 -0
  29. {modal-0.73.112 → modal-0.73.113}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  30. {modal-0.73.112 → modal-0.73.113}/modal/_runtime/telemetry.py +0 -0
  31. {modal-0.73.112 → modal-0.73.113}/modal/_runtime/user_code_imports.py +0 -0
  32. {modal-0.73.112 → modal-0.73.113}/modal/_serialization.py +0 -0
  33. {modal-0.73.112 → modal-0.73.113}/modal/_traceback.py +0 -0
  34. {modal-0.73.112 → modal-0.73.113}/modal/_tunnel.py +0 -0
  35. {modal-0.73.112 → modal-0.73.113}/modal/_tunnel.pyi +0 -0
  36. {modal-0.73.112 → modal-0.73.113}/modal/_utils/__init__.py +0 -0
  37. {modal-0.73.112 → modal-0.73.113}/modal/_utils/app_utils.py +0 -0
  38. {modal-0.73.112 → modal-0.73.113}/modal/_utils/async_utils.py +0 -0
  39. {modal-0.73.112 → modal-0.73.113}/modal/_utils/blob_utils.py +0 -0
  40. {modal-0.73.112 → modal-0.73.113}/modal/_utils/bytes_io_segment_payload.py +0 -0
  41. {modal-0.73.112 → modal-0.73.113}/modal/_utils/deprecation.py +0 -0
  42. {modal-0.73.112 → modal-0.73.113}/modal/_utils/docker_utils.py +0 -0
  43. {modal-0.73.112 → modal-0.73.113}/modal/_utils/function_utils.py +0 -0
  44. {modal-0.73.112 → modal-0.73.113}/modal/_utils/grpc_testing.py +0 -0
  45. {modal-0.73.112 → modal-0.73.113}/modal/_utils/grpc_utils.py +0 -0
  46. {modal-0.73.112 → modal-0.73.113}/modal/_utils/hash_utils.py +0 -0
  47. {modal-0.73.112 → modal-0.73.113}/modal/_utils/http_utils.py +0 -0
  48. {modal-0.73.112 → modal-0.73.113}/modal/_utils/logger.py +0 -0
  49. {modal-0.73.112 → modal-0.73.113}/modal/_utils/mount_utils.py +0 -0
  50. {modal-0.73.112 → modal-0.73.113}/modal/_utils/name_utils.py +0 -0
  51. {modal-0.73.112 → modal-0.73.113}/modal/_utils/package_utils.py +0 -0
  52. {modal-0.73.112 → modal-0.73.113}/modal/_utils/pattern_utils.py +0 -0
  53. {modal-0.73.112 → modal-0.73.113}/modal/_utils/rand_pb_testing.py +0 -0
  54. {modal-0.73.112 → modal-0.73.113}/modal/_utils/shell_utils.py +0 -0
  55. {modal-0.73.112 → modal-0.73.113}/modal/_vendor/__init__.py +0 -0
  56. {modal-0.73.112 → modal-0.73.113}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  57. {modal-0.73.112 → modal-0.73.113}/modal/_vendor/cloudpickle.py +0 -0
  58. {modal-0.73.112 → modal-0.73.113}/modal/_vendor/tblib.py +0 -0
  59. {modal-0.73.112 → modal-0.73.113}/modal/_watcher.py +0 -0
  60. {modal-0.73.112 → modal-0.73.113}/modal/app.py +0 -0
  61. {modal-0.73.112 → modal-0.73.113}/modal/app.pyi +0 -0
  62. {modal-0.73.112 → modal-0.73.113}/modal/call_graph.py +0 -0
  63. {modal-0.73.112 → modal-0.73.113}/modal/cli/__init__.py +0 -0
  64. {modal-0.73.112 → modal-0.73.113}/modal/cli/_download.py +0 -0
  65. {modal-0.73.112 → modal-0.73.113}/modal/cli/_traceback.py +0 -0
  66. {modal-0.73.112 → modal-0.73.113}/modal/cli/app.py +0 -0
  67. {modal-0.73.112 → modal-0.73.113}/modal/cli/config.py +0 -0
  68. {modal-0.73.112 → modal-0.73.113}/modal/cli/container.py +0 -0
  69. {modal-0.73.112 → modal-0.73.113}/modal/cli/dict.py +0 -0
  70. {modal-0.73.112 → modal-0.73.113}/modal/cli/entry_point.py +0 -0
  71. {modal-0.73.112 → modal-0.73.113}/modal/cli/environment.py +0 -0
  72. {modal-0.73.112 → modal-0.73.113}/modal/cli/import_refs.py +0 -0
  73. {modal-0.73.112 → modal-0.73.113}/modal/cli/launch.py +0 -0
  74. {modal-0.73.112 → modal-0.73.113}/modal/cli/network_file_system.py +0 -0
  75. {modal-0.73.112 → modal-0.73.113}/modal/cli/profile.py +0 -0
  76. {modal-0.73.112 → modal-0.73.113}/modal/cli/programs/__init__.py +0 -0
  77. {modal-0.73.112 → modal-0.73.113}/modal/cli/programs/run_jupyter.py +0 -0
  78. {modal-0.73.112 → modal-0.73.113}/modal/cli/programs/vscode.py +0 -0
  79. {modal-0.73.112 → modal-0.73.113}/modal/cli/queues.py +0 -0
  80. {modal-0.73.112 → modal-0.73.113}/modal/cli/run.py +0 -0
  81. {modal-0.73.112 → modal-0.73.113}/modal/cli/secret.py +0 -0
  82. {modal-0.73.112 → modal-0.73.113}/modal/cli/token.py +0 -0
  83. {modal-0.73.112 → modal-0.73.113}/modal/cli/utils.py +0 -0
  84. {modal-0.73.112 → modal-0.73.113}/modal/cli/volume.py +0 -0
  85. {modal-0.73.112 → modal-0.73.113}/modal/client.py +0 -0
  86. {modal-0.73.112 → modal-0.73.113}/modal/cloud_bucket_mount.py +0 -0
  87. {modal-0.73.112 → modal-0.73.113}/modal/cloud_bucket_mount.pyi +0 -0
  88. {modal-0.73.112 → modal-0.73.113}/modal/cls.py +0 -0
  89. {modal-0.73.112 → modal-0.73.113}/modal/cls.pyi +0 -0
  90. {modal-0.73.112 → modal-0.73.113}/modal/config.py +0 -0
  91. {modal-0.73.112 → modal-0.73.113}/modal/container_process.py +0 -0
  92. {modal-0.73.112 → modal-0.73.113}/modal/container_process.pyi +0 -0
  93. {modal-0.73.112 → modal-0.73.113}/modal/dict.py +0 -0
  94. {modal-0.73.112 → modal-0.73.113}/modal/dict.pyi +0 -0
  95. {modal-0.73.112 → modal-0.73.113}/modal/environments.py +0 -0
  96. {modal-0.73.112 → modal-0.73.113}/modal/environments.pyi +0 -0
  97. {modal-0.73.112 → modal-0.73.113}/modal/exception.py +0 -0
  98. {modal-0.73.112 → modal-0.73.113}/modal/experimental.py +0 -0
  99. {modal-0.73.112 → modal-0.73.113}/modal/experimental.pyi +0 -0
  100. {modal-0.73.112 → modal-0.73.113}/modal/extensions/__init__.py +0 -0
  101. {modal-0.73.112 → modal-0.73.113}/modal/extensions/ipython.py +0 -0
  102. {modal-0.73.112 → modal-0.73.113}/modal/file_io.py +0 -0
  103. {modal-0.73.112 → modal-0.73.113}/modal/file_io.pyi +0 -0
  104. {modal-0.73.112 → modal-0.73.113}/modal/file_pattern_matcher.py +0 -0
  105. {modal-0.73.112 → modal-0.73.113}/modal/functions.py +0 -0
  106. {modal-0.73.112 → modal-0.73.113}/modal/functions.pyi +0 -0
  107. {modal-0.73.112 → modal-0.73.113}/modal/gpu.py +0 -0
  108. {modal-0.73.112 → modal-0.73.113}/modal/image.py +0 -0
  109. {modal-0.73.112 → modal-0.73.113}/modal/image.pyi +0 -0
  110. {modal-0.73.112 → modal-0.73.113}/modal/io_streams.py +0 -0
  111. {modal-0.73.112 → modal-0.73.113}/modal/io_streams.pyi +0 -0
  112. {modal-0.73.112 → modal-0.73.113}/modal/mount.py +0 -0
  113. {modal-0.73.112 → modal-0.73.113}/modal/mount.pyi +0 -0
  114. {modal-0.73.112 → modal-0.73.113}/modal/network_file_system.py +0 -0
  115. {modal-0.73.112 → modal-0.73.113}/modal/network_file_system.pyi +0 -0
  116. {modal-0.73.112 → modal-0.73.113}/modal/object.py +0 -0
  117. {modal-0.73.112 → modal-0.73.113}/modal/object.pyi +0 -0
  118. {modal-0.73.112 → modal-0.73.113}/modal/output.py +0 -0
  119. {modal-0.73.112 → modal-0.73.113}/modal/parallel_map.py +0 -0
  120. {modal-0.73.112 → modal-0.73.113}/modal/parallel_map.pyi +0 -0
  121. {modal-0.73.112 → modal-0.73.113}/modal/partial_function.py +0 -0
  122. {modal-0.73.112 → modal-0.73.113}/modal/partial_function.pyi +0 -0
  123. {modal-0.73.112 → modal-0.73.113}/modal/proxy.py +0 -0
  124. {modal-0.73.112 → modal-0.73.113}/modal/proxy.pyi +0 -0
  125. {modal-0.73.112 → modal-0.73.113}/modal/py.typed +0 -0
  126. {modal-0.73.112 → modal-0.73.113}/modal/queue.py +0 -0
  127. {modal-0.73.112 → modal-0.73.113}/modal/queue.pyi +0 -0
  128. {modal-0.73.112 → modal-0.73.113}/modal/requirements/2023.12.312.txt +0 -0
  129. {modal-0.73.112 → modal-0.73.113}/modal/requirements/2023.12.txt +0 -0
  130. {modal-0.73.112 → modal-0.73.113}/modal/requirements/2024.04.txt +0 -0
  131. {modal-0.73.112 → modal-0.73.113}/modal/requirements/2024.10.txt +0 -0
  132. {modal-0.73.112 → modal-0.73.113}/modal/requirements/PREVIEW.txt +0 -0
  133. {modal-0.73.112 → modal-0.73.113}/modal/requirements/README.md +0 -0
  134. {modal-0.73.112 → modal-0.73.113}/modal/requirements/base-images.json +0 -0
  135. {modal-0.73.112 → modal-0.73.113}/modal/retries.py +0 -0
  136. {modal-0.73.112 → modal-0.73.113}/modal/runner.py +0 -0
  137. {modal-0.73.112 → modal-0.73.113}/modal/runner.pyi +0 -0
  138. {modal-0.73.112 → modal-0.73.113}/modal/running_app.py +0 -0
  139. {modal-0.73.112 → modal-0.73.113}/modal/sandbox.py +0 -0
  140. {modal-0.73.112 → modal-0.73.113}/modal/sandbox.pyi +0 -0
  141. {modal-0.73.112 → modal-0.73.113}/modal/schedule.py +0 -0
  142. {modal-0.73.112 → modal-0.73.113}/modal/scheduler_placement.py +0 -0
  143. {modal-0.73.112 → modal-0.73.113}/modal/secret.py +0 -0
  144. {modal-0.73.112 → modal-0.73.113}/modal/secret.pyi +0 -0
  145. {modal-0.73.112 → modal-0.73.113}/modal/serving.py +0 -0
  146. {modal-0.73.112 → modal-0.73.113}/modal/serving.pyi +0 -0
  147. {modal-0.73.112 → modal-0.73.113}/modal/snapshot.py +0 -0
  148. {modal-0.73.112 → modal-0.73.113}/modal/snapshot.pyi +0 -0
  149. {modal-0.73.112 → modal-0.73.113}/modal/stream_type.py +0 -0
  150. {modal-0.73.112 → modal-0.73.113}/modal/token_flow.py +0 -0
  151. {modal-0.73.112 → modal-0.73.113}/modal/token_flow.pyi +0 -0
  152. {modal-0.73.112 → modal-0.73.113}/modal/volume.py +0 -0
  153. {modal-0.73.112 → modal-0.73.113}/modal/volume.pyi +0 -0
  154. {modal-0.73.112 → modal-0.73.113}/modal.egg-info/SOURCES.txt +0 -0
  155. {modal-0.73.112 → modal-0.73.113}/modal.egg-info/dependency_links.txt +0 -0
  156. {modal-0.73.112 → modal-0.73.113}/modal.egg-info/entry_points.txt +0 -0
  157. {modal-0.73.112 → modal-0.73.113}/modal.egg-info/requires.txt +0 -0
  158. {modal-0.73.112 → modal-0.73.113}/modal.egg-info/top_level.txt +0 -0
  159. {modal-0.73.112 → modal-0.73.113}/modal_docs/__init__.py +0 -0
  160. {modal-0.73.112 → modal-0.73.113}/modal_docs/gen_cli_docs.py +0 -0
  161. {modal-0.73.112 → modal-0.73.113}/modal_docs/gen_reference_docs.py +0 -0
  162. {modal-0.73.112 → modal-0.73.113}/modal_docs/mdmd/__init__.py +0 -0
  163. {modal-0.73.112 → modal-0.73.113}/modal_docs/mdmd/mdmd.py +0 -0
  164. {modal-0.73.112 → modal-0.73.113}/modal_docs/mdmd/signatures.py +0 -0
  165. {modal-0.73.112 → modal-0.73.113}/modal_proto/__init__.py +0 -0
  166. {modal-0.73.112 → modal-0.73.113}/modal_proto/api.proto +0 -0
  167. {modal-0.73.112 → modal-0.73.113}/modal_proto/api_grpc.py +0 -0
  168. {modal-0.73.112 → modal-0.73.113}/modal_proto/api_pb2.py +0 -0
  169. {modal-0.73.112 → modal-0.73.113}/modal_proto/api_pb2.pyi +0 -0
  170. {modal-0.73.112 → modal-0.73.113}/modal_proto/api_pb2_grpc.py +0 -0
  171. {modal-0.73.112 → modal-0.73.113}/modal_proto/api_pb2_grpc.pyi +0 -0
  172. {modal-0.73.112 → modal-0.73.113}/modal_proto/modal_api_grpc.py +0 -0
  173. {modal-0.73.112 → modal-0.73.113}/modal_proto/modal_options_grpc.py +0 -0
  174. {modal-0.73.112 → modal-0.73.113}/modal_proto/options.proto +0 -0
  175. {modal-0.73.112 → modal-0.73.113}/modal_proto/options_grpc.py +0 -0
  176. {modal-0.73.112 → modal-0.73.113}/modal_proto/options_pb2.py +0 -0
  177. {modal-0.73.112 → modal-0.73.113}/modal_proto/options_pb2.pyi +0 -0
  178. {modal-0.73.112 → modal-0.73.113}/modal_proto/options_pb2_grpc.py +0 -0
  179. {modal-0.73.112 → modal-0.73.113}/modal_proto/options_pb2_grpc.pyi +0 -0
  180. {modal-0.73.112 → modal-0.73.113}/modal_proto/py.typed +0 -0
  181. {modal-0.73.112 → modal-0.73.113}/modal_version/__init__.py +0 -0
  182. {modal-0.73.112 → modal-0.73.113}/modal_version/__main__.py +0 -0
  183. {modal-0.73.112 → modal-0.73.113}/pyproject.toml +0 -0
  184. {modal-0.73.112 → modal-0.73.113}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: modal
3
- Version: 0.73.112
3
+ Version: 0.73.113
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -24,6 +24,25 @@ async def run_command_fallible(args: list[str]) -> Optional[str]:
24
24
  return None
25
25
 
26
26
 
27
+ def is_valid_commit_info(commit_info: api_pb2.CommitInfo) -> tuple[bool, str]:
28
+ # returns (valid, error_message)
29
+ if commit_info.vcs != "git":
30
+ return False, "Invalid VCS"
31
+ if len(commit_info.commit_hash) != 40:
32
+ return False, "Invalid commit hash"
33
+ if len(commit_info.branch) > 255:
34
+ # Git doesn't enforce a max length for branch names, but github does, so use their limit
35
+ # https://stackoverflow.com/questions/24014361/max-length-of-git-branch-name
36
+ return False, "Branch name too long"
37
+ if len(commit_info.repo_url) > 200:
38
+ return False, "Repo URL too long"
39
+ if len(commit_info.author_name) > 200:
40
+ return False, "Author name too long"
41
+ if len(commit_info.author_email) > 200:
42
+ return False, "Author email too long"
43
+ return True, ""
44
+
45
+
27
46
  async def get_git_commit_info() -> Optional[api_pb2.CommitInfo]:
28
47
  """Collect git information about the current repository asynchronously."""
29
48
  git_info: api_pb2.CommitInfo = api_pb2.CommitInfo(vcs="git")
@@ -69,4 +88,9 @@ async def get_git_commit_info() -> Optional[api_pb2.CommitInfo]:
69
88
  if origin_url:
70
89
  git_info.repo_url = origin_url
71
90
 
91
+ valid, error_message = is_valid_commit_info(git_info)
92
+ if not valid:
93
+ logger.warning(f"Invalid commit info: {error_message}")
94
+ return None
95
+
72
96
  return git_info
@@ -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 = "0.73.112",
34
+ version: str = "0.73.113",
35
35
  ): ...
36
36
  def is_closed(self) -> bool: ...
37
37
  @property
@@ -93,7 +93,7 @@ class Client:
93
93
  server_url: str,
94
94
  client_type: int,
95
95
  credentials: typing.Optional[tuple[str, str]],
96
- version: str = "0.73.112",
96
+ version: str = "0.73.113",
97
97
  ): ...
98
98
  def is_closed(self) -> bool: ...
99
99
  @property
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: modal
3
- Version: 0.73.112
3
+ Version: 0.73.113
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
 
3
3
  # Note: Reset this value to -1 whenever you make a minor `0.X` release of the client.
4
- build_number = 112 # git: c0bcdba
4
+ build_number = 113 # git: 456336d
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
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