skypilot-nightly 1.0.0.dev20250827__tar.gz → 1.0.0.dev20250829__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.

Potentially problematic release.


This version of skypilot-nightly might be problematic. Click here for more details.

Files changed (572) hide show
  1. {skypilot_nightly-1.0.0.dev20250827/skypilot_nightly.egg-info → skypilot_nightly-1.0.0.dev20250829}/PKG-INFO +8 -2
  2. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/__init__.py +2 -2
  3. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/admin_policy.py +11 -10
  4. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/authentication.py +1 -1
  5. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/backends/backend.py +3 -5
  6. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/backends/backend_utils.py +140 -52
  7. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/backends/cloud_vm_ray_backend.py +30 -25
  8. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/backends/local_docker_backend.py +3 -8
  9. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/backends/wheel_utils.py +35 -8
  10. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/client/cli/command.py +41 -9
  11. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/client/sdk.py +23 -8
  12. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/client/sdk_async.py +6 -2
  13. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/clouds/aws.py +118 -1
  14. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/core.py +1 -4
  15. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/404.html +1 -1
  16. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
  17. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/clusters/[cluster].html +1 -1
  18. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/clusters.html +1 -1
  19. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/config.html +1 -1
  20. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/index.html +1 -1
  21. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/infra/[context].html +1 -1
  22. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/infra.html +1 -1
  23. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/jobs/[job].html +1 -1
  24. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/jobs/pools/[pool].html +1 -1
  25. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/jobs.html +1 -1
  26. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/users.html +1 -1
  27. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/volumes.html +1 -1
  28. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/workspace/new.html +1 -1
  29. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/workspaces/[name].html +1 -1
  30. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/workspaces.html +1 -1
  31. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/global_user_state.py +82 -22
  32. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/jobs/client/sdk.py +5 -2
  33. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/jobs/recovery_strategy.py +9 -4
  34. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/jobs/server/server.py +2 -1
  35. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/logs/agent.py +2 -2
  36. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/logs/aws.py +6 -3
  37. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/aws/config.py +78 -3
  38. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/aws/instance.py +45 -6
  39. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/do/utils.py +2 -1
  40. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/kubernetes/instance.py +55 -11
  41. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/kubernetes/utils.py +11 -2
  42. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/nebius/utils.py +36 -2
  43. skypilot_nightly-1.0.0.dev20250829/sky/schemas/db/global_user_state/007_cluster_event_request_id.py +34 -0
  44. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/serve/client/impl.py +5 -4
  45. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/serve/replica_managers.py +4 -3
  46. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/serve/serve_utils.py +2 -2
  47. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/serve/server/impl.py +3 -2
  48. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/serve/server/server.py +2 -1
  49. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/auth/oauth2_proxy.py +10 -4
  50. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/common.py +4 -4
  51. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/daemons.py +16 -5
  52. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/requests/executor.py +5 -3
  53. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/requests/payloads.py +3 -1
  54. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/requests/preconditions.py +3 -2
  55. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/requests/requests.py +121 -19
  56. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/server.py +85 -60
  57. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/stream_utils.py +7 -5
  58. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/setup_files/dependencies.py +6 -1
  59. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/sky_logging.py +28 -0
  60. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/constants.py +6 -0
  61. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/events.py +2 -3
  62. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skypilot_config.py +10 -10
  63. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/task.py +1 -1
  64. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/templates/aws-ray.yml.j2 +1 -0
  65. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/templates/nebius-ray.yml.j2 +4 -8
  66. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/usage/usage_lib.py +3 -2
  67. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/annotations.py +8 -2
  68. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/cluster_utils.py +3 -3
  69. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/common_utils.py +0 -72
  70. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/controller_utils.py +4 -3
  71. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/dag_utils.py +4 -4
  72. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/db/db_utils.py +11 -0
  73. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/db/migration_utils.py +1 -1
  74. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/kubernetes/config_map_utils.py +3 -3
  75. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/kubernetes_enums.py +1 -0
  76. skypilot_nightly-1.0.0.dev20250829/sky/utils/lock_events.py +94 -0
  77. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/schemas.py +3 -0
  78. skypilot_nightly-1.0.0.dev20250829/sky/utils/timeline.py +110 -0
  79. skypilot_nightly-1.0.0.dev20250829/sky/utils/yaml_utils.py +102 -0
  80. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829/skypilot_nightly.egg-info}/PKG-INFO +8 -2
  81. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/skypilot_nightly.egg-info/SOURCES.txt +4 -2
  82. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/skypilot_nightly.egg-info/requires.txt +7 -1
  83. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/tests/test_api.py +6 -6
  84. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/tests/test_config.py +5 -5
  85. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/tests/test_failover.py +8 -3
  86. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/tests/test_global_user_state.py +4 -1
  87. skypilot_nightly-1.0.0.dev20250829/tests/test_wheels.py +172 -0
  88. skypilot_nightly-1.0.0.dev20250827/sky/utils/timeline.py +0 -179
  89. skypilot_nightly-1.0.0.dev20250827/sky/utils/yaml_utils.py +0 -35
  90. skypilot_nightly-1.0.0.dev20250827/tests/test_wheels.py +0 -33
  91. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/LICENSE +0 -0
  92. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/MANIFEST.in +0 -0
  93. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/README.md +0 -0
  94. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/pyproject.toml +0 -0
  95. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/setup.cfg +0 -0
  96. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/setup.py +0 -0
  97. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/adaptors/__init__.py +0 -0
  98. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/adaptors/aws.py +0 -0
  99. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/adaptors/azure.py +0 -0
  100. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/adaptors/cloudflare.py +0 -0
  101. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/adaptors/common.py +0 -0
  102. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/adaptors/cudo.py +0 -0
  103. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/adaptors/do.py +0 -0
  104. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/adaptors/docker.py +0 -0
  105. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/adaptors/gcp.py +0 -0
  106. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/adaptors/hyperbolic.py +0 -0
  107. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/adaptors/ibm.py +0 -0
  108. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/adaptors/kubernetes.py +0 -0
  109. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/adaptors/nebius.py +0 -0
  110. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/adaptors/oci.py +0 -0
  111. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/adaptors/runpod.py +0 -0
  112. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/adaptors/vast.py +0 -0
  113. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/adaptors/vsphere.py +0 -0
  114. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/backends/__init__.py +0 -0
  115. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/backends/docker_utils.py +0 -0
  116. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/backends/monkey_patches/monkey_patch_ray_up.py +0 -0
  117. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/__init__.py +0 -0
  118. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/aws_catalog.py +0 -0
  119. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/azure_catalog.py +0 -0
  120. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/common.py +0 -0
  121. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/config.py +0 -0
  122. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/cudo_catalog.py +0 -0
  123. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/data_fetchers/__init__.py +0 -0
  124. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/data_fetchers/analyze.py +0 -0
  125. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/data_fetchers/fetch_aws.py +0 -0
  126. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/data_fetchers/fetch_azure.py +0 -0
  127. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/data_fetchers/fetch_cudo.py +0 -0
  128. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/data_fetchers/fetch_fluidstack.py +0 -0
  129. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/data_fetchers/fetch_gcp.py +0 -0
  130. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/data_fetchers/fetch_hyperbolic.py +0 -0
  131. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/data_fetchers/fetch_ibm.py +0 -0
  132. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/data_fetchers/fetch_lambda_cloud.py +0 -0
  133. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/data_fetchers/fetch_nebius.py +0 -0
  134. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/data_fetchers/fetch_vast.py +0 -0
  135. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/data_fetchers/fetch_vsphere.py +0 -0
  136. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/do_catalog.py +0 -0
  137. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/fluidstack_catalog.py +0 -0
  138. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/gcp_catalog.py +0 -0
  139. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/hyperbolic_catalog.py +0 -0
  140. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/ibm_catalog.py +0 -0
  141. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/kubernetes_catalog.py +0 -0
  142. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/lambda_catalog.py +0 -0
  143. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/nebius_catalog.py +0 -0
  144. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/oci_catalog.py +0 -0
  145. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/paperspace_catalog.py +0 -0
  146. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/runpod_catalog.py +0 -0
  147. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/scp_catalog.py +0 -0
  148. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/ssh_catalog.py +0 -0
  149. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/vast_catalog.py +0 -0
  150. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/catalog/vsphere_catalog.py +0 -0
  151. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/check.py +0 -0
  152. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/cli.py +0 -0
  153. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/client/__init__.py +0 -0
  154. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/client/cli/__init__.py +0 -0
  155. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/client/cli/deprecation_utils.py +0 -0
  156. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/client/cli/flags.py +0 -0
  157. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/client/cli/git.py +0 -0
  158. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/client/common.py +0 -0
  159. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/client/oauth.py +0 -0
  160. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/client/service_account_auth.py +0 -0
  161. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/cloud_stores.py +0 -0
  162. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/clouds/__init__.py +0 -0
  163. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/clouds/azure.py +0 -0
  164. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/clouds/cloud.py +0 -0
  165. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/clouds/cudo.py +0 -0
  166. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/clouds/do.py +0 -0
  167. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/clouds/fluidstack.py +0 -0
  168. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/clouds/gcp.py +0 -0
  169. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/clouds/hyperbolic.py +0 -0
  170. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/clouds/ibm.py +0 -0
  171. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/clouds/kubernetes.py +0 -0
  172. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/clouds/lambda_cloud.py +0 -0
  173. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/clouds/nebius.py +0 -0
  174. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/clouds/oci.py +0 -0
  175. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/clouds/paperspace.py +0 -0
  176. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/clouds/runpod.py +0 -0
  177. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/clouds/scp.py +0 -0
  178. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/clouds/ssh.py +0 -0
  179. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/clouds/utils/__init__.py +0 -0
  180. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/clouds/utils/aws_utils.py +0 -0
  181. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/clouds/utils/azure_utils.py +0 -0
  182. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/clouds/utils/gcp_utils.py +0 -0
  183. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/clouds/utils/oci_utils.py +0 -0
  184. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/clouds/utils/scp_utils.py +0 -0
  185. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/clouds/vast.py +0 -0
  186. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/clouds/vsphere.py +0 -0
  187. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dag.py +0 -0
  188. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/1121-8afcf719ea87debc.js +0 -0
  189. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/1141-943efc7aff0f0c06.js +0 -0
  190. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/1272-1ef0bf0237faccdb.js +0 -0
  191. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/2350.fab69e61bac57b23.js +0 -0
  192. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/3015-6c9c09593b1e67b6.js +0 -0
  193. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/3785.d5b86f6ebc88e6e6.js +0 -0
  194. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/3850-ff4a9a69d978632b.js +0 -0
  195. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/3937.210053269f121201.js +0 -0
  196. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/4045.b30465273dc5e468.js +0 -0
  197. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/4676-9da7fdbde90b5549.js +0 -0
  198. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/4725.10f7a9a5d3ea8208.js +0 -0
  199. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/4783.c485f48348349f47.js +0 -0
  200. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/5739-d67458fcb1386c92.js +0 -0
  201. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/6130-2be46d70a38f1e82.js +0 -0
  202. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/6135-4b4d5e824b7f9d3c.js +0 -0
  203. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/616-3d59f75e2ccf9321.js +0 -0
  204. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/6601-06114c982db410b6.js +0 -0
  205. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/6856-049014c6d43d127b.js +0 -0
  206. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/6989-01359c57e018caa4.js +0 -0
  207. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/6990-08b2a1cae076a943.js +0 -0
  208. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/7205-88191679e7988c57.js +0 -0
  209. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/7325.b4bc99ce0892dcd5.js +0 -0
  210. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/7411-b15471acd2cba716.js +0 -0
  211. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/754-d0da8ab45f9509e9.js +0 -0
  212. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/7669.1f5d9a402bf5cc42.js +0 -0
  213. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/8969-4a6f1a928fb6d370.js +0 -0
  214. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/9025.a1bef12d672bb66d.js +0 -0
  215. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/9037-89a84fd7fa31362d.js +0 -0
  216. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/9946.3b7b43c217ff70ec.js +0 -0
  217. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/9984.7eb6cc51fb460cae.js +0 -0
  218. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/fd9d1056-86323a29a8f7e46a.js +0 -0
  219. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/framework-cf60a09ccd051a10.js +0 -0
  220. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/main-app-587214043926b3cc.js +0 -0
  221. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/main-f15ccb73239a3bf1.js +0 -0
  222. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/pages/_app-ce361c6959bc2001.js +0 -0
  223. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/pages/_error-c66a4e8afc46f17b.js +0 -0
  224. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-06afb50d25f7c61f.js +0 -0
  225. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-a0527109c2fab467.js +0 -0
  226. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/pages/clusters-469814d711d63b1b.js +0 -0
  227. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/pages/config-dfb9bf07b13045f4.js +0 -0
  228. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/pages/index-444f1804401f04ea.js +0 -0
  229. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/pages/infra/[context]-81351f95f3bec08e.js +0 -0
  230. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/pages/infra-c320641c2bcbbea6.js +0 -0
  231. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-dd64309c3fe67ed2.js +0 -0
  232. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/pages/jobs/pools/[pool]-07349868f7905d37.js +0 -0
  233. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/pages/jobs-7421e63ac35f8fce.js +0 -0
  234. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/pages/users-018bf31cda52e11b.js +0 -0
  235. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/pages/volumes-739726d6b823f532.js +0 -0
  236. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/pages/workspace/new-3f88a1c7e86a3f86.js +0 -0
  237. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-de06e613e20bc977.js +0 -0
  238. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/pages/workspaces-be35b22e2046564c.js +0 -0
  239. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js +0 -0
  240. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/chunks/webpack-6e76f636a048e145.js +0 -0
  241. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/_next/static/css/4614e06482d7309e.css +0 -0
  242. {skypilot_nightly-1.0.0.dev20250827/sky/dashboard/out/_next/static/-eL7Ky3bxVivzeLHNB9U6 → skypilot_nightly-1.0.0.dev20250829/sky/dashboard/out/_next/static/hYJYFIxp_ZFONR4wTIJqZ}/_buildManifest.js +0 -0
  243. {skypilot_nightly-1.0.0.dev20250827/sky/dashboard/out/_next/static/-eL7Ky3bxVivzeLHNB9U6 → skypilot_nightly-1.0.0.dev20250829/sky/dashboard/out/_next/static/hYJYFIxp_ZFONR4wTIJqZ}/_ssgManifest.js +0 -0
  244. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/favicon.ico +0 -0
  245. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/skypilot.svg +0 -0
  246. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/dashboard/out/videos/cursor-small.mp4 +0 -0
  247. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/data/__init__.py +0 -0
  248. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/data/data_transfer.py +0 -0
  249. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/data/data_utils.py +0 -0
  250. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/data/mounting_utils.py +0 -0
  251. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/data/storage.py +0 -0
  252. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/data/storage_utils.py +0 -0
  253. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/exceptions.py +0 -0
  254. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/execution.py +0 -0
  255. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/jobs/__init__.py +0 -0
  256. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/jobs/client/__init__.py +0 -0
  257. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/jobs/client/sdk_async.py +0 -0
  258. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/jobs/constants.py +0 -0
  259. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/jobs/controller.py +0 -0
  260. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/jobs/scheduler.py +0 -0
  261. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/jobs/server/__init__.py +0 -0
  262. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/jobs/server/core.py +0 -0
  263. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/jobs/server/utils.py +0 -0
  264. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/jobs/state.py +0 -0
  265. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/jobs/utils.py +0 -0
  266. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/logs/__init__.py +0 -0
  267. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/logs/gcp.py +0 -0
  268. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/metrics/__init__.py +0 -0
  269. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/metrics/utils.py +0 -0
  270. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/models.py +0 -0
  271. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/optimizer.py +0 -0
  272. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/__init__.py +0 -0
  273. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/aws/__init__.py +0 -0
  274. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/aws/utils.py +0 -0
  275. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/azure/__init__.py +0 -0
  276. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/azure/azure-config-template.json +0 -0
  277. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/azure/config.py +0 -0
  278. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/azure/instance.py +0 -0
  279. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/common.py +0 -0
  280. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/constants.py +0 -0
  281. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/cudo/__init__.py +0 -0
  282. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/cudo/config.py +0 -0
  283. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/cudo/cudo_machine_type.py +0 -0
  284. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/cudo/cudo_utils.py +0 -0
  285. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/cudo/cudo_wrapper.py +0 -0
  286. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/cudo/instance.py +0 -0
  287. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/do/__init__.py +0 -0
  288. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/do/config.py +0 -0
  289. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/do/constants.py +0 -0
  290. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/do/instance.py +0 -0
  291. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/docker_utils.py +0 -0
  292. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/fluidstack/__init__.py +0 -0
  293. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/fluidstack/config.py +0 -0
  294. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/fluidstack/fluidstack_utils.py +0 -0
  295. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/fluidstack/instance.py +0 -0
  296. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/gcp/__init__.py +0 -0
  297. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/gcp/config.py +0 -0
  298. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/gcp/constants.py +0 -0
  299. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/gcp/instance.py +0 -0
  300. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/gcp/instance_utils.py +0 -0
  301. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/gcp/mig_utils.py +0 -0
  302. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/gcp/volume_utils.py +0 -0
  303. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/hyperbolic/__init__.py +0 -0
  304. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/hyperbolic/config.py +0 -0
  305. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/hyperbolic/instance.py +0 -0
  306. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/hyperbolic/utils.py +0 -0
  307. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/instance_setup.py +0 -0
  308. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/kubernetes/__init__.py +0 -0
  309. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/kubernetes/config.py +0 -0
  310. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/kubernetes/constants.py +0 -0
  311. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/kubernetes/manifests/fusermount-server-daemonset.yaml +0 -0
  312. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/kubernetes/network.py +0 -0
  313. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/kubernetes/network_utils.py +0 -0
  314. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/kubernetes/volume.py +0 -0
  315. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/lambda_cloud/__init__.py +0 -0
  316. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/lambda_cloud/config.py +0 -0
  317. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/lambda_cloud/instance.py +0 -0
  318. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/lambda_cloud/lambda_utils.py +0 -0
  319. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/logging.py +0 -0
  320. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/metadata_utils.py +0 -0
  321. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/nebius/__init__.py +0 -0
  322. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/nebius/config.py +0 -0
  323. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/nebius/constants.py +0 -0
  324. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/nebius/instance.py +0 -0
  325. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/oci/__init__.py +0 -0
  326. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/oci/config.py +0 -0
  327. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/oci/instance.py +0 -0
  328. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/oci/query_utils.py +0 -0
  329. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/paperspace/__init__.py +0 -0
  330. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/paperspace/config.py +0 -0
  331. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/paperspace/constants.py +0 -0
  332. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/paperspace/instance.py +0 -0
  333. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/paperspace/utils.py +0 -0
  334. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/provisioner.py +0 -0
  335. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/runpod/__init__.py +0 -0
  336. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/runpod/api/__init__.py +0 -0
  337. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/runpod/api/commands.py +0 -0
  338. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/runpod/api/pods.py +0 -0
  339. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/runpod/config.py +0 -0
  340. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/runpod/instance.py +0 -0
  341. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/runpod/utils.py +0 -0
  342. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/scp/__init__.py +0 -0
  343. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/scp/config.py +0 -0
  344. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/scp/instance.py +0 -0
  345. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/ssh/__init__.py +0 -0
  346. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/vast/__init__.py +0 -0
  347. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/vast/config.py +0 -0
  348. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/vast/instance.py +0 -0
  349. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/vast/utils.py +0 -0
  350. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/vsphere/__init__.py +0 -0
  351. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/vsphere/common/__init__.py +0 -0
  352. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/vsphere/common/cls_api_client.py +0 -0
  353. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/vsphere/common/cls_api_helper.py +0 -0
  354. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/vsphere/common/custom_script.py +0 -0
  355. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/vsphere/common/id_generator.py +0 -0
  356. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/vsphere/common/metadata_utils.py +0 -0
  357. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/vsphere/common/service_manager.py +0 -0
  358. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/vsphere/common/service_manager_factory.py +0 -0
  359. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/vsphere/common/ssl_helper.py +0 -0
  360. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/vsphere/common/vapiconnect.py +0 -0
  361. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/vsphere/common/vim_utils.py +0 -0
  362. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/vsphere/config.py +0 -0
  363. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/vsphere/instance.py +0 -0
  364. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/provision/vsphere/vsphere_utils.py +0 -0
  365. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/py.typed +0 -0
  366. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/resources.py +0 -0
  367. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/schemas/__init__.py +0 -0
  368. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/schemas/api/__init__.py +0 -0
  369. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/schemas/api/responses.py +0 -0
  370. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/schemas/db/README +0 -0
  371. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/schemas/db/env.py +0 -0
  372. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/schemas/db/global_user_state/001_initial_schema.py +0 -0
  373. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/schemas/db/global_user_state/002_add_workspace_to_cluster_history.py +0 -0
  374. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/schemas/db/global_user_state/003_fix_initial_revision.py +0 -0
  375. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/schemas/db/global_user_state/004_is_managed.py +0 -0
  376. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/schemas/db/global_user_state/005_cluster_event.py +0 -0
  377. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/schemas/db/global_user_state/006_provision_log.py +0 -0
  378. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/schemas/db/script.py.mako +0 -0
  379. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/schemas/db/serve_state/001_initial_schema.py +0 -0
  380. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/schemas/db/spot_jobs/001_initial_schema.py +0 -0
  381. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/schemas/db/spot_jobs/002_cluster_pool.py +0 -0
  382. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/schemas/db/spot_jobs/003_pool_hash.py +0 -0
  383. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/schemas/generated/__init__.py +0 -0
  384. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/schemas/generated/autostopv1_pb2.py +0 -0
  385. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/schemas/generated/autostopv1_pb2.pyi +0 -0
  386. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/schemas/generated/autostopv1_pb2_grpc.py +0 -0
  387. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/serve/__init__.py +0 -0
  388. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/serve/autoscalers.py +0 -0
  389. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/serve/client/__init__.py +0 -0
  390. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/serve/client/sdk.py +0 -0
  391. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/serve/client/sdk_async.py +0 -0
  392. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/serve/constants.py +0 -0
  393. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/serve/controller.py +0 -0
  394. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/serve/load_balancer.py +0 -0
  395. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/serve/load_balancing_policies.py +0 -0
  396. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/serve/serve_state.py +0 -0
  397. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/serve/server/__init__.py +0 -0
  398. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/serve/server/core.py +0 -0
  399. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/serve/service.py +0 -0
  400. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/serve/service_spec.py +0 -0
  401. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/serve/spot_placer.py +0 -0
  402. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/__init__.py +0 -0
  403. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/auth/__init__.py +0 -0
  404. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/auth/authn.py +0 -0
  405. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/config.py +0 -0
  406. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/constants.py +0 -0
  407. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/html/log.html +0 -0
  408. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/html/token_page.html +0 -0
  409. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/metrics.py +0 -0
  410. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/requests/__init__.py +0 -0
  411. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/requests/event_loop.py +0 -0
  412. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/requests/process.py +0 -0
  413. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/requests/queues/__init__.py +0 -0
  414. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/requests/queues/local_queue.py +0 -0
  415. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/requests/queues/mp_queue.py +0 -0
  416. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/requests/serializers/__init__.py +0 -0
  417. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/requests/serializers/decoders.py +0 -0
  418. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/requests/serializers/encoders.py +0 -0
  419. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/rest.py +0 -0
  420. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/state.py +0 -0
  421. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/uvicorn.py +0 -0
  422. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/server/versions.py +0 -0
  423. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/setup_files/MANIFEST.in +0 -0
  424. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/setup_files/alembic.ini +0 -0
  425. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/setup_files/setup.py +0 -0
  426. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/LICENSE +0 -0
  427. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/__init__.py +0 -0
  428. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/attempt_skylet.py +0 -0
  429. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/autostop_lib.py +0 -0
  430. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/configs.py +0 -0
  431. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/job_lib.py +0 -0
  432. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/log_lib.py +0 -0
  433. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/log_lib.pyi +0 -0
  434. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/providers/__init__.py +0 -0
  435. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/providers/command_runner.py +0 -0
  436. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/providers/ibm/__init__.py +0 -0
  437. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/providers/ibm/node_provider.py +0 -0
  438. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/providers/ibm/utils.py +0 -0
  439. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/providers/ibm/vpc_provider.py +0 -0
  440. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/ray_patches/__init__.py +0 -0
  441. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/ray_patches/autoscaler.py.diff +0 -0
  442. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/ray_patches/autoscaler.py.patch +0 -0
  443. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/ray_patches/cli.py.diff +0 -0
  444. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/ray_patches/cli.py.patch +0 -0
  445. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/ray_patches/command_runner.py.diff +0 -0
  446. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/ray_patches/command_runner.py.patch +0 -0
  447. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/ray_patches/log_monitor.py.diff +0 -0
  448. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/ray_patches/log_monitor.py.patch +0 -0
  449. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/ray_patches/resource_demand_scheduler.py.diff +0 -0
  450. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/ray_patches/resource_demand_scheduler.py.patch +0 -0
  451. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/ray_patches/updater.py.diff +0 -0
  452. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/ray_patches/updater.py.patch +0 -0
  453. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/ray_patches/worker.py.diff +0 -0
  454. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/ray_patches/worker.py.patch +0 -0
  455. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/services.py +0 -0
  456. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/skylet.py +0 -0
  457. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/skylet/subprocess_daemon.py +0 -0
  458. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/ssh_node_pools/__init__.py +0 -0
  459. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/ssh_node_pools/core.py +0 -0
  460. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/ssh_node_pools/server.py +0 -0
  461. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/templates/azure-ray.yml.j2 +0 -0
  462. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/templates/cudo-ray.yml.j2 +0 -0
  463. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/templates/do-ray.yml.j2 +0 -0
  464. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/templates/fluidstack-ray.yml.j2 +0 -0
  465. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/templates/gcp-ray.yml.j2 +0 -0
  466. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/templates/hyperbolic-ray.yml.j2 +0 -0
  467. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/templates/ibm-ray.yml.j2 +0 -0
  468. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/templates/jobs-controller.yaml.j2 +0 -0
  469. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/templates/kubernetes-ingress.yml.j2 +0 -0
  470. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/templates/kubernetes-loadbalancer.yml.j2 +0 -0
  471. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/templates/kubernetes-port-forward-proxy-command.sh +0 -0
  472. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/templates/kubernetes-ray.yml.j2 +0 -0
  473. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/templates/kubernetes-ssh-jump.yml.j2 +0 -0
  474. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/templates/lambda-ray.yml.j2 +0 -0
  475. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/templates/local-ray.yml.j2 +0 -0
  476. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/templates/oci-ray.yml.j2 +0 -0
  477. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/templates/paperspace-ray.yml.j2 +0 -0
  478. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/templates/runpod-ray.yml.j2 +0 -0
  479. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/templates/scp-ray.yml.j2 +0 -0
  480. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/templates/sky-serve-controller.yaml.j2 +0 -0
  481. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/templates/skypilot-server-kubernetes-proxy.sh +0 -0
  482. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/templates/vast-ray.yml.j2 +0 -0
  483. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/templates/vsphere-ray.yml.j2 +0 -0
  484. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/templates/websocket_proxy.py +0 -0
  485. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/usage/__init__.py +0 -0
  486. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/usage/constants.py +0 -0
  487. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/users/__init__.py +0 -0
  488. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/users/model.conf +0 -0
  489. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/users/permission.py +0 -0
  490. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/users/rbac.py +0 -0
  491. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/users/server.py +0 -0
  492. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/users/token_service.py +0 -0
  493. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/__init__.py +0 -0
  494. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/accelerator_registry.py +0 -0
  495. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/admin_policy_utils.py +0 -0
  496. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/atomic.py +0 -0
  497. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/aws/__init__.py +0 -0
  498. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/aws/get_default_security_group.py +0 -0
  499. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/cli_utils/__init__.py +0 -0
  500. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/cli_utils/status_utils.py +0 -0
  501. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/command_runner.py +0 -0
  502. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/command_runner.pyi +0 -0
  503. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/common.py +0 -0
  504. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/config_utils.py +0 -0
  505. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/context.py +0 -0
  506. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/context_utils.py +0 -0
  507. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/control_master_utils.py +0 -0
  508. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/db/__init__.py +0 -0
  509. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/directory_utils.py +0 -0
  510. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/env_options.py +0 -0
  511. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/git.py +0 -0
  512. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/git_clone.sh +0 -0
  513. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/infra_utils.py +0 -0
  514. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/kubernetes/__init__.py +0 -0
  515. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/kubernetes/cleanup-tunnel.sh +0 -0
  516. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/kubernetes/create_cluster.sh +0 -0
  517. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/kubernetes/delete_cluster.sh +0 -0
  518. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/kubernetes/deploy_remote_cluster.py +0 -0
  519. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/kubernetes/exec_kubeconfig_converter.py +0 -0
  520. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/kubernetes/generate_kind_config.py +0 -0
  521. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/kubernetes/generate_kubeconfig.sh +0 -0
  522. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/kubernetes/gpu_labeler.py +0 -0
  523. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +0 -0
  524. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +0 -0
  525. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/kubernetes/kubernetes_deploy_utils.py +0 -0
  526. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/kubernetes/rsync_helper.sh +0 -0
  527. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/kubernetes/ssh-tunnel.sh +0 -0
  528. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -0
  529. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/kubernetes/ssh_utils.py +0 -0
  530. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/locks.py +0 -0
  531. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/log_utils.py +0 -0
  532. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/message_utils.py +0 -0
  533. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/registry.py +0 -0
  534. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/resource_checker.py +0 -0
  535. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/resources_utils.py +0 -0
  536. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/rich_console_utils.py +0 -0
  537. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/rich_utils.py +0 -0
  538. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/serialize_utils.py +0 -0
  539. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/status_lib.py +0 -0
  540. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/subprocess_utils.py +0 -0
  541. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/tempstore.py +0 -0
  542. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/ux_utils.py +0 -0
  543. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/validator.py +0 -0
  544. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/utils/volume.py +0 -0
  545. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/volumes/__init__.py +0 -0
  546. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/volumes/client/__init__.py +0 -0
  547. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/volumes/client/sdk.py +0 -0
  548. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/volumes/server/__init__.py +0 -0
  549. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/volumes/server/core.py +0 -0
  550. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/volumes/server/server.py +0 -0
  551. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/volumes/utils.py +0 -0
  552. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/volumes/volume.py +0 -0
  553. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/workspaces/__init__.py +0 -0
  554. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/workspaces/core.py +0 -0
  555. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/workspaces/server.py +0 -0
  556. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/sky/workspaces/utils.py +0 -0
  557. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/skypilot_nightly.egg-info/dependency_links.txt +0 -0
  558. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/skypilot_nightly.egg-info/entry_points.txt +0 -0
  559. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/skypilot_nightly.egg-info/top_level.txt +0 -0
  560. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/tests/test_api_compatibility.py +0 -0
  561. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/tests/test_cli.py +0 -0
  562. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/tests/test_db_utils.py +0 -0
  563. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/tests/test_jobs.py +0 -0
  564. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/tests/test_jobs_and_serve.py +0 -0
  565. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/tests/test_list_accelerators.py +0 -0
  566. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/tests/test_no_parellel.py +0 -0
  567. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/tests/test_optimizer_dryruns.py +0 -0
  568. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/tests/test_optimizer_random_dag.py +0 -0
  569. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/tests/test_serve_autoscaler.py +0 -0
  570. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/tests/test_smoke.py +0 -0
  571. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/tests/test_storage.py +0 -0
  572. {skypilot_nightly-1.0.0.dev20250827 → skypilot_nightly-1.0.0.dev20250829}/tests/test_yaml_parser.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20250827
