fix(credential_pool): parse ISO-string last_status_at during from_dict rehydration (#25516)
This commit is contained in:
@@ -129,6 +129,9 @@ class PooledCredential:
|
|||||||
def from_dict(cls, provider: str, payload: Dict[str, Any]) -> "PooledCredential":
|
def from_dict(cls, provider: str, payload: Dict[str, Any]) -> "PooledCredential":
|
||||||
field_names = {f.name for f in fields(cls) if f.name != "provider"}
|
field_names = {f.name for f in fields(cls) if f.name != "provider"}
|
||||||
data = {k: payload.get(k) for k in field_names if k in payload}
|
data = {k: payload.get(k) for k in field_names if k in payload}
|
||||||
|
# Rehydrated last_status_at may be an ISO string from to_dict() — normalize to float epoch
|
||||||
|
if "last_status_at" in data and isinstance(data["last_status_at"], str):
|
||||||
|
data["last_status_at"] = _parse_absolute_timestamp(data["last_status_at"])
|
||||||
extra = {k: payload[k] for k in _EXTRA_KEYS if k in payload and payload[k] is not None}
|
extra = {k: payload[k] for k in _EXTRA_KEYS if k in payload and payload[k] is not None}
|
||||||
data["extra"] = extra
|
data["extra"] = extra
|
||||||
data.setdefault("id", uuid.uuid4().hex[:6])
|
data.setdefault("id", uuid.uuid4().hex[:6])
|
||||||
|
|||||||
Reference in New Issue
Block a user