dstack 0.19.8__py3-none-any.whl → 0.19.10__py3-none-any.whl

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 dstack might be problematic. Click here for more details.

Files changed (42) hide show
  1. dstack/_internal/cli/commands/config.py +1 -1
  2. dstack/_internal/cli/commands/project.py +161 -0
  3. dstack/_internal/cli/commands/ps.py +9 -2
  4. dstack/_internal/cli/main.py +2 -0
  5. dstack/_internal/cli/services/configurators/run.py +18 -11
  6. dstack/_internal/cli/utils/run.py +7 -2
  7. dstack/_internal/core/backends/azure/compute.py +5 -2
  8. dstack/_internal/core/backends/cudo/compute.py +1 -1
  9. dstack/_internal/core/backends/nebius/fabrics.py +1 -0
  10. dstack/_internal/core/backends/nebius/models.py +1 -1
  11. dstack/_internal/core/models/configurations.py +19 -3
  12. dstack/_internal/core/models/resources.py +1 -1
  13. dstack/_internal/core/models/runs.py +19 -7
  14. dstack/_internal/server/background/tasks/process_metrics.py +30 -11
  15. dstack/_internal/server/background/tasks/process_running_jobs.py +56 -18
  16. dstack/_internal/server/background/tasks/process_submitted_jobs.py +21 -12
  17. dstack/_internal/server/migrations/versions/20166748b60c_add_jobmodel_disconnected_at.py +100 -0
  18. dstack/_internal/server/migrations/versions/6c1a9d6530ee_add_jobmodel_exit_status.py +26 -0
  19. dstack/_internal/server/migrations/versions/bca2fdf130bf_add_runmodel_priority.py +34 -0
  20. dstack/_internal/server/models.py +6 -1
  21. dstack/_internal/server/routers/repos.py +8 -4
  22. dstack/_internal/server/schemas/runner.py +41 -8
  23. dstack/_internal/server/services/instances.py +6 -2
  24. dstack/_internal/server/services/jobs/__init__.py +1 -0
  25. dstack/_internal/server/services/jobs/configurators/base.py +3 -3
  26. dstack/_internal/server/services/runner/client.py +7 -4
  27. dstack/_internal/server/services/runs.py +33 -20
  28. dstack/_internal/server/settings.py +21 -1
  29. dstack/_internal/server/statics/index.html +1 -1
  30. dstack/_internal/server/statics/{main-b4f65323f5df007e1664.js → main-b4803049eac16aea9a49.js} +4 -4
  31. dstack/_internal/server/statics/{main-b4f65323f5df007e1664.js.map → main-b4803049eac16aea9a49.js.map} +1 -1
  32. dstack/_internal/server/testing/common.py +4 -0
  33. dstack/_internal/server/utils/routers.py +3 -6
  34. dstack/_internal/settings.py +4 -0
  35. dstack/api/_public/runs.py +6 -3
  36. dstack/api/server/_runs.py +6 -0
  37. dstack/version.py +1 -1
  38. {dstack-0.19.8.dist-info → dstack-0.19.10.dist-info}/METADATA +46 -34
  39. {dstack-0.19.8.dist-info → dstack-0.19.10.dist-info}/RECORD +42 -38
  40. {dstack-0.19.8.dist-info → dstack-0.19.10.dist-info}/WHEEL +0 -0
  41. {dstack-0.19.8.dist-info → dstack-0.19.10.dist-info}/entry_points.txt +0 -0
  42. {dstack-0.19.8.dist-info → dstack-0.19.10.dist-info}/licenses/LICENSE.md +0 -0
@@ -262,6 +262,7 @@ async def create_run(
262
262
  run_spec: Optional[RunSpec] = None,
263
263
  run_id: Optional[UUID] = None,
264
264
  deleted: bool = False,
265
+ priority: int = 0,
265
266
  ) -> RunModel:
266
267
  if run_spec is None:
