skypilot-nightly 1.0.0.dev20250715__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 (529) hide show
  1. {skypilot_nightly-1.0.0.dev20250715/sky/setup_files → skypilot_nightly-1.0.0.dev20250717}/MANIFEST.in +1 -0
  2. {skypilot_nightly-1.0.0.dev20250715/skypilot_nightly.egg-info → skypilot_nightly-1.0.0.dev20250717}/PKG-INFO +5 -3
  3. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/__init__.py +4 -2
  4. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/nebius.py +6 -0
  5. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/backends/backend.py +8 -4
  6. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/backends/cloud_vm_ray_backend.py +50 -1
  7. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/backends/docker_utils.py +1 -1
  8. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/backends/local_docker_backend.py +2 -1
  9. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/common.py +60 -50
  10. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/data_fetchers/fetch_gcp.py +1 -0
  11. skypilot_nightly-1.0.0.dev20250717/sky/catalog/data_fetchers/fetch_nebius.py +308 -0
  12. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/gcp_catalog.py +24 -7
  13. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/kubernetes_catalog.py +5 -1
  14. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/client/cli/command.py +180 -77
  15. skypilot_nightly-1.0.0.dev20250717/sky/client/cli/git.py +549 -0
  16. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/client/common.py +1 -1
  17. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/gcp.py +1 -1
  18. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/hyperbolic.py +2 -0
  19. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/nebius.py +6 -4
  20. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/404.html +1 -1
  21. skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/Et5IQ5Y3WvH608nXClo4z/_buildManifest.js +1 -0
  22. skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/chunks/1141-d8c6404a7c6fffe6.js +11 -0
  23. skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/chunks/1746.27d40aedc22bd2d6.js +60 -0
  24. skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/chunks/2641.35edc9ccaeaad9e3.js +1 -0
  25. skypilot_nightly-1.0.0.dev20250715/sky/dashboard/out/_next/static/chunks/3785.b3cc2bc1d49d2c3c.js → skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/chunks/3785.95b94f18aaec7233.js +1 -1
  26. skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/chunks/4869.bdd42f14b51d1d6f.js +16 -0
  27. skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/chunks/6990-dcb411b566e64cde.js +1 -0
  28. skypilot_nightly-1.0.0.dev20250715/sky/dashboard/out/_next/static/chunks/9025.a7c44babfe56ce09.js → skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/chunks/9025.133e9ba5c780afeb.js +1 -1
  29. skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/chunks/9847.46e613d000c55859.js +30 -0
  30. skypilot_nightly-1.0.0.dev20250715/sky/dashboard/out/_next/static/chunks/pages/_app-e0f63ea4704026ad.js → skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/chunks/pages/_app-771a40cde532309b.js +1 -1
  31. skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-9096ea50b8e2cf9e.js +6 -0
  32. skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-14d404b7dd28502a.js +16 -0
  33. skypilot_nightly-1.0.0.dev20250715/sky/dashboard/out/_next/static/chunks/pages/users-cd43fb3c122eedde.js → skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/chunks/pages/users-19e98664bdd61643.js +1 -1
  34. skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/chunks/pages/volumes-61ea7ba7e56f8d06.js +1 -0
  35. skypilot_nightly-1.0.0.dev20250715/sky/dashboard/out/_next/static/chunks/pages/workspaces-06bde99155fa6292.js → skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/chunks/pages/workspaces-a1e43d9ef51a9cea.js +1 -1
  36. skypilot_nightly-1.0.0.dev20250715/sky/dashboard/out/_next/static/chunks/webpack-4a336bff3bcec29a.js → skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/chunks/webpack-c3b45b7b0eaef66f.js +1 -1
  37. skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/css/219887b94512388c.css +3 -0
  38. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
  39. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/clusters/[cluster].html +1 -1
  40. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/clusters.html +1 -1
  41. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/config.html +1 -1
  42. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/index.html +1 -1
  43. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/infra/[context].html +1 -1
  44. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/infra.html +1 -1
  45. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/jobs/[job].html +1 -1
  46. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/jobs.html +1 -1
  47. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/users.html +1 -1
  48. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/volumes.html +1 -1
  49. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/workspace/new.html +1 -1
  50. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/workspaces/[name].html +1 -1
  51. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/workspaces.html +1 -1
  52. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/exceptions.py +5 -0
  53. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/execution.py +5 -1
  54. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/hyperbolic/__init__.py +1 -0
  55. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/hyperbolic/instance.py +10 -0
  56. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/kubernetes/utils.py +6 -0
  57. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/server/common.py +4 -3
  58. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717/sky/setup_files}/MANIFEST.in +1 -0
  59. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/setup_files/dependencies.py +3 -1
  60. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/task.py +12 -2
  61. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/command_runner.py +144 -35
  62. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/controller_utils.py +4 -3
  63. skypilot_nightly-1.0.0.dev20250717/sky/utils/git.py +9 -0
  64. skypilot_nightly-1.0.0.dev20250717/sky/utils/git_clone.sh +460 -0
  65. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/schemas.py +15 -1
  66. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/tempstore.py +20 -1
  67. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717/skypilot_nightly.egg-info}/PKG-INFO +5 -3
  68. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/skypilot_nightly.egg-info/SOURCES.txt +30 -26
  69. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/skypilot_nightly.egg-info/requires.txt +4 -2
  70. skypilot_nightly-1.0.0.dev20250715/sky/dashboard/out/_next/static/chunks/1141-726e5a3f00b67185.js +0 -11
  71. skypilot_nightly-1.0.0.dev20250715/sky/dashboard/out/_next/static/chunks/1691.44e378727a41f3b5.js +0 -21
  72. skypilot_nightly-1.0.0.dev20250715/sky/dashboard/out/_next/static/chunks/3256.7257acd01b481bed.js +0 -11
  73. skypilot_nightly-1.0.0.dev20250715/sky/dashboard/out/_next/static/chunks/4697.f5421144224da9fc.js +0 -20
  74. skypilot_nightly-1.0.0.dev20250715/sky/dashboard/out/_next/static/chunks/6990-d0dc765474fa0eca.js +0 -1
  75. skypilot_nightly-1.0.0.dev20250715/sky/dashboard/out/_next/static/chunks/8982.a2e214068f30a857.js +0 -1
  76. skypilot_nightly-1.0.0.dev20250715/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-4608dc89f95eba89.js +0 -6
  77. skypilot_nightly-1.0.0.dev20250715/sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-980d6f6b64ca7833.js +0 -16
  78. skypilot_nightly-1.0.0.dev20250715/sky/dashboard/out/_next/static/chunks/pages/volumes-4ebf6484f7216387.js +0 -1
  79. skypilot_nightly-1.0.0.dev20250715/sky/dashboard/out/_next/static/css/eacc7d65a8686c76.css +0 -3
  80. skypilot_nightly-1.0.0.dev20250715/sky/dashboard/out/_next/static/y4pSeZ-9XymSDfPlcWhVO/_buildManifest.js +0 -1
  81. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/LICENSE +0 -0
  82. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/README.md +0 -0
  83. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/pyproject.toml +0 -0
  84. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/setup.cfg +0 -0
  85. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/setup.py +0 -0
  86. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/__init__.py +0 -0
  87. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/aws.py +0 -0
  88. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/azure.py +0 -0
  89. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/cloudflare.py +0 -0
  90. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/common.py +0 -0
  91. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/cudo.py +0 -0
  92. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/do.py +0 -0
  93. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/docker.py +0 -0
  94. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/gcp.py +0 -0
  95. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/hyperbolic.py +0 -0
  96. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/ibm.py +0 -0
  97. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/kubernetes.py +0 -0
  98. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/oci.py +0 -0
  99. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/runpod.py +0 -0
  100. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/vast.py +0 -0
  101. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/adaptors/vsphere.py +0 -0
  102. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/admin_policy.py +0 -0
  103. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/authentication.py +0 -0
  104. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/backends/__init__.py +0 -0
  105. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/backends/backend_utils.py +0 -0
  106. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/backends/monkey_patches/monkey_patch_ray_up.py +0 -0
  107. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/backends/wheel_utils.py +0 -0
  108. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/__init__.py +0 -0
  109. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/aws_catalog.py +0 -0
  110. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/azure_catalog.py +0 -0
  111. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/config.py +0 -0
  112. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/cudo_catalog.py +0 -0
  113. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/data_fetchers/__init__.py +0 -0
  114. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/data_fetchers/analyze.py +0 -0
  115. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/data_fetchers/fetch_aws.py +0 -0
  116. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/data_fetchers/fetch_azure.py +0 -0
  117. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/data_fetchers/fetch_cudo.py +0 -0
  118. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/data_fetchers/fetch_fluidstack.py +0 -0
  119. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/data_fetchers/fetch_hyperbolic.py +0 -0
  120. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/data_fetchers/fetch_ibm.py +0 -0
  121. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/data_fetchers/fetch_lambda_cloud.py +0 -0
  122. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/data_fetchers/fetch_vast.py +0 -0
  123. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/data_fetchers/fetch_vsphere.py +0 -0
  124. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/do_catalog.py +0 -0
  125. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/fluidstack_catalog.py +0 -0
  126. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/hyperbolic_catalog.py +0 -0
  127. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/ibm_catalog.py +0 -0
  128. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/lambda_catalog.py +0 -0
  129. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/nebius_catalog.py +0 -0
  130. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/oci_catalog.py +0 -0
  131. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/paperspace_catalog.py +0 -0
  132. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/runpod_catalog.py +0 -0
  133. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/scp_catalog.py +0 -0
  134. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/ssh_catalog.py +0 -0
  135. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/vast_catalog.py +0 -0
  136. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/catalog/vsphere_catalog.py +0 -0
  137. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/check.py +0 -0
  138. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/cli.py +0 -0
  139. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/client/__init__.py +0 -0
  140. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/client/cli/__init__.py +0 -0
  141. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/client/cli/deprecation_utils.py +0 -0
  142. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/client/cli/flags.py +0 -0
  143. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/client/oauth.py +0 -0
  144. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/client/sdk.py +0 -0
  145. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/client/service_account_auth.py +0 -0
  146. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/cloud_stores.py +0 -0
  147. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/__init__.py +0 -0
  148. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/aws.py +0 -0
  149. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/azure.py +0 -0
  150. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/cloud.py +0 -0
  151. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/cudo.py +0 -0
  152. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/do.py +0 -0
  153. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/fluidstack.py +0 -0
  154. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/ibm.py +0 -0
  155. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/kubernetes.py +0 -0
  156. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/lambda_cloud.py +0 -0
  157. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/oci.py +0 -0
  158. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/paperspace.py +0 -0
  159. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/runpod.py +0 -0
  160. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/scp.py +0 -0
  161. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/ssh.py +0 -0
  162. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/utils/__init__.py +0 -0
  163. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/utils/aws_utils.py +0 -0
  164. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/utils/azure_utils.py +0 -0
  165. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/utils/gcp_utils.py +0 -0
  166. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/utils/oci_utils.py +0 -0
  167. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/utils/scp_utils.py +0 -0
  168. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/vast.py +0 -0
  169. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/clouds/vsphere.py +0 -0
  170. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/core.py +0 -0
  171. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dag.py +0 -0
  172. {skypilot_nightly-1.0.0.dev20250715/sky/dashboard/out/_next/static/y4pSeZ-9XymSDfPlcWhVO → skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/Et5IQ5Y3WvH608nXClo4z}/_ssgManifest.js +0 -0
  173. /skypilot_nightly-1.0.0.dev20250715/sky/dashboard/out/_next/static/chunks/1043-5e5ef6198735ff7e.js → /skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/chunks/1043-90a88c46f27b3df5.js +0 -0
  174. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/1272-1ef0bf0237faccdb.js +0 -0
  175. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/1664-d65361e92b85e786.js +0 -0
  176. /skypilot_nightly-1.0.0.dev20250715/sky/dashboard/out/_next/static/chunks/1871-4d1f786e83bd9ffe.js → /skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/chunks/1871-76491ac174a95278.js +0 -0
  177. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/2544.27f70672535675ed.js +0 -0
  178. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/2875.c24c6d57dc82e436.js +0 -0
  179. /skypilot_nightly-1.0.0.dev20250715/sky/dashboard/out/_next/static/chunks/3698-52ad1ca228faa776.js → /skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/chunks/3698-9fa11dafb5cad4a6.js +0 -0
  180. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/3937.d7f1c55d1916c7f2.js +0 -0
  181. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/3947-b059261d6fa88a1f.js +0 -0
  182. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/430.ed51037d1a4a438b.js +0 -0
  183. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/4725.4c849b1e05c8e9ad.js +0 -0
  184. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/5230-df791914b54d91d9.js +0 -0
  185. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/5491.918ffed0ba7a5294.js +0 -0
  186. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/5739-5ea3ffa10fc884f2.js +0 -0
  187. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/616-162f3033ffcd3d31.js +0 -0
  188. /skypilot_nightly-1.0.0.dev20250715/sky/dashboard/out/_next/static/chunks/6601-d38d10f957dff832.js → /skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/chunks/6601-d4a381403a8bae91.js +0 -0
  189. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/6989-eab0e9c16b64fd9f.js +0 -0
  190. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/804-9f5e98ce84d46bdd.js +0 -0
  191. /skypilot_nightly-1.0.0.dev20250715/sky/dashboard/out/_next/static/chunks/8969-13bb52ce3cffa4e3.js → /skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/chunks/8969-743abf4bc86baf48.js +0 -0
  192. /skypilot_nightly-1.0.0.dev20250715/sky/dashboard/out/_next/static/chunks/938-8e25c8ea0baa271a.js → /skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/chunks/938-6a9ffdaa21eee969.js +0 -0
  193. /skypilot_nightly-1.0.0.dev20250715/sky/dashboard/out/_next/static/chunks/9470-21d059a1dfa03f61.js → /skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/chunks/9470-b6f6a35283863a6f.js +0 -0
  194. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/9984.b56614f3c4c5961d.js +0 -0
  195. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/fd9d1056-61f2257a9cd8b32b.js +0 -0
  196. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/framework-efc06c2733009cd3.js +0 -0
  197. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/main-app-68c028b1bc5e1b72.js +0 -0
  198. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/main-c0a4f1ea606d48d2.js +0 -0
  199. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/pages/_error-c72a1f77a3c0be1b.js +0 -0
  200. /skypilot_nightly-1.0.0.dev20250715/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-0fbfb1dd0b08c90c.js → /skypilot_nightly-1.0.0.dev20250717/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-0c37ee1ac5f3474d.js +0 -0
  201. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/pages/clusters-102d169e87913ba1.js +0 -0
  202. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/pages/config-a2673b256b6d416f.js +0 -0
  203. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/pages/index-927ddeebe57a8ac3.js +0 -0
  204. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/pages/infra/[context]-8b0809f59034d509.js +0 -0
  205. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/pages/infra-ae9d2f705ce582c9.js +0 -0
  206. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/pages/jobs-5bbdc71878f0a068.js +0 -0
  207. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/pages/workspace/new-5629d4e551dba1ee.js +0 -0
  208. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-7c0187f43757a548.js +0 -0
  209. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js +0 -0
  210. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/favicon.ico +0 -0
  211. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/skypilot.svg +0 -0
  212. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/dashboard/out/videos/cursor-small.mp4 +0 -0
  213. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/data/__init__.py +0 -0
  214. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/data/data_transfer.py +0 -0
  215. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/data/data_utils.py +0 -0
  216. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/data/mounting_utils.py +0 -0
  217. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/data/storage.py +0 -0
  218. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/data/storage_utils.py +0 -0
  219. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/global_user_state.py +0 -0
  220. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/jobs/__init__.py +0 -0
  221. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/jobs/client/__init__.py +0 -0
  222. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/jobs/client/sdk.py +0 -0
  223. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/jobs/constants.py +0 -0
  224. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/jobs/controller.py +0 -0
  225. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/jobs/recovery_strategy.py +0 -0
  226. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/jobs/scheduler.py +0 -0
  227. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/jobs/server/__init__.py +0 -0
  228. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/jobs/server/core.py +0 -0
  229. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/jobs/server/server.py +0 -0
  230. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/jobs/server/utils.py +0 -0
  231. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/jobs/state.py +0 -0
  232. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/jobs/utils.py +0 -0
  233. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/logs/__init__.py +0 -0
  234. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/logs/agent.py +0 -0
  235. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/logs/gcp.py +0 -0
  236. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/metrics/__init__.py +0 -0
  237. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/metrics/utils.py +0 -0
  238. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/models.py +0 -0
  239. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/optimizer.py +0 -0
  240. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/__init__.py +0 -0
  241. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/aws/__init__.py +0 -0
  242. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/aws/config.py +0 -0
  243. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/aws/instance.py +0 -0
  244. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/aws/utils.py +0 -0
  245. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/azure/__init__.py +0 -0
  246. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/azure/azure-config-template.json +0 -0
  247. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/azure/config.py +0 -0
  248. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/azure/instance.py +0 -0
  249. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/common.py +0 -0
  250. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/constants.py +0 -0
  251. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/cudo/__init__.py +0 -0
  252. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/cudo/config.py +0 -0
  253. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/cudo/cudo_machine_type.py +0 -0
  254. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/cudo/cudo_utils.py +0 -0
  255. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/cudo/cudo_wrapper.py +0 -0
  256. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/cudo/instance.py +0 -0
  257. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/do/__init__.py +0 -0
  258. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/do/config.py +0 -0
  259. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/do/constants.py +0 -0
  260. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/do/instance.py +0 -0
  261. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/do/utils.py +0 -0
  262. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/docker_utils.py +0 -0
  263. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/fluidstack/__init__.py +0 -0
  264. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/fluidstack/config.py +0 -0
  265. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/fluidstack/fluidstack_utils.py +0 -0
  266. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/fluidstack/instance.py +0 -0
  267. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/gcp/__init__.py +0 -0
  268. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/gcp/config.py +0 -0
  269. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/gcp/constants.py +0 -0
  270. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/gcp/instance.py +0 -0
  271. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/gcp/instance_utils.py +0 -0
  272. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/gcp/mig_utils.py +0 -0
  273. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/gcp/volume_utils.py +0 -0
  274. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/hyperbolic/config.py +0 -0
  275. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/hyperbolic/utils.py +0 -0
  276. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/instance_setup.py +0 -0
  277. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/kubernetes/__init__.py +0 -0
  278. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/kubernetes/config.py +0 -0
  279. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/kubernetes/constants.py +0 -0
  280. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/kubernetes/instance.py +0 -0
  281. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/kubernetes/manifests/fusermount-server-daemonset.yaml +0 -0
  282. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/kubernetes/network.py +0 -0
  283. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/kubernetes/network_utils.py +0 -0
  284. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/kubernetes/volume.py +0 -0
  285. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/lambda_cloud/__init__.py +0 -0
  286. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/lambda_cloud/config.py +0 -0
  287. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/lambda_cloud/instance.py +0 -0
  288. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/lambda_cloud/lambda_utils.py +0 -0
  289. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/logging.py +0 -0
  290. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/metadata_utils.py +0 -0
  291. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/nebius/__init__.py +0 -0
  292. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/nebius/config.py +0 -0
  293. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/nebius/constants.py +0 -0
  294. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/nebius/instance.py +0 -0
  295. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/nebius/utils.py +0 -0
  296. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/oci/__init__.py +0 -0
  297. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/oci/config.py +0 -0
  298. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/oci/instance.py +0 -0
  299. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/oci/query_utils.py +0 -0
  300. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/paperspace/__init__.py +0 -0
  301. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/paperspace/config.py +0 -0
  302. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/paperspace/constants.py +0 -0
  303. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/paperspace/instance.py +0 -0
  304. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/paperspace/utils.py +0 -0
  305. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/provisioner.py +0 -0
  306. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/runpod/__init__.py +0 -0
  307. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/runpod/api/__init__.py +0 -0
  308. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/runpod/api/commands.py +0 -0
  309. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/runpod/api/pods.py +0 -0
  310. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/runpod/config.py +0 -0
  311. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/runpod/instance.py +0 -0
  312. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/runpod/utils.py +0 -0
  313. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/scp/__init__.py +0 -0
  314. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/scp/config.py +0 -0
  315. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/scp/instance.py +0 -0
  316. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/ssh/__init__.py +0 -0
  317. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vast/__init__.py +0 -0
  318. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vast/config.py +0 -0
  319. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vast/instance.py +0 -0
  320. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vast/utils.py +0 -0
  321. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/__init__.py +0 -0
  322. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/common/__init__.py +0 -0
  323. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/common/cls_api_client.py +0 -0
  324. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/common/cls_api_helper.py +0 -0
  325. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/common/custom_script.py +0 -0
  326. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/common/id_generator.py +0 -0
  327. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/common/metadata_utils.py +0 -0
  328. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/common/service_manager.py +0 -0
  329. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/common/service_manager_factory.py +0 -0
  330. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/common/ssl_helper.py +0 -0
  331. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/common/vapiconnect.py +0 -0
  332. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/common/vim_utils.py +0 -0
  333. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/config.py +0 -0
  334. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/instance.py +0 -0
  335. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/provision/vsphere/vsphere_utils.py +0 -0
  336. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/resources.py +0 -0
  337. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/__init__.py +0 -0
  338. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/autoscalers.py +0 -0
  339. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/client/__init__.py +0 -0
  340. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/client/sdk.py +0 -0
  341. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/constants.py +0 -0
  342. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/controller.py +0 -0
  343. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/load_balancer.py +0 -0
  344. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/load_balancing_policies.py +0 -0
  345. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/replica_managers.py +0 -0
  346. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/serve_state.py +0 -0
  347. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/serve_utils.py +0 -0
  348. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/server/__init__.py +0 -0
  349. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/server/core.py +0 -0
  350. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/server/server.py +0 -0
  351. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/service.py +0 -0
  352. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/service_spec.py +0 -0
  353. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/serve/spot_placer.py +0 -0
  354. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/server/__init__.py +0 -0
  355. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/server/config.py +0 -0
  356. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/server/constants.py +0 -0
  357. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/server/html/log.html +0 -0
  358. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/server/html/token_page.html +0 -0
  359. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/server/metrics.py +0 -0
  360. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/server/requests/__init__.py +0 -0
  361. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/server/requests/event_loop.py +0 -0
  362. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/server/requests/executor.py +0 -0
  363. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/server/requests/payloads.py +0 -0
  364. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/server/requests/preconditions.py +0 -0
  365. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/server/requests/process.py +0 -0
  366. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/server/requests/queues/__init__.py +0 -0
  367. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/server/requests/queues/local_queue.py +0 -0
  368. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/server/requests/queues/mp_queue.py +0 -0
  369. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/server/requests/requests.py +0 -0
  370. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/server/requests/serializers/__init__.py +0 -0
  371. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/server/requests/serializers/decoders.py +0 -0
  372. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/server/requests/serializers/encoders.py +0 -0
  373. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/server/rest.py +0 -0
  374. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/server/server.py +0 -0
  375. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/server/state.py +0 -0
  376. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/server/stream_utils.py +0 -0
  377. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/server/uvicorn.py +0 -0
  378. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/server/versions.py +0 -0
  379. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/setup_files/setup.py +0 -0
  380. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/sky_logging.py +0 -0
  381. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/LICENSE +0 -0
  382. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/__init__.py +0 -0
  383. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/attempt_skylet.py +0 -0
  384. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/autostop_lib.py +0 -0
  385. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/configs.py +0 -0
  386. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/constants.py +0 -0
  387. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/events.py +0 -0
  388. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/job_lib.py +0 -0
  389. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/log_lib.py +0 -0
  390. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/log_lib.pyi +0 -0
  391. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/providers/__init__.py +0 -0
  392. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/providers/command_runner.py +0 -0
  393. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/providers/ibm/__init__.py +0 -0
  394. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/providers/ibm/node_provider.py +0 -0
  395. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/providers/ibm/utils.py +0 -0
  396. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/providers/ibm/vpc_provider.py +0 -0
  397. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/ray_patches/__init__.py +0 -0
  398. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/ray_patches/autoscaler.py.patch +0 -0
  399. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/ray_patches/cli.py.patch +0 -0
  400. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/ray_patches/command_runner.py.patch +0 -0
  401. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/ray_patches/log_monitor.py.patch +0 -0
  402. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/ray_patches/resource_demand_scheduler.py.patch +0 -0
  403. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/ray_patches/updater.py.patch +0 -0
  404. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/ray_patches/worker.py.patch +0 -0
  405. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/skylet.py +0 -0
  406. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/skylet/subprocess_daemon.py +0 -0
  407. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/skypilot_config.py +0 -0
  408. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/ssh_node_pools/__init__.py +0 -0
  409. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/ssh_node_pools/core.py +0 -0
  410. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/ssh_node_pools/server.py +0 -0
  411. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/aws-ray.yml.j2 +0 -0
  412. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/azure-ray.yml.j2 +0 -0
  413. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/cudo-ray.yml.j2 +0 -0
  414. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/do-ray.yml.j2 +0 -0
  415. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/fluidstack-ray.yml.j2 +0 -0
  416. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/gcp-ray.yml.j2 +0 -0
  417. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/hyperbolic-ray.yml.j2 +0 -0
  418. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/ibm-ray.yml.j2 +0 -0
  419. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/jobs-controller.yaml.j2 +0 -0
  420. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/kubernetes-ingress.yml.j2 +0 -0
  421. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/kubernetes-loadbalancer.yml.j2 +0 -0
  422. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/kubernetes-port-forward-proxy-command.sh +0 -0
  423. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/kubernetes-ray.yml.j2 +0 -0
  424. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/kubernetes-ssh-jump.yml.j2 +0 -0
  425. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/lambda-ray.yml.j2 +0 -0
  426. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/local-ray.yml.j2 +0 -0
  427. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/nebius-ray.yml.j2 +0 -0
  428. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/oci-ray.yml.j2 +0 -0
  429. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/paperspace-ray.yml.j2 +0 -0
  430. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/runpod-ray.yml.j2 +0 -0
  431. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/scp-ray.yml.j2 +0 -0
  432. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/sky-serve-controller.yaml.j2 +0 -0
  433. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/skypilot-server-kubernetes-proxy.sh +0 -0
  434. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/vast-ray.yml.j2 +0 -0
  435. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/vsphere-ray.yml.j2 +0 -0
  436. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/templates/websocket_proxy.py +0 -0
  437. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/usage/__init__.py +0 -0
  438. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/usage/constants.py +0 -0
  439. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/usage/usage_lib.py +0 -0
  440. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/users/__init__.py +0 -0
  441. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/users/model.conf +0 -0
  442. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/users/permission.py +0 -0
  443. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/users/rbac.py +0 -0
  444. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/users/server.py +0 -0
  445. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/users/token_service.py +0 -0
  446. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/__init__.py +0 -0
  447. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/accelerator_registry.py +0 -0
  448. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/admin_policy_utils.py +0 -0
  449. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/annotations.py +0 -0
  450. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/atomic.py +0 -0
  451. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/aws/__init__.py +0 -0
  452. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/aws/get_default_security_group.py +0 -0
  453. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/cli_utils/__init__.py +0 -0
  454. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/cli_utils/status_utils.py +0 -0
  455. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/cluster_utils.py +0 -0
  456. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/command_runner.pyi +0 -0
  457. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/common.py +0 -0
  458. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/common_utils.py +0 -0
  459. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/config_utils.py +0 -0
  460. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/context.py +0 -0
  461. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/context_utils.py +0 -0
  462. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/control_master_utils.py +0 -0
  463. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/dag_utils.py +0 -0
  464. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/db_utils.py +0 -0
  465. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/env_options.py +0 -0
  466. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/infra_utils.py +0 -0
  467. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/__init__.py +0 -0
  468. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/cleanup-tunnel.sh +0 -0
  469. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/config_map_utils.py +0 -0
  470. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/create_cluster.sh +0 -0
  471. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/delete_cluster.sh +0 -0
  472. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/deploy_remote_cluster.py +0 -0
  473. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/exec_kubeconfig_converter.py +0 -0
  474. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/generate_kind_config.py +0 -0
  475. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/generate_kubeconfig.sh +0 -0
  476. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/gpu_labeler.py +0 -0
  477. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +0 -0
  478. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +0 -0
  479. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/kubernetes_deploy_utils.py +0 -0
  480. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/rsync_helper.sh +0 -0
  481. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/ssh-tunnel.sh +0 -0
  482. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -0
  483. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes/ssh_utils.py +0 -0
  484. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/kubernetes_enums.py +0 -0
  485. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/log_utils.py +0 -0
  486. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/message_utils.py +0 -0
  487. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/registry.py +0 -0
  488. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/resource_checker.py +0 -0
  489. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/resources_utils.py +0 -0
  490. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/rich_console_utils.py +0 -0
  491. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/rich_utils.py +0 -0
  492. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/status_lib.py +0 -0
  493. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/subprocess_utils.py +0 -0
  494. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/timeline.py +0 -0
  495. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/ux_utils.py +0 -0
  496. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/utils/validator.py +0 -0
  497. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/volumes/__init__.py +0 -0
  498. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/volumes/client/__init__.py +0 -0
  499. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/volumes/client/sdk.py +0 -0
  500. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/volumes/server/__init__.py +0 -0
  501. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/volumes/server/core.py +0 -0
  502. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/volumes/server/server.py +0 -0
  503. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/volumes/utils.py +0 -0
  504. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/volumes/volume.py +0 -0
  505. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/workspaces/__init__.py +0 -0
  506. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/workspaces/core.py +0 -0
  507. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/workspaces/server.py +0 -0
  508. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/sky/workspaces/utils.py +0 -0
  509. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/skypilot_nightly.egg-info/dependency_links.txt +0 -0
  510. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/skypilot_nightly.egg-info/entry_points.txt +0 -0
  511. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/skypilot_nightly.egg-info/top_level.txt +0 -0
  512. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/tests/test_api.py +0 -0
  513. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/tests/test_api_compatibility.py +0 -0
  514. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/tests/test_cli.py +0 -0
  515. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/tests/test_config.py +0 -0
  516. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/tests/test_db_utils.py +0 -0
  517. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/tests/test_failover.py +0 -0
  518. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/tests/test_global_user_state.py +0 -0
  519. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/tests/test_jobs.py +0 -0
  520. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/tests/test_jobs_and_serve.py +0 -0
  521. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/tests/test_list_accelerators.py +0 -0
  522. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/tests/test_no_parellel.py +0 -0
  523. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/tests/test_optimizer_dryruns.py +0 -0
  524. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/tests/test_optimizer_random_dag.py +0 -0
  525. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/tests/test_serve_autoscaler.py +0 -0
  526. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/tests/test_smoke.py +0 -0
  527. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/tests/test_storage.py +0 -0
  528. {skypilot_nightly-1.0.0.dev20250715 → skypilot_nightly-1.0.0.dev20250717}/tests/test_wheels.py +0 -0
  529. {skypilot_nightly-1.0.0.dev20250715 → 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.dev20250715
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"
@@ -118,7 +120,7 @@ Requires-Dist: vastai-sdk>=0.1.12; extra == "vast"
118
120
  Provides-Extra: vsphere
119
121
  Requires-Dist: pyvmomi==8.0.1.0.2; extra == "vsphere"
120
122
  Provides-Extra: nebius
121
- Requires-Dist: nebius>=0.2.0; extra == "nebius"
123
+ Requires-Dist: nebius>=0.2.37; extra == "nebius"
122
124
  Requires-Dist: awscli>=1.27.10; extra == "nebius"
123
125
  Requires-Dist: botocore>=1.29.10; extra == "nebius"
124
126
  Requires-Dist: boto3>=1.26.1; extra == "nebius"
@@ -174,7 +176,7 @@ Requires-Dist: azure-core>=1.24.0; extra == "all"
174
176
  Requires-Dist: azure-common; extra == "all"
175
177
  Requires-Dist: vastai-sdk>=0.1.12; extra == "all"
176
178
  Requires-Dist: pyvmomi==8.0.1.0.2; extra == "all"
177
- Requires-Dist: nebius>=0.2.0; extra == "all"
179
+ Requires-Dist: nebius>=0.2.37; extra == "all"
178
180
  Requires-Dist: awscli>=1.27.10; extra == "all"
179
181
  Requires-Dist: botocore>=1.29.10; extra == "all"
180
182
  Requires-Dist: boto3>=1.26.1; extra == "all"
@@ -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 = 'a8f4afecf9eb1cc4eca7ccc205498a2f6ed1fe38'
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.dev20250715'
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',
@@ -89,6 +89,12 @@ def iam():
89
89
  return iam_v1
90
90
 
91
91
 
92
+ def billing():
93
+ # pylint: disable=import-outside-toplevel
94
+ from nebius.api.nebius.billing import v1alpha1 as billing_v1alpha1
95
+ return billing_v1alpha1
96
+
97
+
92
98
  def nebius_common():
93
99
  # pylint: disable=import-outside-toplevel
94
100
  from nebius.api.nebius.common import v1 as common_v1
@@ -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
  }
