skypilot-nightly 1.0.0.dev20250514__tar.gz → 1.0.0.dev20250515__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 (420) hide show
  1. {skypilot_nightly-1.0.0.dev20250514/skypilot_nightly.egg-info → skypilot_nightly-1.0.0.dev20250515}/PKG-INFO +1 -1
  2. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/__init__.py +2 -2
  3. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/backends/backend.py +3 -2
  4. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/backends/backend_utils.py +19 -17
  5. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/backends/cloud_vm_ray_backend.py +30 -11
  6. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/aws.py +11 -9
  7. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/azure.py +16 -13
  8. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/cloud.py +4 -3
  9. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/cudo.py +3 -2
  10. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/do.py +3 -2
  11. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/fluidstack.py +3 -3
  12. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/gcp.py +1 -1
  13. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/ibm.py +12 -10
  14. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/kubernetes.py +3 -2
  15. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/lambda_cloud.py +6 -6
  16. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/nebius.py +6 -5
  17. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/oci.py +9 -7
  18. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/paperspace.py +3 -2
  19. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/runpod.py +9 -9
  20. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/scp.py +5 -3
  21. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/vast.py +8 -7
  22. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/vsphere.py +4 -2
  23. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/core.py +18 -12
  24. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/404.html +1 -1
  25. skypilot_nightly-1.0.0.dev20250515/sky/dashboard/out/_next/static/chunks/pages/index-6b0d9e5031b70c58.js +1 -0
  26. {skypilot_nightly-1.0.0.dev20250514/sky/dashboard/out/_next/static/tdxxQrPV6NW90a983oHXe → skypilot_nightly-1.0.0.dev20250515/sky/dashboard/out/_next/static/jFI0Y-uJZ_XDK5IGJpKFU}/_buildManifest.js +1 -1
  27. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
  28. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/clusters/[cluster].html +1 -1
  29. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/clusters.html +1 -1
  30. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/index.html +1 -1
  31. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/jobs/[job].html +1 -1
  32. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/jobs.html +1 -1
  33. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/execution.py +33 -0
  34. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/global_user_state.py +2 -0
  35. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/jobs/recovery_strategy.py +4 -1
  36. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/jobs/server/core.py +6 -12
  37. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/optimizer.py +19 -13
  38. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/kubernetes/utils.py +26 -1
  39. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/resources.py +203 -44
  40. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/serve/server/core.py +0 -5
  41. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/serve/spot_placer.py +3 -0
  42. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/server/requests/executor.py +114 -22
  43. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/server/requests/requests.py +15 -0
  44. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/server/server.py +63 -20
  45. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/server/uvicorn.py +12 -2
  46. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/sky_logging.py +40 -2
  47. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skylet/log_lib.py +60 -11
  48. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skylet/log_lib.pyi +5 -0
  49. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/task.py +8 -6
  50. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/cli_utils/status_utils.py +6 -5
  51. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/command_runner.py +3 -0
  52. skypilot_nightly-1.0.0.dev20250515/sky/utils/context.py +264 -0
  53. skypilot_nightly-1.0.0.dev20250515/sky/utils/context_utils.py +172 -0
  54. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/controller_utils.py +39 -43
  55. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/dag_utils.py +4 -2
  56. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/resources_utils.py +3 -0
  57. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/rich_utils.py +81 -37
  58. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/schemas.py +33 -24
  59. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/subprocess_utils.py +8 -2
  60. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515/skypilot_nightly.egg-info}/PKG-INFO +1 -1
  61. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/skypilot_nightly.egg-info/SOURCES.txt +5 -3
  62. skypilot_nightly-1.0.0.dev20250514/sky/dashboard/out/_next/static/chunks/pages/index-f9f039532ca8cbc4.js +0 -1
  63. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/LICENSE +0 -0
  64. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/MANIFEST.in +0 -0
  65. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/README.md +0 -0
  66. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/pyproject.toml +0 -0
  67. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/setup.cfg +0 -0
  68. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/setup.py +0 -0
  69. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/adaptors/__init__.py +0 -0
  70. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/adaptors/aws.py +0 -0
  71. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/adaptors/azure.py +0 -0
  72. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/adaptors/cloudflare.py +0 -0
  73. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/adaptors/common.py +0 -0
  74. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/adaptors/cudo.py +0 -0
  75. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/adaptors/do.py +0 -0
  76. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/adaptors/docker.py +0 -0
  77. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/adaptors/gcp.py +0 -0
  78. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/adaptors/ibm.py +0 -0
  79. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/adaptors/kubernetes.py +0 -0
  80. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/adaptors/nebius.py +0 -0
  81. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/adaptors/oci.py +0 -0
  82. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/adaptors/runpod.py +0 -0
  83. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/adaptors/vast.py +0 -0
  84. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/adaptors/vsphere.py +0 -0
  85. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/admin_policy.py +0 -0
  86. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/authentication.py +0 -0
  87. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/backends/__init__.py +0 -0
  88. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/backends/docker_utils.py +0 -0
  89. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/backends/local_docker_backend.py +0 -0
  90. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/backends/monkey_patches/monkey_patch_ray_up.py +0 -0
  91. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/backends/wheel_utils.py +0 -0
  92. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/benchmark/__init__.py +0 -0
  93. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/benchmark/benchmark_state.py +0 -0
  94. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/benchmark/benchmark_utils.py +0 -0
  95. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/check.py +0 -0
  96. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/cli.py +0 -0
  97. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/client/__init__.py +0 -0
  98. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/client/cli.py +0 -0
  99. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/client/common.py +0 -0
  100. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/client/sdk.py +0 -0
  101. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/cloud_stores.py +0 -0
  102. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/__init__.py +0 -0
  103. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/__init__.py +0 -0
  104. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/aws_catalog.py +0 -0
  105. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/azure_catalog.py +0 -0
  106. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/common.py +0 -0
  107. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/config.py +0 -0
  108. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/constants.py +0 -0
  109. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/cudo_catalog.py +0 -0
  110. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/data_fetchers/__init__.py +0 -0
  111. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/data_fetchers/fetch_aws.py +0 -0
  112. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/data_fetchers/fetch_azure.py +0 -0
  113. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/data_fetchers/fetch_cudo.py +0 -0
  114. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/data_fetchers/fetch_fluidstack.py +0 -0
  115. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/data_fetchers/fetch_gcp.py +0 -0
  116. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/data_fetchers/fetch_ibm.py +0 -0
  117. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/data_fetchers/fetch_lambda_cloud.py +0 -0
  118. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/data_fetchers/fetch_vast.py +0 -0
  119. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/data_fetchers/fetch_vsphere.py +0 -0
  120. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/do_catalog.py +0 -0
  121. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/fluidstack_catalog.py +0 -0
  122. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/gcp_catalog.py +0 -0
  123. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/ibm_catalog.py +0 -0
  124. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/kubernetes_catalog.py +0 -0
  125. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/lambda_catalog.py +0 -0
  126. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/nebius_catalog.py +0 -0
  127. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/oci_catalog.py +0 -0
  128. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/paperspace_catalog.py +0 -0
  129. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/runpod_catalog.py +0 -0
  130. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/scp_catalog.py +0 -0
  131. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/vast_catalog.py +0 -0
  132. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/service_catalog/vsphere_catalog.py +0 -0
  133. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/utils/__init__.py +0 -0
  134. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/utils/aws_utils.py +0 -0
  135. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/utils/azure_utils.py +0 -0
  136. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/utils/gcp_utils.py +0 -0
  137. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/utils/oci_utils.py +0 -0
  138. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/clouds/utils/scp_utils.py +0 -0
  139. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dag.py +0 -0
  140. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/_next/static/chunks/236-f49500b82ad5392d.js +0 -0
  141. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/_next/static/chunks/312-c3c8845990db8ffc.js +0 -0
  142. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/_next/static/chunks/37-0a572fe0dbb89c4d.js +0 -0
  143. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/_next/static/chunks/678-206dddca808e6d16.js +0 -0
  144. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/_next/static/chunks/845-0ca6f2c1ba667c3b.js +0 -0
  145. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/_next/static/chunks/979-7bf73a4c7cea0f5c.js +0 -0
  146. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/_next/static/chunks/fd9d1056-2821b0f0cabcd8bd.js +0 -0
  147. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/_next/static/chunks/framework-87d061ee6ed71b28.js +0 -0
  148. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/_next/static/chunks/main-app-241eb28595532291.js +0 -0
  149. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/_next/static/chunks/main-e0e2335212e72357.js +0 -0
  150. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js +0 -0
  151. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/_next/static/chunks/pages/_error-1be831200e60c5c0.js +0 -0
  152. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-e15db85d0ea1fbe1.js +0 -0
  153. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-f383db7389368ea7.js +0 -0
  154. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/_next/static/chunks/pages/clusters-a93b93e10b8b074e.js +0 -0
  155. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-03f279c6741fb48b.js +0 -0
  156. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/_next/static/chunks/pages/jobs-a75029b67aab6a2e.js +0 -0
  157. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js +0 -0
  158. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/_next/static/chunks/webpack-830f59b8404e96b8.js +0 -0
  159. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/_next/static/css/c6933bbb2ce7f4dd.css +0 -0
  160. {skypilot_nightly-1.0.0.dev20250514/sky/dashboard/out/_next/static/tdxxQrPV6NW90a983oHXe → skypilot_nightly-1.0.0.dev20250515/sky/dashboard/out/_next/static/jFI0Y-uJZ_XDK5IGJpKFU}/_ssgManifest.js +0 -0
  161. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/favicon.ico +0 -0
  162. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/skypilot.svg +0 -0
  163. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/dashboard/out/videos/cursor-small.mp4 +0 -0
  164. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/data/__init__.py +0 -0
  165. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/data/data_transfer.py +0 -0
  166. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/data/data_utils.py +0 -0
  167. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/data/mounting_utils.py +0 -0
  168. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/data/storage.py +0 -0
  169. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/data/storage_utils.py +0 -0
  170. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/exceptions.py +0 -0
  171. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/jobs/__init__.py +0 -0
  172. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/jobs/client/__init__.py +0 -0
  173. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/jobs/client/sdk.py +0 -0
  174. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/jobs/constants.py +0 -0
  175. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/jobs/controller.py +0 -0
  176. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/jobs/dashboard/dashboard.py +0 -0
  177. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/jobs/dashboard/static/favicon.ico +0 -0
  178. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/jobs/dashboard/templates/index.html +0 -0
  179. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/jobs/scheduler.py +0 -0
  180. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/jobs/server/__init__.py +0 -0
  181. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/jobs/server/dashboard_utils.py +0 -0
  182. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/jobs/server/server.py +0 -0
  183. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/jobs/state.py +0 -0
  184. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/jobs/utils.py +0 -0
  185. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/models.py +0 -0
  186. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/__init__.py +0 -0
  187. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/aws/__init__.py +0 -0
  188. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/aws/config.py +0 -0
  189. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/aws/instance.py +0 -0
  190. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/aws/utils.py +0 -0
  191. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/azure/__init__.py +0 -0
  192. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/azure/azure-config-template.json +0 -0
  193. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/azure/config.py +0 -0
  194. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/azure/instance.py +0 -0
  195. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/common.py +0 -0
  196. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/constants.py +0 -0
  197. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/cudo/__init__.py +0 -0
  198. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/cudo/config.py +0 -0
  199. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/cudo/cudo_machine_type.py +0 -0
  200. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/cudo/cudo_utils.py +0 -0
  201. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/cudo/cudo_wrapper.py +0 -0
  202. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/cudo/instance.py +0 -0
  203. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/do/__init__.py +0 -0
  204. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/do/config.py +0 -0
  205. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/do/constants.py +0 -0
  206. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/do/instance.py +0 -0
  207. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/do/utils.py +0 -0
  208. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/docker_utils.py +0 -0
  209. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/fluidstack/__init__.py +0 -0
  210. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/fluidstack/config.py +0 -0
  211. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/fluidstack/fluidstack_utils.py +0 -0
  212. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/fluidstack/instance.py +0 -0
  213. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/gcp/__init__.py +0 -0
  214. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/gcp/config.py +0 -0
  215. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/gcp/constants.py +0 -0
  216. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/gcp/instance.py +0 -0
  217. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/gcp/instance_utils.py +0 -0
  218. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/gcp/mig_utils.py +0 -0
  219. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/instance_setup.py +0 -0
  220. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/kubernetes/__init__.py +0 -0
  221. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/kubernetes/config.py +0 -0
  222. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/kubernetes/constants.py +0 -0
  223. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/kubernetes/instance.py +0 -0
  224. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/kubernetes/manifests/fusermount-server-daemonset.yaml +0 -0
  225. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/kubernetes/network.py +0 -0
  226. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/kubernetes/network_utils.py +0 -0
  227. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/lambda_cloud/__init__.py +0 -0
  228. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/lambda_cloud/config.py +0 -0
  229. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/lambda_cloud/instance.py +0 -0
  230. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/lambda_cloud/lambda_utils.py +0 -0
  231. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/logging.py +0 -0
  232. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/metadata_utils.py +0 -0
  233. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/nebius/__init__.py +0 -0
  234. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/nebius/config.py +0 -0
  235. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/nebius/instance.py +0 -0
  236. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/nebius/utils.py +0 -0
  237. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/oci/__init__.py +0 -0
  238. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/oci/config.py +0 -0
  239. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/oci/instance.py +0 -0
  240. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/oci/query_utils.py +0 -0
  241. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/paperspace/__init__.py +0 -0
  242. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/paperspace/config.py +0 -0
  243. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/paperspace/constants.py +0 -0
  244. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/paperspace/instance.py +0 -0
  245. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/paperspace/utils.py +0 -0
  246. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/provisioner.py +0 -0
  247. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/runpod/__init__.py +0 -0
  248. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/runpod/api/__init__.py +0 -0
  249. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/runpod/api/commands.py +0 -0
  250. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/runpod/api/pods.py +0 -0
  251. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/runpod/config.py +0 -0
  252. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/runpod/instance.py +0 -0
  253. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/runpod/utils.py +0 -0
  254. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/vast/__init__.py +0 -0
  255. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/vast/config.py +0 -0
  256. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/vast/instance.py +0 -0
  257. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/vast/utils.py +0 -0
  258. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/vsphere/__init__.py +0 -0
  259. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/vsphere/common/__init__.py +0 -0
  260. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/vsphere/common/cls_api_client.py +0 -0
  261. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/vsphere/common/cls_api_helper.py +0 -0
  262. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/vsphere/common/custom_script.py +0 -0
  263. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/vsphere/common/id_generator.py +0 -0
  264. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/vsphere/common/metadata_utils.py +0 -0
  265. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/vsphere/common/service_manager.py +0 -0
  266. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/vsphere/common/service_manager_factory.py +0 -0
  267. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/vsphere/common/ssl_helper.py +0 -0
  268. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/vsphere/common/vapiconnect.py +0 -0
  269. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/vsphere/common/vim_utils.py +0 -0
  270. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/vsphere/config.py +0 -0
  271. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/vsphere/instance.py +0 -0
  272. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/provision/vsphere/vsphere_utils.py +0 -0
  273. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/serve/__init__.py +0 -0
  274. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/serve/autoscalers.py +0 -0
  275. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/serve/client/__init__.py +0 -0
  276. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/serve/client/sdk.py +0 -0
  277. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/serve/constants.py +0 -0
  278. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/serve/controller.py +0 -0
  279. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/serve/load_balancer.py +0 -0
  280. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/serve/load_balancing_policies.py +0 -0
  281. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/serve/replica_managers.py +0 -0
  282. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/serve/serve_state.py +0 -0
  283. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/serve/serve_utils.py +0 -0
  284. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/serve/server/__init__.py +0 -0
  285. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/serve/server/server.py +0 -0
  286. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/serve/service.py +0 -0
  287. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/serve/service_spec.py +0 -0
  288. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/server/__init__.py +0 -0
  289. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/server/common.py +0 -0
  290. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/server/config.py +0 -0
  291. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/server/constants.py +0 -0
  292. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/server/html/log.html +0 -0
  293. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/server/requests/__init__.py +0 -0
  294. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/server/requests/event_loop.py +0 -0
  295. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/server/requests/payloads.py +0 -0
  296. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/server/requests/preconditions.py +0 -0
  297. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/server/requests/process.py +0 -0
  298. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/server/requests/queues/__init__.py +0 -0
  299. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/server/requests/queues/local_queue.py +0 -0
  300. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/server/requests/queues/mp_queue.py +0 -0
  301. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/server/requests/serializers/__init__.py +0 -0
  302. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/server/requests/serializers/decoders.py +0 -0
  303. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/server/requests/serializers/encoders.py +0 -0
  304. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/server/stream_utils.py +0 -0
  305. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/setup_files/MANIFEST.in +0 -0
  306. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/setup_files/dependencies.py +0 -0
  307. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/setup_files/setup.py +0 -0
  308. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skylet/LICENSE +0 -0
  309. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skylet/__init__.py +0 -0
  310. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skylet/attempt_skylet.py +0 -0
  311. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skylet/autostop_lib.py +0 -0
  312. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skylet/configs.py +0 -0
  313. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skylet/constants.py +0 -0
  314. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skylet/events.py +0 -0
  315. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skylet/job_lib.py +0 -0
  316. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skylet/providers/__init__.py +0 -0
  317. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skylet/providers/command_runner.py +0 -0
  318. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skylet/providers/ibm/__init__.py +0 -0
  319. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skylet/providers/ibm/node_provider.py +0 -0
  320. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skylet/providers/ibm/utils.py +0 -0
  321. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skylet/providers/ibm/vpc_provider.py +0 -0
  322. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skylet/providers/scp/__init__.py +0 -0
  323. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skylet/providers/scp/config.py +0 -0
  324. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skylet/providers/scp/node_provider.py +0 -0
  325. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skylet/ray_patches/__init__.py +0 -0
  326. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skylet/ray_patches/autoscaler.py.patch +0 -0
  327. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skylet/ray_patches/cli.py.patch +0 -0
  328. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skylet/ray_patches/command_runner.py.patch +0 -0
  329. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skylet/ray_patches/log_monitor.py.patch +0 -0
  330. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skylet/ray_patches/resource_demand_scheduler.py.patch +0 -0
  331. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skylet/ray_patches/updater.py.patch +0 -0
  332. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skylet/ray_patches/worker.py.patch +0 -0
  333. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skylet/skylet.py +0 -0
  334. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skylet/subprocess_daemon.py +0 -0
  335. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/skypilot_config.py +0 -0
  336. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/templates/aws-ray.yml.j2 +0 -0
  337. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/templates/azure-ray.yml.j2 +0 -0
  338. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/templates/cudo-ray.yml.j2 +0 -0
  339. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/templates/do-ray.yml.j2 +0 -0
  340. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/templates/fluidstack-ray.yml.j2 +0 -0
  341. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/templates/gcp-ray.yml.j2 +0 -0
  342. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/templates/ibm-ray.yml.j2 +0 -0
  343. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/templates/jobs-controller.yaml.j2 +0 -0
  344. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/templates/kubernetes-ingress.yml.j2 +0 -0
  345. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/templates/kubernetes-loadbalancer.yml.j2 +0 -0
  346. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/templates/kubernetes-port-forward-proxy-command.sh +0 -0
  347. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/templates/kubernetes-ray.yml.j2 +0 -0
  348. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/templates/kubernetes-ssh-jump.yml.j2 +0 -0
  349. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/templates/lambda-ray.yml.j2 +0 -0
  350. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/templates/local-ray.yml.j2 +0 -0
  351. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/templates/nebius-ray.yml.j2 +0 -0
  352. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/templates/oci-ray.yml.j2 +0 -0
  353. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/templates/paperspace-ray.yml.j2 +0 -0
  354. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/templates/runpod-ray.yml.j2 +0 -0
  355. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/templates/scp-ray.yml.j2 +0 -0
  356. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/templates/sky-serve-controller.yaml.j2 +0 -0
  357. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/templates/skypilot-server-kubernetes-proxy.sh +0 -0
  358. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/templates/vast-ray.yml.j2 +0 -0
  359. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/templates/vsphere-ray.yml.j2 +0 -0
  360. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/templates/websocket_proxy.py +0 -0
  361. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/usage/__init__.py +0 -0
  362. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/usage/constants.py +0 -0
  363. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/usage/usage_lib.py +0 -0
  364. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/__init__.py +0 -0
  365. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/accelerator_registry.py +0 -0
  366. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/admin_policy_utils.py +0 -0
  367. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/annotations.py +0 -0
  368. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/atomic.py +0 -0
  369. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/aws/__init__.py +0 -0
  370. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/aws/get_default_security_group.py +0 -0
  371. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/cli_utils/__init__.py +0 -0
  372. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/cluster_utils.py +0 -0
  373. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/command_runner.pyi +0 -0
  374. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/common.py +0 -0
  375. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/common_utils.py +0 -0
  376. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/config_utils.py +0 -0
  377. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/control_master_utils.py +0 -0
  378. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/db_utils.py +0 -0
  379. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/env_options.py +0 -0
  380. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/kubernetes/__init__.py +0 -0
  381. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/kubernetes/create_cluster.sh +0 -0
  382. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/kubernetes/delete_cluster.sh +0 -0
  383. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/kubernetes/deploy_remote_cluster.sh +0 -0
  384. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/kubernetes/exec_kubeconfig_converter.py +0 -0
  385. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/kubernetes/generate_kind_config.py +0 -0
  386. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/kubernetes/generate_kubeconfig.sh +0 -0
  387. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/kubernetes/gpu_labeler.py +0 -0
  388. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +0 -0
  389. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +0 -0
  390. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/kubernetes/kubernetes_deploy_utils.py +0 -0
  391. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/kubernetes/rsync_helper.sh +0 -0
  392. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -0
  393. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/kubernetes_enums.py +0 -0
  394. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/log_utils.py +0 -0
  395. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/message_utils.py +0 -0
  396. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/registry.py +0 -0
  397. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/rich_console_utils.py +0 -0
  398. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/status_lib.py +0 -0
  399. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/timeline.py +0 -0
  400. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/ux_utils.py +0 -0
  401. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/sky/utils/validator.py +0 -0
  402. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/skypilot_nightly.egg-info/dependency_links.txt +0 -0
  403. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/skypilot_nightly.egg-info/entry_points.txt +0 -0
  404. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/skypilot_nightly.egg-info/requires.txt +0 -0
  405. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/skypilot_nightly.egg-info/top_level.txt +0 -0
  406. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/tests/test_api.py +0 -0
  407. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/tests/test_cli.py +0 -0
  408. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/tests/test_config.py +0 -0
  409. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/tests/test_failover.py +0 -0
  410. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/tests/test_global_user_state.py +0 -0
  411. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/tests/test_jobs.py +0 -0
  412. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/tests/test_jobs_and_serve.py +0 -0
  413. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/tests/test_list_accelerators.py +0 -0
  414. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/tests/test_optimizer_dryruns.py +0 -0
  415. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/tests/test_optimizer_random_dag.py +0 -0
  416. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/tests/test_serve_autoscaler.py +0 -0
  417. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/tests/test_smoke.py +0 -0
  418. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/tests/test_storage.py +0 -0
  419. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/tests/test_wheels.py +0 -0
  420. {skypilot_nightly-1.0.0.dev20250514 → skypilot_nightly-1.0.0.dev20250515}/tests/test_yaml_parser.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20250514
