From a65e710e7f7303694244f6614b219f4eeee0c450 Mon Sep 17 00:00:00 2001 From: Xavier Sosnovsky Date: Mon, 29 Jan 2024 11:26:36 +0100 Subject: [PATCH 1/6] Fix issue with unhashable list --- src/pysdmx/model/code.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pysdmx/model/code.py b/src/pysdmx/model/code.py index 34c39ae..ae67c57 100644 --- a/src/pysdmx/model/code.py +++ b/src/pysdmx/model/code.py @@ -212,16 +212,16 @@ def __extract_code( def __by_id( self, id: str, codes: Sequence[HierarchicalCode] - ) -> FrozenSet[HierarchicalCode]: + ) -> Sequence[HierarchicalCode]: out = [] for i in codes: - if i.id == id: + if i.id == id and i not in out: out.append(i) if i.codes: out.extend(self.__by_id(id, i.codes)) - return frozenset(out) + return out - def by_id(self, id: str) -> FrozenSet[HierarchicalCode]: + def by_id(self, id: str) -> Sequence[HierarchicalCode]: """Get a code without knowing its parent IDs. Codes in a hierarchy can be retrieved using their full ID, From ccbea44299bd653a6c81dbd56f5e941ade58d6b9 Mon Sep 17 00:00:00 2001 From: Xavier Sosnovsky Date: Mon, 29 Jan 2024 11:27:14 +0100 Subject: [PATCH 2/6] Bump version --- pyproject.toml | 2 +- src/pysdmx/__init__.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 51d06fb..fd649aa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "pysdmx" -version = "1.0.0-beta-5" +version = "1.0.0-beta-6" description = "Your opinionated Python SDMX library" authors = [ "Xavier Sosnovsky ", diff --git a/src/pysdmx/__init__.py b/src/pysdmx/__init__.py index f2a58ba..975be7e 100644 --- a/src/pysdmx/__init__.py +++ b/src/pysdmx/__init__.py @@ -1,3 +1,3 @@ """Your opinionated Python SDMX library.""" -__version__ = "1.0.0-beta-5" +__version__ = "1.0.0-beta-6" From e1db9d9e4ce770062f8d676e291e35c49302ba91 Mon Sep 17 00:00:00 2001 From: Xavier Sosnovsky Date: Mon, 29 Jan 2024 11:29:51 +0100 Subject: [PATCH 3/6] Fix QA issue --- src/pysdmx/model/code.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pysdmx/model/code.py b/src/pysdmx/model/code.py index ae67c57..cdc52b5 100644 --- a/src/pysdmx/model/code.py +++ b/src/pysdmx/model/code.py @@ -17,7 +17,7 @@ """ from datetime import datetime -from typing import FrozenSet, Iterator, Optional, Sequence +from typing import Iterator, Optional, Sequence from msgspec import Struct From fa0aec4a8023e9a7db0fb2b70afa924b04274dc8 Mon Sep 17 00:00:00 2001 From: Xavier Sosnovsky Date: Mon, 29 Jan 2024 11:48:04 +0100 Subject: [PATCH 4/6] Fix typo --- tests/model/test_hierarchy.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/model/test_hierarchy.py b/tests/model/test_hierarchy.py index effe2d2..183d6db 100644 --- a/tests/model/test_hierarchy.py +++ b/tests/model/test_hierarchy.py @@ -138,7 +138,7 @@ def test_codes_by_id_is_a_set(id, name, agency): assert m[0] == grandchild1 -def test_codes_by_id_dff_names(id, name, agency): +def test_codes_by_id_diff_names(id, name, agency): grandchild1 = HierarchicalCode("child211", "Child 2.1.1") grandchild2 = HierarchicalCode("child212", "Child 2.1.2") grandchild3 = HierarchicalCode("child211", "Child 2.1.1 - Diff name") From 39e582e6f61dc2c6636185682545440c9770ab1a Mon Sep 17 00:00:00 2001 From: Xavier Sosnovsky Date: Mon, 29 Jan 2024 11:54:00 +0100 Subject: [PATCH 5/6] Fix issue with sequence not being a set --- src/pysdmx/model/code.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/pysdmx/model/code.py b/src/pysdmx/model/code.py index cdc52b5..5a12c95 100644 --- a/src/pysdmx/model/code.py +++ b/src/pysdmx/model/code.py @@ -211,14 +211,18 @@ def __extract_code( return None def __by_id( - self, id: str, codes: Sequence[HierarchicalCode] + self, + id: str, + codes: Sequence[HierarchicalCode], + out: Optional[Sequence] = None, ) -> Sequence[HierarchicalCode]: - out = [] + if out is None: + out = [] for i in codes: if i.id == id and i not in out: out.append(i) if i.codes: - out.extend(self.__by_id(id, i.codes)) + self.__by_id(id, i.codes, out) return out def by_id(self, id: str) -> Sequence[HierarchicalCode]: From 48d172114b30f4652d72510bb04520cfdccd85d9 Mon Sep 17 00:00:00 2001 From: Xavier Sosnovsky Date: Mon, 29 Jan 2024 12:00:45 +0100 Subject: [PATCH 6/6] Fix QA issues --- src/pysdmx/model/code.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pysdmx/model/code.py b/src/pysdmx/model/code.py index 5a12c95..37f89a1 100644 --- a/src/pysdmx/model/code.py +++ b/src/pysdmx/model/code.py @@ -214,13 +214,13 @@ def __by_id( self, id: str, codes: Sequence[HierarchicalCode], - out: Optional[Sequence] = None, + out: Optional[Sequence[HierarchicalCode]] = None, ) -> Sequence[HierarchicalCode]: if out is None: out = [] for i in codes: if i.id == id and i not in out: - out.append(i) + out.append(i) # type: ignore[attr-defined] if i.codes: self.__by_id(id, i.codes, out) return out