11from __future__ import annotations
2- import array
2+ from array import array
33import struct
44import sys
55from typing import TYPE_CHECKING
1010
1111
1212class HalfVector :
13+ _value : array [int ]
14+
1315 def __init__ (self , value : list [float ] | ndarray ) -> None :
1416 if isinstance (value , list ):
1517 dim = len (value )
1618 try :
17- self ._value = array . array ('H' , struct .pack (f'{ dim } e' , * value ))
19+ self ._value = array ('H' , struct .pack (f'{ dim } e' , * value ))
1820 except struct .error :
1921 raise ValueError ('expected list[float]' )
2022 elif is_ndarray (value ):
@@ -23,7 +25,7 @@ def __init__(self, value: list[float] | ndarray) -> None:
2325 if value .ndim != 1 :
2426 raise ValueError ('expected ndim to be 1' )
2527
26- arr = array . array ('H' )
28+ arr = array ('H' )
2729 arr .frombytes (value .astype (np .float16 , order = 'C' , copy = False ).data .cast ('B' ))
2830 self ._value = arr
2931 else :
@@ -55,7 +57,7 @@ def to_binary(self) -> bytes:
5557 if sys .byteorder == 'big' :
5658 value = self ._value
5759 else :
58- value = array . array ('H' , self ._value )
60+ value = array ('H' , self ._value )
5961 value .byteswap ()
6062 return struct .pack ('>HH' , len (value ), 0 ) + memoryview (value )
6163
@@ -74,7 +76,7 @@ def from_binary(cls, value: bytes | bytearray | memoryview) -> HalfVector:
7476 if unused != 0 :
7577 raise ValueError ('expected unused to be 0' )
7678
77- arr = array . array ('H' )
79+ arr = array ('H' )
7880 arr .frombytes (data )
7981 if sys .byteorder != 'big' :
8082 arr .byteswap ()
0 commit comments