267
268
  run_spec = get_run_spec(
@@ -282,6 +283,7 @@ async def create_run(
282
283
  run_spec=run_spec.json(),
283
284
  last_processed_at=submitted_at,
284
285
  jobs=[],
286
+ priority=priority,
285
287
  )
286
288
  session.add(run)
287
289
  await session.commit()
@@ -302,6 +304,7 @@ async def create_job(
302
304
  job_num: int = 0,
303
305
  replica_num: int = 0,
304
306
  instance_assigned: bool = False,
307
+ disconnected_at: Optional[datetime] = None,
305
308
  ) -> JobModel:
306
309
  run_spec = RunSpec.parse_raw(run.run_spec)
307
310
  job_spec = (await get_job_specs_from_run_spec(run_spec, replica_num=replica_num))[0]
@@ -323,6 +326,7 @@ async def create_job(
323
326
  instance=instance,
324
327
  instance_assigned=instance_assigned,
325
328
  used_instance_id=instance.id if instance is not None else None,
329
+ disconnected_at=disconnected_at,
326
330
  )
327
331
  session.add(job)
328
332
  await session.commit()
@@ -93,13 +93,10 @@ def get_server_client_error_details(error: ServerClientError) -> List[Dict]:
93
93
  return details
94
94
 
95
95
 
96
- def request_size_exceeded(request: Request, limit: int) -> bool:
96
+ def get_request_size(request: Request) -> int:
97
97
  if "content-length" not in request.headers:
98
- return True
99
- content_length = int(request.headers["content-length"])
100
- if content_length > limit:
101
- return True
102
- return False
98
+ return 0
99
+ return int(request.headers["content-length"])
103
100
 
104
101
 
105
102
  def check_client_server_compatibility(
@@ -12,6 +12,10 @@ DSTACK_RELEASE = os.getenv("DSTACK_RELEASE") is not None or version.__is_release
12
12
  DSTACK_USE_LATEST_FROM_BRANCH = os.getenv("DSTACK_USE_LATEST_FROM_BRANCH") is not None
13
13
 
14
14
 
15
+ DSTACK_BASE_IMAGE = os.getenv("DSTACK_BASE_IMAGE", "dstackai/base")
16
+ DSTACK_BASE_IMAGE_VERSION = os.getenv("DSTACK_BASE_IMAGE_VERSION", version.base_image)
17
+
18
+
15
19
  class FeatureFlags:
16
20
  """
17
21
  dstack feature flags. Feature flags are temporary and can be used when developing
@@ -691,29 +691,32 @@ class RunCollection:
691
691
  logger.warning("The exec_plan() method is deprecated in favor of apply_plan().")
692
692
  return self.apply_plan(run_plan=run_plan, repo=repo, reserve_ports=reserve_ports)
693
693
 
694
- def list(self, all: bool = False) -> List[Run]:
694
+ def list(self, all: bool = False, limit: Optional[int] = None) -> List[Run]:
695
695
  """
696
696
  List runs.
697
697
 
698
698
  Args:
699
699
  all: Show all runs (active and finished) if `True`.
700
+ limit: Limit the number of runs to return. Must be less than 100.
700
701
 
701
702
  Returns:
702
703
  List of runs.
703
704
  """
704
705
  # Return only one page of latest runs (<=100). Returning all the pages may be costly.
705
706
  # TODO: Consider introducing `since` filter with a reasonable default.
706
- only_active = not all
707
+ only_active = not all and limit is None
707
708
  runs = self._api_client.runs.list(
708
709
  project_name=self._project,
709
710
  repo_id=None,
710
711
  only_active=only_active,
712
+ limit=limit or 100,
711
713
  )
712
714
  if only_active and len(runs) == 0:
713
715
  runs = self._api_client.runs.list(
714
716
  project_name=self._project,
715
717
  repo_id=None,
716
- )[:1]
718
+ limit=1,
719
+ )
717
720
  return [self._model_to_run(run) for run in runs]
718
721
 
719
722
  def get(self, run_name: str) -> Optional[Run]:
@@ -115,6 +115,8 @@ def _get_apply_plan_excludes(plan: ApplyRunPlanInput) -> Optional[Dict]:
115
115
  job_submissions_excludes["job_runtime_data"] = {
116
116
  "offer": {"instance": {"resources": {"cpu_arch"}}}
117
117
  }
118
+ if all(js.exit_status is None for js in job_submissions):
119
+ job_submissions_excludes["exit_status"] = True
118
120
  latest_job_submission = current_resource.latest_job_submission
119
121
  if latest_job_submission is not None:
120
122
  latest_job_submission_excludes = {}
@@ -127,6 +129,8 @@ def _get_apply_plan_excludes(plan: ApplyRunPlanInput) -> Optional[Dict]:
127
129
  latest_job_submission_excludes["job_runtime_data"] = {
128
130
  "offer": {"instance": {"resources": {"cpu_arch"}}}
129
131
  }
132
+ if latest_job_submission.exit_status is None:
133
+ latest_job_submission_excludes["exit_status"] = True
130
134
  return {"plan": apply_plan_excludes}
131
135
 
132
136
 
@@ -182,6 +186,8 @@ def _get_run_spec_excludes(run_spec: RunSpec) -> Optional[Dict]:
182
186
  configuration_excludes["rate_limits"] = True
183
187
  if configuration.shell is None:
184
188
  configuration_excludes["shell"] = True
189
+ if configuration.priority is None:
190
+ configuration_excludes["priority"] = True
185
191
 
186
192
  if configuration_excludes:
187
193
  spec_excludes["configuration"] = configuration_excludes
dstack/version.py CHANGED
@@ -1,3 +1,3 @@
1
- __version__ = "0.19.8"
1
+ __version__ = "0.19.10"
2
2
  __is_release__ = True
3
3
  base_image = "0.7"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dstack
3
- Version: 0.19.8
3
+ Version: 0.19.10
4
4
  Summary: dstack is an open-source orchestration engine for running AI workloads on any cloud or on-premises.
5
5
  Project-URL: Homepage, https://dstack.ai
6
6
  Project-URL: Source, https://github.com/dstackai/dstack
@@ -21,7 +21,8 @@ Requires-Dist: cryptography
21
21
  Requires-Dist: cursor
22
22
  Requires-Dist: filelock
23
23
  Requires-Dist: gitpython
24
- Requires-Dist: gpuhunt==0.1.5
24
+ Requires-Dist: gpuhunt==0.1.6
25
+ Requires-Dist: humanize>=4.12.3
25
26
  Requires-Dist: jsonschema
26
27
  Requires-Dist: packaging
27
28
  Requires-Dist: paramiko>=3.2.0
@@ -54,8 +55,9 @@ Requires-Dist: azure-mgmt-network<28.0.0,>=23.0.0; extra == 'all'
54
55
  Requires-Dist: azure-mgmt-resource>=22.0.0; extra == 'all'
55
56
  Requires-Dist: azure-mgmt-subscription>=3.1.1; extra == 'all'
56
57
  Requires-Dist: backports-entry-points-selectable; extra == 'all'
57
- Requires-Dist: boto3; extra == 'all'
58
+ Requires-Dist: boto3>=1.38.13; extra == 'all'
58
59
  Requires-Dist: botocore; extra == 'all'
60
+ Requires-Dist: cryptography>=44.0.3; extra == 'all'
59
61
  Requires-Dist: datacrunch; extra == 'all'
60
62
  Requires-Dist: docker>=6.0.0; extra == 'all'
61
63
  Requires-Dist: fastapi; extra == 'all'
@@ -71,8 +73,9 @@ Requires-Dist: httpx; extra == 'all'
71
73
  Requires-Dist: jinja2; extra == 'all'
72
74
  Requires-Dist: kubernetes; extra == 'all'
73
75
  Requires-Dist: nebius<0.3,>=0.2.19; (python_version >= '3.10') and extra == 'all'
74
- Requires-Dist: oci; extra == 'all'
76
+ Requires-Dist: oci>=2.150.0; extra == 'all'
75
77
  Requires-Dist: prometheus-client; extra == 'all'
78
+ Requires-Dist: pyopenssl>=23.2.0; extra == 'all'
76
79
  Requires-Dist: python-dxf==12.1.0; extra == 'all'
77
80
  Requires-Dist: python-json-logger>=3.1.0; extra == 'all'
78
81
  Requires-Dist: sentry-sdk[fastapi]; extra == 'all'
@@ -90,7 +93,7 @@ Requires-Dist: alembic>=1.10.2; extra == 'aws'
90
93
  Requires-Dist: apscheduler<4; extra == 'aws'
91
94
  Requires-Dist: asyncpg; extra == 'aws'
92
95
  Requires-Dist: backports-entry-points-selectable; extra == 'aws'
93
- Requires-Dist: boto3; extra == 'aws'
96
+ Requires-Dist: boto3>=1.38.13; extra == 'aws'
94
97
  Requires-Dist: botocore; extra == 'aws'
95
98
  Requires-Dist: docker>=6.0.0; extra == 'aws'
96
99
  Requires-Dist: fastapi; extra == 'aws'
@@ -231,7 +234,7 @@ Requires-Dist: alembic>=1.10.2; extra == 'lambda'
231
234
  Requires-Dist: apscheduler<4; extra == 'lambda'
232
235
  Requires-Dist: asyncpg; extra == 'lambda'
233
236
  Requires-Dist: backports-entry-points-selectable; extra == 'lambda'
234
- Requires-Dist: boto3; extra == 'lambda'
237
+ Requires-Dist: boto3>=1.38.13; extra == 'lambda'
235
238
  Requires-Dist: botocore; extra == 'lambda'
236
239
  Requires-Dist: docker>=6.0.0; extra == 'lambda'
237
240
  Requires-Dist: fastapi; extra == 'lambda'
@@ -280,13 +283,15 @@ Requires-Dist: alembic>=1.10.2; extra == 'oci'
280
283
  Requires-Dist: apscheduler<4; extra == 'oci'
281
284
  Requires-Dist: asyncpg; extra == 'oci'
282
285
  Requires-Dist: backports-entry-points-selectable; extra == 'oci'
286
+ Requires-Dist: cryptography>=44.0.3; extra == 'oci'
283
287
  Requires-Dist: docker>=6.0.0; extra == 'oci'
284
288
  Requires-Dist: fastapi; extra == 'oci'
285
289
  Requires-Dist: grpcio>=1.50; extra == 'oci'
286
290
  Requires-Dist: httpx; extra == 'oci'
287
291
  Requires-Dist: jinja2; extra == 'oci'
288
- Requires-Dist: oci; extra == 'oci'
292
+ Requires-Dist: oci>=2.150.0; extra == 'oci'
289
293
  Requires-Dist: prometheus-client; extra == 'oci'
294
+ Requires-Dist: pyopenssl>=23.2.0; extra == 'oci'
290
295
  Requires-Dist: python-dxf==12.1.0; extra == 'oci'
291
296
  Requires-Dist: python-json-logger>=3.1.0; extra == 'oci'
292
297
  Requires-Dist: sentry-sdk[fastapi]; extra == 'oci'
@@ -338,24 +343,27 @@ orchestration for ML teams across top clouds and on-prem clusters.
338
343
 
339
344
  #### Accelerators
340
345
 
341
- `dstack` supports `NVIDIA`, `AMD`, `Google TPU`, and `Intel Gaudi` accelerators out of the box.
346
+ `dstack` supports `NVIDIA`, `AMD`, `Google TPU`, `Intel Gaudi`, and `Tenstorrent` accelerators out of the box.
342
347
 
343
- ## Major news ✨
348
+ ## Latest news ✨
344
349
 
345
- - [2025/02] [dstack 0.18.41: GPU blocks, Proxy jump, inactivity duration, and more](https://github.com/dstackai/dstack/releases/tag/0.18.41)
346
- - [2025/01] [dstack 0.18.38: Intel Gaudi](https://github.com/dstackai/dstack/releases/tag/0.18.38)
347
- - [2025/01] [dstack 0.18.35: Vultr](https://github.com/dstackai/dstack/releases/tag/0.18.35)
348
- - [2024/12] [dstack 0.18.30: AWS Capacity Reservations and Capacity Blocks](https://github.com/dstackai/dstack/releases/tag/0.18.30)
349
- - [2024/10] [dstack 0.18.21: Instance volumes](https://github.com/dstackai/dstack/releases/tag/0.18.21)
350
- - [2024/10] [dstack 0.18.18: Hardware metrics monitoring](https://github.com/dstackai/dstack/releases/tag/0.18.18)
350
+ - [2025/05] [dstack 0.19.8: Nebius clusters, GH200 on Lambda](https://github.com/dstackai/dstack/releases/tag/0.19.8)
351
+ - [2025/04] [dstack 0.19.6: Tenstorrent, Plugins](https://github.com/dstackai/dstack/releases/tag/0.19.6)
352
+ - [2025/04] [dstack 0.19.5: GCP A3 High clusters](https://github.com/dstackai/dstack/releases/tag/0.19.5)
353
+ - [2025/04] [dstack 0.19.3: GCP A3 Mega clusters](https://github.com/dstackai/dstack/releases/tag/0.19.3)
354
+ - [2025/03] [dstack 0.19.0: Prometheus](https://github.com/dstackai/dstack/releases/tag/0.19.0)
351
355
 
352
- ## Installation
356
+ ## How does it work?
357
+
358
+ <img src="https://dstack.ai/static-assets/static-assets/images/dstack-architecture-diagram-v8.svg" width="750" />
359
+
360
+ ### Installation
353
361
 
354
362
  > Before using `dstack` through CLI or API, set up a `dstack` server. If you already have a running `dstack` server, you only need to [set up the CLI](#set-up-the-cli).
355
363
 
356
- ### Set up the server
364
+ #### Set up the server
357
365
 
358
- #### (Optional) Configure backends
366
+ ##### (Optional) Configure backends
359
367
 
360
368
  To use `dstack` with cloud providers, configure backends
361
369
  via the `~/.dstack/server/config.yml` file.
@@ -365,21 +373,21 @@ For more details on how to configure backends, check [Backends](https://dstack.a
365
373
  > For using `dstack` with on-prem servers, create [SSH fleets](https://dstack.ai/docs/concepts/fleets#ssh)
366
374
  > once the server is up.
367
375
 
368
- #### Start the server
376
+ ##### Start the server
369
377
 
370
378
  You can install the server on Linux, macOS, and Windows (via WSL 2). It requires Git and
371
379
  OpenSSH.
372
380
 
373
- ##### pip
381
+ ##### uv
374
382
 
375
383
  ```shell
376
- $ pip install "dstack[all]" -U
384
+ $ uv tool install "dstack[all]" -U
377
385
  ```
378
386
 
379
- ##### uv
387
+ ##### pip
380
388
 
381
389
  ```shell
382
- $ uv tool install "dstack[all]" -U
390
+ $ pip install "dstack[all]" -U
383
391
  ```
384
392
 
385
393
  Once it's installed, go ahead and start the server.
@@ -392,42 +400,45 @@ The admin token is "bbae0f28-d3dd-4820-bf61-8f4bb40815da"
392
400
  The server is running at http://127.0.0.1:3000/
393
401
  ```
394
402
 
395
- For more details on server configuration options, see the
403
+ > For more details on server configuration options, see the
396
404
  [Server deployment](https://dstack.ai/docs/guides/server-deployment) guide.
397
405
 
398
- ### Set up the CLI
406
+
407
+ <details><summary>Set up the CLI</summary>
408
+
409
+ #### Set up the CLI
399
410
 
400
411
  Once the server is up, you can access it via the `dstack` CLI.
401
412
 
402
413
  The CLI can be installed on Linux, macOS, and Windows. It requires Git and OpenSSH.
403
414
 
404
- ##### pip
415
+ ##### uv
405
416
 
406
417
  ```shell
407
- $ pip install dstack -U
418
+ $ uv tool install dstack -U
408
419
  ```
409
420
 
410
- ##### uv
421
+ ##### pip
411
422
 
412
423
  ```shell
413
- $ uv tool install dstack -U
424
+ $ pip install dstack -U
414
425
  ```
415
426
 
416
427
  To point the CLI to the `dstack` server, configure it
417
428
  with the server address, user token, and project name:
418
429
 
419
430
  ```shell
420
- $ dstack config \
431
+ $ dstack project add \
432
+ --name main \
421
433
  --url http://127.0.0.1:3000 \
422
- --project main \
423
434
  --token bbae0f28-d3dd-4820-bf61-8f4bb40815da
424
435
 
425
436
  Configuration is updated at ~/.dstack/config.yml
426
437
  ```
427
438
 
428
- ## How does it work?
439
+ </details>
429
440
 
430
- ### 1. Define configurations
441
+ ### Define configurations
431
442
 
432
443
  `dstack` supports the following configurations:
433
444
 
@@ -440,7 +451,7 @@ Configuration is updated at ~/.dstack/config.yml
440
451
 
441
452
  Configuration can be defined as YAML files within your repo.
442
453
 
443
- ### 2. Apply configurations
454
+ ### Apply configurations
444
455
 
445
456
  Apply the configuration either via the `dstack apply` CLI command or through a programmatic API.
446
457
 
@@ -452,6 +463,7 @@ out-of-capacity errors, port-forwarding, and more &mdash; across clouds and on-p
452
463
  For additional information, see the following links:
453
464
 
454
465
  * [Docs](https://dstack.ai/docs)
466
+ * [Examples](https://dstack.ai/examples)
455
467
  * [Discord](https://discord.gg/u8SmfwPpMd)
456
468
 
457
469
  ## Contributing
@@ -1,15 +1,15 @@
1
1
  dstack/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- dstack/version.py,sha256=oR0QmUkjAU0DEnlfWpUCO78TpWiiucCIz4_FvmSdXUE,64
2
+ dstack/version.py,sha256=1w-1PVkazoEpWhJboy2UsLiK2Ezuk8Le2ZyTHPXYf7E,65
3
3
  dstack/_internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  dstack/_internal/compat.py,sha256=bF9U9fTMfL8UVhCouedoUSTYFl7UAOiU0WXrnRoByxw,40
5
- dstack/_internal/settings.py,sha256=otvcNT0X5UnGZdoNIWNFZBohQRzLme9Zc6oiBzc1BEk,796
5
+ dstack/_internal/settings.py,sha256=GOqfcLEONWC1hGU36IYPuOhJXP_qC3Y6d2SQge_NdpY,953
6
6
  dstack/_internal/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
- dstack/_internal/cli/main.py,sha256=WMYyoYKJbuuVruFgW5gtnmheRZwy51YdvSKMgRBbAQg,3693
7
+ dstack/_internal/cli/main.py,sha256=cuOcaRxeWxO7zYM9dFRe5uc6U_RxEFjzS5sd4-8KkFA,3798
8
8
  dstack/_internal/cli/commands/__init__.py,sha256=e8EjD8Ej7Q3_APlxAN7NBwY7dGnW-DR91nH_RgcjBXg,2023
9
9
  dstack/_internal/cli/commands/apply.py,sha256=dZH2B3Yr-lB7hs-QeUnvX0FV0Yk2x19dEO5uSFo4098,4909
10
10
  dstack/_internal/cli/commands/attach.py,sha256=3by0imi2Wj2vUjvanPw97XUvDYxSj01YXYrrjrjNseE,5070
11
11
  dstack/_internal/cli/commands/completion.py,sha256=2gDBYNb9u1JtuvZaAzqEOy0_ZatBvwn0Aq10j138xnA,546
12
- dstack/_internal/cli/commands/config.py,sha256=wc4haqU2-a65DcHdIH0gLyz3ViZ05dR7RXTlPm92G9g,3113
12
+ dstack/_internal/cli/commands/config.py,sha256=cpNCVCklQDW4vcdD9ovtJs6bcDIM1dULOZ6PKx3D39o,3148
13
13
  dstack/_internal/cli/commands/delete.py,sha256=agFBwJg8JXy1xp1UplRFLEPbix1bKvt6XvSBKpSPwYI,1418
14
14
  dstack/_internal/cli/commands/fleet.py,sha256=J0Yi5CAYvIQF_NC4ZBsDYGc3grTOtvaF7sVcobd19Go,4028
15
15
  dstack/_internal/cli/commands/gateway.py,sha256=DcD6P_MvXbSL9aXkLX9hgGYSAzARjgY6RSbrCMzdNcg,6075
@@ -17,7 +17,8 @@ dstack/_internal/cli/commands/init.py,sha256=bLhSlViNWtjflB6xNq_PuCR2o2A06h222lu
17
17
  dstack/_internal/cli/commands/logs.py,sha256=o8ehPAKM12Xn9thg2jjnYdr7_wKqF-00ziVry8IVVwE,1528
18
18
  dstack/_internal/cli/commands/metrics.py,sha256=nxdTcyCvHNev7Mn19zGQ7vTHUBGY6hyvPtY6Z731SOU,5373
19
19
  dstack/_internal/cli/commands/offer.py,sha256=rf10T9ohEC77GmZexdqF_RBCQkLYzVSAwTzZlxukNYM,4085
20
- dstack/_internal/cli/commands/ps.py,sha256=WUQKL-1HcoM-oFF_WX4zplO8yKGMWfVbsivg0L7LP2w,1666
20
+ dstack/_internal/cli/commands/project.py,sha256=V8gJwQWQGvGKQJPUyce_M7Ij_B7bOxYzo2IQgkLLHFE,6151
21
+ dstack/_internal/cli/commands/ps.py,sha256=5RU4mcL4-FT4PcXktfKb4htCOPqia7mIuVGgfK7x9lY,1894
21
22
  dstack/_internal/cli/commands/server.py,sha256=4K0tp_tIUStCEMpWrUkRLwe27IgAt99RPpk2H1AWnXk,2817
22
23
  dstack/_internal/cli/commands/stats.py,sha256=_CiJPQZuKHUzA1x7CHJP-leth3MmqiQ2-jwojq6G-e8,390
23
24
  dstack/_internal/cli/commands/stop.py,sha256=i7TreejSemrQcL7C37La22KkwM98O09IDMRNt8cw1NI,1000
@@ -31,14 +32,14 @@ dstack/_internal/cli/services/configurators/__init__.py,sha256=z94VPBFqybP8Zpwy3
31
32
  dstack/_internal/cli/services/configurators/base.py,sha256=bGfde2zoma28lLE8MUACO4-NKT1CdJJQJoXrzjpz0mQ,3360
32
33
  dstack/_internal/cli/services/configurators/fleet.py,sha256=jm4tNH6QQVplLdboCTlvRYUee3nZ0UYb_qLTrvtYVYM,14049
33
34
  dstack/_internal/cli/services/configurators/gateway.py,sha256=czB2s89s7IowOmWnpDwWErPAUlW3FvFMizImhrkQiBM,8927
34
- dstack/_internal/cli/services/configurators/run.py,sha256=ygfFWcZZ6nBXZUPmBtX5s0r0szOTjR8tNnErHsizDnk,25383
35
+ dstack/_internal/cli/services/configurators/run.py,sha256=nXNjFrM5YT6RFqPXJQa4MOiEsG6IFiANyGKP-PXILdc,25518
35
36
  dstack/_internal/cli/services/configurators/volume.py,sha256=riMXLQbgvHIIFwLKdHfad-_0iE9wE3G_rUmXU5P3ZS8,8519
36
37
  dstack/_internal/cli/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
38
  dstack/_internal/cli/utils/common.py,sha256=rfmzqrsgR3rXW3wj0vxDdvrhUUg2aIy4A6E9MZbd55g,1763
38
39
  dstack/_internal/cli/utils/fleet.py,sha256=ch-LN1X9boSm-rFLW4mAJRmz0XliLhH0LvKD2DqSt2g,3942
39
40
  dstack/_internal/cli/utils/gateway.py,sha256=qMYa1NTAT_O98x2_mSyWDRbiHj5fqt6xUXFh9NIUwAM,1502
40
41
  dstack/_internal/cli/utils/rich.py,sha256=Gx1MJU929kMKsbdo9qF7XHARNta2426Ssb-xMLVhwbQ,5710
41
- dstack/_internal/cli/utils/run.py,sha256=-zfOA_SqBOqHXuQIXnZrxhxt7iYOnsUjqZZ1TzVHmUE,9023
42
+ dstack/_internal/cli/utils/run.py,sha256=nCQwAU3VDS8ec2oWNjRKi5xIGdwwKI_YNr8vgGyDPzQ,9202
42
43
  dstack/_internal/cli/utils/updates.py,sha256=sAPYYptkFzQnGaRjv7FV7HOj-Be3IXGe63xj-sVEpv4,2566
43
44
  dstack/_internal/cli/utils/volume.py,sha256=mU9I06dVMFbpjfkefxrZNoSWadKLoib3U14rHudNQN4,1975
44
45
  dstack/_internal/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -57,7 +58,7 @@ dstack/_internal/core/backends/aws/resources.py,sha256=Wht_USG8ps9HQBhAYfxDxjaob
57
58
  dstack/_internal/core/backends/azure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
59
  dstack/_internal/core/backends/azure/auth.py,sha256=CHp3QRNx3tIwkhyOY_l8WU-ElY4Pxhavoy9JSdwr15g,1259
59
60
  dstack/_internal/core/backends/azure/backend.py,sha256=XySTor8v_tLkZctDBryrFHrbVzQgNf_RUPkXQYplvwM,746
60
- dstack/_internal/core/backends/azure/compute.py,sha256=q3LB04_NZmEnG_Yd9bzFZBEtkgywYtZGAi2sOaibytI,24224
61
+ dstack/_internal/core/backends/azure/compute.py,sha256=3CH6m1ytCG-cvj3sAQG3BPpehZQ7XQkAFE8JOyja0V8,24433
61
62
  dstack/_internal/core/backends/azure/configurator.py,sha256=cC0YhiayPtrOEEr8Lr-9nDDq6v2-sbxK-1QhixpM1YY,18228
62
63
  dstack/_internal/core/backends/azure/models.py,sha256=ap0WsYBSFdDCxY0G3W1sg2DBN2k0xknz6bp8Ypf6phs,3356
63
64
  dstack/_internal/core/backends/azure/resources.py,sha256=cJWS2Yjxdg-XtjpdBxfVDZaX_gTbuoEpmdjTxdA9uIw,3431
@@ -71,7 +72,7 @@ dstack/_internal/core/backends/base/offers.py,sha256=AzAAx5eSTaHv8CbWuGERTHS151x
71
72
  dstack/_internal/core/backends/cudo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
73
  dstack/_internal/core/backends/cudo/api_client.py,sha256=ygq1Gx7ZvwKaifdXtvzDSw4xR4ZH6UWd5J47BjuaGh0,3685
73
74
  dstack/_internal/core/backends/cudo/backend.py,sha256=i13YoAkUfIStc3Yyyt_3YmL30eVrKtrhwnE9_B1iBRI,546
74
- dstack/_internal/core/backends/cudo/compute.py,sha256=xtA09zvcM6xpp6YdHK6W20GcXA4zOfuHnU0tbODUo14,6466
75
+ dstack/_internal/core/backends/cudo/compute.py,sha256=wGMdH4Me-IHuQ-U1_XiuOqtHT86AgHyofUi449eqijo,6466
75
76
  dstack/_internal/core/backends/cudo/configurator.py,sha256=pkAT1MtL6_yYvYoqCglvPE-DiUdL8-XEviyN1yUSYyw,2056
76
77
  dstack/_internal/core/backends/cudo/models.py,sha256=6sfEqY2hvTpIACkyT4mhD3D8K5TsW_pupys9nqtrgoI,1055
77
78
  dstack/_internal/core/backends/datacrunch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -109,8 +110,8 @@ dstack/_internal/core/backends/nebius/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCe
109
110
  dstack/_internal/core/backends/nebius/backend.py,sha256=2XqZIbSR8VzlfOnuVklXlDxNmwAkQj7txQN8VXF1j2E,566
110
111
  dstack/_internal/core/backends/nebius/compute.py,sha256=OUNvDk9rU13NR0CADFqn7nQL8kxgSvL7kbNEV4cLzyQ,14761
111
112
  dstack/_internal/core/backends/nebius/configurator.py,sha256=ML2KCD6Ddxc2f6X1juxqKulUcOjF6uJk20_0Teyi65A,3072
112
- dstack/_internal/core/backends/nebius/fabrics.py,sha256=09eXtzSWpK7Oxv4N1pOmXzBJgbi2d5yC6gvcizHhplg,1476
113
- dstack/_internal/core/backends/nebius/models.py,sha256=-qM-F_c2Hf4ZL5AXmtQiGA5q1PyGsCCPhmRFHEyx2dw,4253
113
+ dstack/_internal/core/backends/nebius/fabrics.py,sha256=jC7ngUO54rXbyXI4hkl5_9GdBk7h4Ivyh88CH4S37ds,1546
114
+ dstack/_internal/core/backends/nebius/models.py,sha256=UudYX32p-ZY-GWR83VEtY5dpZBaWhKXQIfn2nrBCq-4,4245
114
115
  dstack/_internal/core/backends/nebius/resources.py,sha256=hx_VqiaurGO0MYT2KEvMl9EYdcglBRQsWSY5kHKjR00,12163
115
116
  dstack/_internal/core/backends/oci/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
116
117
  dstack/_internal/core/backends/oci/auth.py,sha256=8Cr18y_LOsyRP-16yfFpT70Cofpm0clB3KawS_7aRl4,717
@@ -155,7 +156,7 @@ dstack/_internal/core/backends/vultr/models.py,sha256=TkqK_lW6w5k_7wsoFiKDb6NXuT
155
156
  dstack/_internal/core/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
156
157
  dstack/_internal/core/models/common.py,sha256=XWd79dmFGMrdpTcStH5fVmNXCKE0s7FsIorPL0saQ8w,2138
157
158
  dstack/_internal/core/models/config.py,sha256=JJ7rT7dztzTWCY5TkoyxXxTvG5D4IFYhGe7EzwkLOWQ,581
158
- dstack/_internal/core/models/configurations.py,sha256=c2717pYpna6u2bmtmC3DlX67HtQa-Tud387mUVa4vEg,18498
159
+ dstack/_internal/core/models/configurations.py,sha256=I-BRBls-oSZ2EZy5glC4_PJbdM-_KnoAxl6gm1u16tg,19027
159
160
  dstack/_internal/core/models/envs.py,sha256=yq84YRFBILOy4x3XnGcTgYpbZ69eFTCQPgBCr9Ndov4,4969
160
161
  dstack/_internal/core/models/fleets.py,sha256=gbP2rj1ODDuy4IfTbPNB-ae050thvzTtA8uDb5iTmdY,12059
161
162
  dstack/_internal/core/models/gateways.py,sha256=_O8EWwHWLdgNoWY4P4u71KM-uEr5DDp42LXfyv1qMDI,4054
@@ -165,8 +166,8 @@ dstack/_internal/core/models/metrics.py,sha256=Xb8hCXUL-ncQ3PMsErIUAJTe9gwh5jyrQ
165
166
  dstack/_internal/core/models/placement.py,sha256=WJVq5ENJykyRarQzL2EeYQag_9_jV7VSAtR_xoFvPVM,720
166
167
  dstack/_internal/core/models/profiles.py,sha256=seeysTuMv1vVUmpHAZgrMUGcbMtH7hSMFIvfx0Qk__0,10406
167
168
  dstack/_internal/core/models/projects.py,sha256=H5ZZRiyUEKifpTFAhl45KBi5ly7ooE0WmI329myK360,643
168
- dstack/_internal/core/models/resources.py,sha256=fDAcbXNYQHb9KopFVMLNXftC9OsJaOFiKP1cIrPDnps,14121
169
- dstack/_internal/core/models/runs.py,sha256=OMT69BfUUiaxRNUjTCZbWahHCTVBXXUF9jaYa6xgH38,18531
169
+ dstack/_internal/core/models/resources.py,sha256=rsf6hAhi5bfSb_Z9VcS3UoEG0G8Ohl6ekyrOStLOAqw,14114
170
+ dstack/_internal/core/models/runs.py,sha256=Xkv1kY68JA0eJUeCVJjM9YWRkfy6P1RGXslBIMtox2E,18985
170
171
  dstack/_internal/core/models/secrets.py,sha256=IQyemsNpSzqOCB-VlVTuc4gyPFmXXO4mhko0Ur0ey3I,221
171
172
  dstack/_internal/core/models/server.py,sha256=Hkc1v2s3KOiwslsWVmhUOAzcSeREoG-HD1SzSX9WUGg,152
172
173
  dstack/_internal/core/models/services.py,sha256=2Hpi7j0Q1shaf_0wd0C0044AJAmuYi-D3qx3PH849oI,3076
@@ -250,20 +251,20 @@ dstack/_internal/server/app.py,sha256=K2NojwUKdktdenrR61I21kXIMX6ars6zB9v6Ea-evz
250
251
  dstack/_internal/server/db.py,sha256=WjuqmjG3QAZmSMCeUaJ_ynbowlHuNAvYCZO649cTPHc,3210
251
252
  dstack/_internal/server/deps.py,sha256=31e8SU_ogPJWHIDLkgl7cuC_5V91xbJoLyAj17VanfM,670
252
253
  dstack/_internal/server/main.py,sha256=kztKhCYNoHSDyJJQScWfZXE0naNleJOCQULW6dd8SGw,109
253
- dstack/_internal/server/models.py,sha256=S0L7G_3q6akytdCZ1svukzCSY0kdwnGplbHwTAUBpwo,29351
254
- dstack/_internal/server/settings.py,sha256=1iqXWgvvsr19jXX1javGdPj6UhOfOHuuXSXgmGtjO2A,3335
254
+ dstack/_internal/server/models.py,sha256=6F_w9kQ2UWfcp5s39zQtUjF9oNh7mCSULnqmmHC3c8M,29695
255
+ dstack/_internal/server/settings.py,sha256=milGlyLfRaaMcnGUEYeKTnOzBLfmdsN2Jsd_aif38aM,4211
255
256
  dstack/_internal/server/background/__init__.py,sha256=8kTbhEHCeXTibsOlHY1HwqIO6gGb4q8fUa2fcDrah1c,3893
256
257
  dstack/_internal/server/background/tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
257
258
  dstack/_internal/server/background/tasks/common.py,sha256=N7xSXbf2MoBWgbJ1e3AEzYBTf1Gn-pDXYND8Zr_YCJQ,970
258
259
  dstack/_internal/server/background/tasks/process_fleets.py,sha256=LsD3I7iCbQs_nexJ1kfnn1VPz3BffFmALRgpk5DHGO4,2985
259
260
  dstack/_internal/server/background/tasks/process_gateways.py,sha256=hoUI1CSqbHt_uMwnzTRAEDl-LBw0wUk_W4xobIbdvRc,7017
260
261
  dstack/_internal/server/background/tasks/process_instances.py,sha256=E1NLac4ubiF6jUr9M7rj8cjQf4zFZCBVr428UBgFeGI,42855
261
- dstack/_internal/server/background/tasks/process_metrics.py,sha256=acySfsacpYbTPV9Yivs-oU37z1S2sUdWhRHdJkfBcCA,5332
262
+ dstack/_internal/server/background/tasks/process_metrics.py,sha256=aJPHnmKQE19JVxJVwGFyyK7buUcbp9Smw9CkFO2DPAk,6135
262
263
  dstack/_internal/server/background/tasks/process_placement_groups.py,sha256=gJ8Um3Vx-brazHVWdtVXPnov4rwvDr-0Vn1Voq1cYBQ,4108
263
264
  dstack/_internal/server/background/tasks/process_prometheus_metrics.py,sha256=9VoGFqdiXcVkCi_NV1VqQdqllDkB0bHIqOHKMIZK1Fg,5183
264
- dstack/_internal/server/background/tasks/process_running_jobs.py,sha256=U6JdkEnpIApbiSRLKxqjNwA9WFAZY2zZNXujofhUd_g,34719
265
+ dstack/_internal/server/background/tasks/process_running_jobs.py,sha256=jyuYOQfXIVGu5ugTennwSGXL_c6VDNJN96-Qrz7Hgic,36441
265
266
  dstack/_internal/server/background/tasks/process_runs.py,sha256=EI1W6HUyB-og3g8BDP_GsBrJjQ-Z3JvZHTuJf7CRKRM,17974
266
- dstack/_internal/server/background/tasks/process_submitted_jobs.py,sha256=-XOApBgmn9ZyCoeXgnbp6cnsFT3uxE_-xqLtn1ez5dc,26603
267
+ dstack/_internal/server/background/tasks/process_submitted_jobs.py,sha256=9Etgo9-Fdx5g9xk0OsJXcfVm2dssLTKLT0FLvWJO4kU,27397
267
268
  dstack/_internal/server/background/tasks/process_terminating_jobs.py,sha256=0Z3Q409RwSxOL_pgK8JktBthjtESEUH3ahwTLsTdYPk,3800
268
269
  dstack/_internal/server/background/tasks/process_volumes.py,sha256=206rbT4ICeZtEmqh_94Rry_fgHfFLLaSEX9W-svwFk4,5089
269
270
  dstack/_internal/server/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -277,6 +278,7 @@ dstack/_internal/server/migrations/versions/14f2cb002fc2_add_jobmodel_removed_fl
277
278
  dstack/_internal/server/migrations/versions/1a48dfe44a40_rework_termination_handling.py,sha256=sqYOR7ZoUifmRrZz2DBaO-D_Pgu20nup15yihg1FBcM,1417
278
279
  dstack/_internal/server/migrations/versions/1e3fb39ef74b_add_remote_connection_details.py,sha256=x4FdfUD4XI7nxcppnw5juFKksusYMA4EXNxs0UEETFE,649
279
280
  dstack/_internal/server/migrations/versions/1e76fb0dde87_add_jobmodel_inactivity_secs.py,sha256=4-H_mGGSD6tI7H0HQ-pBs5wixMKdDro6KtLdH_QId28,831
281
+ dstack/_internal/server/migrations/versions/20166748b60c_add_jobmodel_disconnected_at.py,sha256=Vj7VPo67pAy6gHztSrbp9HmzAz0ckROeV6HxDfvRwOw,3085
280
282
  dstack/_internal/server/migrations/versions/23e01c56279a_make_blob_nullable.py,sha256=O5ZrwAXs1ubPrChyItCbuEeAPrlRF_ys1nVw4knAO5g,845
281
283
  dstack/_internal/server/migrations/versions/252d3743b641_.py,sha256=z3mMF3YCEg6ueoj746cDNBNlQSimmBOcVLNupOv2UuU,1246
282
284
  dstack/_internal/server/migrations/versions/27d3e55759fa_add_pools.py,sha256=yKEQ1OdPZSaO8YxRd986mJjNc9CjeO6SqY5SmL6aGfE,5433
@@ -296,6 +298,7 @@ dstack/_internal/server/migrations/versions/5ec538b70e71_replace_instansestatus.
296
298
  dstack/_internal/server/migrations/versions/60e444118b6d_add_jobprometheusmetrics.py,sha256=PKqFqe6x6bkO8hrv73fes4uyBpzsemqwp3c-i5XzaS8,1195
297
299
  dstack/_internal/server/migrations/versions/63c3f19cb184_add_jobterminationreason_inactivity_.py,sha256=UyNT3d8Osa2MpuODQRdmmbHlt-qT-wHNNOUTzUEcLLI,2512
298
300
  dstack/_internal/server/migrations/versions/686fb8341ea5_add_user_emails.py,sha256=0FlRf5Mis9ZIc7X6M9yqPtyFqR2SKCTUFfZeDbqAXBU,809
301
+ dstack/_internal/server/migrations/versions/6c1a9d6530ee_add_jobmodel_exit_status.py,sha256=aYZIGWhM38hZ6SkrUsFESOmOIVhSAIbA9dbyFKsLUr8,615
299
302
  dstack/_internal/server/migrations/versions/710e5b3fac8f_add_encryption.py,sha256=nBURp4A6TpT13H1ccH4WyzkU2GGy3uDGKCNG88cAciw,1827
300
303
  dstack/_internal/server/migrations/versions/7b24b1c8eba7_add_instancemodel_last_processed_at.py,sha256=o1A8nzrmMFcivBzaIMemCtRfCZ9mq1IuBko1CJXoVOo,2124
301
304
  dstack/_internal/server/migrations/versions/7ba3b59d7ca6_add_runmodel_resubmission_attempt.py,sha256=FUvCRzOzkp8HjRYy0-kuOwvBGbwuCgyjXU7hD-AWRJs,1045
@@ -317,6 +320,7 @@ dstack/_internal/server/migrations/versions/afbc600ff2b2_add_created_at_to_userm
317
320
  dstack/_internal/server/migrations/versions/b4d6ad60db08_add_instancemodel_unreachable.py,sha256=rnmLqt_pzNtqMqcmzXIPZxs5WxDE7ieAdI6SnKUFjqM,1038
318
321
  dstack/_internal/server/migrations/versions/b88d55c2a07d_replace_instancestatus_ready.py,sha256=rp97ZU0HK3i-iQIsqYYXHG6q45jjCLk-ZfSHhuFlE0Y,359
319
322
  dstack/_internal/server/migrations/versions/bc8ca4a505c6_store_backendtype_as_string.py,sha256=et_r-uB-fb5hDIHoLDs-VzeyGNjbXRUT7yc9oy3uJZ0,4307
323
+ dstack/_internal/server/migrations/versions/bca2fdf130bf_add_runmodel_priority.py,sha256=p6k9K6PhOygJYRoFW6YD8IwtIYz1bJCih0PTqM8vnsY,984
320
324
  dstack/_internal/server/migrations/versions/bfba43f6def2_.py,sha256=-YJe8iUseRVF868uQsTQfrTmNo4m0HIfwpHwVREztHY,818
321
325
  dstack/_internal/server/migrations/versions/c00090eaef21_support_fleets.py,sha256=c_L2JCDHwnagFHvOA_eyn-gib4vGzuMCsyS1HCUmgvI,3824
322
326
  dstack/_internal/server/migrations/versions/c154eece89da_add_fields_for_async_gateway_creation.py,sha256=hQusacx85a-q00fwu6QIZBWdoDKr2naKoTaI7J4yjFU,2510
@@ -343,7 +347,7 @@ dstack/_internal/server/routers/logs.py,sha256=_Euk283LbhlwHibJTKM-7YcpbeQFtWBqM
343
347
  dstack/_internal/server/routers/metrics.py,sha256=VFgWhkOvxVFDLlRM_kXHYFylLcfCD6UjXInvcd7H4dY,2314
344
348
  dstack/_internal/server/routers/projects.py,sha256=0R-w_6WXUbNo6fREAexFUQ3RoOJF2D_Iz35elKjym14,2717
345
349
  dstack/_internal/server/routers/prometheus.py,sha256=UAcOE8dpGZe4Wd0EOIlFPMbjaNjzX8A7iHlooeRvsfo,944
346
- dstack/_internal/server/routers/repos.py,sha256=P_zLoEQderxhCeHQJwRkrIhVcc0-cpabfyde22bWVRk,3362
350
+ dstack/_internal/server/routers/repos.py,sha256=wXtfQBEwGtHIWg1-EMMigMAby42Exe7iFhwPKkg8JQ4,3723
347
351
  dstack/_internal/server/routers/runs.py,sha256=p44c_0bqwG1v5S_qX-HKbap1nmk1F2JVqaIXihjiUfY,5388
348
352
  dstack/_internal/server/routers/secrets.py,sha256=50_qJCTYRpnGSlLyS93gqoV17wWewOVmM65PcG1bT_Y,856
349
353
  dstack/_internal/server/routers/server.py,sha256=8pQmfyZj0nbebeOK9JuKhw9JmYuIYfJnY0LuYynWnGY,346
@@ -358,7 +362,7 @@ dstack/_internal/server/schemas/instances.py,sha256=MedAVbKa_1F9zhdSPrjMmL-Og5Dp
358
362
  dstack/_internal/server/schemas/logs.py,sha256=JGt39fBEFRjHhlGT1jIC6kwQhujxPO8uecjplzjTZXY,402
359
363
  dstack/_internal/server/schemas/projects.py,sha256=UmHtX0pkr3L_vPsosvRC9JneqBrYaJvVKd4OxhYySHc,566
360
364
  dstack/_internal/server/schemas/repos.py,sha256=Sit0Tqol79VOMGGp8ncZXLLsZ4INcF-pAA_jwRchYqA,666
361
- dstack/_internal/server/schemas/runner.py,sha256=L9cG4n8bt_wJQhk9iWeIHEOlOPuoE0aDXlMEfPNZX7s,4424
365
+ dstack/_internal/server/schemas/runner.py,sha256=CqlP90yvPKaavAqxLOxewIMq3cHeT_NWfR0YO81JfU0,5151
362
366
  dstack/_internal/server/schemas/runs.py,sha256=XhlTnn67g4NWVmIJFQdy2yPK_EcnSIYOCCSex0XOIes,1341
363
367
  dstack/_internal/server/schemas/secrets.py,sha256=mfqLSM7PqxVQ-GIWB6RfPRUOvSvvaRv-JxXAYxZ6dyY,373
364
368
  dstack/_internal/server/schemas/users.py,sha256=FuDqwRVe3mOmv497vOZKjI0a_d4Wt2g4ZiCJcyfHEKA,495
@@ -369,7 +373,7 @@ dstack/_internal/server/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRk
369
373
  dstack/_internal/server/services/config.py,sha256=yo8njslwfS7_blhbPPhOtzCMyg8N_mmFSw5aPvirSzw,10691
370
374
  dstack/_internal/server/services/docker.py,sha256=zAvjFHxIP03Td92NzbGEScz0piLjloE60tQ7vz0AeCA,5328
371
375
  dstack/_internal/server/services/fleets.py,sha256=5BQ3DYBx0XWfcJJjaOemNoYPkvlkNsZ_uqA01YjjKxY,26587
372
- dstack/_internal/server/services/instances.py,sha256=Cy0mMcaSFQyIr2xiEgN5d_rTm3c4g8nlJqK_KtG9tjg,18518
376
+ dstack/_internal/server/services/instances.py,sha256=4feu9RfixOIVsLoFPHiYYUe0L6sf3v3h1asTBSF5cyc,18686
373
377
  dstack/_internal/server/services/locking.py,sha256=7JUgNSplKRx7dxC4LIpmWw81agUtslEDTeDiNMPbAVg,3013
374
378
  dstack/_internal/server/services/logging.py,sha256=Nu1628kW2hqB__N0Eyr07wGWjVWxfyJnczonTJ72kSM,417
375
379
  dstack/_internal/server/services/metrics.py,sha256=jKLy1jSCVR_crqVu_CmsOMbvMkucWBandI0SS1LDeRQ,6896
@@ -381,7 +385,7 @@ dstack/_internal/server/services/projects.py,sha256=Je1iWZ-ArmyFxK1yMUzod5WRXyiI
381
385
  dstack/_internal/server/services/prometheus.py,sha256=xq5G-Q2BJup9lS2F6__0wUVTs-k1Gr3dYclGzo2WoWo,12474
382
386
  dstack/_internal/server/services/repos.py,sha256=f9ztN7jz_2gvD9hXF5sJwWDVyG2-NHRfjIdSukowPh8,9342
383
387
  dstack/_internal/server/services/resources.py,sha256=VRFOih_cMJdc0c2m9nSGsX8vWAJQV3M6N87aqS_JXfw,699
384
- dstack/_internal/server/services/runs.py,sha256=Wcvz65TYtWv2YWeSseNvKSnOD85roADh3N8UToHP3nc,38543
388
+ dstack/_internal/server/services/runs.py,sha256=Vm-dWX8-ZL6TANnyh0KdEg_UIMaKOky8N8SYoMSQRCQ,39167
385
389
  dstack/_internal/server/services/storage.py,sha256=6I0xI_3_RpJNbKZwHjDnjrEwXGdHfiaeb5li15T-M1I,1884
386
390
  dstack/_internal/server/services/users.py,sha256=W-5xL7zsHNjeG7BBK54RWGvIrBOrw-FF0NcG_z9qhoE,7466
387
391
  dstack/_internal/server/services/volumes.py,sha256=vfKY6eZp64I58Mfdvrk9Wig7deveD2Rw4ET1cbc1Sog,16238
@@ -396,9 +400,9 @@ dstack/_internal/server/services/gateways/__init__.py,sha256=Up8uFsEQDBE0yOXn7n5
396
400
  dstack/_internal/server/services/gateways/client.py,sha256=XIJX3fGBbZ_AG8qZMTSE8KAB_ojq5YJFa0OXoD_dofg,7493
397
401
  dstack/_internal/server/services/gateways/connection.py,sha256=ot3lV85XdmCT45vBWeyj57nLPcLPNm316zu3jMyeWjA,5625
398
402
  dstack/_internal/server/services/gateways/pool.py,sha256=0LclTl1tyx-doS78LeaAKjr-SMp98zuwh5f9s06JSd0,1914
399
- dstack/_internal/server/services/jobs/__init__.py,sha256=XR23KU--yX4sLszLoCCQDPKLw9cKgrHdkI9SgIHvwHY,25535
403
+ dstack/_internal/server/services/jobs/__init__.py,sha256=GU3vMC0SZKyvL564A7t_QRoDjf83-8GsUkguDWK5x6c,25578
400
404
  dstack/_internal/server/services/jobs/configurators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
401
- dstack/_internal/server/services/jobs/configurators/base.py,sha256=QSIU1OoZ794HKdwjo5iXxGUvFE8a2-g_SoYjAQjXhcI,11354
405
+ dstack/_internal/server/services/jobs/configurators/base.py,sha256=kgCbEom7hGPunrUxXI0NjXGlTdNq_Q27u56lrExDnT8,11390
402
406
  dstack/_internal/server/services/jobs/configurators/dev.py,sha256=ufN6Sd8TwIsjQYNZE32fkAqJI7o2zjgoZThbrP-bd7U,2378
403
407
  dstack/_internal/server/services/jobs/configurators/service.py,sha256=FOWrLE-6YFSMuGqjOwYTLMV4FuIM5lCMDFjS0l0CoLI,929
404
408
  dstack/_internal/server/services/jobs/configurators/task.py,sha256=0-B3oO-61Eq4-mmlLmqJPliFKHhvvIV0tqc12slcQuA,1436
@@ -420,7 +424,7 @@ dstack/_internal/server/services/proxy/routers/service_proxy.py,sha256=5oB-SX8f_
420
424
  dstack/_internal/server/services/proxy/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
421
425
  dstack/_internal/server/services/proxy/services/service_proxy.py,sha256=4JrSxHqhBYqU1oENii89Db-bzkFWExYrOy-0mNEhWBs,4879
422
426
  dstack/_internal/server/services/runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
423
- dstack/_internal/server/services/runner/client.py,sha256=bEA_1NvOJpznSuoVfVfvIJJ03zzAHj_lXRUbA82SbPY,15503
427
+ dstack/_internal/server/services/runner/client.py,sha256=jQDxv_Yaiwr2e3m1LqPCFtToB_GrsC2yVQfgXzyn6g8,15586
424
428
  dstack/_internal/server/services/runner/ssh.py,sha256=H-X0015ZPwYq5tc31ytFF1uNaUAr9itAsABI2oPJWrk,5017
425
429
  dstack/_internal/server/services/services/__init__.py,sha256=HQz72SNN8W9gUQ5INyO_Wd8TR9j3V6qoHFGEDEI920w,10862
426
430
  dstack/_internal/server/services/services/autoscalers.py,sha256=0o_w9La-ex_P3VKG88w_XN3hkLkzryv5l1cH3pkZyAE,4315
@@ -450,10 +454,10 @@ dstack/_internal/server/statics/e467d7d60aae81ab198b.svg,sha256=_XHc9mfQZgGkcy4h
450
454
  dstack/_internal/server/statics/eb9b344b73818fe2b71a.png,sha256=2H14eOCQRyZhFGJ1Kn2LH1j70kTF1Qop4vH-tiKqyPI,85
451
455
  dstack/_internal/server/statics/f517dd626eb964120de0.png,sha256=4QQuNa8SqmcZ67HK6739OHCyjnAJseU1bkcn454KRQs,159
452
456
  dstack/_internal/server/statics/f958aecddee5d8e3222c.png,sha256=8CoZkVNgRfOAe62X1dU-AZDvwh_nESKaQblEmaX2Xrs,87
453
- dstack/_internal/server/statics/index.html,sha256=UxIpCGBcrAkhaLxz2qxs6X7LjOCK00brNPzVOQj_ku8,10468
457
+ dstack/_internal/server/statics/index.html,sha256=UmT1blYXopnvIglSx7EM67YQYx-Wpx5jrXL37UvSJqM,10468
454
458
  dstack/_internal/server/statics/main-8f9c66f404e9c7e7e020.css,sha256=RC2sAxRMpIK3myvsxKEhLk4OsxTOt7DgWunCwyn-B34,1336694
455
- dstack/_internal/server/statics/main-b4f65323f5df007e1664.js,sha256=tLoowY2LWIYWbB33399u56U-zu_zFI9CPhsXc5hAVN0,6521298
456
- dstack/_internal/server/statics/main-b4f65323f5df007e1664.js.map,sha256=eMmH8b8m55dLp__vb8arNNtZemb0oMtTZ2tpJcO4aZg,8559081
459
+ dstack/_internal/server/statics/main-b4803049eac16aea9a49.js,sha256=uk2mEKXEKDP5nWO6cjSGK0GUh63YbvSBCgHCiengeKk,6521276
460
+ dstack/_internal/server/statics/main-b4803049eac16aea9a49.js.map,sha256=tDM8-Gh0SsJV87gQICQKhrvprc5eb33M4OCpLGa982c,8559017
457
461
  dstack/_internal/server/statics/manifest.json,sha256=430w2BoWVmYYVr14lDvUxx-ROPt3VjigzeMqfLeiSCM,340
458
462
  dstack/_internal/server/statics/robots.txt,sha256=kNJLw79pisHhc3OVAimMzKcq3x9WT6sF9IS4xI0crdI,67
459
463
  dstack/_internal/server/statics/assets/android-chrome-144x144.png,sha256=tB3V-95O-VVEoawN5V1XFoMQRSK0I6gthraV8bATGaw,23414
@@ -531,12 +535,12 @@ dstack/_internal/server/statics/static/media/logo.f602feeb138844eda97c8cb6414614
531
535
  dstack/_internal/server/statics/static/media/okta.12f178e6873a1100965f2a4dbd18fcec.svg,sha256=KqFI05gQM135zC1plF1WBRF2F7CyKL7km97WKsZjAHI,319
532
536
  dstack/_internal/server/statics/static/media/theme.3994c817bb7dda191c1c9640dee0bf42.svg,sha256=ZxFFBVZWuRLqmWH4zhwGLNtKjOzHj-5MGJRunFAtu1I,561
533
537
  dstack/_internal/server/testing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
534
- dstack/_internal/server/testing/common.py,sha256=gsSjGb6c7Kp-f345srXxca0EuUL-TV_So7irLr_iss8,31391
538
+ dstack/_internal/server/testing/common.py,sha256=0zEEx3CEzBUm57C3PdgHaFwS_HjVO2ENNGt2Yo1eJdU,31530
535
539
  dstack/_internal/server/testing/conf.py,sha256=-zhujfFjTHNfQDOK-hBck32By11c_kC0OeinB3esQGg,1902
536
540
  dstack/_internal/server/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
537
541
  dstack/_internal/server/utils/common.py,sha256=PbjXtqYy1taKXpyG5ys8cIrz9MXqc9dBAsR_9D1brrk,1414
538
542
  dstack/_internal/server/utils/logging.py,sha256=bxUS2uWG5snypNRfL0d5sMLCDytyOZac81PSQlb7_rs,1907
539
- dstack/_internal/server/utils/routers.py,sha256=OzL9Oxy-1no7Txk1r-Pvf28l3S25CYJlyAscYY345Xg,4729
543
+ dstack/_internal/server/utils/routers.py,sha256=ZuoQEpWjtv4WhXCJmd0ZvwBPZ8eKplO7Bb7leT9e8Ho,4630
540
544
  dstack/_internal/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
541
545
  dstack/_internal/utils/common.py,sha256=Ynq9_nZpIyipOn4y0-feGU_YbxzHSvWZGx2UGGR2bmI,9251
542
546
  dstack/_internal/utils/crypto.py,sha256=2RTSyzePuwwqc1X2HO6lwcSFyZ2kujnqluoICQ2DLJQ,1462
@@ -559,7 +563,7 @@ dstack/api/utils.py,sha256=_la3CRk1vgrPGkInPI1SOr33e8Jvh8ziJC32fjvKnaU,4188
559
563
  dstack/api/_public/__init__.py,sha256=mbzsdV3nWUJRksc7czX5C0iPT3NA6YRpriQQRiXwIbY,3429
560
564
  dstack/api/_public/backends.py,sha256=w_cIUVU3L1tN8VoPH6-ltq-oJewlfXWTiEFXfDvm-1Q,1056
561
565
  dstack/api/_public/repos.py,sha256=2ufUtxY8WyPci9tCGYzsnyIFTXNJfTuPzDYvpTydZ6k,6133
562
- dstack/api/_public/runs.py,sha256=tILFldJb4EKMYYBMr5rUiD5aJGIPB4-eLXzwwcqPbVg,27828
566
+ dstack/api/_public/runs.py,sha256=e_-CqkzHJqeUvO_yXbLnmO8ADZEcgRtagZoL5fr2wmU,28006
563
567
  dstack/api/huggingface/__init__.py,sha256=oIrEij3wttLZ1yrywEGvCMd6zswMQrX5pPjrqdSi0UA,2201
564
568
  dstack/api/server/__init__.py,sha256=Zyl1M51tifn4pB150yIsh39N96qUgMjg5XplcElHDxg,6097
565
569
  dstack/api/server/_backends.py,sha256=tSvJ4j-yp-S-4IYo7pKHluDaSsx6Xbwo08Ff6Do85fo,1639
@@ -570,7 +574,7 @@ dstack/api/server/_logs.py,sha256=ng8QvFAIaoVOVChTK6Wuu5BeM6y7gAdx30KEYRsn9xA,50
570
574
  dstack/api/server/_metrics.py,sha256=OPb8sLhI_U605sHOPrELgy0_6cNFLJVfpvr-qkEukRM,670
571
575
  dstack/api/server/_projects.py,sha256=g6kNSU6jer8u7Kaut1I0Ft4wRMLBBCQShJf3fOB63hQ,1440
572
576
  dstack/api/server/_repos.py,sha256=bqsKuZWyiNLE8UAdSZrYNtk1J3Gu5MXXnTMIoM9jxpI,1770
573
- dstack/api/server/_runs.py,sha256=qxKlHcW73HRglW5iogz5FYPtd85zb0vu2uKBuZx8BIc,7662
577
+ dstack/api/server/_runs.py,sha256=toI0guzIVIpPO8L4c8N6On2KEEAzvg9YGYM3IP1EdGQ,8003
574
578
  dstack/api/server/_secrets.py,sha256=VqLfrIcmBJtPxNDRkXTG44H5SWoY788YJapScUukvdY,1576
575
579
  dstack/api/server/_users.py,sha256=XzhgGKc5Tsr0-xkz3T6rGyWZ1tO7aYNhLux2eE7dAoY,1738
576
580
  dstack/api/server/_volumes.py,sha256=xxOt8o5G-bhMh6wSvF4BDFNoqVEhlM4BXQr2KvX0pN0,1937
@@ -580,8 +584,8 @@ dstack/plugins/__init__.py,sha256=buT1pcyORLgVbl89ATkRWJPhvejriVz7sNBjvuZRCRE,40
580
584
  dstack/plugins/_base.py,sha256=-etiB-EozaJCg2wtmONfj8ic-K03qXvXyl_TIDp-kNE,2662
581
585
  dstack/plugins/_models.py,sha256=1Gw--mDQ1_0FFr9Zur9LE8UbMoWESUpTdHHt12AyIZo,341
582
586
  dstack/plugins/_utils.py,sha256=FqeWYb7zOrgZkO9Bd8caL5I81_TUEsysIzvxsULrmzk,392
583
- dstack-0.19.8.dist-info/METADATA,sha256=OZnwMM_G_MuMYJbZ2StSOZnkeV2pbEPRE4_qWv8jFoQ,20150
584
- dstack-0.19.8.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
585
- dstack-0.19.8.dist-info/entry_points.txt,sha256=GnLrMS8hx3rWAySQjA7tPNhtixV6a-brRkmal1PKoHc,58
586
- dstack-0.19.8.dist-info/licenses/LICENSE.md,sha256=qDABaRGjSKVOib1U8viw2P_96sIK7Puo426784oD9f8,15976
587
- dstack-0.19.8.dist-info/RECORD,,
587
+ dstack-0.19.10.dist-info/METADATA,sha256=kOxSPHWY8taNRczMVwanWtP_p-0KmFJbOSE7vCKQsKk,20509
588
+ dstack-0.19.10.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
589
+ dstack-0.19.10.dist-info/entry_points.txt,sha256=GnLrMS8hx3rWAySQjA7tPNhtixV6a-brRkmal1PKoHc,58
590
+ dstack-0.19.10.dist-info/licenses/LICENSE.md,sha256=qDABaRGjSKVOib1U8viw2P_96sIK7Puo426784oD9f8,15976
591
+ dstack-0.19.10.dist-info/RECORD,,