Skip to content

Commit

Permalink
Test .model.v21.TargetObjectKey.__getitem__
Browse files Browse the repository at this point in the history
  • Loading branch information
khaeru committed Oct 15, 2024
1 parent ae42006 commit 6f113ca
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 2 deletions.
9 changes: 7 additions & 2 deletions sdmx/model/v21.py
Original file line number Diff line number Diff line change
Expand Up @@ -429,12 +429,17 @@ class TargetIdentifiableObject(TargetObjectValue):

@dataclass
class TargetObjectKey:
"""SDMX 2.1 TargetObjectKey."""
"""SDMX 2.1 TargetObjectKey.
TargetObjectKey supports item access (:py:`tok["name"]`) to members of
:attr:`.key_values`.
"""

#: Keys and values of the TargetObjectKey.
key_values: DictLikeDescriptor[str, TargetObjectValue] = DictLikeDescriptor()

def __getitem__(self, name: str) -> TargetObjectValue:
raise NotImplementedError
return self.key_values[name]


@dataclass
Expand Down
14 changes: 14 additions & 0 deletions sdmx/tests/model/test_v21.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import sdmx
import sdmx.message
from sdmx.model import v21
from sdmx.model import v21 as model
from sdmx.model.v21 import (
AttributeDescriptor,
Expand Down Expand Up @@ -32,6 +33,7 @@
MemberSelection,
MemberValue,
Observation,
TargetObjectKey,
value_for_dsd_ref,
)

Expand Down Expand Up @@ -648,3 +650,15 @@ def test_hierarchy(self, msg: sdmx.message.StructureMessage) -> None:

def test_repr(self, obj: model.HierarchicalCodelist):
assert "<HierarchicalCodelist HCL_COUNTRY: 1 hierarchies>" == repr(obj)


class TestTargetObjectKey:
def test_getitem(self) -> None:
""":meth:`TargetObjectKey.__getitem__` works."""
to = v21.TargetObject(id="FOO")
c = Code(id="BAR")
tok = TargetObjectKey(
key_values={"FOO": v21.TargetIdentifiableObject(value_for=to, obj=c)}
)

assert tok["FOO"].obj is c # type: ignore [attr-defined]

0 comments on commit 6f113ca

Please sign in to comment.