3
+ Version: 1.0.0.dev20250515
4
4
  Summary: SkyPilot: Run AI on Any Infra — Unified, Faster, Cheaper.
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -5,7 +5,7 @@ from typing import Optional
5
5
  import urllib.request
6
6
 
7
7
  # Replaced with the current commit when building the wheels.
8
- _SKYPILOT_COMMIT_SHA = '72eec01ce074d475ef65d48fbdf91b9216f41754'
8
+ _SKYPILOT_COMMIT_SHA = 'c7068a2c749d03a06ecc8940d34a4911ac9391bc'
9
9
 
10
10
 
11
11
  def _get_git_commit():
@@ -35,7 +35,7 @@ def _get_git_commit():
35
35
 
36
36
 
37
37
  __commit__ = _get_git_commit()
38
- __version__ = '1.0.0.dev20250514'
38
+ __version__ = '1.0.0.dev20250515'
39
39
  __root_dir__ = os.path.dirname(os.path.abspath(__file__))
40
40
 
41
41
 
@@ -37,8 +37,9 @@ class Backend(Generic[_ResourceHandleType]):
37
37
  ResourceHandle = ResourceHandle # pylint: disable=invalid-name
38
38
 
39
39
  # --- APIs ---
40
- def check_resources_fit_cluster(self, handle: _ResourceHandleType,
41
- task: 'task_lib.Task') -> None:
40
+ def check_resources_fit_cluster(
41
+ self, handle: _ResourceHandleType,
42
+ task: 'task_lib.Task') -> Optional['resources.Resources']:
42
43
  """Check whether resources of the task are satisfied by cluster."""
