From 657c5f2fbc6859caf35d42c83d7e43c3cad3deee Mon Sep 17 00:00:00 2001 From: Jvst Me Date: Wed, 22 Jan 2025 12:06:59 +0100 Subject: [PATCH] Fix caching offers with GPU requirements Use `Requirements.json` instead of `Requirements.dict`+`json.dumps`, which fails on enums. Also remove `sort_keys=True`, which seems to be redundant. > field order is preserved by .dict() and .json() > etc. https://docs.pydantic.dev/1.10/usage/models/#field-ordering --- src/dstack/_internal/core/backends/base/compute.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/dstack/_internal/core/backends/base/compute.py b/src/dstack/_internal/core/backends/base/compute.py index 77a9b4496c..9309e88000 100644 --- a/src/dstack/_internal/core/backends/base/compute.py +++ b/src/dstack/_internal/core/backends/base/compute.py @@ -1,4 +1,3 @@ -import json import os import re import threading @@ -188,7 +187,7 @@ def _get_offers_cached_key(self, requirements: Optional[Requirements] = None) -> # Requirements is not hashable, so we use a hack to get arguments hash if requirements is None: return hash(None) - return hash(json.dumps(requirements.dict(), sort_keys=True)) + return hash(requirements.json()) @cachedmethod( cache=lambda self: self._offers_cache,