From 019d648d01a3f083c58c90efebd5b0898e1810d2 Mon Sep 17 00:00:00 2001 From: Patrick Yost Date: Wed, 13 Nov 2024 16:13:23 -0800 Subject: [PATCH] Change parse_obj to use deepcopy rather than editing in place --- .../implementations/saved_query.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/dbt_semantic_interfaces/implementations/saved_query.py b/dbt_semantic_interfaces/implementations/saved_query.py index d0296a23..a137707a 100644 --- a/dbt_semantic_interfaces/implementations/saved_query.py +++ b/dbt_semantic_interfaces/implementations/saved_query.py @@ -1,5 +1,6 @@ from __future__ import annotations +from copy import deepcopy from typing import Any, List, Optional, Union from typing_extensions import Self, override @@ -58,9 +59,10 @@ def _implements_protocol(self) -> SavedQuery: @classmethod def parse_obj(cls, input: Any) -> Self: # noqa - if isinstance(input, dict): - if isinstance(input.get("tags"), str): - input["tags"] = [input["tags"]] - if isinstance(input.get("tags"), list): - input["tags"].sort() - return super(HashableBaseModel, cls).parse_obj(input) + data = deepcopy(input) + if isinstance(data, dict): + if isinstance(data.get("tags"), str): + data["tags"] = [data["tags"]] + if isinstance(data.get("tags"), list): + data["tags"].sort() + return super(HashableBaseModel, cls).parse_obj(data)