modal 1.5.5.dev6__tar.gz → 1.5.5.dev7__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 (236) hide show
  1. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/PKG-INFO +1 -1
  2. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_environments.py +8 -3
  3. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_functions.py +1 -0
  4. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/environment.py +11 -5
  5. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/client.pyi +2 -2
  6. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/environments.pyi +12 -2
  7. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal.egg-info/PKG-INFO +1 -1
  8. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal_proto/api_pb2.py +860 -860
  9. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal_proto/api_pb2.pyi +10 -2
  10. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal_version/__init__.py +1 -1
  11. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/LICENSE +0 -0
  12. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/README.md +0 -0
  13. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/__init__.py +0 -0
  14. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/__main__.py +0 -0
  15. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_billing.py +0 -0
  16. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_clustered_functions.py +0 -0
  17. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_clustered_functions.pyi +0 -0
  18. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_container_entrypoint.py +0 -0
  19. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_function_variants.py +0 -0
  20. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_grpc_client.py +0 -0
  21. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_image.py +0 -0
  22. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_ipython.py +0 -0
  23. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_load_context.py +0 -0
  24. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_location.py +0 -0
  25. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_logs.py +0 -0
  26. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_logs_manager.py +0 -0
  27. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_logs_manager.pyi +0 -0
  28. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_object.py +0 -0
  29. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_output/__init__.py +0 -0
  30. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_output/manager.py +0 -0
  31. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_output/pty.py +0 -0
  32. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_output/rich.py +0 -0
  33. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_output/status.py +0 -0
  34. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_partial_function.py +0 -0
  35. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_resolver.py +0 -0
  36. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_resources.py +0 -0
  37. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_runtime/__init__.py +0 -0
  38. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_runtime/asgi.py +0 -0
  39. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_runtime/container_io_manager.py +0 -0
  40. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_runtime/container_io_manager.pyi +0 -0
  41. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_runtime/execution_context.py +0 -0
  42. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_runtime/execution_context.pyi +0 -0
  43. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  44. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_runtime/task_lifecycle_manager.py +0 -0
  45. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_runtime/task_lifecycle_manager.pyi +0 -0
  46. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_runtime/telemetry.py +0 -0
  47. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_runtime/user_code_event_loop.py +0 -0
  48. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_runtime/user_code_imports.py +0 -0
  49. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_serialization.py +0 -0
  50. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_server.py +0 -0
  51. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_supports_logs.py +0 -0
  52. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_traceback.py +0 -0
  53. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_tunnel.py +0 -0
  54. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_tunnel.pyi +0 -0
  55. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_type_manager.py +0 -0
  56. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_utils/__init__.py +0 -0
  57. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_utils/app_utils.py +0 -0
  58. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_utils/async_utils.py +0 -0
  59. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_utils/auth_token_manager.py +0 -0
  60. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_utils/blob_utils.py +0 -0
  61. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_utils/browser_utils.py +0 -0
  62. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_utils/bytes_io_segment_payload.py +0 -0
  63. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_utils/curl_utils.py +0 -0
  64. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_utils/deprecation.py +0 -0
  65. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_utils/display_utils.py +0 -0
  66. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_utils/docker_utils.py +0 -0
  67. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_utils/function_utils.py +0 -0
  68. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_utils/git_utils.py +0 -0
  69. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_utils/grpc_testing.py +0 -0
  70. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_utils/grpc_utils.py +0 -0
  71. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_utils/hash_utils.py +0 -0
  72. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_utils/http_utils.py +0 -0
  73. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_utils/jwt_utils.py +0 -0
  74. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_utils/logger.py +0 -0
  75. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_utils/mount_utils.py +0 -0
  76. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_utils/name_utils.py +0 -0
  77. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_utils/package_utils.py +0 -0
  78. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_utils/pattern_utils.py +0 -0
  79. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_utils/proxy_support.py +0 -0
  80. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_utils/rand_pb_testing.py +0 -0
  81. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_utils/sandbox_fs_utils.py +0 -0
  82. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_utils/shell_utils.py +0 -0
  83. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_utils/task_command_router_client.py +0 -0
  84. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_utils/time_utils.py +0 -0
  85. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_vendor/__init__.py +0 -0
  86. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  87. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_vendor/cloudpickle.py +0 -0
  88. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_vendor/tblib.py +0 -0
  89. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_vendor/version.py +0 -0
  90. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_watcher.py +0 -0
  91. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/_workspace.py +0 -0
  92. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/app.py +0 -0
  93. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/app.pyi +0 -0
  94. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/billing.py +0 -0
  95. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/billing.pyi +0 -0
  96. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/builder/2023.12.312.txt +0 -0
  97. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/builder/2023.12.txt +0 -0
  98. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/builder/2024.04.txt +0 -0
  99. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/builder/2024.10.txt +0 -0
  100. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/builder/2025.06.txt +0 -0
  101. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/builder/PREVIEW.txt +0 -0
  102. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/builder/README.md +0 -0
  103. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/builder/base-images.json +0 -0
  104. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/call_graph.py +0 -0
  105. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/__init__.py +0 -0
  106. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/_download.py +0 -0
  107. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/_help.py +0 -0
  108. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/_traceback.py +0 -0
  109. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/app.py +0 -0
  110. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/billing.py +0 -0
  111. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/bootstrap.py +0 -0
  112. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/changelog.py +0 -0
  113. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/cluster.py +0 -0
  114. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/config.py +0 -0
  115. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/container.py +0 -0
  116. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/curl.py +0 -0
  117. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/dashboard.py +0 -0
  118. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/dict.py +0 -0
  119. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/endpoint.py +0 -0
  120. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/entry_point.py +0 -0
  121. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/image.py +0 -0
  122. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/import_refs.py +0 -0
  123. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/launch.py +0 -0
  124. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/logo.py +0 -0
  125. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/network_file_system.py +0 -0
  126. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/profile.py +0 -0
  127. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/programs/__init__.py +0 -0
  128. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/programs/run_jupyter.py +0 -0
  129. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/programs/vscode.py +0 -0
  130. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/queues.py +0 -0
  131. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/run.py +0 -0
  132. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/secret.py +0 -0
  133. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/selector.py +0 -0
  134. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/shell.py +0 -0
  135. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/skills.py +0 -0
  136. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/token.py +0 -0
  137. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/utils.py +0 -0
  138. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/volume.py +0 -0
  139. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cli/workspace.py +0 -0
  140. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/client.py +0 -0
  141. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cloud_bucket_mount.py +0 -0
  142. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cloud_bucket_mount.pyi +0 -0
  143. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cls.py +0 -0
  144. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/cls.pyi +0 -0
  145. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/config.py +0 -0
  146. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/container_process.py +0 -0
  147. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/container_process.pyi +0 -0
  148. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/dict.py +0 -0
  149. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/dict.pyi +0 -0
  150. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/environments.py +0 -0
  151. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/exception.py +0 -0
  152. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/experimental/__init__.py +0 -0
  153. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/experimental/flash.py +0 -0
  154. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/experimental/flash.pyi +0 -0
  155. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/experimental/ipython.py +0 -0
  156. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/file_io.py +0 -0
  157. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/file_io.pyi +0 -0
  158. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/file_pattern_matcher.py +0 -0
  159. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/functions.py +0 -0
  160. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/functions.pyi +0 -0
  161. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/image.py +0 -0
  162. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/image.pyi +0 -0
  163. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/io_streams.py +0 -0
  164. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/io_streams.pyi +0 -0
  165. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/mount.py +0 -0
  166. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/mount.pyi +0 -0
  167. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/network_file_system.py +0 -0
  168. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/network_file_system.pyi +0 -0
  169. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/object.py +0 -0
  170. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/object.pyi +0 -0
  171. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/output.py +0 -0
  172. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/parallel_map.py +0 -0
  173. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/parallel_map.pyi +0 -0
  174. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/partial_function.py +0 -0
  175. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/partial_function.pyi +0 -0
  176. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/proxy.py +0 -0
  177. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/proxy.pyi +0 -0
  178. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/py.typed +0 -0
  179. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/queue.py +0 -0
  180. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/queue.pyi +0 -0
  181. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/retries.py +0 -0
  182. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/runner.py +0 -0
  183. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/runner.pyi +0 -0
  184. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/running_app.py +0 -0
  185. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/sandbox.py +0 -0
  186. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/sandbox.pyi +0 -0
  187. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/sandbox_fs.py +0 -0
  188. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/sandbox_fs.pyi +0 -0
  189. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/schedule.py +0 -0
  190. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/scheduler_placement.py +0 -0
  191. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/secret.py +0 -0
  192. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/secret.pyi +0 -0
  193. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/server.py +0 -0
  194. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/server.pyi +0 -0
  195. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/serving.py +0 -0
  196. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/serving.pyi +0 -0
  197. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/skills/modal/SKILL.md +0 -0
  198. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/snapshot.py +0 -0
  199. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/snapshot.pyi +0 -0
  200. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/stream_type.py +0 -0
  201. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/token_flow.py +0 -0
  202. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/token_flow.pyi +0 -0
  203. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/types.py +0 -0
  204. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/volume.py +0 -0
  205. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/volume.pyi +0 -0
  206. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/workspace.py +0 -0
  207. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal/workspace.pyi +0 -0
  208. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal.egg-info/SOURCES.txt +0 -0
  209. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal.egg-info/dependency_links.txt +0 -0
  210. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal.egg-info/entry_points.txt +0 -0
  211. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal.egg-info/requires.txt +0 -0
  212. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal.egg-info/top_level.txt +0 -0
  213. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal_docs/__init__.py +0 -0
  214. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal_docs/gen_cli_docs.py +0 -0
  215. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal_docs/gen_cli_docs_main.py +0 -0
  216. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal_docs/gen_reference_docs.py +0 -0
  217. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal_docs/gen_reference_docs_main.py +0 -0
  218. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal_docs/mdmd/__init__.py +0 -0
  219. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal_docs/mdmd/mdmd.py +0 -0
  220. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal_docs/mdmd/signatures.py +0 -0
  221. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal_docs/mdmd/types.py +0 -0
  222. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal_docs/reference_intro.md +0 -0
  223. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal_proto/__init__.py +0 -0
  224. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal_proto/api_grpc.py +0 -0
  225. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal_proto/api_pb2_grpc.py +0 -0
  226. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal_proto/api_pb2_grpc.pyi +0 -0
  227. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal_proto/modal_api_grpc.py +0 -0
  228. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal_proto/py.typed +0 -0
  229. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal_proto/task_command_router_grpc.py +0 -0
  230. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal_proto/task_command_router_pb2.py +0 -0
  231. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal_proto/task_command_router_pb2.pyi +0 -0
  232. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal_proto/task_command_router_pb2_grpc.py +0 -0
  233. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
  234. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/modal_version/__main__.py +0 -0
  235. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/pyproject.toml +0 -0
  236. {modal-1.5.5.dev6 → modal-1.5.5.dev7}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.5.5.dev6
