Elron commited on
Commit
128b1df
1 Parent(s): 07f73b2

Upload collections.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. collections.py +11 -11
collections.py CHANGED
@@ -1,21 +1,24 @@
1
- from abc import abstractmethod
2
  from dataclasses import field
 
3
 
4
  from .artifact import Artifact
 
5
  from .random_utils import random
6
 
7
 
8
  class Collection(Artifact):
9
- @abstractmethod
 
10
  def __getitem__(self, key):
11
- pass
 
 
 
12
 
13
 
14
  class ListCollection(Collection):
15
- items: list = field(default_factory=list)
16
-
17
- def __getitem__(self, index):
18
- return self.items[index]
19
 
20
  def __len__(self):
21
  return len(self.items)
@@ -31,10 +34,7 @@ class ListCollection(Collection):
31
 
32
 
33
  class DictCollection(Collection):
34
- items: dict = field(default_factory=dict)
35
-
36
- def __getitem__(self, key):
37
- return self.items[key]
38
 
39
 
40
  class ItemPicker(Artifact):
 
1
+ import typing
2
  from dataclasses import field
3
+ from typing import Dict, List
4
 
5
  from .artifact import Artifact
6
+ from .dataclass import AbstractField
7
  from .random_utils import random
8
 
9
 
10
  class Collection(Artifact):
11
+ items: typing.Collection = AbstractField()
12
+
13
  def __getitem__(self, key):
14
+ try:
15
+ return self.items[key]
16
+ except LookupError:
17
+ raise LookupError(f"Cannot find item {repr(key)} in {repr(self)}")
18
 
19
 
20
  class ListCollection(Collection):
21
+ items: List[Artifact] = field(default_factory=list)
 
 
 
22
 
23
  def __len__(self):
24
  return len(self.items)
 
34
 
35
 
36
  class DictCollection(Collection):
37
+ items: Dict[str, Artifact] = field(default_factory=dict)
 
 
 
38
 
39
 
40
  class ItemPicker(Artifact):