3
+ Version: 1.0.0.dev20250829
4
4
  Summary: SkyPilot: Run AI on Any Infra — Unified, Faster, Cheaper.
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -34,7 +34,7 @@ Requires-Dist: python-dotenv
34
34
  Requires-Dist: rich
35
35
  Requires-Dist: tabulate
36
36
  Requires-Dist: typing_extensions
37
- Requires-Dist: filelock>=3.6.0
37
+ Requires-Dist: filelock>=3.15.0
38
38
  Requires-Dist: packaging
39
39
  Requires-Dist: psutil
40
40
  Requires-Dist: pulp
@@ -59,6 +59,8 @@ Requires-Dist: gitpython
59
59
  Requires-Dist: types-paramiko
60
60
  Requires-Dist: alembic
61
61
  Requires-Dist: aiohttp
62
+ Requires-Dist: aiosqlite
63
+ Requires-Dist: anyio
62
64
  Provides-Extra: aws
63
65
  Requires-Dist: awscli>=1.27.10; extra == "aws"
64
66
  Requires-Dist: botocore>=1.29.10; extra == "aws"
@@ -136,8 +138,10 @@ Requires-Dist: sqlalchemy_adapter; extra == "server"
136
138
  Requires-Dist: passlib; extra == "server"
137
139
  Requires-Dist: pyjwt; extra == "server"