@@ -0,0 +1,308 @@
1
+ """A script that queries Nebius API to get instance types and pricing info.
2
+
3
+ This script takes about 1 minute to finish.
4
+ """
5
+ import csv
6
+ from dataclasses import dataclass
7
+ import decimal
8
+ import json
9
+ import logging
10
+ import re
11
+ from typing import Any, Dict, List, Optional
12
+
13
+ from sky.adaptors import nebius
14
+ from sky.adaptors.nebius import billing
15
+ from sky.adaptors.nebius import compute
16
+ from sky.adaptors.nebius import iam
17
+ from sky.adaptors.nebius import nebius_common
18
+
19
+ logger = logging.getLogger(__name__)
20
+
21
+ TIMEOUT = 10
22
+ PARENT_ID_TEMPLATE = 'project-{}public-images'
23
+ ACCELERATOR_MANUFACTURER = 'NVIDIA'
24
+
25
+
26
+ @dataclass
27
+ class PresetInfo:
28
+ """Represents information about a specific compute preset,
29
+ including its pricing.
30
+
31
+ Attributes:
32
+ region (str): The geographical region where the preset is available.
33
+ fullname (str): The full name of the preset, a combination of platform
34
+ and preset name.
35
+ name (str): The name of the preset.
36
+ platform_name (str): The name of the platform the preset belongs to.
37
+ gpu (int): The number of GPUs in the preset.
38
+ vcpu (int): The number of virtual CPUs in the preset.
39
+ memory_gib (int): The amount of memory in GiB in the preset.
40
+ accelerator_manufacturer (str | None): The manufacturer of the
41
+ accelerator (e.g., "NVIDIA"), or None if no accelerator.
42
+ accelerator_name (str | None): The name of the accelerator
43
+ (e.g., "H100"), or None if no accelerator.
44
+ price_hourly (decimal.Decimal): The hourly price of the preset.
45
+ """
46
+
47
+ region: str
48
+ fullname: str
49
+ name: str
50
+ platform_name: str
51
+ gpu: int
52
+ vcpu: int
53
+ memory_gib: int
54
+ accelerator_manufacturer: Optional[str]
55
+ accelerator_name: Optional[str]
56
+ price_hourly: decimal.Decimal
57
+
58
+
59
+ def _format_decimal(value: decimal.Decimal) -> str:
60
+ """Formats a decimal value to a string with at least two decimal places,
61
+ removing trailing zeros and ensuring a two-digit decimal part.
62
+
63
+ Args:
64
+ value (decimal.Decimal): The decimal value to format.
65
+
66
+ Returns:
67
+ str: The formatted string representation of the decimal.
68
+ """
69
+ formatted_value = f'{value:f}'.rstrip('0').rstrip('.')
70
+ integer_part, decimal_part = formatted_value.split(
71
+ '.') if '.' in formatted_value else (formatted_value, '')
72
+ if len(decimal_part) < 2:
73
+ decimal_part += '0' * (2 - len(decimal_part))
74
+
75
+ return f'{integer_part}.{decimal_part}'
76
+
77
+
78
+ def _estimate_platforms(platforms: List[Any], parent_id: str,
79
+ region: str) -> List[PresetInfo]:
80
+ """Collects specifications for all presets on the given platforms to form a
81
+ batch price request. It then sends the request and processes the responses
82
+ to create a list of PresetInfo objects.
83
+
84
+ Args:
85
+ platforms (List[Platform]): A List of compute platforms to estimate
86
+ prices for.
87
+ parent_id (str): The parent ID used for resource metadata
88
+ in the estimate request.
89
+ region (str): The region associated with the platforms.
90
+
91
+ Returns:
92
+ List[PresetInfo]: A list of PresetInfo objects containing details and
93
+ estimated prices for each preset.
94
+ """
95
+
96
+ calculator_service = billing().CalculatorServiceClient(nebius.sdk())
97
+ futures = []
98
+
99
+ for platform in platforms:
100
+ platform_name = platform.metadata.name
101
+
102
+ for preset in platform.spec.presets:
103
+ # Form the specification for the price request
104
+ estimate_spec = billing().ResourceSpec(
105
+ compute_instance_spec=compute().CreateInstanceRequest(
106
+ metadata=nebius_common().ResourceMetadata(
107
+ parent_id=parent_id,),
108
+ spec=compute().InstanceSpec(
109
+ resources=compute().ResourcesSpec(
110
+ platform=platform_name,
111
+ preset=preset.name,
112
+ )),
113
+ ))
114
+
115
+ price_request = billing().EstimateBatchRequest(
116
+ resource_specs=[estimate_spec])
117
+ # Start future for each preset
118
+ futures.append((
119
+ platform,
120
+ preset,
121
+ calculator_service.estimate_batch(price_request,
122
+ timeout=TIMEOUT),
123
+ ))
124
+
125
+ # wait all futures to complete and collect results
126
+ result = []
127
+ for platform, preset, future in futures:
128
+ platform_name = platform.metadata.name
129
+ result.append(
130
+ PresetInfo(
131
+ region=region,
132
+ fullname=f'{platform_name}_{preset.name}',
133
+ name=preset.name,
134
+ platform_name=platform_name,
135
+ gpu=preset.resources.gpu_count or 0,
136
+ vcpu=preset.resources.vcpu_count,
137
+ memory_gib=preset.resources.memory_gibibytes,
138
+ accelerator_manufacturer=ACCELERATOR_MANUFACTURER
139
+ if platform_name.startswith('gpu-') else '',
140
+ accelerator_name=platform_name.split('-')[1].upper()
141
+ if platform_name.startswith('gpu-') else '',
142
+ price_hourly=decimal.Decimal(
143
+ future.wait().hourly_cost.general.total.cost),
144
+ ))
145
+
146
+ return result
147
+
148
+
149
+ def _write_preset_prices(presets: List[PresetInfo], output_file: str) -> None:
150
+ """Writes the provided preset information to a CSV file.
151
+
152
+ Args:
153
+ presets (List[PresetInfo]): A list of PresetInfo objects to write.
154
+ output_file (str): The path to the output CSV file.
155
+ """
156
+ # Set up the CSV writer to output to stdout
157
+ with open(output_file, 'w', encoding='utf-8') as out:
158
+ header = [
159
+ 'InstanceType',
160
+ 'AcceleratorName',
161
+ 'AcceleratorCount',
162
+ 'vCPUs',
163
+ 'MemoryGiB',
164
+ 'Price',
165
+ 'Region',
166
+ 'GpuInfo',
167
+ 'SpotPrice',
168
+ ]
169
+ writer = csv.DictWriter(out, fieldnames=header)
170
+ writer.writeheader()
171
+
172
+ for preset in sorted(presets,
173
+ key=lambda x:
174
+ (bool(x.gpu), x.region, x.platform_name, x.vcpu)):
175
+ gpu_info = ''
176
+ if preset.gpu > 0:
177
+ gpu_info_dict = {
178
+ 'Gpus': [{
179
+ 'Name': preset.accelerator_name,
180
+ 'Manufacturer': preset.accelerator_manufacturer,
181
+ 'Count': preset.gpu,
182
+ 'MemoryInfo': {
183
+ 'SizeInMiB': preset.memory_gib * 1024 // preset.gpu
184
+ },
185
+ }],
186
+ 'TotalGpuMemoryInMiB': preset.memory_gib * 1024,
187
+ }
188
+ gpu_info = json.dumps(gpu_info_dict).replace('"', '\'')
189
+
190
+ writer.writerow({
191
+ 'InstanceType': preset.fullname,
192
+ 'AcceleratorName': preset.accelerator_name,
193
+ 'AcceleratorCount': preset.gpu,
194
+ 'vCPUs': preset.vcpu,
195
+ 'MemoryGiB': preset.memory_gib,
196
+ 'Price': _format_decimal(preset.price_hourly),
197
+ 'Region': preset.region,
198
+ 'GpuInfo': gpu_info,
199
+ 'SpotPrice': '',
200
+ })
201
+
202
+
203
+ def _fetch_platforms_for_project(project_id: str) -> List[Any]:
204
+ """Fetches all available compute platforms for a given project.
205
+
206
+ Args:
207
+ project_id (str): The ID of the project to fetch platforms from.
208
+
209
+ Returns:
210
+ List[ComputePlatform]: A list of ComputePlatform objects available
211
+ in the project.
212
+ """
213
+ platform_service = compute().PlatformServiceClient(nebius.sdk())
214
+
215
+ platform_request = compute().ListPlatformsRequest(page_size=999,
216
+ parent_id=project_id)
217
+ platform_response = platform_service.list(platform_request,
218
+ timeout=TIMEOUT).wait()
219
+
220
+ return platform_response.items
221
+
222
+
223
+ def _get_regions_map() -> Dict[str, str]:
224
+ """Maps region codes to their full names by iterating through tenants and
225
+ projects.
226
+
227
+ Returns:
228
+ dict[str, str]: A dictionary where keys are region codes (e.g., "e00")
229
+ and values are full region names (e.g., "eu-north1").
230
+ """
231
+ result = {}
232
+ response = iam().TenantServiceClient(nebius.sdk()).list(
233
+ iam().ListTenantsRequest(), timeout=TIMEOUT).wait()
234
+
235
+ for tenant in response.items:
236
+ projects = (iam().ProjectServiceClient(nebius.sdk()).list(
237
+ iam().ListProjectsRequest(parent_id=tenant.metadata.id),
238
+ timeout=TIMEOUT).wait())
239
+
240
+ for project in projects.items:
241
+ match = re.match(r'^project-([a-z0-9]{3})', project.metadata.id)
242
+ if match is None:
243
+ logger.error('Could not parse project id %s',
244
+ project.metadata.id)
245
+ continue
246
+ result[match.group(1)] = project.status.region
247
+
248
+ return result
249
+
250
+
251
+ def _get_all_platform_prices() -> List[PresetInfo]:
252
+ """Orchestrates fetching specifications and prices for all platforms across
253
+ all regions.
254
+
255
+ This function first retrieves a map of region codes to full names, then
256
+ iterates through each region, fetches available platforms for
257
+ the corresponding project ID, and finally estimates prices for all presets
258
+ on those platforms.
259
+
260
+ Returns:
261
+ List[PresetInfo]: A consolidated list of PresetInfo objects for all
262
+ platforms and presets across all regions.
263
+ """
264
+
265
+ # Get regions codes to names
266
+ regions_map = _get_regions_map()
267
+
268
+ presets = []
269
+
270
+ for region_code in sorted(regions_map.keys()):
271
+ project_id = PARENT_ID_TEMPLATE.format(region_code)
272
+ region = regions_map[region_code]
273
+ logger.info('Processing region: %s (project: %s)...', region,
274
+ project_id)
275
+
276
+ platforms = _fetch_platforms_for_project(project_id)
277
+ if not platforms:
278
+ logger.warning('No platforms found in region %s', region)
279
+ continue
280
+
281
+ presets.extend(
282
+ _estimate_platforms(platforms=platforms,
283
+ parent_id=project_id,
284
+ region=region))
285
+
286
+ return presets
287
+
288
+
289
+ def main() -> None:
290
+ """Main function to fetch and write Nebius platform prices to a CSV file.
291
+
292
+ It initializes the SDK, fetches all platform prices, and then writes them
293
+ to the specified CSV file.
294
+ """
295
+
296
+ output_file = 'nebius/vms.csv'
297
+
298
+ # Fetch presets and estimate
299
+ presets = _get_all_platform_prices()
300
+
301
+ # Write CSV
302
+ _write_preset_prices(presets, output_file)
303
+
304
+ logger.info('Done!')
305
+
306
+
307
+ if __name__ == '__main__':
308
+ main()