@@ -45,7 +45,6 @@ def __getitem__(cls, item: tuple[type[_TArrayItem], type[_TArrayLength]]) -> typ
4545
4646class ImmutableFixedArray (
4747 Serializable ,
48- MutableBytes ,
4948 typing .Generic [_TArrayItem , _TArrayLength ],
5049 metaclass = _ImmutableFixedArrayMeta ,
5150):
@@ -58,8 +57,8 @@ def __new__(cls, values: Iterable[_TArrayItem]) -> typing.Self:
5857 try :
5958 assert cls ._element_type
6059 except AttributeError :
60+ items = list (values )
6161 try :
62- items = list (values )
6362 item = items [0 ]
6463 except IndexError :
6564 raise TypeError ("array must have an item type" ) from None
@@ -106,12 +105,11 @@ def __reversed__(self) -> typing.Iterator[_TArrayItem]:
106105 def length (self ) -> UInt64 :
107106 return UInt64 (len (self ._items ))
108107
109- def __len__ (self ) -> UInt64 :
110- return self .length
108+ def __len__ (self ) -> int :
109+ return len ( self ._items )
111110
112111 def __getitem__ (self , index : UInt64 | int ) -> _TArrayItem :
113- value = self ._items [index ]
114- return set_item_on_mutate (self , index , value )
112+ return self ._items [index ]
115113
116114 def __setitem__ (self , index : UInt64 | int , value : _TArrayItem ) -> _TArrayItem :
117115 self ._items [int (index )] = value
@@ -180,11 +178,9 @@ class FixedArray(
180178 _length : int
181179
182180 def __new__ (cls , values : Iterable [_TArrayItem ]) -> typing .Self :
183- try :
184- assert cls ._element_type
185- except AttributeError :
181+ if not hasattr (cls , "_element_type" ):
182+ items = list (values )
186183 try :
187- items = list (values )
188184 item = items [0 ]
189185 except IndexError :
190186 raise TypeError ("array must have an item type" ) from None
@@ -206,7 +202,7 @@ def __init__(self, values: Iterable[_TArrayItem]) -> None:
206202
207203 @classmethod
208204 def full (cls , item : _TArrayItem ) -> typing .Self :
209- return cls (item for _ in range ( cls ._length ) )
205+ return cls ([ item ] * cls ._length )
210206
211207 def __iter__ (self ) -> typing .Iterator [_TArrayItem ]:
212208 return iter (self ._items )
@@ -218,8 +214,8 @@ def __reversed__(self) -> typing.Iterator[_TArrayItem]:
218214 def length (self ) -> UInt64 :
219215 return UInt64 (len (self ._items ))
220216
221- def __len__ (self ) -> UInt64 :
222- return self .length
217+ def __len__ (self ) -> int :
218+ return len ( self ._items )
223219
224220 def __getitem__ (self , index : UInt64 | int ) -> _TArrayItem :
225221 value = self ._items [index ]
@@ -278,9 +274,7 @@ def __getitem__(cls, element_t: type) -> type:
278274 return c
279275
280276
281- class ImmutableArray (
282- Serializable , MutableBytes , typing .Generic [_TArrayItem ], metaclass = _ImmutableArrayMeta
283- ):
277+ class ImmutableArray (Serializable , typing .Generic [_TArrayItem ], metaclass = _ImmutableArrayMeta ):
284278 _element_type : typing .ClassVar [type ]
285279
286280 # ensure type is fully parameterized by looking up type from metaclass
@@ -316,12 +310,11 @@ def __reversed__(self) -> Iterator[_TArrayItem]:
316310 def length (self ) -> UInt64 :
317311 return UInt64 (len (self ._items ))
318312
319- def __len__ (self ) -> UInt64 :
320- return self .length
313+ def __len__ (self ) -> int :
314+ return len ( self ._items )
321315
322316 def __getitem__ (self , index : UInt64 | int ) -> _TArrayItem :
323- value = self ._items [index ]
324- return set_item_on_mutate (self , index , value )
317+ return self ._items [index ]
325318
326319 def __setitem__ (self , index : UInt64 | int , value : _TArrayItem ) -> _TArrayItem :
327320 self ._items [int (index )] = value
@@ -437,8 +430,8 @@ def __new__(cls, values: Iterable[_TArrayItem]) -> typing.Self:
437430 try :
438431 assert cls ._element_type
439432 except AttributeError :
433+ items = list (values )
440434 try :
441- items = list (values )
442435 item = items [0 ]
443436 except IndexError :
444437 raise TypeError ("array must have an item type" ) from None
@@ -464,8 +457,8 @@ def __reversed__(self) -> typing.Iterator[_TArrayItem]:
464457 def length (self ) -> UInt64 :
465458 return UInt64 (len (self ._items ))
466459
467- def __len__ (self ) -> UInt64 :
468- return self .length
460+ def __len__ (self ) -> int :
461+ return len ( self ._items )
469462
470463 def __getitem__ (self , index : UInt64 | int ) -> _TArrayItem :
471464 value = self ._items [index ]
0 commit comments