138
140
  Requires-Dist: aiohttp; extra == "server"
141
+ Requires-Dist: anyio; extra == "server"
139
142
  Requires-Dist: grpcio>=1.63.0; extra == "server"
140
143
  Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "server"
144
+ Requires-Dist: aiosqlite; extra == "server"
141
145
  Provides-Extra: all
142
146
  Requires-Dist: awscli>=1.27.10; extra == "all"
143
147
  Requires-Dist: botocore>=1.29.10; extra == "all"
@@ -194,8 +198,10 @@ Requires-Dist: sqlalchemy_adapter; extra == "all"
194
198
  Requires-Dist: passlib; extra == "all"
195
199
  Requires-Dist: pyjwt; extra == "all"
196
200
  Requires-Dist: aiohttp; extra == "all"
201
+ Requires-Dist: anyio; extra == "all"
197
202
  Requires-Dist: grpcio>=1.63.0; extra == "all"
198
203
  Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "all"
204
+ Requires-Dist: aiosqlite; extra == "all"
199
205
  Dynamic: author
200
206
  Dynamic: classifier
201
207
  Dynamic: description
@@ -7,7 +7,7 @@ import urllib.request
7
7
  from sky.utils import directory_utils
8
8
 
9
9
  # Replaced with the current commit when building the wheels.