43
44
  raise NotImplementedError
44
45
 
@@ -40,6 +40,7 @@ from sky.utils import cluster_utils
40
40
  from sky.utils import command_runner
41
41
  from sky.utils import common
42
42
  from sky.utils import common_utils
43
+ from sky.utils import context_utils
43
44
  from sky.utils import controller_utils
44
45
  from sky.utils import env_options
45
46
  from sky.utils import registry
@@ -605,7 +606,7 @@ def write_cluster_config(
605
606
  # other cases, we exclude the cloud from credential file uploads after
606
607
  # running required checks.
607
608
  assert cluster_name is not None
608
- excluded_clouds = set()
609
+ excluded_clouds: Set[clouds.Cloud] = set()
609
610
  remote_identity_config = skypilot_config.get_nested(
610
611
  (str(cloud).lower(), 'remote_identity'), None)
611
612
  remote_identity = schemas.get_default_remote_identity(str(cloud).lower())
@@ -1556,7 +1557,8 @@ def check_owner_identity(cluster_name: str) -> None:
1556
1557
  if not isinstance(handle, backends.CloudVmRayResourceHandle):
1557
1558
  return
1558
1559
 
1559
- cloud = handle.launched_resources.cloud
1560
+ launched_resources = handle.launched_resources.assert_launchable()
1561
+ cloud = launched_resources.cloud
1560
1562
  user_identities = cloud.get_user_identities()
1561
1563
  owner_identity = record['owner']
1562
1564
  if user_identities is None:
@@ -1720,12 +1722,12 @@ def check_can_clone_disk_and_override_task(
1720
1722
  'a new target cluster name.')
1721
1723
 
1722
1724
  new_task_resources = []
1723
- original_cloud = handle.launched_resources.cloud
1725
+ launched_resources = handle.launched_resources.assert_launchable()
1726
+ original_cloud = launched_resources.cloud
1724
1727
  original_cloud.check_features_are_supported(
1725
- handle.launched_resources,
1728
+ launched_resources,
1726
1729
  {clouds.CloudImplementationFeatures.CLONE_DISK_FROM_CLUSTER})
1727
1730
 
1728
- assert original_cloud is not None, handle.launched_resources
1729
1731
  has_override = False
1730
1732
  has_disk_size_met = False
1731
1733
  has_cloud_met = False
@@ -1739,7 +1741,7 @@ def check_can_clone_disk_and_override_task(
1739
1741
  continue
1740
1742
  has_cloud_met = True
1741
1743
 
1742
- override_param = {}
1744
+ override_param: Dict[str, Any] = {}
1743
1745
  if task_resources.cloud is None:
1744
1746
  override_param['cloud'] = original_cloud
1745
1747
  if task_resources.region is None:
@@ -1933,8 +1935,8 @@ def _update_cluster_status(cluster_name: str) -> Optional[Dict[str, Any]]:
1933
1935
  return global_user_state.get_cluster_from_name(cluster_name)
1934
1936
 
1935
1937
  # All cases below are transitioning the cluster to non-UP states.
1936
-
1937
- if (not node_statuses and handle.launched_resources.cloud.STATUS_VERSION >=
1938
+ launched_resources = handle.launched_resources.assert_launchable()
1939
+ if (not node_statuses and launched_resources.cloud.STATUS_VERSION >=
1938
1940
  clouds.StatusVersion.SKYPILOT):
1939
1941
  # Note: launched_at is set during sky launch, even on an existing
1940
1942
  # cluster. This will catch the case where the cluster was terminated on
@@ -2204,6 +2206,7 @@ def refresh_cluster_record(
2204
2206
 
2205
2207
 
2206
2208
  @timeline.event
2209
+ @context_utils.cancellation_guard
2207
2210
  def refresh_cluster_status_handle(
2208
2211
  cluster_name: str,
2209
2212
  *,
@@ -2253,6 +2256,7 @@ def check_cluster_available(
2253
2256
  ...
2254
2257
 
2255
2258
 
2259
+ @context_utils.cancellation_guard
2256
2260
  def check_cluster_available(
2257
2261
  cluster_name: str,
2258
2262
  *,
@@ -2467,7 +2471,7 @@ def is_controller_accessible(
2467
2471
  need_connection_check):
2468
2472
  # Check ssh connection if (1) controller is in INIT state, or (2) we failed to fetch the
2469
2473
  # status, both of which can happen when controller's status lock is held by another `sky jobs launch` or
2470
- # `sky serve up`. If we have controller's head_ip available and it is ssh-reachable,
2474
+ # `sky serve up`. If we have controller's head_ip available and it is ssh-reachable,
2471
2475
  # we can allow access to the controller.
2472
2476
  ssh_credentials = ssh_credential_from_yaml(handle.cluster_yaml,
2473
2477
  handle.docker_user,
@@ -2965,7 +2969,7 @@ def get_endpoints(cluster: str,
2965
2969
  f'for cluster {cluster!r} with backend '
2966
2970
  f'{get_backend_from_handle(handle).NAME}.')
2967
2971
 
2968
- launched_resources = handle.launched_resources
2972
+ launched_resources = handle.launched_resources.assert_launchable()
2969
2973
  cloud = launched_resources.cloud
2970
2974
  try:
2971
2975
  cloud.check_features_are_supported(
@@ -2982,11 +2986,11 @@ def get_endpoints(cluster: str,
2982
2986
  head_ip=handle.head_ip,
2983
2987
  provider_config=config['provider'])
2984
2988
 
2989
+ launched_resources = handle.launched_resources.assert_launchable()
2985
2990
  # Validation before returning the endpoints
2986
2991
  if port is not None:
2987
2992
  # If the requested endpoint was not to be exposed
2988
- port_set = resources_utils.port_ranges_to_set(
2989
- handle.launched_resources.ports)
2993
+ port_set = resources_utils.port_ranges_to_set(launched_resources.ports)
2990
2994
  if port not in port_set:
2991
2995
  logger.warning(f'Port {port} is not exposed on '
2992
2996
  f'cluster {cluster!r}.')
@@ -2995,8 +2999,7 @@ def get_endpoints(cluster: str,
2995
2999
  if port not in port_details:
2996
3000
  error_msg = (f'Port {port} not exposed yet. '
2997
3001
  f'{_ENDPOINTS_RETRY_MESSAGE} ')
2998
- if handle.launched_resources.cloud.is_same_cloud(
2999
- clouds.Kubernetes()):
3002
+ if launched_resources.cloud.is_same_cloud(clouds.Kubernetes()):
3000
3003
  # Add Kubernetes specific debugging info
3001
3004
  error_msg += (kubernetes_utils.get_endpoint_debug_message())
3002
3005
  logger.warning(error_msg)
@@ -3005,7 +3008,7 @@ def get_endpoints(cluster: str,
3005
3008
  else:
3006
3009
  if not port_details:
3007
3010
  # If cluster had no ports to be exposed
3008
- if handle.launched_resources.ports is None:
3011
+ if launched_resources.ports is None:
3009
3012
  logger.warning(f'Cluster {cluster!r} does not have any '
3010
3013
  'ports to be exposed.')
3011
3014
  return {}
@@ -3014,8 +3017,7 @@ def get_endpoints(cluster: str,
3014
3017
  else:
3015
3018
  error_msg = (f'No endpoints exposed yet. '
3016
3019
  f'{_ENDPOINTS_RETRY_MESSAGE} ')
3017
- if handle.launched_resources.cloud.is_same_cloud(
3018
- clouds.Kubernetes()):
3020
+ if launched_resources.cloud.is_same_cloud(clouds.Kubernetes()):
3019
3021
  # Add Kubernetes specific debugging info
3020
3022
  error_msg += \
3021
3023
  kubernetes_utils.get_endpoint_debug_message()
@@ -61,6 +61,7 @@ from sky.utils import cluster_utils
61
61
  from sky.utils import command_runner
62
62
  from sky.utils import common
63
63
  from sky.utils import common_utils
64
+ from sky.utils import context_utils
64
65
  from sky.utils import controller_utils
65
66
  from sky.utils import env_options
66
67
  from sky.utils import log_utils
@@ -274,6 +275,7 @@ class RayCodeGen:
274
275
  ray_address = 'auto'
275
276
  self._code = [
276
277
  textwrap.dedent(f"""\
278
+ import functools
277
279
  import getpass
278
280
  import hashlib
279
281
  import io
@@ -363,6 +365,7 @@ class RayCodeGen:
363
365
  # by ray.remote. This should be removed once we have a better way to
364
366
  # specify dependencies for ray.
365
367
  inspect.getsource(log_lib._ProcessingArgs), # pylint: disable=protected-access
368
+ inspect.getsource(log_lib._get_context), # pylint: disable=protected-access
366
369
  inspect.getsource(log_lib._handle_io_stream), # pylint: disable=protected-access
367
370
  inspect.getsource(log_lib.process_subprocess_stream),
368
371
  inspect.getsource(log_lib.run_with_log),
@@ -1355,6 +1358,8 @@ class RetryingVmProvisioner(object):
1355
1358
  # Get previous cluster status
1356
1359
  cluster_exists = prev_cluster_status is not None
1357
1360
 
1361
+ to_provision = to_provision.assert_launchable()
1362
+
1358
1363
  assert to_provision.region is not None, (
1359
1364
  to_provision, 'region should have been set by the optimizer.')
1360
1365
  region = clouds.Region(to_provision.region)
@@ -2030,6 +2035,7 @@ class RetryingVmProvisioner(object):
2030
2035
  f' that never expire or a service account.\033[0m')
2031
2036
  logger.warning(warnings)
2032
2037
 
2038
+ to_provision = to_provision.assert_launchable()
2033
2039
  # Retrying launchable resources.
2034
2040
  while True:
2035
2041
  try:
@@ -2159,9 +2165,10 @@ class RetryingVmProvisioner(object):
2159
2165
  raise exceptions.ResourcesUnavailableError(
2160
2166
  _RESOURCES_UNAVAILABLE_LOG + '\n' + table.get_string(),
2161
2167
  failover_history=failover_history)
2162
- to_provision = task.best_resources
2168
+ best_resources = task.best_resources
2163
2169
  assert task in self._dag.tasks, 'Internal logic error.'
2164
- assert to_provision is not None, task
2170
+ assert best_resources is not None, task
2171
+ to_provision = best_resources
2165
2172
  return config_dict
2166
2173
 
2167
2174
 
@@ -2415,6 +2422,7 @@ class CloudVmRayResourceHandle(backends.backend.ResourceHandle):
2415
2422
  internal_external_ips[1:], key=lambda x: x[1])
2416
2423
  self.stable_internal_external_ips = stable_internal_external_ips
2417
2424
 
2425
+ @context_utils.cancellation_guard
2418
2426
  @annotations.lru_cache(scope='global')
2419
2427
  @timeline.event
2420
2428
  def get_command_runners(self,
@@ -2426,19 +2434,21 @@ class CloudVmRayResourceHandle(backends.backend.ResourceHandle):
2426
2434
  self.cluster_yaml, self.docker_user, self.ssh_user)
2427
2435
  if avoid_ssh_control:
2428
2436
  ssh_credentials.pop('ssh_control_name', None)
2437
+
2438
+ launched_resources = self.launched_resources.assert_launchable()
2429
2439
  updated_to_skypilot_provisioner_after_provisioned = (
2430
- self.launched_resources.cloud.PROVISIONER_VERSION >=
2440
+ launched_resources.cloud.PROVISIONER_VERSION >=
2431
2441
  clouds.ProvisionerVersion.SKYPILOT and
2432
2442
  self.cached_external_ips is not None and
2433
2443
  self.cached_cluster_info is None)
2434
2444
  if updated_to_skypilot_provisioner_after_provisioned:
2435
2445
  logger.debug(
2436
- f'{self.launched_resources.cloud} has been updated to the new '
2446
+ f'{launched_resources.cloud} has been updated to the new '
2437
2447
  f'provisioner after cluster {self.cluster_name} was '
2438
2448
  f'provisioned. Cached IPs are used for connecting to the '
2439
2449
  'cluster.')
2440
2450
  if (clouds.ProvisionerVersion.RAY_PROVISIONER_SKYPILOT_TERMINATOR >=
2441
- self.launched_resources.cloud.PROVISIONER_VERSION or
2451
+ launched_resources.cloud.PROVISIONER_VERSION or
2442
2452
  updated_to_skypilot_provisioner_after_provisioned):
2443
2453
  ip_list = (self.cached_external_ips
2444
2454
  if force_cached else self.external_ips())
@@ -3142,8 +3152,8 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
3142
3152
  resources_utils.port_ranges_to_set(current_ports) -
3143
3153
  resources_utils.port_ranges_to_set(prev_ports))
3144
3154
  if open_new_ports:
3145
- cloud = handle.launched_resources.cloud
3146
- if not (cloud.OPEN_PORTS_VERSION <=
3155
+ launched_resources = handle.launched_resources.assert_launchable()
3156
+ if not (launched_resources.cloud.OPEN_PORTS_VERSION <=
3147
3157
  clouds.OpenPortsVersion.LAUNCH_ONLY):
3148
3158
  with rich_utils.safe_status(
3149
3159
  ux_utils.spinner_message(
@@ -3247,9 +3257,10 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
3247
3257
  TODO: Delete COPY storage_mounts in task.sync_storage_mounts(), and
3248
3258
  assert here that all storage_mounts are MOUNT mode.
3249
3259
  """
3260
+ launched_resources = handle.launched_resources.assert_launchable()
3250
3261
  with rich_utils.safe_status(ux_utils.spinner_message('Syncing files')):
3251
3262
  controller_utils.replace_skypilot_config_path_in_file_mounts(
3252
- handle.launched_resources.cloud, all_file_mounts)
3263
+ launched_resources.cloud, all_file_mounts)
3253
3264
  self._execute_file_mounts(handle, all_file_mounts)
3254
3265
  self._execute_storage_mounts(handle, storage_mounts)
3255
3266
  self._set_storage_mounts_metadata(handle.cluster_name,
@@ -3842,6 +3853,7 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
3842
3853
  subprocess_utils.run_in_parallel(_rsync_down, parallel_args)
3843
3854
  return dict(zip(job_ids, local_log_dirs))
3844
3855
 
3856
+ @context_utils.cancellation_guard
3845
3857
  def tail_logs(self,
3846
3858
  handle: CloudVmRayResourceHandle,
3847
3859
  job_id: Optional[int],
@@ -4148,7 +4160,8 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
4148
4160
  log_path = os.path.join(os.path.expanduser(self.log_dir),
4149
4161
  'teardown.log')
4150
4162
  log_abs_path = os.path.abspath(log_path)
4151
- cloud = handle.launched_resources.cloud
4163
+ launched_resources = handle.launched_resources.assert_launchable()
4164
+ cloud = launched_resources.cloud
4152
4165
  config = common_utils.read_yaml(handle.cluster_yaml)
4153
4166
  cluster_name = handle.cluster_name
4154
4167
  cluster_name_on_cloud = handle.cluster_name_on_cloud
@@ -4360,10 +4373,12 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
4360
4373
  # the right resource to provision the cluster.
4361
4374
  if handle.cluster_yaml is not None:
4362
4375
  try:
4363
- cloud = handle.launched_resources.cloud
4376
+ launched_resources = (
4377
+ handle.launched_resources.assert_launchable())
4378
+ cloud = launched_resources.cloud
4364
4379
  config = common_utils.read_yaml(handle.cluster_yaml)
4365
4380
  cloud.check_features_are_supported(
4366
- handle.launched_resources,
4381
+ launched_resources,
4367
4382
  {clouds.CloudImplementationFeatures.OPEN_PORTS})
4368
4383
  provision_lib.cleanup_ports(repr(cloud),
4369
4384
  cluster_name_on_cloud,
@@ -4489,6 +4504,7 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
4489
4504
 
4490
4505
  # down = False is the default, but warn the user in case
4491
4506
  # they have explicitly specified it.
4507
+ # TODO(cooperc): Fix for new autostop stuff.
4492
4508
  config_override_down = skypilot_config.get_nested(
4493
4509
  (controller.value.controller_type, 'controller',
4494
4510
  'autostop', 'down'), None)
@@ -4559,6 +4575,7 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
4559
4575
  # TODO(zhwu): Refactor this to a CommandRunner class, so different backends
4560
4576
  # can support its own command runner.
4561
4577
  @timeline.event
4578
+ @context_utils.cancellation_guard
4562
4579
  def run_on_head(
4563
4580
  self,
4564
4581
  handle: CloudVmRayResourceHandle,
@@ -4704,6 +4721,8 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
4704
4721
  all_ports = resources_utils.port_set_to_ranges(current_ports_set |
4705
4722
  requested_ports_set)
4706
4723
  to_provision = handle.launched_resources
4724
+ assert to_provision is not None
4725
+ to_provision = to_provision.assert_launchable()
4707
4726
  if (to_provision.cloud.OPEN_PORTS_VERSION <=
4708
4727
  clouds.OpenPortsVersion.LAUNCH_ONLY):
4709
4728
  if not requested_ports_set <= current_ports_set:
@@ -440,18 +440,19 @@ class AWS(clouds.Cloud):
440
440
  region_name = region.name
441
441
  zone_names = [zone.name for zone in zones]
442
442
 
443
- r = resources
444
- # r.accelerators is cleared but .instance_type encodes the info.
445
- acc_dict = self.get_accelerators_from_instance_type(r.instance_type)
443
+ resources = resources.assert_launchable()
444
+ # resources.accelerators is cleared but .instance_type encodes the info.
445
+ acc_dict = self.get_accelerators_from_instance_type(
446
+ resources.instance_type)
446
447
  custom_resources = resources_utils.make_ray_custom_resources_str(
447
448
  acc_dict)
448
449
 
449
- if r.extract_docker_image() is not None:
450
+ if resources.extract_docker_image() is not None:
450
451
  image_id_to_use = None
451
452
  else:
452
- image_id_to_use = r.image_id
453
+ image_id_to_use = resources.image_id
453
454
  image_id = self._get_image_id(image_id_to_use, region_name,
454
- r.instance_type)
455
+ resources.instance_type)
455
456
 
456
457
  disk_encrypted = skypilot_config.get_nested(('aws', 'disk_encrypted'),
457
458
  False)
@@ -483,17 +484,17 @@ class AWS(clouds.Cloud):
483
484
  'in `~/.sky/config.yaml`.')
484
485
 
485
486
  return {
486
- 'instance_type': r.instance_type,
487
+ 'instance_type': resources.instance_type,
487
488
  'custom_resources': custom_resources,
488
489
  'disk_encrypted': disk_encrypted,
489
- 'use_spot': r.use_spot,
490
+ 'use_spot': resources.use_spot,
490
491
  'region': region_name,
491
492
  'zones': ','.join(zone_names),
492
493
  'image_id': image_id,
493
494
  'security_group': security_group,
494
495
  'security_group_managed_by_skypilot':
495
496
  str(security_group != user_security_group).lower(),
496
- **AWS._get_disk_specs(r.disk_tier)
497
+ **AWS._get_disk_specs(resources.disk_tier)
497
498
  }
498
499
 
499
500
  def _get_feasible_launchable_resources(
@@ -971,6 +972,7 @@ class AWS(clouds.Cloud):
971
972
  botocore.exceptions.ClientError: error in Boto3 client request.
972
973
  """
973
974
 
975
+ resources = resources.assert_launchable()
974
976
  instance_type = resources.instance_type
975
977
  region = resources.region
976
978
  use_spot = resources.use_spot
@@ -325,9 +325,10 @@ class Azure(clouds.Cloud):
325
325
 
326
326
  region_name = region.name
327
327
 
328
- r = resources
329
- # r.accelerators is cleared but .instance_type encodes the info.
330
- acc_dict = self.get_accelerators_from_instance_type(r.instance_type)
328
+ resources = resources.assert_launchable()
329
+ # resources.accelerators is cleared but .instance_type encodes the info.
330
+ acc_dict = self.get_accelerators_from_instance_type(
331
+ resources.instance_type)
331
332
  acc_count = None
332
333
  if acc_dict is not None:
333
334
  acc_count = str(sum(acc_dict.values()))
@@ -339,8 +340,9 @@ class Azure(clouds.Cloud):
339
340
  # pylint: disable=import-outside-toplevel
340
341
  from sky.clouds.service_catalog import azure_catalog
341
342
  gen_version = azure_catalog.get_gen_version_from_instance_type(
342
- r.instance_type)
343
- image_id = self._get_default_image_tag(gen_version, r.instance_type)
343
+ resources.instance_type)
344
+ image_id = self._get_default_image_tag(gen_version,
345
+ resources.instance_type)
344
346
  else:
345
347
  if None in resources.image_id:
346
348
  image_id = resources.image_id[None]
@@ -407,18 +409,19 @@ class Azure(clouds.Cloud):
407
409
  """).split('\n')
408
410
 
409
411
  def _failover_disk_tier() -> Optional[resources_utils.DiskTier]:
410
- if (r.disk_tier is not None and
411
- r.disk_tier != resources_utils.DiskTier.BEST):
412
- return r.disk_tier
412
+ if (resources.disk_tier is not None and
413
+ resources.disk_tier != resources_utils.DiskTier.BEST):
414
+ return resources.disk_tier
413
415
  # Failover disk tier from high to low. Default disk tier
414
416
  # (Premium_LRS, medium) only support s-series instance types,
415
417
  # so we failover to lower tiers for non-s-series.
416
418
  all_tiers = list(reversed(resources_utils.DiskTier))
417
419
  start_index = all_tiers.index(
418
- Azure._translate_disk_tier(r.disk_tier))
420
+ Azure._translate_disk_tier(resources.disk_tier))
419
421
  while start_index < len(all_tiers):
420
422
  disk_tier = all_tiers[start_index]
421
- ok, _ = Azure.check_disk_tier(r.instance_type, disk_tier)
423
+ ok, _ = Azure.check_disk_tier(resources.instance_type,
424
+ disk_tier)
422
425
  if ok:
423
426
  return disk_tier
424
427
  start_index += 1
@@ -426,11 +429,11 @@ class Azure(clouds.Cloud):
426
429
 
427
430
  disk_tier = _failover_disk_tier()
428
431
 
429
- resources_vars = {
430
- 'instance_type': r.instance_type,
432
+ resources_vars: Dict[str, Any] = {
433
+ 'instance_type': resources.instance_type,
431
434
  'custom_resources': custom_resources,
432
435
  'num_gpus': acc_count,
433
- 'use_spot': r.use_spot,
436
+ 'use_spot': resources.use_spot,
434
437
  'region': region_name,
435
438
  # Azure does not support specific zones.
436
439
  'zones': None,
@@ -11,7 +11,8 @@ import collections
11
11
  import enum
12
12
  import math
13
13
  import typing
14
- from typing import Dict, Iterable, Iterator, List, Optional, Set, Tuple, Union
14
+ from typing import (Any, Dict, Iterable, Iterator, List, Optional, Set, Tuple,
15
+ Union)
15
16
 
16
17
  from typing_extensions import assert_never
17
18
 
@@ -302,7 +303,7 @@ class Cloud:
302
303
  zones: Optional[List['Zone']],
303
304
  num_nodes: int,
304
305
  dryrun: bool = False,
305
- ) -> Dict[str, Optional[str]]:
306
+ ) -> Dict[str, Any]:
306
307
  """Converts planned sky.Resources to cloud-specific resource variables.
307
308
 
308
309
  These variables are used to fill the node type section (instance type,
@@ -721,7 +722,7 @@ class Cloud:
721
722
  Raises:
722
723
  ResourcesMismatchError: If the accelerator is not supported.
723
724
  """
724
- assert resources.is_launchable(), resources
725
+ resources = resources.assert_launchable()
725
726
 
726
727
  def _equal_accelerators(
727
728
  acc_requested: Optional[Dict[str, Union[int, float]]],
@@ -201,8 +201,9 @@ class Cudo(clouds.Cloud):
201
201
  dryrun: bool = False,
202
202
  ) -> Dict[str, Optional[str]]:
203
203
  del zones, cluster_name # unused
204
- r = resources
205
- acc_dict = self.get_accelerators_from_instance_type(r.instance_type)
204
+ resources = resources.assert_launchable()
205
+ acc_dict = self.get_accelerators_from_instance_type(
206
+ resources.instance_type)
206
207
  custom_resources = resources_utils.make_ray_custom_resources_str(
207
208
  acc_dict)
208
209
 
@@ -181,8 +181,9 @@ class DO(clouds.Cloud):
181
181
  dryrun: bool = False) -> Dict[str, Optional[str]]:
182
182
  del zones, dryrun, cluster_name
183
183
 
184
- r = resources
185
- acc_dict = self.get_accelerators_from_instance_type(r.instance_type)
184
+ resources = resources.assert_launchable()
185
+ acc_dict = self.get_accelerators_from_instance_type(
186
+ resources.instance_type)
186
187
  if acc_dict is not None:
187
188
  custom_resources = json.dumps(acc_dict, separators=(',', ':'))
188
189
  else:
@@ -188,9 +188,9 @@ class Fluidstack(clouds.Cloud):
188
188
  ) -> Dict[str, Optional[str]]:
189
189
 
190
190
  assert zones is None, 'FluidStack does not support zones.'
191
-
192
- r = resources
193
- acc_dict = self.get_accelerators_from_instance_type(r.instance_type)
191
+ resources = resources.assert_launchable()
192
+ acc_dict = self.get_accelerators_from_instance_type(
193
+ resources.instance_type)
194
194
  custom_resources = resources_utils.make_ray_custom_resources_str(
195
195
  acc_dict)
196
196
 
@@ -1039,7 +1039,7 @@ class GCP(clouds.Cloud):
1039
1039
  @staticmethod
1040
1040
  def _check_instance_type_accelerators_combination(
1041
1041
  resources: 'resources.Resources') -> None:
1042
- assert resources.is_launchable(), resources
1042
+ resources = resources.assert_launchable()
1043
1043
  service_catalog.check_accelerator_attachable_to_host(
1044
1044
  resources.instance_type, resources.accelerators, resources.zone,
1045
1045
  'gcp')
@@ -175,7 +175,7 @@ class IBM(clouds.Cloud):
175
175
  zones: Optional[List['clouds.Zone']],
176
176
  num_nodes: int,
177
177
  dryrun: bool = False,
178
- ) -> Dict[str, Optional[str]]:
178
+ ) -> Dict[str, Any]:
179
179
  """Converts planned sky.Resources to cloud-specific resource variables.
180
180
 
181
181
  These variables are used to fill the node type section (instance type,
@@ -204,30 +204,32 @@ class IBM(clouds.Cloud):
204
204
  # clouds implementing 'zones_provision_loop()'
205
205
  zone_names = [zone.name for zone in zones] # type: ignore[union-attr]
206
206
 
207
- r = resources
208
- assert not r.use_spot, \
207
+ resources = resources.assert_launchable()
208
+ assert not resources.use_spot, \
209
209
  'IBM does not currently support spot instances in this framework'
210
210
 
211
- acc_dict = self.get_accelerators_from_instance_type(r.instance_type)
211
+ acc_dict = self.get_accelerators_from_instance_type(
212
+ resources.instance_type)
212
213
  custom_resources = resources_utils.make_ray_custom_resources_str(
213
214
  acc_dict)
214
215
 
215
- instance_resources = _get_profile_resources(r.instance_type)
216
+ instance_resources = _get_profile_resources(resources.instance_type)
216
217
 
217
218
  worker_instance_type = get_cred_file_field('worker_instance_type',
218
- r.instance_type)
219
+ resources.instance_type)
219
220
  worker_instance_resources = _get_profile_resources(worker_instance_type)
220
221
  # r.image_id: {clouds.Region:image_id} - property of Resources class
221
- image_id = r.image_id[
222
- region.name] if r.image_id else self.get_default_image(region_name)
222
+ image_id = resources.image_id[
223
+ region.name] if resources.image_id else self.get_default_image(
224
+ region_name)
223
225
 
224
226
  return {
225
- 'instance_type': r.instance_type,
227
+ 'instance_type': resources.instance_type,
226
228
  'instance_resources': instance_resources,
227
229
  'worker_instance_type': worker_instance_type,
228
230
  'worker_instance_resources': worker_instance_resources,
229
231
  'custom_resources': custom_resources,
230
- 'use_spot': r.use_spot,
232
+ 'use_spot': resources.use_spot,
231
233
  'region': region_name,
232
234
  'zones': ','.join(zone_names),
233
235
  'image_id': image_id,
@@ -414,8 +414,9 @@ class Kubernetes(clouds.Cloud):
414
414
  context = region.name
415
415
  assert context is not None, 'No context found in kubeconfig'
416
416
 
417
- r = resources
418
- acc_dict = self.get_accelerators_from_instance_type(r.instance_type)
417
+ resources = resources.assert_launchable()
418
+ acc_dict = self.get_accelerators_from_instance_type(
419
+ resources.instance_type)
419
420
  custom_resources = resources_utils.make_ray_custom_resources_str(
420
421
  acc_dict)
421
422
 
@@ -1,6 +1,6 @@
1
1
  """Lambda Cloud."""
2
2
  import typing
3
- from typing import Dict, Iterator, List, Optional, Tuple, Union
3
+ from typing import Any, Dict, Iterator, List, Optional, Tuple, Union
4
4
 
5
5
  from sky import clouds
6
6
  from sky.adaptors import common as adaptors_common
@@ -162,16 +162,16 @@ class Lambda(clouds.Cloud):
162
162
  region: 'clouds.Region',
163
163
  zones: Optional[List['clouds.Zone']],
164
164
  num_nodes: int,
165
- dryrun: bool = False) -> Dict[str, Optional[str]]:
165
+ dryrun: bool = False) -> Dict[str, Any]:
166
166
  del cluster_name, dryrun # Unused.
167
167
  assert zones is None, 'Lambda does not support zones.'
168
-
169
- r = resources
170
- acc_dict = self.get_accelerators_from_instance_type(r.instance_type)
168
+ resources = resources.assert_launchable()
169
+ acc_dict = self.get_accelerators_from_instance_type(
170
+ resources.instance_type)
171
171
  custom_resources = resources_utils.make_ray_custom_resources_str(
172
172
  acc_dict)
173
173
 
174
- resources_vars = {
174
+ resources_vars: Dict[str, Any] = {
175
175
  'instance_type': resources.instance_type,
176
176
  'custom_resources': custom_resources,
177
177
  'region': region.name,