3
+ Version: 1.5.5.dev7
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License-Expression: Apache-2.0
@@ -120,9 +120,12 @@ class _EnvironmentRolesManager:
120
120
  """mdmd:hidden"""
121
121
  self._environment = environment
122
122
 
123
- async def list(self) -> dict[Literal["users", "service_users"], dict[str, str]]:
123
+ async def list(self, *, exclude_default: bool = False) -> dict[Literal["users", "service_users"], dict[str, str]]:
124
124
  """Enumerate the Environment Role for each user and service user in the workspace.
125
125
 
126
+ Args:
127
+ exclude_default: If `True`, only include roles that are directly assigned.
128
+
126
129
  **Examples:**
127
130
 
128
131
  ```python notest
@@ -141,6 +144,8 @@ class _EnvironmentRolesManager:
141
144
  users: dict[str, str] = {}
142
145
  service_users: dict[str, str] = {}
143
146
  for principal in resp.principal_roles:
147
+ if exclude_default and not principal.has_role_assignment:
148
+ continue
144
149
  if principal.user_id:
145
150
  users[principal.user_name] = principal.role_str
146
151
  elif principal.service_user_id:
@@ -256,8 +261,8 @@ class _EnvironmentMembersManager:
256
261
  """Remove the Environment Role of users and service users, reverting them to the default."""
257
262
  deprecation_warning(
258
263
  (2026, 7, 23),
259
- "`Environment.members.remove()` is deprecated. Environment Roles are now explicit; "
260
- "set a role (e.g. 'no-access') with `Environment.roles.update()` instead.",
264
+ "`Environment.members.remove()` is deprecated; assign a role (e.g. 'no-access') with "
265
+ "`Environment.roles.update()` instead.",
261
266
  )
262
267
  await self._environment.hydrate()
263
268
  users = users or []
@@ -1110,6 +1110,7 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
1110
1110
  http_config=http_config,
1111
1111
  is_server=function_definition.is_server,
1112
1112
  routing_region=function_definition.routing_region,
1113
+ is_sessioned=function_definition.is_sessioned,
1113
1114
  )
1114
1115
 
1115
1116
  ranked_functions = []
@@ -147,8 +147,8 @@ service_user_option = click.option(
147
147
  )
148
148
 
149
149
 
150
- def _render_roles_list(environment: str, json: bool) -> None:
151
- roles = Environment.from_name(environment).roles.list()
150
+ def _render_roles_list(environment: str, json: bool, exclude_default: bool = False) -> None:
151
+ roles = Environment.from_name(environment).roles.list(exclude_default=exclude_default)
152
152
  if json:
153
153
  # Mirror the API output shape: a nested dict keyed by users / service_users.
154
154
  OutputManager.get().print_json(json_mod.dumps(roles))
@@ -200,9 +200,15 @@ environment_cli.add_command(roles_cli)
200
200
 
201
201
  @roles_cli.command("list", help="List the roles of each user and service user in an Environment", no_args_is_help=True)
202
202
  @click.argument("environment")
203
+ @click.option(
204
+ "--exclude-default",
205
+ is_flag=True,
206
+ default=False,
207
+ help="Only list roles that are directly assigned",
208
+ )
203
209
  @click.option("--json", is_flag=True, default=False)
204
- def roles_list(environment: str, json: bool = False):
205
- _render_roles_list(environment, json)
210
+ def roles_list(environment: str, json: bool = False, exclude_default: bool = False):
211
+ _render_roles_list(environment, json, exclude_default=exclude_default)
206
212
 
207
213
 
208
214
  @roles_cli.command("update", help="Update a user's or service user's role in an Environment", no_args_is_help=True)
@@ -258,7 +264,7 @@ def members_update(environment: str, principal: str, role: str, service_user: bo
258
264
  def members_remove(environment: str, principal: str, service_user: bool = False):
259
265
  deprecation_warning(
260
266
  (2026, 7, 23),
261
- "`modal environment members remove` is deprecated; roles are now explicit — set a role "
267
+ "`modal environment members remove` is deprecated; assign a role "
262
268
  "(e.g. `--role no-access`) with `modal environment roles update` instead.",
263
269
  show_source=False,
264
270
  )
@@ -38,7 +38,7 @@ class _Client:
38
38
  server_url: str,
39
39
  client_type: int,
40
40
  credentials: typing.Optional[tuple[str, str]],
41
- version: str = "1.5.5.dev6",
41
+ version: str = "1.5.5.dev7",
42
42
  ):
43
43
  """mdmd:hidden