10
- _SKYPILOT_COMMIT_SHA = '01e261e45881118c963337e22cc819586eef9b43'
10
+ _SKYPILOT_COMMIT_SHA = '27f74c78af59ef98180b59a30c43410e46e3ce37'
11
11
 
12
12
 
13
13
  def _get_git_commit():
@@ -37,7 +37,7 @@ def _get_git_commit():
37
37
 
38
38
 
39
39
  __commit__ = _get_git_commit()
40
- __version__ = '1.0.0.dev20250827'
40
+ __version__ = '1.0.0.dev20250829'
41
41
  __root_dir__ = directory_utils.get_sky_dir()
42
42
 
43
43
 
@@ -13,6 +13,7 @@ from sky.adaptors import common as adaptors_common
13
13
  from sky.utils import common_utils
14
14
  from sky.utils import config_utils
15
15
  from sky.utils import ux_utils
16
+ from sky.utils import yaml_utils
16
17
 
17
18
  if typing.TYPE_CHECKING:
18
19
  import requests
@@ -80,9 +81,9 @@ class UserRequest:
80
81
 
81
82
  def encode(self) -> str:
82
83
  return _UserRequestBody(
83
- task=common_utils.dump_yaml_str(self.task.to_yaml_config()),
84
- skypilot_config=common_utils.dump_yaml_str(
85
- dict(self.skypilot_config)),
84
+ task=yaml_utils.dump_yaml_str(self.task.to_yaml_config()),
85
+ skypilot_config=yaml_utils.dump_yaml_str(dict(
86
+ self.skypilot_config)),
86
87
  request_options=self.request_options,
87
88
  at_client_side=self.at_client_side,
88
89
  ).model_dump_json()
