skypilot-nightly 1.0.0.dev20250716__tar.gz → 1.0.0.dev20250717__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 (519) hide show
  1. {skypilot_nightly-1.0.0.dev20250716/sky/setup_files → skypilot_nightly-1.0.0.dev20250717}/MANIFEST.in +1 -0
  2. {skypilot_nightly-1.0.0.dev20250716/skypilot_nightly.egg-info → skypilot_nightly-1.0.0.dev20250717}/PKG-INFO +3 -1
  3. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/__init__.py +4 -2
  4. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/backends/backend.py +8 -4
  5. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/backends/cloud_vm_ray_backend.py +50 -1
  6. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/backends/docker_utils.py +1 -1
  7. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/backends/local_docker_backend.py +2 -1
  8. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/common.py +60 -50
  9. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/data_fetchers/fetch_gcp.py +1 -0
  10. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/gcp_catalog.py +24 -7
  11. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/kubernetes_catalog.py +5 -1
  12. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/client/cli/command.py +180 -77
  13. skypilot_nightly-1.0.0.dev20250717/sky/client/cli/git.py +549 -0
  14. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/client/common.py +1 -1
  15. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/gcp.py +1 -1
  16. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/404.html +1 -1
  17. skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/chunks/4869.bdd42f14b51d1d6f.js +16 -0
  18. skypilot_nightly-1.0.0.dev20250716/sky/dashboard/out/_next/static/chunks/webpack-3fad5d4a0541a02d.js → skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/chunks/webpack-c3b45b7b0eaef66f.js +1 -1
  19. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
  20. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/clusters/[cluster].html +1 -1
  21. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/clusters.html +1 -1
  22. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/config.html +1 -1
  23. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/index.html +1 -1
  24. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/infra/[context].html +1 -1
  25. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/infra.html +1 -1
  26. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/jobs/[job].html +1 -1
  27. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/jobs.html +1 -1
  28. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/users.html +1 -1
  29. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/volumes.html +1 -1
  30. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/workspace/new.html +1 -1
  31. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/workspaces/[name].html +1 -1
  32. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/workspaces.html +1 -1
  33. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/exceptions.py +5 -0
  34. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/execution.py +1 -1
  35. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/kubernetes/utils.py +6 -0
  36. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/server/common.py +4 -3
  37. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717/sky/setup_files}/MANIFEST.in +1 -0
  38. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/setup_files/dependencies.py +2 -0
  39. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/task.py +12 -2
  40. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/command_runner.py +144 -35
  41. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/controller_utils.py +4 -3
  42. skypilot_nightly-1.0.0.dev20250717/sky/utils/git.py +9 -0
  43. skypilot_nightly-1.0.0.dev20250717/sky/utils/git_clone.sh +460 -0
  44. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/schemas.py +15 -1
  45. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717/skypilot_nightly.egg-info}/PKG-INFO +3 -1
  46. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/skypilot_nightly.egg-info/SOURCES.txt +7 -4
  47. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/skypilot_nightly.egg-info/requires.txt +2 -0
  48. skypilot_nightly-1.0.0.dev20250716/sky/dashboard/out/_next/static/chunks/4869.c139c0124e677fc8.js +0 -16
  49. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/LICENSE +0 -0
  50. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/README.md +0 -0
  51. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/pyproject.toml +0 -0
  52. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/setup.cfg +0 -0
  53. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/setup.py +0 -0
  54. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/__init__.py +0 -0
  55. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/aws.py +0 -0
  56. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/azure.py +0 -0
  57. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/cloudflare.py +0 -0
  58. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/common.py +0 -0
  59. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/cudo.py +0 -0
  60. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/do.py +0 -0
  61. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/docker.py +0 -0
  62. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/gcp.py +0 -0
  63. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/hyperbolic.py +0 -0
  64. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/ibm.py +0 -0
  65. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/kubernetes.py +0 -0
  66. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/nebius.py +0 -0
  67. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/oci.py +0 -0
  68. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/runpod.py +0 -0
  69. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/vast.py +0 -0
  70. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/vsphere.py +0 -0
  71. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/admin_policy.py +0 -0
  72. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/authentication.py +0 -0
  73. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/backends/__init__.py +0 -0
  74. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/backends/backend_utils.py +0 -0
  75. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/backends/monkey_patches/monkey_patch_ray_up.py +0 -0
  76. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/backends/wheel_utils.py +0 -0
  77. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/__init__.py +0 -0
  78. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/aws_catalog.py +0 -0
  79. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/azure_catalog.py +0 -0
  80. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/config.py +0 -0
  81. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/cudo_catalog.py +0 -0
  82. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/data_fetchers/__init__.py +0 -0
  83. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/data_fetchers/analyze.py +0 -0
  84. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/data_fetchers/fetch_aws.py +0 -0
  85. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/data_fetchers/fetch_azure.py +0 -0
  86. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/data_fetchers/fetch_cudo.py +0 -0
  87. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/data_fetchers/fetch_fluidstack.py +0 -0
  88. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/data_fetchers/fetch_hyperbolic.py +0 -0
  89. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/data_fetchers/fetch_ibm.py +0 -0
  90. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/data_fetchers/fetch_lambda_cloud.py +0 -0
  91. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/data_fetchers/fetch_nebius.py +0 -0
  92. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/data_fetchers/fetch_vast.py +0 -0
  93. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/data_fetchers/fetch_vsphere.py +0 -0
  94. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/do_catalog.py +0 -0
  95. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/fluidstack_catalog.py +0 -0
  96. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/hyperbolic_catalog.py +0 -0
  97. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/ibm_catalog.py +0 -0
  98. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/lambda_catalog.py +0 -0
  99. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/nebius_catalog.py +0 -0
  100. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/oci_catalog.py +0 -0
  101. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/paperspace_catalog.py +0 -0
  102. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/runpod_catalog.py +0 -0
  103. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/scp_catalog.py +0 -0
  104. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/ssh_catalog.py +0 -0
  105. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/vast_catalog.py +0 -0
  106. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/vsphere_catalog.py +0 -0
  107. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/check.py +0 -0
  108. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/cli.py +0 -0
  109. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/client/__init__.py +0 -0
  110. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/client/cli/__init__.py +0 -0
  111. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/client/cli/deprecation_utils.py +0 -0
  112. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/client/cli/flags.py +0 -0
  113. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/client/oauth.py +0 -0
  114. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/client/sdk.py +0 -0
  115. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/client/service_account_auth.py +0 -0
  116. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/cloud_stores.py +0 -0
  117. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/__init__.py +0 -0
  118. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/aws.py +0 -0
  119. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/azure.py +0 -0
  120. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/cloud.py +0 -0
  121. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/cudo.py +0 -0
  122. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/do.py +0 -0
  123. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/fluidstack.py +0 -0
  124. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/hyperbolic.py +0 -0
  125. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/ibm.py +0 -0
  126. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/kubernetes.py +0 -0
  127. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/lambda_cloud.py +0 -0
  128. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/nebius.py +0 -0
  129. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/oci.py +0 -0
  130. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/paperspace.py +0 -0
  131. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/runpod.py +0 -0
  132. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/scp.py +0 -0
  133. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/ssh.py +0 -0
  134. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/utils/__init__.py +0 -0
  135. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/utils/aws_utils.py +0 -0
  136. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/utils/azure_utils.py +0 -0
  137. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/utils/gcp_utils.py +0 -0
  138. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/utils/oci_utils.py +0 -0
  139. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/utils/scp_utils.py +0 -0
  140. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/vast.py +0 -0
  141. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/vsphere.py +0 -0
  142. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/core.py +0 -0
  143. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dag.py +0 -0
  144. {skypilot_nightly-1.0.0.dev20250716/sky/dashboard/out/_next/static/gVXjeFhvtWXyOsx9xYNvM → skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/Et5IQ5Y3WvH608nXClo4z}/_buildManifest.js +0 -0
  145. {skypilot_nightly-1.0.0.dev20250716/sky/dashboard/out/_next/static/gVXjeFhvtWXyOsx9xYNvM → skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/Et5IQ5Y3WvH608nXClo4z}/_ssgManifest.js +0 -0
  146. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/1043-90a88c46f27b3df5.js +0 -0
  147. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/1141-d8c6404a7c6fffe6.js +0 -0
  148. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/1272-1ef0bf0237faccdb.js +0 -0
  149. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/1664-d65361e92b85e786.js +0 -0
  150. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/1746.27d40aedc22bd2d6.js +0 -0
  151. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/1871-76491ac174a95278.js +0 -0
  152. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/2544.27f70672535675ed.js +0 -0
  153. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/2641.35edc9ccaeaad9e3.js +0 -0
  154. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/2875.c24c6d57dc82e436.js +0 -0
  155. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/3698-9fa11dafb5cad4a6.js +0 -0
  156. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/3785.95b94f18aaec7233.js +0 -0
  157. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/3937.d7f1c55d1916c7f2.js +0 -0
  158. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/3947-b059261d6fa88a1f.js +0 -0
  159. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/430.ed51037d1a4a438b.js +0 -0
  160. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/4725.4c849b1e05c8e9ad.js +0 -0
  161. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/5230-df791914b54d91d9.js +0 -0
  162. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/5491.918ffed0ba7a5294.js +0 -0
  163. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/5739-5ea3ffa10fc884f2.js +0 -0
  164. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/616-162f3033ffcd3d31.js +0 -0
  165. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/6601-d4a381403a8bae91.js +0 -0
  166. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/6989-eab0e9c16b64fd9f.js +0 -0
  167. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/6990-dcb411b566e64cde.js +0 -0
  168. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/804-9f5e98ce84d46bdd.js +0 -0
  169. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/8969-743abf4bc86baf48.js +0 -0
  170. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/9025.133e9ba5c780afeb.js +0 -0
  171. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/938-6a9ffdaa21eee969.js +0 -0
  172. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/9470-b6f6a35283863a6f.js +0 -0
  173. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/9847.46e613d000c55859.js +0 -0
  174. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/9984.b56614f3c4c5961d.js +0 -0
  175. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/fd9d1056-61f2257a9cd8b32b.js +0 -0
  176. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/framework-efc06c2733009cd3.js +0 -0
  177. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/main-app-68c028b1bc5e1b72.js +0 -0
  178. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/main-c0a4f1ea606d48d2.js +0 -0
  179. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/pages/_app-771a40cde532309b.js +0 -0
  180. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/pages/_error-c72a1f77a3c0be1b.js +0 -0
  181. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-9096ea50b8e2cf9e.js +0 -0
  182. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-0c37ee1ac5f3474d.js +0 -0
  183. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/pages/clusters-102d169e87913ba1.js +0 -0
  184. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/pages/config-a2673b256b6d416f.js +0 -0
  185. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/pages/index-927ddeebe57a8ac3.js +0 -0
  186. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/pages/infra/[context]-8b0809f59034d509.js +0 -0
  187. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/pages/infra-ae9d2f705ce582c9.js +0 -0
  188. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-14d404b7dd28502a.js +0 -0
  189. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/pages/jobs-5bbdc71878f0a068.js +0 -0
  190. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/pages/users-19e98664bdd61643.js +0 -0
  191. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/pages/volumes-61ea7ba7e56f8d06.js +0 -0
  192. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/pages/workspace/new-5629d4e551dba1ee.js +0 -0
  193. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-7c0187f43757a548.js +0 -0
  194. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/pages/workspaces-a1e43d9ef51a9cea.js +0 -0
  195. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js +0 -0
  196. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/css/219887b94512388c.css +0 -0
  197. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/favicon.ico +0 -0
  198. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/skypilot.svg +0 -0
  199. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/videos/cursor-small.mp4 +0 -0
  200. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/data/__init__.py +0 -0
  201. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/data/data_transfer.py +0 -0
  202. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/data/data_utils.py +0 -0
  203. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/data/mounting_utils.py +0 -0
  204. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/data/storage.py +0 -0
  205. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/data/storage_utils.py +0 -0
  206. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/global_user_state.py +0 -0
  207. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/jobs/__init__.py +0 -0
  208. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/jobs/client/__init__.py +0 -0
  209. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/jobs/client/sdk.py +0 -0
  210. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/jobs/constants.py +0 -0
  211. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/jobs/controller.py +0 -0
  212. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/jobs/recovery_strategy.py +0 -0
  213. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/jobs/scheduler.py +0 -0
  214. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/jobs/server/__init__.py +0 -0
  215. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/jobs/server/core.py +0 -0
  216. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/jobs/server/server.py +0 -0
  217. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/jobs/server/utils.py +0 -0
  218. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/jobs/state.py +0 -0
  219. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/jobs/utils.py +0 -0
  220. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/logs/__init__.py +0 -0
  221. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/logs/agent.py +0 -0
  222. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/logs/gcp.py +0 -0
  223. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/metrics/__init__.py +0 -0
  224. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/metrics/utils.py +0 -0
  225. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/models.py +0 -0
  226. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/optimizer.py +0 -0
  227. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/__init__.py +0 -0
  228. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/aws/__init__.py +0 -0
  229. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/aws/config.py +0 -0
  230. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/aws/instance.py +0 -0
  231. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/aws/utils.py +0 -0
  232. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/azure/__init__.py +0 -0
  233. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/azure/azure-config-template.json +0 -0
  234. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/azure/config.py +0 -0
  235. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/azure/instance.py +0 -0
  236. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/common.py +0 -0
  237. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/constants.py +0 -0
  238. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/cudo/__init__.py +0 -0
  239. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/cudo/config.py +0 -0
  240. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/cudo/cudo_machine_type.py +0 -0
  241. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/cudo/cudo_utils.py +0 -0
  242. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/cudo/cudo_wrapper.py +0 -0
  243. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/cudo/instance.py +0 -0
  244. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/do/__init__.py +0 -0
  245. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/do/config.py +0 -0
  246. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/do/constants.py +0 -0
  247. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/do/instance.py +0 -0
  248. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/do/utils.py +0 -0
  249. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/docker_utils.py +0 -0
  250. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/fluidstack/__init__.py +0 -0
  251. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/fluidstack/config.py +0 -0
  252. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/fluidstack/fluidstack_utils.py +0 -0
  253. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/fluidstack/instance.py +0 -0
  254. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/gcp/__init__.py +0 -0
  255. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/gcp/config.py +0 -0
  256. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/gcp/constants.py +0 -0
  257. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/gcp/instance.py +0 -0
  258. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/gcp/instance_utils.py +0 -0
  259. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/gcp/mig_utils.py +0 -0
  260. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/gcp/volume_utils.py +0 -0
  261. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/hyperbolic/__init__.py +0 -0
  262. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/hyperbolic/config.py +0 -0
  263. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/hyperbolic/instance.py +0 -0
  264. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/hyperbolic/utils.py +0 -0
  265. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/instance_setup.py +0 -0
  266. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/kubernetes/__init__.py +0 -0
  267. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/kubernetes/config.py +0 -0
  268. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/kubernetes/constants.py +0 -0
  269. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/kubernetes/instance.py +0 -0
  270. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/kubernetes/manifests/fusermount-server-daemonset.yaml +0 -0
  271. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/kubernetes/network.py +0 -0
  272. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/kubernetes/network_utils.py +0 -0
  273. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/kubernetes/volume.py +0 -0
  274. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/lambda_cloud/__init__.py +0 -0
  275. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/lambda_cloud/config.py +0 -0
  276. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/lambda_cloud/instance.py +0 -0
  277. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/lambda_cloud/lambda_utils.py +0 -0
  278. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/logging.py +0 -0
  279. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/metadata_utils.py +0 -0
  280. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/nebius/__init__.py +0 -0
  281. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/nebius/config.py +0 -0
  282. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/nebius/constants.py +0 -0
  283. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/nebius/instance.py +0 -0
  284. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/nebius/utils.py +0 -0
  285. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/oci/__init__.py +0 -0
  286. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/oci/config.py +0 -0
  287. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/oci/instance.py +0 -0
  288. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/oci/query_utils.py +0 -0
  289. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/paperspace/__init__.py +0 -0
  290. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/paperspace/config.py +0 -0
  291. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/paperspace/constants.py +0 -0
  292. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/paperspace/instance.py +0 -0
  293. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/paperspace/utils.py +0 -0
  294. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/provisioner.py +0 -0
  295. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/runpod/__init__.py +0 -0
  296. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/runpod/api/__init__.py +0 -0
  297. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/runpod/api/commands.py +0 -0
  298. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/runpod/api/pods.py +0 -0
  299. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/runpod/config.py +0 -0
  300. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/runpod/instance.py +0 -0
  301. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/runpod/utils.py +0 -0
  302. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/scp/__init__.py +0 -0
  303. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/scp/config.py +0 -0
  304. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/scp/instance.py +0 -0
  305. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/ssh/__init__.py +0 -0
  306. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vast/__init__.py +0 -0
  307. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vast/config.py +0 -0
  308. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vast/instance.py +0 -0
  309. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vast/utils.py +0 -0
  310. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/__init__.py +0 -0
  311. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/common/__init__.py +0 -0
  312. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/common/cls_api_client.py +0 -0
  313. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/common/cls_api_helper.py +0 -0
  314. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/common/custom_script.py +0 -0
  315. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/common/id_generator.py +0 -0
  316. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/common/metadata_utils.py +0 -0
  317. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/common/service_manager.py +0 -0
  318. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/common/service_manager_factory.py +0 -0
  319. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/common/ssl_helper.py +0 -0
  320. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/common/vapiconnect.py +0 -0
  321. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/common/vim_utils.py +0 -0
  322. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/config.py +0 -0
  323. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/instance.py +0 -0
  324. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/vsphere_utils.py +0 -0
  325. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/resources.py +0 -0
  326. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/__init__.py +0 -0
  327. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/autoscalers.py +0 -0
  328. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/client/__init__.py +0 -0
  329. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/client/sdk.py +0 -0
  330. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/constants.py +0 -0
  331. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/controller.py +0 -0
  332. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/load_balancer.py +0 -0
  333. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/load_balancing_policies.py +0 -0
  334. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/replica_managers.py +0 -0
  335. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/serve_state.py +0 -0
  336. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/serve_utils.py +0 -0
  337. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/server/__init__.py +0 -0
  338. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/server/core.py +0 -0
  339. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/server/server.py +0 -0
  340. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/service.py +0 -0
  341. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/service_spec.py +0 -0
  342. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/spot_placer.py +0 -0
  343. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/server/__init__.py +0 -0
  344. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/server/config.py +0 -0
  345. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/server/constants.py +0 -0
  346. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/server/html/log.html +0 -0
  347. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/server/html/token_page.html +0 -0
  348. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/server/metrics.py +0 -0
  349. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/server/requests/__init__.py +0 -0
  350. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/server/requests/event_loop.py +0 -0
  351. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/server/requests/executor.py +0 -0
  352. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/server/requests/payloads.py +0 -0
  353. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/server/requests/preconditions.py +0 -0
  354. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/server/requests/process.py +0 -0
  355. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/server/requests/queues/__init__.py +0 -0
  356. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/server/requests/queues/local_queue.py +0 -0
  357. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/server/requests/queues/mp_queue.py +0 -0
  358. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/server/requests/requests.py +0 -0
  359. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/server/requests/serializers/__init__.py +0 -0
  360. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/server/requests/serializers/decoders.py +0 -0
  361. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/server/requests/serializers/encoders.py +0 -0
  362. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/server/rest.py +0 -0
  363. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/server/server.py +0 -0
  364. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/server/state.py +0 -0
  365. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/server/stream_utils.py +0 -0
  366. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/server/uvicorn.py +0 -0
  367. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/server/versions.py +0 -0
  368. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/setup_files/setup.py +0 -0
  369. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/sky_logging.py +0 -0
  370. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/LICENSE +0 -0
  371. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/__init__.py +0 -0
  372. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/attempt_skylet.py +0 -0
  373. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/autostop_lib.py +0 -0
  374. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/configs.py +0 -0
  375. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/constants.py +0 -0
  376. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/events.py +0 -0
  377. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/job_lib.py +0 -0
  378. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/log_lib.py +0 -0
  379. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/log_lib.pyi +0 -0
  380. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/providers/__init__.py +0 -0
  381. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/providers/command_runner.py +0 -0
  382. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/providers/ibm/__init__.py +0 -0
  383. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/providers/ibm/node_provider.py +0 -0
  384. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/providers/ibm/utils.py +0 -0
  385. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/providers/ibm/vpc_provider.py +0 -0
  386. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/ray_patches/__init__.py +0 -0
  387. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/ray_patches/autoscaler.py.patch +0 -0
  388. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/ray_patches/cli.py.patch +0 -0
  389. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/ray_patches/command_runner.py.patch +0 -0
  390. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/ray_patches/log_monitor.py.patch +0 -0
  391. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/ray_patches/resource_demand_scheduler.py.patch +0 -0
  392. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/ray_patches/updater.py.patch +0 -0
  393. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/ray_patches/worker.py.patch +0 -0
  394. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/skylet.py +0 -0
  395. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/subprocess_daemon.py +0 -0
  396. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/skypilot_config.py +0 -0
  397. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/ssh_node_pools/__init__.py +0 -0
  398. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/ssh_node_pools/core.py +0 -0
  399. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/ssh_node_pools/server.py +0 -0
  400. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/aws-ray.yml.j2 +0 -0
  401. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/azure-ray.yml.j2 +0 -0
  402. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/cudo-ray.yml.j2 +0 -0
  403. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/do-ray.yml.j2 +0 -0
  404. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/fluidstack-ray.yml.j2 +0 -0
  405. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/gcp-ray.yml.j2 +0 -0
  406. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/hyperbolic-ray.yml.j2 +0 -0
  407. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/ibm-ray.yml.j2 +0 -0
  408. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/jobs-controller.yaml.j2 +0 -0
  409. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/kubernetes-ingress.yml.j2 +0 -0
  410. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/kubernetes-loadbalancer.yml.j2 +0 -0
  411. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/kubernetes-port-forward-proxy-command.sh +0 -0
  412. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/kubernetes-ray.yml.j2 +0 -0
  413. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/kubernetes-ssh-jump.yml.j2 +0 -0
  414. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/lambda-ray.yml.j2 +0 -0
  415. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/local-ray.yml.j2 +0 -0
  416. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/nebius-ray.yml.j2 +0 -0
  417. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/oci-ray.yml.j2 +0 -0
  418. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/paperspace-ray.yml.j2 +0 -0
  419. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/runpod-ray.yml.j2 +0 -0
  420. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/scp-ray.yml.j2 +0 -0
  421. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/sky-serve-controller.yaml.j2 +0 -0
  422. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/skypilot-server-kubernetes-proxy.sh +0 -0
  423. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/vast-ray.yml.j2 +0 -0
  424. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/vsphere-ray.yml.j2 +0 -0
  425. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/websocket_proxy.py +0 -0
  426. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/usage/__init__.py +0 -0
  427. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/usage/constants.py +0 -0
  428. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/usage/usage_lib.py +0 -0
  429. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/users/__init__.py +0 -0
  430. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/users/model.conf +0 -0
  431. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/users/permission.py +0 -0
  432. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/users/rbac.py +0 -0
  433. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/users/server.py +0 -0
  434. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/users/token_service.py +0 -0
  435. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/__init__.py +0 -0
  436. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/accelerator_registry.py +0 -0
  437. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/admin_policy_utils.py +0 -0
  438. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/annotations.py +0 -0
  439. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/atomic.py +0 -0
  440. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/aws/__init__.py +0 -0
  441. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/aws/get_default_security_group.py +0 -0
  442. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/cli_utils/__init__.py +0 -0
  443. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/cli_utils/status_utils.py +0 -0
  444. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/cluster_utils.py +0 -0
  445. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/command_runner.pyi +0 -0
  446. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/common.py +0 -0
  447. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/common_utils.py +0 -0
  448. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/config_utils.py +0 -0
  449. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/context.py +0 -0
  450. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/context_utils.py +0 -0
  451. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/control_master_utils.py +0 -0
  452. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/dag_utils.py +0 -0
  453. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/db_utils.py +0 -0
  454. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/env_options.py +0 -0
  455. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/infra_utils.py +0 -0
  456. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/__init__.py +0 -0
  457. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/cleanup-tunnel.sh +0 -0
  458. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/config_map_utils.py +0 -0
  459. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/create_cluster.sh +0 -0
  460. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/delete_cluster.sh +0 -0
  461. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/deploy_remote_cluster.py +0 -0
  462. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/exec_kubeconfig_converter.py +0 -0
  463. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/generate_kind_config.py +0 -0
  464. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/generate_kubeconfig.sh +0 -0
  465. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/gpu_labeler.py +0 -0
  466. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +0 -0
  467. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +0 -0
  468. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/kubernetes_deploy_utils.py +0 -0
  469. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/rsync_helper.sh +0 -0
  470. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/ssh-tunnel.sh +0 -0
  471. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -0
  472. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/ssh_utils.py +0 -0
  473. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes_enums.py +0 -0
  474. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/log_utils.py +0 -0
  475. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/message_utils.py +0 -0
  476. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/registry.py +0 -0
  477. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/resource_checker.py +0 -0
  478. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/resources_utils.py +0 -0
  479. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/rich_console_utils.py +0 -0
  480. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/rich_utils.py +0 -0
  481. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/status_lib.py +0 -0
  482. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/subprocess_utils.py +0 -0
  483. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/tempstore.py +0 -0
  484. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/timeline.py +0 -0
  485. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/ux_utils.py +0 -0
  486. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/validator.py +0 -0
  487. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/volumes/__init__.py +0 -0
  488. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/volumes/client/__init__.py +0 -0
  489. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/volumes/client/sdk.py +0 -0
  490. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/volumes/server/__init__.py +0 -0
  491. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/volumes/server/core.py +0 -0
  492. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/volumes/server/server.py +0 -0
  493. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/volumes/utils.py +0 -0
  494. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/volumes/volume.py +0 -0
  495. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/workspaces/__init__.py +0 -0
  496. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/workspaces/core.py +0 -0
  497. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/workspaces/server.py +0 -0
  498. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/sky/workspaces/utils.py +0 -0
  499. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/skypilot_nightly.egg-info/dependency_links.txt +0 -0
  500. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/skypilot_nightly.egg-info/entry_points.txt +0 -0
  501. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/skypilot_nightly.egg-info/top_level.txt +0 -0
  502. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/tests/test_api.py +0 -0
  503. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/tests/test_api_compatibility.py +0 -0
  504. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/tests/test_cli.py +0 -0
  505. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/tests/test_config.py +0 -0
  506. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/tests/test_db_utils.py +0 -0
  507. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/tests/test_failover.py +0 -0
  508. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/tests/test_global_user_state.py +0 -0
  509. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/tests/test_jobs.py +0 -0
  510. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/tests/test_jobs_and_serve.py +0 -0
  511. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/tests/test_list_accelerators.py +0 -0
  512. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/tests/test_no_parellel.py +0 -0
  513. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/tests/test_optimizer_dryruns.py +0 -0
  514. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/tests/test_optimizer_random_dag.py +0 -0
  515. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/tests/test_serve_autoscaler.py +0 -0
  516. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/tests/test_smoke.py +0 -0
  517. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/tests/test_storage.py +0 -0
  518. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/tests/test_wheels.py +0 -0
  519. {skypilot_nightly-1.0.0.dev20250716 → skypilot_nightly-1.0.0.dev20250717}/tests/test_yaml_parser.py +0 -0
