| 1382 | return q |
| 1383 | |
| 1384 | def __getitem__(self, cls): |
| 1385 | # type: (Union[Type[Packet], str]) -> Any |
| 1386 | if isinstance(cls, slice): |
| 1387 | lname = cls.start |
| 1388 | if cls.stop: |
| 1389 | ret = self.getlayer(cls.start, nb=cls.stop, **(cls.step or {})) |
| 1390 | else: |
| 1391 | ret = self.getlayer(cls.start, **(cls.step or {})) |
| 1392 | else: |
| 1393 | lname = cls |
| 1394 | ret = self.getlayer(cls) |
| 1395 | if ret is None: |
| 1396 | if isinstance(lname, type): |
| 1397 | name = lname.__name__ |
| 1398 | elif not isinstance(lname, bytes): |
| 1399 | name = repr(lname) |
| 1400 | else: |
| 1401 | name = cast(str, lname) |
| 1402 | raise IndexError("Layer [%s] not found" % name) |
| 1403 | return ret |
| 1404 | |
| 1405 | def __delitem__(self, cls): |
| 1406 | # type: (Type[Packet]) -> None |