@@ -92,9 +93,9 @@ class UserRequest:
92
93
  user_request_body = _UserRequestBody.model_validate_json(body)
93
94
  return cls(
94
95
  task=sky.Task.from_yaml_config(
95
- common_utils.read_yaml_all_str(user_request_body.task)[0]),
96
+ yaml_utils.read_yaml_all_str(user_request_body.task)[0]),
96
97
  skypilot_config=config_utils.Config.from_dict(
97
- common_utils.read_yaml_all_str(
98
+ yaml_utils.read_yaml_all_str(
98
99
  user_request_body.skypilot_config)[0]),
99
100
  request_options=user_request_body.request_options,
100
101
  at_client_side=user_request_body.at_client_side,
@@ -116,9 +117,9 @@ class MutatedUserRequest:
116
117
 
117
118
  def encode(self) -> str:
118
119
  return _MutatedUserRequestBody(
119
- task=common_utils.dump_yaml_str(self.task.to_yaml_config()),
120
- skypilot_config=common_utils.dump_yaml_str(
121
- dict(self.skypilot_config),)).model_dump_json()
120
+ task=yaml_utils.dump_yaml_str(self.task.to_yaml_config()),
121
+ skypilot_config=yaml_utils.dump_yaml_str(dict(
122
+ self.skypilot_config),)).model_dump_json()
122
123
 
123
124
  @classmethod
124
125
  def decode(cls, mutated_user_request_body: str,
@@ -126,14 +127,14 @@ class MutatedUserRequest:
126
127
  mutated_user_request_body = _MutatedUserRequestBody.model_validate_json(
127
128
  mutated_user_request_body)
128
129
  task = sky.Task.from_yaml_config(
129
- common_utils.read_yaml_all_str(mutated_user_request_body.task)[0])
130
+ yaml_utils.read_yaml_all_str(mutated_user_request_body.task)[0])
130
131
  # Some internal Task fields are not serialized. We need to manually
131
132
  # restore them from the original request.
132
133
  task.managed_job_dag = original_request.task.managed_job_dag
133
134
  task.service_name = original_request.task.service_name
134
135
  return cls(task=task,
135
136
  skypilot_config=config_utils.Config.from_dict(
136
- common_utils.read_yaml_all_str(
137
+ yaml_utils.read_yaml_all_str(
137
138
  mutated_user_request_body.skypilot_config)[0],))
138
139
 
139
140
 
@@ -198,7 +198,7 @@ def configure_ssh_info(config: Dict[str, Any]) -> Dict[str, Any]:
198
198
  _, public_key_path = get_or_generate_keys()
199
199
  with open(public_key_path, 'r', encoding='utf-8') as f:
200
200
  public_key = f.read().strip()
201
- config_str = common_utils.dump_yaml_str(config)
201
+ config_str = yaml_utils.dump_yaml_str(config)
202
202
  config_str = config_str.replace('skypilot:ssh_user',
203
203
  config['auth']['ssh_user'])
204
204
  config_str = config_str.replace('skypilot:ssh_public_key_content',
@@ -147,9 +147,8 @@ class Backend(Generic[_ResourceHandleType]):
147
147
  def teardown(self,
148
148
  handle: _ResourceHandleType,
149
149
  terminate: bool,
150
- purge: bool = False,
151
- explicitly_requested: bool = False) -> None:
152
- self._teardown(handle, terminate, purge, explicitly_requested)
150
+ purge: bool = False) -> None:
151
+ self._teardown(handle, terminate, purge)
153
152
 
154
153
  def register_info(self, **kwargs) -> None:
155
154
  """Register backend-specific information."""
@@ -201,6 +200,5 @@ class Backend(Generic[_ResourceHandleType]):
201
200
  def _teardown(self,
202
201
  handle: _ResourceHandleType,
203
202
  terminate: bool,
204
- purge: bool = False,
205
- explicitly_requested: bool = False):
203
+ purge: bool = False):
206
204
  raise NotImplementedError
@@ -241,7 +241,7 @@ def _optimize_file_mounts(tmp_yaml_path: str) -> None:
241
241
  subprocess.CalledProcessError: If the file mounts are failed to be
242
242
  copied.
243
243
  """
244
- yaml_config = common_utils.read_yaml(tmp_yaml_path)
244
+ yaml_config = yaml_utils.read_yaml(tmp_yaml_path)
245
245
 
246
246
  file_mounts = yaml_config.get('file_mounts', {})
247
247
  # Remove the file mounts added by the newline.
@@ -325,7 +325,7 @@ def _optimize_file_mounts(tmp_yaml_path: str) -> None:
325
325
  shell=True,
326
326
  check=True)
327
327
 
328
- common_utils.dump_yaml(tmp_yaml_path, yaml_config)
328
+ yaml_utils.dump_yaml(tmp_yaml_path, yaml_config)
329
329
 
330
330
 
331
331
  def path_size_megabytes(path: str) -> int:
@@ -510,7 +510,7 @@ def _replace_yaml_dicts(
510
510
  for key in exclude_restore_key_name[:-1]:
511
511
  curr = curr[key]
512
512
  curr[exclude_restore_key_name[-1]] = value
513
- return common_utils.dump_yaml_str(new_config)
513
+ return yaml_utils.dump_yaml_str(new_config)
514
514
 
515
515
 
516
516
  def get_expirable_clouds(
@@ -937,7 +937,7 @@ def write_cluster_config(
937
937
  tmp_yaml_path,
938
938
  cluster_config_overrides=cluster_config_overrides,
939
939
  context=region.name)
940
- yaml_obj = common_utils.read_yaml(tmp_yaml_path)
940
+ yaml_obj = yaml_utils.read_yaml(tmp_yaml_path)
941
941
  pod_config: Dict[str, Any] = yaml_obj['available_node_types'][
942
942
  'ray_head_default']['node_config']
943
943
 
@@ -976,7 +976,7 @@ def write_cluster_config(
976
976
  # Read the cluster name from the tmp yaml file, to take the backward
977
977
  # compatbility restortion above into account.
978
978
  # TODO: remove this after 2 minor releases, 0.10.0.
979
- yaml_config = common_utils.read_yaml(tmp_yaml_path)
979
+ yaml_config = yaml_utils.read_yaml(tmp_yaml_path)
980
980
  config_dict['cluster_name_on_cloud'] = yaml_config['cluster_name']
981
981
 
982
982
  # Make sure to do this before we optimize file mounts. Optimization is
@@ -1022,7 +1022,7 @@ def _add_auth_to_cluster_config(cloud: clouds.Cloud, tmp_yaml_path: str):
1022
1022
 
1023
1023
  This function's output removes comments included in the jinja2 template.
1024
1024
  """
