Coverage for src/extratools_core/defaultlist.py: 0%
14 statements
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-03 04:52 -0700
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-03 04:52 -0700
1from collections import UserList
2from collections.abc import Callable
3from typing import override
6class DefaultList[T](UserList):
7 def __init__(self, default: Callable[[], T]) -> None:
8 super().__init__()
10 self.__default = default
12 def __grow(self, index: int) -> None:
13 if index >= len(self):
14 self.extend([self.__default()] * (index + 1 - len(self)))
16 @override
17 def __setitem__(self, index: int, value: T) -> None:
18 self.__grow(index)
19 super().__setitem__(index, value)