From 8c2f881077c4bb40ac11a358d517fa5d7e5b5ac6 Mon Sep 17 00:00:00 2001 From: Joscha Schmiedt <joscha@schmiedt.dev> Date: Mon, 26 Feb 2024 15:06:53 +0100 Subject: [PATCH] Handle single element slices for Container.__getitem__ --- src/linkahead/common/models.py | 6 +++++- unittests/test_container.py | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/linkahead/common/models.py b/src/linkahead/common/models.py index a7030d95..9644485a 100644 --- a/src/linkahead/common/models.py +++ b/src/linkahead/common/models.py @@ -3003,7 +3003,11 @@ class Container(list): def __getitem__(self, key): # Construct new Container from list slice - return Container().extend(super().__getitem__(key)) + self_as_list_slice = super().__getitem__(key) + if isinstance(self_as_list_slice, list): + return Container().extend(self_as_list_slice) + else: + return self_as_list_slice @staticmethod def from_xml(xml_str): diff --git a/unittests/test_container.py b/unittests/test_container.py index 026f6424..cfada7cc 100644 --- a/unittests/test_container.py +++ b/unittests/test_container.py @@ -187,4 +187,8 @@ def test_container_slicing(): container_slice = cont[:2] assert isinstance(container_slice, db.common.models.Container), \ f"Container slice should be Container, was {type(container_slice)}" - # cont[:2].retrieve() + for element in container_slice: + assert isinstance(element, db.Record), \ + f"element in slice was not Record, but {type(element)}" + assert len(container_slice) == 2 + assert cont[-1].name == "TestRec5" -- GitLab