1025
- config = common_utils.read_yaml(tmp_yaml_path)
1025
+ config = yaml_utils.read_yaml(tmp_yaml_path)
1026
1026
  # Check the availability of the cloud type.
1027
1027
  if isinstance(cloud, (
1028
1028
  clouds.AWS,
@@ -1054,7 +1054,7 @@ def _add_auth_to_cluster_config(cloud: clouds.Cloud, tmp_yaml_path: str):
1054
1054
  config = auth.setup_hyperbolic_authentication(config)
1055
1055
  else:
1056
1056
  assert False, cloud
1057
- common_utils.dump_yaml(tmp_yaml_path, config)
1057
+ yaml_utils.dump_yaml(tmp_yaml_path, config)
1058
1058
 
1059
1059
 
1060
1060
  def get_timestamp_from_run_timestamp(run_timestamp: str) -> float:
@@ -1156,7 +1156,7 @@ def _deterministic_cluster_yaml_hash(tmp_yaml_path: str) -> str:
1156
1156
  """
1157
1157
 
1158
1158
  # Load the yaml contents so that we can directly remove keys.
1159
- yaml_config = common_utils.read_yaml(tmp_yaml_path)
1159
+ yaml_config = yaml_utils.read_yaml(tmp_yaml_path)
1160
1160
  for key_list in _RAY_YAML_KEYS_TO_REMOVE_FOR_HASH:
1161
1161
  dict_to_remove_from = yaml_config
1162
1162
  found_key = True
@@ -1175,7 +1175,7 @@ def _deterministic_cluster_yaml_hash(tmp_yaml_path: str) -> str:
1175
1175
  config_hash = hashlib.sha256()
1176
1176
 
1177
1177
  yaml_hash = hashlib.sha256(
1178
- common_utils.dump_yaml_str(yaml_config).encode('utf-8'))
1178
+ yaml_utils.dump_yaml_str(yaml_config).encode('utf-8'))
1179
1179
  config_hash.update(yaml_hash.digest())
1180
1180
 
1181
1181
  file_mounts = yaml_config.get('file_mounts', {})
@@ -1409,6 +1409,62 @@ def ssh_credential_from_yaml(
1409
1409
  return credentials
1410
1410
 
1411
1411
 
1412
+ def ssh_credentials_from_handles(
1413
+ handles: List['cloud_vm_ray_backend.CloudVmRayResourceHandle'],
1414
+ ) -> List[Dict[str, Any]]:
1415
+ """Returns ssh_user, ssh_private_key and ssh_control name.
1416
+ """
1417
+ non_empty_cluster_yaml_paths = [
1418
+ handle.cluster_yaml
1419
+ for handle in handles
1420
+ if handle.cluster_yaml is not None
1421
+ ]
1422
+ cluster_yaml_dicts = global_user_state.get_cluster_yaml_dict_multiple(
1423
+ non_empty_cluster_yaml_paths)
1424
+ cluster_yaml_dicts_to_index = {
1425
+ cluster_yaml_path: cluster_yaml_dict
1426
+ for cluster_yaml_path, cluster_yaml_dict in zip(
1427
+ non_empty_cluster_yaml_paths, cluster_yaml_dicts)
1428
+ }
1429
+
1430
+ credentials_to_return: List[Dict[str, Any]] = []
1431
+ for handle in handles:
1432
+ if handle.cluster_yaml is None:
1433
+ credentials_to_return.append(dict())
1434
+ continue
1435
+ ssh_user = handle.ssh_user
1436
+ docker_user = handle.docker_user
1437
+ config = cluster_yaml_dicts_to_index[handle.cluster_yaml]
1438
+ auth_section = config['auth']
1439
+ if ssh_user is None:
1440
+ ssh_user = auth_section['ssh_user'].strip()
1441
+ ssh_private_key_path = auth_section.get('ssh_private_key')
1442
+ ssh_control_name = config.get('cluster_name', '__default__')
1443
+ ssh_proxy_command = auth_section.get('ssh_proxy_command')
1444
+
1445
+ # Update the ssh_user placeholder in proxy command, if required
1446
+ if (ssh_proxy_command is not None and
1447
+ constants.SKY_SSH_USER_PLACEHOLDER in ssh_proxy_command):
1448
+ ssh_proxy_command = ssh_proxy_command.replace(
1449
+ constants.SKY_SSH_USER_PLACEHOLDER, ssh_user)
1450
+
1451
+ credentials = {
1452
+ 'ssh_user': ssh_user,
1453
+ 'ssh_private_key': ssh_private_key_path,
1454
+ 'ssh_control_name': ssh_control_name,
1455
+ 'ssh_proxy_command': ssh_proxy_command,
1456
+ }
1457
+ if docker_user is not None:
1458
+ credentials['docker_user'] = docker_user
1459
+ ssh_provider_module = config['provider']['module']
1460
+ # If we are running ssh command on kubernetes node.
1461
+ if 'kubernetes' in ssh_provider_module:
1462
+ credentials['disable_control_master'] = True
1463
+ credentials_to_return.append(credentials)
1464
+
1465
+ return credentials_to_return
1466
+
1467
+
1412
1468
  def parallel_data_transfer_to_nodes(
1413
1469
  runners: List[command_runner.CommandRunner],
1414
1470
  source: Optional[str],
@@ -2027,9 +2083,7 @@ def _update_cluster_status(cluster_name: str) -> Optional[Dict[str, Any]]:
2027
2083
  'Cluster has no YAML file. Removing the cluster from cache.',
2028
2084
  global_user_state.ClusterEventType.STATUS_CHANGE,
2029
2085
  nop_if_duplicate=True)
2030
- global_user_state.remove_cluster(cluster_name,
2031
- terminate=True,
2032
- remove_events=True)
2086
+ global_user_state.remove_cluster(cluster_name, terminate=True)
2033
2087
  logger.debug(f'Cluster {cluster_name!r} has no YAML file. '
2034
2088
  'Removing the cluster from cache.')
2035
2089
  return None
@@ -2058,7 +2112,10 @@ def _update_cluster_status(cluster_name: str) -> Optional[Dict[str, Any]]:
2058
2112
  f'{output}\n', stderr)
2059
2113
  return (*_count_healthy_nodes_from_ray(output), output, stderr)
2060
2114
 
2115
+ ray_status_details: Optional[str] = None
2116
+
2061
2117
  def run_ray_status_to_check_ray_cluster_healthy() -> bool:
2118
+ nonlocal ray_status_details
2062
2119
  try:
2063
2120
  # NOTE: fetching the IPs is very slow as it calls into
2064
2121
  # `ray get head-ip/worker-ips`. Using cached IPs is safe because
@@ -2136,19 +2193,25 @@ def _update_cluster_status(cluster_name: str) -> Optional[Dict[str, Any]]:
2136
2193
  # showing up
2137
2194
  time.sleep(1)
2138
2195
 
2196
+ ray_status_details = (
2197
+ f'{ready_head + ready_workers}/{total_nodes} ready')
2139
2198
  raise RuntimeError(
2140
2199
  f'Refreshing status ({cluster_name!r}): ray status not showing '
2141
2200
  f'all nodes ({ready_head + ready_workers}/'
2142
2201
  f'{total_nodes});\noutput:\n{output}\nstderr:\n{stderr}')
2143
2202
 
2144
2203
  except exceptions.FetchClusterInfoError:
2204
+ ray_status_details = 'failed to get IPs'
2145
2205
  logger.debug(
2146
2206
  f'Refreshing status ({cluster_name!r}) failed to get IPs.')
2147
2207
  except RuntimeError as e:
2208
+ if ray_status_details is None:
2209
+ ray_status_details = str(e)
2148
2210
  logger.debug(common_utils.format_exception(e))
2149
2211
  except Exception as e: # pylint: disable=broad-except
2150
2212
  # This can be raised by `external_ssh_ports()`, due to the
2151
2213
  # underlying call to kubernetes API.
2214
+ ray_status_details = str(e)
2152
2215
  logger.debug(f'Refreshing status ({cluster_name!r}) failed: ',
2153
2216
  exc_info=e)
2154
2217
  return False
@@ -2261,6 +2324,10 @@ def _update_cluster_status(cluster_name: str) -> Optional[Dict[str, Any]]:
2261
2324
  # (2) Otherwise, we will reset the autostop setting, unless the cluster is
2262
2325
  # autostopping/autodowning.
2263
2326
  some_nodes_terminated = 0 < len(node_statuses) < handle.launched_nodes
2327
+ # If all nodes are up and ray cluster is health, we would have returned
2328
+ # earlier. So if all_nodes_up is True and we are here, it means the ray
2329
+ # cluster must have been unhealthy.
2330
+ ray_cluster_unhealthy = all_nodes_up
2264
2331
  some_nodes_not_stopped = any(status[0] != status_lib.ClusterStatus.STOPPED
2265
2332
  for status in node_statuses)
2266
2333
  is_abnormal = (some_nodes_terminated or some_nodes_not_stopped)
@@ -2271,8 +2338,10 @@ def _update_cluster_status(cluster_name: str) -> Optional[Dict[str, Any]]:
2271
2338
 
2272
2339
  if some_nodes_terminated:
2273
2340
  init_reason = 'one or more nodes terminated'
2341
+ elif ray_cluster_unhealthy:
2342
+ init_reason = f'ray cluster is unhealthy ({ray_status_details})'
2274
2343
  elif some_nodes_not_stopped:
2275
- init_reason = 'some nodes are up and some nodes are stopped'
2344
+ init_reason = 'some but not all nodes are stopped'
2276
2345
  logger.debug('The cluster is abnormal. Setting to INIT status. '
2277
2346
  f'node_statuses: {node_statuses}')
2278
2347
  if record['autostop'] >= 0:
@@ -2367,7 +2436,8 @@ def _update_cluster_status(cluster_name: str) -> Optional[Dict[str, Any]]:
2367
2436
  # Some status reason clears after a certain time (e.g. k8s events
2368
2437
  # are only stored for an hour by default), so it is possible that
2369
2438
  # the previous event has a status reason, but now it does not.
2370
- init_reason_regex = f'^Cluster is abnormal because {init_reason} .*'
2439
+ init_reason_regex = (f'^Cluster is abnormal because '
2440
+ f'{re.escape(init_reason)}.*')
2371
2441
  log_message = f'Cluster is abnormal because {init_reason}'
2372
2442
  if status_reason:
2373
2443
  log_message += f' ({status_reason})'
@@ -2387,10 +2457,17 @@ def _update_cluster_status(cluster_name: str) -> Optional[Dict[str, Any]]:
2387
2457
  return global_user_state.get_cluster_from_name(cluster_name)
2388
2458
  # Now is_abnormal is False: either node_statuses is empty or all nodes are
2389
2459
  # STOPPED.
2460
+ verb = 'terminated' if to_terminate else 'stopped'
2390
2461
  backend = backends.CloudVmRayBackend()
2391
2462
  global_user_state.add_cluster_event(
2392
- cluster_name, None, 'All nodes terminated, cleaning up the cluster.',
2393
- global_user_state.ClusterEventType.STATUS_CHANGE)
2463
+ cluster_name,
2464
+ None,
2465
+ f'All nodes {verb}, cleaning up the cluster.',
2466
+ global_user_state.ClusterEventType.STATUS_CHANGE,
2467
+ # This won't do anything for a terminated cluster, but it's needed for a
2468
+ # stopped cluster.
2469
+ nop_if_duplicate=True,
2470
+ )
2394
2471
  backend.post_teardown_cleanup(handle, terminate=to_terminate, purge=False)
2395
2472
  return global_user_state.get_cluster_from_name(cluster_name)
2396
2473
 
@@ -2918,44 +2995,57 @@ def get_clusters(
2918
2995
  logger.info(f'Cluster(s) not found: {bright}{clusters_str}{reset}.')
2919
2996
  records = new_records
2920
2997
 
2921
- def _update_record_with_credentials_and_resources_str(
2922
- record: Optional[Dict[str, Any]]) -> None:
2998
+ def _update_records_with_credentials_and_resources_str(
2999
+ records: List[Optional[Dict[str, Any]]]) -> None:
2923
3000
  """Add the credentials to the record.
2924
3001
 
2925
3002
  This is useful for the client side to setup the ssh config of the
2926
3003
  cluster.
2927
3004
  """
2928
- if record is None:
2929
- return
2930
- handle = record['handle']
2931
- if handle is None:
2932
- return
2933
- record['resources_str'] = resources_utils.get_readable_resources_repr(
2934
- handle, simplify=True)
2935
- record[
2936
- 'resources_str_full'] = resources_utils.get_readable_resources_repr(
2937
- handle, simplify=False)
2938
- credentials = ssh_credential_from_yaml(handle.cluster_yaml,
2939
- handle.docker_user,
2940
- handle.ssh_user)
2941
-
2942
- if not credentials:
3005
+ records_with_handle = []
3006
+
3007
+ # only act on records that have a handle
3008
+ for record in records:
3009
+ if record is None:
3010
+ continue
3011
+ handle = record['handle']
3012
+ if handle is None:
3013
+ continue
3014
+ record[
3015
+ 'resources_str'] = resources_utils.get_readable_resources_repr(
3016
+ handle, simplify=True)
3017
+ record[
3018
+ 'resources_str_full'] = resources_utils.get_readable_resources_repr(
3019
+ handle, simplify=False)
3020
+ records_with_handle.append(record)
3021
+ if len(records_with_handle) == 0:
2943
3022
  return
2944
- ssh_private_key_path = credentials.get('ssh_private_key', None)
2945
- if ssh_private_key_path is not None:
2946
- if not os.path.exists(os.path.expanduser(ssh_private_key_path)):
2947
- auth.create_ssh_key_files_from_db(ssh_private_key_path)
2948
- with open(os.path.expanduser(ssh_private_key_path),
2949
- 'r',
2950
- encoding='utf-8') as f:
2951
- credentials['ssh_private_key_content'] = f.read()
2952
- else:
2953
- private_key_path, _ = auth.get_or_generate_keys()
2954
- with open(os.path.expanduser(private_key_path),
2955
- 'r',
2956
- encoding='utf-8') as f:
2957
- credentials['ssh_private_key_content'] = f.read()
2958
- record['credentials'] = credentials
3023
+
3024
+ handles = [record['handle'] for record in records_with_handle]
3025
+ credentials = ssh_credentials_from_handles(handles)
3026
+ cached_private_keys: Dict[str, str] = {}
3027
+ for record, credential in zip(records_with_handle, credentials):
3028
+ if not credential:
3029
+ continue
3030
+ ssh_private_key_path = credential.get('ssh_private_key', None)
3031
+ if ssh_private_key_path is not None:
3032
+ expanded_private_key_path = os.path.expanduser(
3033
+ ssh_private_key_path)
3034
+ if not os.path.exists(expanded_private_key_path):
3035
+ auth.create_ssh_key_files_from_db(ssh_private_key_path)
3036
+ else:
3037
+ private_key_path, _ = auth.get_or_generate_keys()
3038
+ expanded_private_key_path = os.path.expanduser(private_key_path)
3039
+ if expanded_private_key_path in cached_private_keys:
3040
+ credential['ssh_private_key_content'] = cached_private_keys[
3041
+ expanded_private_key_path]
3042
+ else:
3043
+ with open(expanded_private_key_path, 'r',
3044
+ encoding='utf-8') as f:
3045
+ credential['ssh_private_key_content'] = f.read()
3046
+ cached_private_keys[expanded_private_key_path] = credential[
3047
+ 'ssh_private_key_content']
3048
+ record['credentials'] = credential
2959
3049
 
2960
3050
  def _update_records_with_resources(
2961
3051
  records: List[Optional[Dict[str, Any]]]) -> None:
@@ -2982,9 +3072,7 @@ def get_clusters(
2982
3072
  if handle.launched_resources.accelerators else None)
2983
3073
 
2984
3074
  # Add auth_config to the records
2985
- for record in records:
2986
- _update_record_with_credentials_and_resources_str(record)
2987
-
3075
+ _update_records_with_credentials_and_resources_str(records)
2988
3076
  if refresh == common.StatusRefreshMode.NONE:
2989
3077
  # Add resources to the records
2990
3078
  _update_records_with_resources(records)
@@ -3024,7 +3112,7 @@ def get_clusters(
3024
3112
  cluster_name,
3025
3113
  force_refresh_statuses=force_refresh_statuses,
3026
3114
  acquire_per_cluster_status_lock=True)
3027
- _update_record_with_credentials_and_resources_str(record)
3115
+ _update_records_with_credentials_and_resources_str([record])
3028
3116
  except (exceptions.ClusterStatusFetchingError,
3029
3117
  exceptions.CloudUserIdentityError,
3030
3118
  exceptions.ClusterOwnerIdentityMismatchError) as e:
@@ -65,6 +65,7 @@ from sky.utils import context_utils
65
65
  from sky.utils import controller_utils
66
66
  from sky.utils import directory_utils
67
67
  from sky.utils import env_options
68
+ from sky.utils import lock_events
68
69
  from sky.utils import locks
69
70
  from sky.utils import log_utils
70
71
  from sky.utils import message_utils
@@ -1972,7 +1973,7 @@ class RetryingVmProvisioner(object):
1972
1973
  ray_config = global_user_state.get_cluster_yaml_dict(
1973
1974
  cluster_config_file)
1974
1975
  ray_config['upscaling_speed'] = 0
1975
- common_utils.dump_yaml(cluster_config_file, ray_config)
1976
+ yaml_utils.dump_yaml(cluster_config_file, ray_config)
1976
1977
  start = time.time()
1977
1978
  returncode, stdout, stderr = ray_up()
1978
1979
  logger.debug(
@@ -2498,7 +2499,12 @@ class CloudVmRayResourceHandle(backends.backend.ResourceHandle):
2498
2499
  self.stable_internal_external_ips = stable_internal_external_ips
2499
2500
 
2500
2501
  @context_utils.cancellation_guard
2501
- @annotations.lru_cache(scope='global')
2502
+ # we expect different request to be acting on different clusters
2503
+ # (= different handles) so we have no real expectation of cache hit
2504
+ # across requests.
2505
+ # Do not change this cache to global scope
2506
+ # without understanding https://github.com/skypilot-org/skypilot/pull/6908
2507
+ @annotations.lru_cache(scope='request', maxsize=10)
2502
2508
  @timeline.event
2503
2509
  def get_command_runners(self,
2504
2510
  force_cached: bool = False,
@@ -2854,7 +2860,12 @@ class LocalResourcesHandle(CloudVmRayResourceHandle):
2854
2860
  self.is_grpc_enabled = False
2855
2861
 
2856
2862
  @context_utils.cancellation_guard
2857
- @annotations.lru_cache(scope='global')
2863
+ # we expect different request to be acting on different clusters
2864
+ # (= different handles) so we have no real expectation of cache hit
2865
+ # across requests.
2866
+ # Do not change this cache to global scope
2867
+ # without understanding https://github.com/skypilot-org/skypilot/pull/6908
2868
+ @annotations.lru_cache(scope='request', maxsize=10)
2858
2869
  @timeline.event
2859
2870
  def get_command_runners(self,
2860
2871
  force_cached: bool = False,
@@ -3112,7 +3123,12 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
3112
3123
  retry_until_up: bool = False,
3113
3124
  skip_unnecessary_provisioning: bool = False,
3114
3125
  ) -> Tuple[Optional[CloudVmRayResourceHandle], bool]:
3115
- with timeline.DistributedLockEvent(lock_id, _CLUSTER_LOCK_TIMEOUT):
3126
+ with lock_events.DistributedLockEvent(lock_id, _CLUSTER_LOCK_TIMEOUT):
3127
+ # Reset spinner message to remove any mention of being blocked
3128
+ # by other requests.
3129
+ rich_utils.force_update_status(
3130
+ ux_utils.spinner_message('Launching'))
3131
+
3116
3132
  # Try to launch the exiting cluster first. If no existing
3117
3133
  # cluster, this function will create a to_provision_config
3118
3134
  # with required resources.
@@ -3208,8 +3224,7 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
3208
3224
  global_user_state.ClusterEventType.STATUS_CHANGE,
3209
3225
  nop_if_duplicate=True)
3210
3226
  global_user_state.remove_cluster(cluster_name,
3211
- terminate=True,
3212
- remove_events=False)
3227
+ terminate=True)
3213
3228
  usage_lib.messages.usage.update_final_cluster_status(
3214
3229
  None)
3215
3230
  logger.error(
@@ -4011,8 +4026,7 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
4011
4026
  def _teardown(self,
4012
4027
  handle: CloudVmRayResourceHandle,
4013
4028
  terminate: bool,
4014
- purge: bool = False,
4015
- explicitly_requested: bool = False):
4029
+ purge: bool = False):
4016
4030
  """Tear down or stop the cluster.
4017
4031
 
4018
4032
  Args:
@@ -4087,8 +4101,7 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
4087
4101
  # ClusterOwnerIdentityMismatchError. The argument/flag
4088
4102
  # `purge` should bypass such ID mismatch errors.
4089
4103
  refresh_cluster_status=(
4090
- not is_identity_mismatch_and_purge),
4091
- explicitly_requested=explicitly_requested)
4104
+ not is_identity_mismatch_and_purge))
4092
4105
  if terminate:
