modal 0.73.64__tar.gz → 0.73.66__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 (182) hide show
  1. {modal-0.73.64 → modal-0.73.66}/PKG-INFO +1 -1
  2. {modal-0.73.64 → modal-0.73.66}/modal/_runtime/user_code_imports.py +3 -1
  3. {modal-0.73.64 → modal-0.73.66}/modal/client.pyi +2 -2
  4. {modal-0.73.64 → modal-0.73.66}/modal/image.py +5 -2
  5. {modal-0.73.64 → modal-0.73.66}/modal.egg-info/PKG-INFO +1 -1
  6. {modal-0.73.64 → modal-0.73.66}/modal_version/_version_generated.py +1 -1
  7. {modal-0.73.64 → modal-0.73.66}/LICENSE +0 -0
  8. {modal-0.73.64 → modal-0.73.66}/README.md +0 -0
  9. {modal-0.73.64 → modal-0.73.66}/modal/__init__.py +0 -0
  10. {modal-0.73.64 → modal-0.73.66}/modal/__main__.py +0 -0
  11. {modal-0.73.64 → modal-0.73.66}/modal/_clustered_functions.py +0 -0
  12. {modal-0.73.64 → modal-0.73.66}/modal/_clustered_functions.pyi +0 -0
  13. {modal-0.73.64 → modal-0.73.66}/modal/_container_entrypoint.py +0 -0
  14. {modal-0.73.64 → modal-0.73.66}/modal/_functions.py +0 -0
  15. {modal-0.73.64 → modal-0.73.66}/modal/_ipython.py +0 -0
  16. {modal-0.73.64 → modal-0.73.66}/modal/_location.py +0 -0
  17. {modal-0.73.64 → modal-0.73.66}/modal/_object.py +0 -0
  18. {modal-0.73.64 → modal-0.73.66}/modal/_output.py +0 -0
  19. {modal-0.73.64 → modal-0.73.66}/modal/_partial_function.py +0 -0
  20. {modal-0.73.64 → modal-0.73.66}/modal/_proxy_tunnel.py +0 -0
  21. {modal-0.73.64 → modal-0.73.66}/modal/_pty.py +0 -0
  22. {modal-0.73.64 → modal-0.73.66}/modal/_resolver.py +0 -0
  23. {modal-0.73.64 → modal-0.73.66}/modal/_resources.py +0 -0
  24. {modal-0.73.64 → modal-0.73.66}/modal/_runtime/__init__.py +0 -0
  25. {modal-0.73.64 → modal-0.73.66}/modal/_runtime/asgi.py +0 -0
  26. {modal-0.73.64 → modal-0.73.66}/modal/_runtime/container_io_manager.py +0 -0
  27. {modal-0.73.64 → modal-0.73.66}/modal/_runtime/container_io_manager.pyi +0 -0
  28. {modal-0.73.64 → modal-0.73.66}/modal/_runtime/execution_context.py +0 -0
  29. {modal-0.73.64 → modal-0.73.66}/modal/_runtime/execution_context.pyi +0 -0
  30. {modal-0.73.64 → modal-0.73.66}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  31. {modal-0.73.64 → modal-0.73.66}/modal/_runtime/telemetry.py +0 -0
  32. {modal-0.73.64 → modal-0.73.66}/modal/_serialization.py +0 -0
  33. {modal-0.73.64 → modal-0.73.66}/modal/_traceback.py +0 -0
  34. {modal-0.73.64 → modal-0.73.66}/modal/_tunnel.py +0 -0
  35. {modal-0.73.64 → modal-0.73.66}/modal/_tunnel.pyi +0 -0
  36. {modal-0.73.64 → modal-0.73.66}/modal/_utils/__init__.py +0 -0
  37. {modal-0.73.64 → modal-0.73.66}/modal/_utils/app_utils.py +0 -0
  38. {modal-0.73.64 → modal-0.73.66}/modal/_utils/async_utils.py +0 -0
  39. {modal-0.73.64 → modal-0.73.66}/modal/_utils/blob_utils.py +0 -0
  40. {modal-0.73.64 → modal-0.73.66}/modal/_utils/bytes_io_segment_payload.py +0 -0
  41. {modal-0.73.64 → modal-0.73.66}/modal/_utils/deprecation.py +0 -0
  42. {modal-0.73.64 → modal-0.73.66}/modal/_utils/docker_utils.py +0 -0
  43. {modal-0.73.64 → modal-0.73.66}/modal/_utils/function_utils.py +0 -0
  44. {modal-0.73.64 → modal-0.73.66}/modal/_utils/grpc_testing.py +0 -0
  45. {modal-0.73.64 → modal-0.73.66}/modal/_utils/grpc_utils.py +0 -0
  46. {modal-0.73.64 → modal-0.73.66}/modal/_utils/hash_utils.py +0 -0
  47. {modal-0.73.64 → modal-0.73.66}/modal/_utils/http_utils.py +0 -0
  48. {modal-0.73.64 → modal-0.73.66}/modal/_utils/logger.py +0 -0
  49. {modal-0.73.64 → modal-0.73.66}/modal/_utils/mount_utils.py +0 -0
  50. {modal-0.73.64 → modal-0.73.66}/modal/_utils/name_utils.py +0 -0
  51. {modal-0.73.64 → modal-0.73.66}/modal/_utils/package_utils.py +0 -0
  52. {modal-0.73.64 → modal-0.73.66}/modal/_utils/pattern_utils.py +0 -0
  53. {modal-0.73.64 → modal-0.73.66}/modal/_utils/rand_pb_testing.py +0 -0
  54. {modal-0.73.64 → modal-0.73.66}/modal/_utils/shell_utils.py +0 -0
  55. {modal-0.73.64 → modal-0.73.66}/modal/_vendor/__init__.py +0 -0
  56. {modal-0.73.64 → modal-0.73.66}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  57. {modal-0.73.64 → modal-0.73.66}/modal/_vendor/cloudpickle.py +0 -0
  58. {modal-0.73.64 → modal-0.73.66}/modal/_vendor/tblib.py +0 -0
  59. {modal-0.73.64 → modal-0.73.66}/modal/_watcher.py +0 -0
  60. {modal-0.73.64 → modal-0.73.66}/modal/app.py +0 -0
  61. {modal-0.73.64 → modal-0.73.66}/modal/app.pyi +0 -0
  62. {modal-0.73.64 → modal-0.73.66}/modal/call_graph.py +0 -0
  63. {modal-0.73.64 → modal-0.73.66}/modal/cli/__init__.py +0 -0
  64. {modal-0.73.64 → modal-0.73.66}/modal/cli/_download.py +0 -0
  65. {modal-0.73.64 → modal-0.73.66}/modal/cli/_traceback.py +0 -0
  66. {modal-0.73.64 → modal-0.73.66}/modal/cli/app.py +0 -0
  67. {modal-0.73.64 → modal-0.73.66}/modal/cli/config.py +0 -0
  68. {modal-0.73.64 → modal-0.73.66}/modal/cli/container.py +0 -0
  69. {modal-0.73.64 → modal-0.73.66}/modal/cli/dict.py +0 -0
  70. {modal-0.73.64 → modal-0.73.66}/modal/cli/entry_point.py +0 -0
  71. {modal-0.73.64 → modal-0.73.66}/modal/cli/environment.py +0 -0
  72. {modal-0.73.64 → modal-0.73.66}/modal/cli/import_refs.py +0 -0
  73. {modal-0.73.64 → modal-0.73.66}/modal/cli/launch.py +0 -0
  74. {modal-0.73.64 → modal-0.73.66}/modal/cli/network_file_system.py +0 -0
  75. {modal-0.73.64 → modal-0.73.66}/modal/cli/profile.py +0 -0
  76. {modal-0.73.64 → modal-0.73.66}/modal/cli/programs/__init__.py +0 -0
  77. {modal-0.73.64 → modal-0.73.66}/modal/cli/programs/run_jupyter.py +0 -0
  78. {modal-0.73.64 → modal-0.73.66}/modal/cli/programs/vscode.py +0 -0
  79. {modal-0.73.64 → modal-0.73.66}/modal/cli/queues.py +0 -0
  80. {modal-0.73.64 → modal-0.73.66}/modal/cli/run.py +0 -0
  81. {modal-0.73.64 → modal-0.73.66}/modal/cli/secret.py +0 -0
  82. {modal-0.73.64 → modal-0.73.66}/modal/cli/token.py +0 -0
  83. {modal-0.73.64 → modal-0.73.66}/modal/cli/utils.py +0 -0
  84. {modal-0.73.64 → modal-0.73.66}/modal/cli/volume.py +0 -0
  85. {modal-0.73.64 → modal-0.73.66}/modal/client.py +0 -0
  86. {modal-0.73.64 → modal-0.73.66}/modal/cloud_bucket_mount.py +0 -0
  87. {modal-0.73.64 → modal-0.73.66}/modal/cloud_bucket_mount.pyi +0 -0
  88. {modal-0.73.64 → modal-0.73.66}/modal/cls.py +0 -0
  89. {modal-0.73.64 → modal-0.73.66}/modal/cls.pyi +0 -0
  90. {modal-0.73.64 → modal-0.73.66}/modal/config.py +0 -0
  91. {modal-0.73.64 → modal-0.73.66}/modal/container_process.py +0 -0
  92. {modal-0.73.64 → modal-0.73.66}/modal/container_process.pyi +0 -0
  93. {modal-0.73.64 → modal-0.73.66}/modal/dict.py +0 -0
  94. {modal-0.73.64 → modal-0.73.66}/modal/dict.pyi +0 -0
  95. {modal-0.73.64 → modal-0.73.66}/modal/environments.py +0 -0
  96. {modal-0.73.64 → modal-0.73.66}/modal/environments.pyi +0 -0
  97. {modal-0.73.64 → modal-0.73.66}/modal/exception.py +0 -0
  98. {modal-0.73.64 → modal-0.73.66}/modal/experimental.py +0 -0
  99. {modal-0.73.64 → modal-0.73.66}/modal/experimental.pyi +0 -0
  100. {modal-0.73.64 → modal-0.73.66}/modal/extensions/__init__.py +0 -0
  101. {modal-0.73.64 → modal-0.73.66}/modal/extensions/ipython.py +0 -0
  102. {modal-0.73.64 → modal-0.73.66}/modal/file_io.py +0 -0
  103. {modal-0.73.64 → modal-0.73.66}/modal/file_io.pyi +0 -0
  104. {modal-0.73.64 → modal-0.73.66}/modal/file_pattern_matcher.py +0 -0
  105. {modal-0.73.64 → modal-0.73.66}/modal/functions.py +0 -0
  106. {modal-0.73.64 → modal-0.73.66}/modal/functions.pyi +0 -0
  107. {modal-0.73.64 → modal-0.73.66}/modal/gpu.py +0 -0
  108. {modal-0.73.64 → modal-0.73.66}/modal/image.pyi +0 -0
  109. {modal-0.73.64 → modal-0.73.66}/modal/io_streams.py +0 -0
  110. {modal-0.73.64 → modal-0.73.66}/modal/io_streams.pyi +0 -0
  111. {modal-0.73.64 → modal-0.73.66}/modal/mount.py +0 -0
  112. {modal-0.73.64 → modal-0.73.66}/modal/mount.pyi +0 -0
  113. {modal-0.73.64 → modal-0.73.66}/modal/network_file_system.py +0 -0
  114. {modal-0.73.64 → modal-0.73.66}/modal/network_file_system.pyi +0 -0
  115. {modal-0.73.64 → modal-0.73.66}/modal/object.py +0 -0
  116. {modal-0.73.64 → modal-0.73.66}/modal/object.pyi +0 -0
  117. {modal-0.73.64 → modal-0.73.66}/modal/output.py +0 -0
  118. {modal-0.73.64 → modal-0.73.66}/modal/parallel_map.py +0 -0
  119. {modal-0.73.64 → modal-0.73.66}/modal/parallel_map.pyi +0 -0
  120. {modal-0.73.64 → modal-0.73.66}/modal/partial_function.py +0 -0
  121. {modal-0.73.64 → modal-0.73.66}/modal/partial_function.pyi +0 -0
  122. {modal-0.73.64 → modal-0.73.66}/modal/proxy.py +0 -0
  123. {modal-0.73.64 → modal-0.73.66}/modal/proxy.pyi +0 -0
  124. {modal-0.73.64 → modal-0.73.66}/modal/py.typed +0 -0
  125. {modal-0.73.64 → modal-0.73.66}/modal/queue.py +0 -0
  126. {modal-0.73.64 → modal-0.73.66}/modal/queue.pyi +0 -0
  127. {modal-0.73.64 → modal-0.73.66}/modal/requirements/2023.12.312.txt +0 -0
  128. {modal-0.73.64 → modal-0.73.66}/modal/requirements/2023.12.txt +0 -0
  129. {modal-0.73.64 → modal-0.73.66}/modal/requirements/2024.04.txt +0 -0
  130. {modal-0.73.64 → modal-0.73.66}/modal/requirements/2024.10.txt +0 -0
  131. {modal-0.73.64 → modal-0.73.66}/modal/requirements/README.md +0 -0
  132. {modal-0.73.64 → modal-0.73.66}/modal/requirements/base-images.json +0 -0
  133. {modal-0.73.64 → modal-0.73.66}/modal/retries.py +0 -0
  134. {modal-0.73.64 → modal-0.73.66}/modal/runner.py +0 -0
  135. {modal-0.73.64 → modal-0.73.66}/modal/runner.pyi +0 -0
  136. {modal-0.73.64 → modal-0.73.66}/modal/running_app.py +0 -0
  137. {modal-0.73.64 → modal-0.73.66}/modal/sandbox.py +0 -0
  138. {modal-0.73.64 → modal-0.73.66}/modal/sandbox.pyi +0 -0
  139. {modal-0.73.64 → modal-0.73.66}/modal/schedule.py +0 -0
  140. {modal-0.73.64 → modal-0.73.66}/modal/scheduler_placement.py +0 -0
  141. {modal-0.73.64 → modal-0.73.66}/modal/secret.py +0 -0
  142. {modal-0.73.64 → modal-0.73.66}/modal/secret.pyi +0 -0
  143. {modal-0.73.64 → modal-0.73.66}/modal/serving.py +0 -0
  144. {modal-0.73.64 → modal-0.73.66}/modal/serving.pyi +0 -0
  145. {modal-0.73.64 → modal-0.73.66}/modal/snapshot.py +0 -0
  146. {modal-0.73.64 → modal-0.73.66}/modal/snapshot.pyi +0 -0
  147. {modal-0.73.64 → modal-0.73.66}/modal/stream_type.py +0 -0
  148. {modal-0.73.64 → modal-0.73.66}/modal/token_flow.py +0 -0
  149. {modal-0.73.64 → modal-0.73.66}/modal/token_flow.pyi +0 -0
  150. {modal-0.73.64 → modal-0.73.66}/modal/volume.py +0 -0
  151. {modal-0.73.64 → modal-0.73.66}/modal/volume.pyi +0 -0
  152. {modal-0.73.64 → modal-0.73.66}/modal.egg-info/SOURCES.txt +0 -0
  153. {modal-0.73.64 → modal-0.73.66}/modal.egg-info/dependency_links.txt +0 -0
  154. {modal-0.73.64 → modal-0.73.66}/modal.egg-info/entry_points.txt +0 -0
  155. {modal-0.73.64 → modal-0.73.66}/modal.egg-info/requires.txt +0 -0
  156. {modal-0.73.64 → modal-0.73.66}/modal.egg-info/top_level.txt +0 -0
  157. {modal-0.73.64 → modal-0.73.66}/modal_docs/__init__.py +0 -0
  158. {modal-0.73.64 → modal-0.73.66}/modal_docs/gen_cli_docs.py +0 -0
  159. {modal-0.73.64 → modal-0.73.66}/modal_docs/gen_reference_docs.py +0 -0
  160. {modal-0.73.64 → modal-0.73.66}/modal_docs/mdmd/__init__.py +0 -0
  161. {modal-0.73.64 → modal-0.73.66}/modal_docs/mdmd/mdmd.py +0 -0
  162. {modal-0.73.64 → modal-0.73.66}/modal_docs/mdmd/signatures.py +0 -0
  163. {modal-0.73.64 → modal-0.73.66}/modal_proto/__init__.py +0 -0
  164. {modal-0.73.64 → modal-0.73.66}/modal_proto/api.proto +0 -0
  165. {modal-0.73.64 → modal-0.73.66}/modal_proto/api_grpc.py +0 -0
  166. {modal-0.73.64 → modal-0.73.66}/modal_proto/api_pb2.py +0 -0
  167. {modal-0.73.64 → modal-0.73.66}/modal_proto/api_pb2.pyi +0 -0
  168. {modal-0.73.64 → modal-0.73.66}/modal_proto/api_pb2_grpc.py +0 -0
  169. {modal-0.73.64 → modal-0.73.66}/modal_proto/api_pb2_grpc.pyi +0 -0
  170. {modal-0.73.64 → modal-0.73.66}/modal_proto/modal_api_grpc.py +0 -0
  171. {modal-0.73.64 → modal-0.73.66}/modal_proto/modal_options_grpc.py +0 -0
  172. {modal-0.73.64 → modal-0.73.66}/modal_proto/options.proto +0 -0
  173. {modal-0.73.64 → modal-0.73.66}/modal_proto/options_grpc.py +0 -0
  174. {modal-0.73.64 → modal-0.73.66}/modal_proto/options_pb2.py +0 -0
  175. {modal-0.73.64 → modal-0.73.66}/modal_proto/options_pb2.pyi +0 -0
  176. {modal-0.73.64 → modal-0.73.66}/modal_proto/options_pb2_grpc.py +0 -0
  177. {modal-0.73.64 → modal-0.73.66}/modal_proto/options_pb2_grpc.pyi +0 -0
  178. {modal-0.73.64 → modal-0.73.66}/modal_proto/py.typed +0 -0
  179. {modal-0.73.64 → modal-0.73.66}/modal_version/__init__.py +0 -0
  180. {modal-0.73.64 → modal-0.73.66}/modal_version/__main__.py +0 -0
  181. {modal-0.73.64 → modal-0.73.66}/pyproject.toml +0 -0
  182. {modal-0.73.64 → modal-0.73.66}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: modal