@@ -17,3 +17,4 @@ include sky/utils/kubernetes/*
17
17
  include sky/server/html/*
18
18
  recursive-include sky/dashboard/out *
19
19
  include sky/users/*.conf
20
+ include sky/utils/*.sh
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20250716
3
+ Version: 1.0.0.dev20250717
4
4
  Summary: SkyPilot: Run AI on Any Infra — Unified, Faster, Cheaper.
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -54,6 +54,8 @@ Requires-Dist: sqlalchemy_adapter
54
54
  Requires-Dist: prometheus_client>=0.8.0
55
55
  Requires-Dist: passlib
56
56
  Requires-Dist: pyjwt
57
+ Requires-Dist: gitpython
58
+ Requires-Dist: types-paramiko
57
59
  Provides-Extra: aws
58
60
  Requires-Dist: awscli>=1.27.10; extra == "aws"
59
61
  Requires-Dist: botocore>=1.29.10; extra == "aws"
@@ -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 = '41c25f4073c1d5024d415c63f8e7d584fbb5517a'
8
+ _SKYPILOT_COMMIT_SHA = '5ed1775c386bbd0cc4b9d1c80fc0d2d91b352870'
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.dev20250716'
38
+ __version__ = '1.0.0.dev20250717'
39
39
  __root_dir__ = os.path.dirname(os.path.abspath(__file__))
40
40
 
41
41
 
@@ -88,6 +88,7 @@ from sky.admin_policy import UserRequest
88
88
  from sky.catalog import list_accelerators
89
89
  from sky.client.sdk import api_cancel
90
90
  from sky.client.sdk import api_info
91
+ from sky.client.sdk import api_login
91
92
  from sky.client.sdk import api_server_logs
92
93
  from sky.client.sdk import api_start
93
94
  from sky.client.sdk import api_status
@@ -206,6 +207,7 @@ __all__ = [
206
207
  'api_status',
207
208
  'api_cancel',
208
209
  'api_info',
210
+ 'api_login',
209
211
  'api_start',
210
212
  'api_stop',
211
213
  'api_server_logs',
@@ -1,6 +1,6 @@
1
1
  """Sky backend interface."""
2
2
  import typing
3
- from typing import Dict, Generic, Optional, Tuple
3
+ from typing import Any, Dict, Generic, Optional, Tuple, Union
4
4
 
5
5
  from sky.usage import usage_lib
6
6
  from sky.utils import cluster_utils
@@ -90,8 +90,10 @@ class Backend(Generic[_ResourceHandleType]):
90
90
 
91
91
  @timeline.event
92
92
  @usage_lib.messages.usage.update_runtime('sync_workdir')
93
- def sync_workdir(self, handle: _ResourceHandleType, workdir: Path) -> None:
94
- return self._sync_workdir(handle, workdir)
93
+ def sync_workdir(self, handle: _ResourceHandleType,
94
+ workdir: Union[Path, Dict[str, Any]],
95
+ envs_and_secrets: Dict[str, str]) -> None:
96
+ return self._sync_workdir(handle, workdir, envs_and_secrets)
95
97
 
96
98
  @timeline.event
97
99
  @usage_lib.messages.usage.update_runtime('sync_file_mounts')
@@ -165,7 +167,9 @@ class Backend(Generic[_ResourceHandleType]):
165
167
  ) -> Tuple[Optional[_ResourceHandleType], bool]:
166
168
  raise NotImplementedError
167
169
 
168
- def _sync_workdir(self, handle: _ResourceHandleType, workdir: Path) -> None:
170
+ def _sync_workdir(self, handle: _ResourceHandleType,
171
+ workdir: Union[Path, Dict[str, Any]],
172
+ envs_and_secrets: Dict[str, str]) -> None:
169
173
  raise NotImplementedError
170
174
 
171
175
  def _sync_file_mounts(
@@ -3240,10 +3240,59 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
3240
3240
  common_utils.remove_file_if_exists(lock_path)
3241
3241
 
3242
3242
  def _sync_workdir(self, handle: CloudVmRayResourceHandle,
3243
- workdir: Path) -> None:
3243
+ workdir: Union[Path, Dict[str, Any]],
3244
+ envs_and_secrets: Dict[str, str]) -> None:
3244
3245
  # Even though provision() takes care of it, there may be cases where
3245
3246
  # this function is called in isolation, without calling provision(),
3246
3247
  # e.g., in CLI. So we should rerun rsync_up.
3248
+ if isinstance(workdir, dict):
3249
+ self._sync_git_workdir(handle, envs_and_secrets)
3250
+ else:
3251
+ self._sync_path_workdir(handle, workdir)
3252
+
3253
+ def _sync_git_workdir(self, handle: CloudVmRayResourceHandle,
3254
+ envs_and_secrets: Dict[str, str]) -> None:
3255
+ style = colorama.Style
3256
+ ip_list = handle.external_ips()
3257
+ assert ip_list is not None, 'external_ips is not cached in handle'
3258
+
3259
+ log_path = os.path.join(self.log_dir, 'workdir_sync.log')
3260
+
3261
+ # TODO(zhwu): refactor this with backend_utils.parallel_cmd_with_rsync
3262
+ runners = handle.get_command_runners()
3263
+
3264
+ def _sync_git_workdir_node(
3265
+ runner: command_runner.CommandRunner) -> None:
3266
+ # Type assertion to help mypy understand the type
3267
+ assert hasattr(
3268
+ runner, 'git_clone'
3269
+ ), f'CommandRunner should have git_clone method, ' \
3270
+ f'got {type(runner)}'
3271
+ runner.git_clone(
3272
+ target_dir=SKY_REMOTE_WORKDIR,
3273
+ log_path=log_path,
3274
+ stream_logs=False,
3275
+ max_retry=3,
3276
+ envs_and_secrets=envs_and_secrets,
3277
+ )
3278
+
3279
+ num_nodes = handle.launched_nodes
3280
+ plural = 's' if num_nodes > 1 else ''
3281
+ logger.info(
3282
+ f' {style.DIM}Syncing workdir (to {num_nodes} node{plural}): '
3283
+ f'{SKY_REMOTE_WORKDIR}{style.RESET_ALL}')
3284
+ os.makedirs(os.path.expanduser(self.log_dir), exist_ok=True)
3285
+ os.system(f'touch {log_path}')
3286
+ num_threads = subprocess_utils.get_parallel_threads(
3287
+ str(handle.launched_resources.cloud))
3288
+ with rich_utils.safe_status(
3289
+ ux_utils.spinner_message('Syncing workdir', log_path)):
3290
+ subprocess_utils.run_in_parallel(_sync_git_workdir_node, runners,
3291
+ num_threads)
3292
+ logger.info(ux_utils.finishing_message('Synced workdir.', log_path))
3293
+
3294
+ def _sync_path_workdir(self, handle: CloudVmRayResourceHandle,
3295
+ workdir: Path) -> None:
3247
3296
  fore = colorama.Fore
3248
3297
  style = colorama.Style
3249
3298
  ip_list = handle.external_ips()
@@ -168,7 +168,7 @@ def build_dockerimage(task: task_mod.Task,
168
168
  build_dir=temp_dir)
169
169
 
170
170
  dst = os.path.join(temp_dir, SKY_DOCKER_WORKDIR)
171
- if task.workdir is not None:
171
+ if task.workdir is not None and isinstance(task.workdir, str):
172
172
  # Copy workdir contents to tempdir
173
173
  shutil.copytree(os.path.expanduser(task.workdir), dst)
174
174
  else:
@@ -178,7 +178,8 @@ class LocalDockerBackend(backends.Backend['LocalDockerResourceHandle']):
178
178
  return handle, False
179
179
 
180
180
  def _sync_workdir(self, handle: LocalDockerResourceHandle,
181
- workdir: Path) -> None:
181
+ workdir: Union[Path, Dict[str, Any]],
182
+ envs_and_secrets: Dict[str, str]) -> None:
182
183
  """Workdir is sync'd by adding to the docker image.
183
184
 
184
185
  This happens in the execute step.
@@ -13,6 +13,7 @@ from sky import sky_logging
13
13
  from sky.adaptors import common as adaptors_common
14
14
  from sky.clouds import cloud as cloud_lib
15
15
  from sky.skylet import constants
16
+ from sky.utils import annotations
16
17
  from sky.utils import common_utils
17
18
  from sky.utils import registry
18
19
  from sky.utils import rich_utils
@@ -125,17 +126,21 @@ class LazyDataFrame:
125
126
 
126
127
  We don't need to load the catalog for every SkyPilot call, and this class
127
128
  allows us to load the catalog only when needed.
129
+
130
+ Use update_if_stale_func to pass in a function that decides whether to
131
+ update the catalog on disk, updates it if needed, and returns
132
+ a bool indicating whether the update was done.
128
133
  """
129
134
 
130
- def __init__(self, filename: str, update_func: Callable[[], None]):
135
+ def __init__(self, filename: str, update_if_stale_func: Callable[[], bool]):
131
136
  self._filename = filename
132
137
  self._df: Optional['pd.DataFrame'] = None
133
- self._update_func = update_func
138
+ self._update_if_stale_func = update_if_stale_func
134
139
 
140
+ @annotations.lru_cache(scope='request')
135
141
  def _load_df(self) -> 'pd.DataFrame':
136
- if self._df is None:
142
+ if self._update_if_stale_func() or self._df is None:
137
143
  try:
138
- self._update_func()
139
144
  self._df = pd.read_csv(self._filename)
140
145
  except Exception as e: # pylint: disable=broad-except
141
146
  # As users can manually modify the catalog, read_csv can fail.
@@ -193,55 +198,60 @@ def read_catalog(filename: str,
193
198
  return last_update + pull_frequency_hours * 3600 < time.time()
194
199
 
195
200
  def _update_catalog():
201
+ # Fast path: Exit early to avoid lock contention.
202
+ if not _need_update():
203
+ return False
204
+
196
205
  # Atomic check, to avoid conflicts with other processes.
197
206
  with filelock.FileLock(meta_path + '.lock'):
198
- if _need_update():
199
- url = f'{constants.HOSTED_CATALOG_DIR_URL}/{constants.CATALOG_SCHEMA_VERSION}/{filename}' # pylint: disable=line-too-long
200
- url_fallback = f'{constants.HOSTED_CATALOG_DIR_URL_S3_MIRROR}/{constants.CATALOG_SCHEMA_VERSION}/{filename}' # pylint: disable=line-too-long
201
- headers = {'User-Agent': 'SkyPilot/0.7'}
202
- update_frequency_str = ''
203
- if pull_frequency_hours is not None:
204
- update_frequency_str = (
205
- f' (every {pull_frequency_hours} hours)')
206
- with rich_utils.safe_status(
207
- ux_utils.spinner_message(
208
- f'Updating {cloud} catalog: {filename}') +
209
- f'{update_frequency_str}'):
210
- try:
211
- r = requests.get(url=url, headers=headers)
212
- if r.status_code == 429:
213
- # fallback to s3 mirror, github introduced rate
214
- # limit after 2025-05, see
215
- # https://github.com/skypilot-org/skypilot/issues/5438
216
- # for more details
217
- r = requests.get(url=url_fallback, headers=headers)
218
- r.raise_for_status()
219
- except requests.exceptions.RequestException as e:
220
- error_str = (f'Failed to fetch {cloud} catalog '
221
- f'{filename}. ')
222
- if os.path.exists(catalog_path):
223
- logger.warning(
224
- f'{error_str}Using cached catalog files.')
225
- # Update catalog file modification time.
226
- os.utime(catalog_path, None) # Sets to current time
227
- else:
228
- logger.error(
229
- f'{error_str}Please check your internet '
230
- 'connection.')
231
- with ux_utils.print_exception_no_traceback():
232
- raise e
207
+ # Double check after acquiring the lock.
208
+ if not _need_update():
209
+ return False
210
+
211
+ url = f'{constants.HOSTED_CATALOG_DIR_URL}/{constants.CATALOG_SCHEMA_VERSION}/{filename}' # pylint: disable=line-too-long
212
+ url_fallback = f'{constants.HOSTED_CATALOG_DIR_URL_S3_MIRROR}/{constants.CATALOG_SCHEMA_VERSION}/{filename}' # pylint: disable=line-too-long
213
+ headers = {'User-Agent': 'SkyPilot/0.7'}
214
+ update_frequency_str = ''
215
+ if pull_frequency_hours is not None:
216
+ update_frequency_str = (
217
+ f' (every {pull_frequency_hours} hours)')
218
+ with rich_utils.safe_status(
219
+ ux_utils.spinner_message(
220
+ f'Updating {cloud} catalog: {filename}') +
221
+ f'{update_frequency_str}'):
222
+ try:
223
+ r = requests.get(url=url, headers=headers)
224
+ if r.status_code == 429:
225
+ # fallback to s3 mirror, github introduced rate
226
+ # limit after 2025-05, see
227
+ # https://github.com/skypilot-org/skypilot/issues/5438
228
+ # for more details
229
+ r = requests.get(url=url_fallback, headers=headers)
230
+ r.raise_for_status()
231
+ except requests.exceptions.RequestException as e:
232
+ error_str = (f'Failed to fetch {cloud} catalog '
233
+ f'{filename}. ')
234
+ if os.path.exists(catalog_path):
235
+ logger.warning(
236
+ f'{error_str}Using cached catalog files.')
237
+ # Update catalog file modification time.
238
+ os.utime(catalog_path, None) # Sets to current time
233
239
  else:
234
- # Download successful, save the catalog to a local file.
235
- os.makedirs(os.path.dirname(catalog_path),
236
- exist_ok=True)
237
- with open(catalog_path, 'w', encoding='utf-8') as f:
238
- f.write(r.text)
239
- with open(meta_path + '.md5', 'w',
240
- encoding='utf-8') as f:
241
- f.write(hashlib.md5(r.text.encode()).hexdigest())
242
- logger.debug(f'Updated {cloud} catalog {filename}.')
243
-
244
- return LazyDataFrame(catalog_path, update_func=_update_catalog)
240
+ logger.error(f'{error_str}Please check your internet '
241
+ 'connection.')
242
+ with ux_utils.print_exception_no_traceback():
243
+ raise e
244
+ else:
245
+ # Download successful, save the catalog to a local file.
246
+ os.makedirs(os.path.dirname(catalog_path), exist_ok=True)
247
+ with open(catalog_path, 'w', encoding='utf-8') as f:
248
+ f.write(r.text)
249
+ with open(meta_path + '.md5', 'w', encoding='utf-8') as f:
250
+ f.write(hashlib.md5(r.text.encode()).hexdigest())
251
+ logger.debug(f'Updated {cloud} catalog {filename}.')
252
+ return True
253
+
254
+ return LazyDataFrame(catalog_path, update_if_stale_func=_update_catalog)
245
255
 
246
256
 
247
257
  def _get_instance_type(
@@ -198,6 +198,7 @@ SERIES_TO_DESCRIPTION = {
198
198
  'n1': 'N1 Predefined Instance',
199
199
  'n2': 'N2 Instance',
200
200
  'n2d': 'N2D AMD Instance',
201
+ 'n4': 'N4 Instance',
201
202
  't2a': 'T2A Arm Instance',
202
203
  't2d': 'T2D AMD Instance',
203
204
  }
@@ -37,20 +37,37 @@ _image_df = common.read_catalog('gcp/images.csv',
37
37
  _quotas_df = common.read_catalog('gcp/accelerator_quota_mapping.csv',
38
38
  pull_frequency_hours=_PULL_FREQUENCY_HOURS)
39
39
 
40
- # We will select from the following three CPU instance families:
40
+ # We will select from the following six CPU instance families:
41
41
  _DEFAULT_INSTANCE_FAMILY = [
42
- # This is the latest general-purpose instance family as of Mar 2023.
43
- # CPU: Intel Ice Lake 8373C or Cascade Lake 6268CL.
42
+ # This is a widely used general-purpose instance family as of July 2025.
43
+ # CPU: Primarily Intel Ice Lake (3rd Gen Intel Xeon Scalable Processors)
44
+ # or Cascade Lake (2nd Gen Intel Xeon Scalable Processors).
44
45
  # Memory: 4 GiB RAM per 1 vCPU;
45
46
  'n2-standard',
46
- # This is the latest memory-optimized instance family as of Mar 2023.
47
- # CPU: Intel Ice Lake 8373C or Cascade Lake 6268CL.
47
+ # This is a memory-optimized instance family as of July 2025.
48
+ # CPU: Primarily Intel Ice Lake (3rd Gen Intel Xeon Scalable Processors)
49
+ # or Cascade Lake (2nd Gen Intel Xeon Scalable Processors).
48
50
  # Memory: 8 GiB RAM per 1 vCPU;
49
51
  'n2-highmem',
50
- # This is the latest compute-optimized instance family as of Mar 2023.
51
- # CPU: Intel Ice Lake 8373C or Cascade Lake 6268CL.
52
+ # This is a compute-optimized instance family as of July 2025.
53
+ # CPU: Primarily Intel Ice Lake (3rd Gen Intel Xeon Scalable Processors)
54
+ # or Cascade Lake (2nd Gen Intel Xeon Scalable Processors).
52
55
  # Memory: 1 GiB RAM per 1 vCPU;
53
56
  'n2-highcpu',
57
+ # This is the latest general-purpose instance family as of July 2025.
58
+ # CPU: Intel 5th Gen Xeon Scalable processor (Emerald Rapids).
59
+ # Memory: 4 GiB RAM per 1 vCPU;
60
+ 'n4-standard',
61
+ # This is the latest general-purpose instance family
62
+ # with a higher vCPU to memory ratio as of July 2025.
63
+ # CPU: Intel 5th Gen Xeon Scalable processor (Emerald Rapids).
64
+ # Memory: 2 GiB RAM per 1 vCPU;
65
+ 'n4-highcpu',
66
+ # This is the latest general-purpose instance family
67
+ # with a lower vCPU to memory ratio as of July 2025.
68
+ # CPU: Intel 5th Gen Xeon Scalable processor (Emerald Rapids).
69
+ # Memory: 8 GiB RAM per 1 vCPU;
70
+ 'n4-highmem',
54
71
  ]
55
72
  # n2 is not allowed for launching GPUs for now.
56
73
  _DEFAULT_HOST_VM_FAMILY = (
@@ -195,6 +195,10 @@ def _list_accelerators(
195
195
  accelerator_name = lf.get_accelerator_from_label_value(
196
196
  node.metadata.labels.get(key))
197
197
 
198
+ # Heterogenous cluster may have some nodes with empty labels.
199
+ if not accelerator_name:
200
+ continue
201
+
198
202
  # Exclude multi-host TPUs from being processed.
199
203
  # TODO(Doyoung): Remove the logic when adding support for
200
204
  # multi-host TPUs.
@@ -212,7 +216,7 @@ def _list_accelerators(
212
216
  kubernetes_utils.get_node_accelerator_count(
213
217
  node.status.allocatable))
214
218
 
215
- if accelerator_name and accelerator_count > 0:
219
+ if accelerator_count > 0:
216
220
  # TPUs are counted in a different way compared to GPUs.
217
221
  # Multi-node GPUs can be split into smaller units and be
218
222
  # provisioned, but TPUs are considered as an atomic unit.