4093
4106
  lock.force_unlock()
4094
4107
  break
@@ -4477,8 +4490,7 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
4477
4490
  purge: bool = False,
4478
4491
  post_teardown_cleanup: bool = True,
4479
4492
  refresh_cluster_status: bool = True,
4480
- remove_from_db: bool = True,
4481
- explicitly_requested: bool = False) -> None:
4493
+ remove_from_db: bool = True) -> None:
4482
4494
  """Teardown the cluster without acquiring the cluster status lock.
4483
4495
 
4484
4496
  NOTE: This method should not be called without holding the cluster
@@ -4542,8 +4554,7 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
4542
4554
  f'provision yaml so it '
4543
4555
  'has not been provisioned. Skipped.')
4544
4556
  global_user_state.remove_cluster(handle.cluster_name,
4545
- terminate=terminate,
4546
- remove_events=False)
4557
+ terminate=terminate)
4547
4558
  return
4548
4559
  log_path = os.path.join(os.path.expanduser(self.log_dir),
4549
4560
  'teardown.log')
@@ -4600,12 +4611,8 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
4600
4611
  raise
4601
4612
 
4602
4613
  if post_teardown_cleanup:
4603
- self.post_teardown_cleanup(
4604
- handle,
4605
- terminate,
4606
- purge,
4607
- remove_from_db,
4608
- explicitly_requested=explicitly_requested)
4614
+ self.post_teardown_cleanup(handle, terminate, purge,
4615
+ remove_from_db)
4609
4616
  return
4610
4617
 
4611
4618
  if (isinstance(cloud, clouds.IBM) and terminate and
@@ -4649,7 +4656,7 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
4649
4656
  prefix='sky_',
4650
4657
  delete=False,
4651
4658
  suffix='.yml') as f:
4652
- common_utils.dump_yaml(f.name, config)
4659
+ yaml_utils.dump_yaml(f.name, config)
4653
4660
  f.flush()
4654
4661
 
4655
4662
  teardown_verb = 'Terminating' if terminate else 'Stopping'
@@ -4705,8 +4712,7 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
4705
4712
  terminate: bool,
4706
4713
  purge: bool = False,
4707
4714
  remove_from_db: bool = True,
4708
- failover: bool = False,
4709
- explicitly_requested: bool = False) -> None:
4715
+ failover: bool = False) -> None:
4710
4716
  """Cleanup local configs/caches and delete TPUs after teardown.
4711
4717
 
4712
4718
  This method will handle the following cleanup steps:
@@ -4884,8 +4890,7 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
4884
4890
 
4885
4891
  if not terminate or remove_from_db:
4886
4892
  global_user_state.remove_cluster(handle.cluster_name,
4887
- terminate=terminate,
4888
- remove_events=explicitly_requested)
4893
+ terminate=terminate)
4889
4894
 
4890
4895
  def remove_cluster_config(self, handle: CloudVmRayResourceHandle) -> None:
4891
4896
  """Remove the YAML config of a cluster."""