3
- Version: 0.73.64
3
+ Version: 0.73.66
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -264,7 +264,9 @@ def import_single_function_service(
264
264
  # The cls decorator is in global scope
265
265
  _cls = synchronizer._translate_in(cls)
266
266
  user_defined_callable = _cls._callables[fun_name]
267
- service_deps = _cls._get_class_service_function().deps(only_explicit_mounts=True)
267
+ # Intentionally not including these, since @build functions don't actually
268
+ # forward the information from their parent class.
269
+ # service_deps = _cls._get_class_service_function().deps(only_explicit_mounts=True)
268
270
  active_app = _cls._app
269
271
  else:
270
272
  # This is non-decorated class
@@ -27,7 +27,7 @@ class _Client:
27
27
  _snapshotted: bool
28
28
 
29
29
  def __init__(
30
- self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.64"
30
+ self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.66"
31
31
  ): ...
32
32
  def is_closed(self) -> bool: ...
33
33
  @property
@@ -85,7 +85,7 @@ class Client:
85
85
  _snapshotted: bool
86
86
 
87
87
  def __init__(
88
- self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.64"
88
+ self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.66"
89
89
  ): ...
90
90
  def is_closed(self) -> bool: ...
91
91
  @property
@@ -2013,10 +2013,13 @@ class _Image(_Object, type_prefix="im"):
2013
2013
  )
2014
2014
  ```
2015
2015
  """
2016
+ non_str_keys = [key for key, val in vars.items() if not isinstance(val, str)]
2017
+ if non_str_keys:
2018
+ raise InvalidError(f"Image ENV variables must be strings. Invalid keys: {non_str_keys}")
2016
2019
 
2017
2020
  def build_dockerfile(version: ImageBuilderVersion) -> DockerfileSpec:
2018
- commands = ["FROM base"] + [f"ENV {key}={shlex.quote(val)}" for (key, val) in vars.items()]
2019
- return DockerfileSpec(commands=commands, context_files={})
2021
+ env_commands = [f"ENV {key}={shlex.quote(val)}" for (key, val) in vars.items()]
2022
+ return DockerfileSpec(commands=["FROM base"] + env_commands, context_files={})
2020
2023
 
2021
2024
  return _Image._from_args(
2022
2025
  base_images={"base": self},
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: modal
3
- Version: 0.73.64
3
+ Version: 0.73.66
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 = 64 # git: d4c7dc1
4
+ build_number = 66 # git: f9b168b
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
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