File size: 1,667 Bytes
a57c6eb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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