anchorxia's picture
add mmcm
a57c6eb
from collections import UserList
from collections.abc import Iterable
from typing import Iterator, Any, List
from ...utils.util import convert_class_attr_to_dict
__all__ = ["Item", "Items"]
class Item(object):
def __init__(self) -> None:
pass
def to_dct(self, target_keys: List[str] = None, ignored_keys: List[str] = None):
base_ignored_keys = [
"kwargs",
]
if isinstance(ignored_keys, list):
base_ignored_keys.extend(ignored_keys)
elif isinstance(ignored_keys, str):
base_ignored_keys.append(ignored_keys)
else:
pass
return convert_class_attr_to_dict(
self, target_keys=target_keys, ignored_keys=base_ignored_keys
)
def preprocess(self):
pass
class Items(UserList):
def __init__(
self,
data: Any = None,
):
if data is None:
data = list()
if not isinstance(data, list):
data = [data]
super().__init__(data)
def __len__(self):
return len(self.data)
def __getitem__(self, i):
return self.data[i]
def __delitem__(self, i):
del self.data[i]
def __setitem__(self, i, v):
self.data[i] = v
def insert(self, i, v):
self.data.insert(i, v)
def __str__(self):
return str(self.data)
def to_dct(self, target_keys: List[str] = None, ignored_keys: List[str] = None):
items = [item.to_dct(target_keys, ignored_keys) for item in self.data]
return items
def __iter__(self) -> Iterator:
return iter(self.data)
def preprocess(self):
pass