44
44
  The Modal client object is not intended to be instantiated directly by users.
@@ -209,7 +209,7 @@ class Client:
209
209
  server_url: str,
210
210
  client_type: int,
211
211
  credentials: typing.Optional[tuple[str, str]],
212
- version: str = "1.5.5.dev6",
212
+ version: str = "1.5.5.dev7",
213
213
  ):
214
214
  """mdmd:hidden
215
215
  The Modal client object is not intended to be instantiated directly by users.
@@ -122,9 +122,14 @@ class EnvironmentRolesManager:
122
122
  ...
123
123
 
124
124
  class __list_spec(typing_extensions.Protocol):
125
- def __call__(self, /) -> dict[typing.Literal["users", "service_users"], dict[str, str]]:
125
+ def __call__(
126
+ self, /, *, exclude_default: bool = False
127
+ ) -> dict[typing.Literal["users", "service_users"], dict[str, str]]:
126
128
  """Enumerate the Environment Role for each user and service user in the workspace.
127
129
 
130
+ Args:
131
+ exclude_default: If `True`, only include roles that are directly assigned.
132
+
128
133
  **Examples:**
129
134
 
130
135
  ```python notest
@@ -138,9 +143,14 @@ class EnvironmentRolesManager:
138
143
  """
139
144
  ...
140
145
 
141
- async def aio(self, /) -> dict[typing.Literal["users", "service_users"], dict[str, str]]:
146
+ async def aio(
147
+ self, /, *, exclude_default: bool = False
148
+ ) -> dict[typing.Literal["users", "service_users"], dict[str, str]]:
142
149
  """Enumerate the Environment Role for each user and service user in the workspace.
143
150
 
151
+ Args:
152
+ exclude_default: If `True`, only include roles that are directly assigned.
153
+
144
154
  **Examples:**
145
155
 
146
156
  ```python notest
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.5.5.dev6
3
+ Version: 1.5.5.dev7
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License-Expression: Apache-2.0