diff --git a/canopen/pdo/base.py b/canopen/pdo/base.py index 04f451d3..771ed5af 100644 --- a/canopen/pdo/base.py +++ b/canopen/pdo/base.py @@ -175,10 +175,12 @@ def __getitem__(self, key: int) -> PdoMap: try: return self.maps[key] except KeyError: - with contextlib.suppress(KeyError): - return self.maps[key + 1 - self.map_offset] - with contextlib.suppress(KeyError): - return self.maps[key + 1 - self.com_offset] + if self.map_offset: + with contextlib.suppress(KeyError): + return self.maps[key + 1 - self.map_offset] + if self.com_offset: + with contextlib.suppress(KeyError): + return self.maps[key + 1 - self.com_offset] raise def __iter__(self) -> Iterator[int]: diff --git a/test/test_pdo.py b/test/test_pdo.py index 4857ca7a..1b641147 100644 --- a/test/test_pdo.py +++ b/test/test_pdo.py @@ -80,6 +80,7 @@ def test_pdo_getitem(self): self.assertRaises(KeyError, lambda: node.pdo['DOES NOT EXIST']) self.assertRaises(KeyError, lambda: node.pdo[0x1BFF]) self.assertRaises(KeyError, lambda: node.tpdo[0x1BFF]) + self.assertRaises(KeyError, lambda: node.pdo[0x15FF]) def test_pdo_iterate(self): node = self.node