1+ from __future__ import annotations
12import array
23import json as _json
34import os
45from glob import glob
6+ from typing import TYPE_CHECKING
7+ if TYPE_CHECKING :
8+ from typing import Sequence
59
610import numpy as np
11+ from numcodecs .abc import Codec
712import pytest
813from numpy .testing import assert_array_almost_equal , assert_array_equal
914
2732]
2833
2934
30- def compare_arrays (arr , res , precision = None ):
35+ def compare_arrays (arr : np . ndarray , res : np . ndarray , precision : int | None = None ) -> None :
3136 # ensure numpy array with matching dtype
3237 res = ensure_ndarray (res ).view (arr .dtype )
3338
@@ -47,7 +52,7 @@ def compare_arrays(arr, res, precision=None):
4752 assert_array_almost_equal (arr , res , decimal = precision )
4853
4954
50- def check_encode_decode (arr , codec , precision = None ):
55+ def check_encode_decode (arr : np . ndarray , codec : Codec , precision : int | None = None ) -> None :
5156 # N.B., watch out here with blosc compressor, if the itemsize of
5257 # the source buffer is different then the results of encoding
5358 # (i.e., compression) may be different. Hence we *do not* require that
@@ -115,7 +120,7 @@ def check_encode_decode(arr, codec, precision=None):
115120 compare_arrays (arr , out , precision = precision )
116121
117122
118- def check_encode_decode_partial (arr , codec , precision = None ):
123+ def check_encode_decode_partial (arr : np . ndarray , codec : Codec , precision : int | None = None ) -> None :
119124 # N.B., watch out here with blosc compressor, if the itemsize of
120125 # the source buffer is different then the results of encoding
121126 # (i.e., compression) may be different. Hence we *do not* require that
@@ -183,7 +188,7 @@ def check_encode_decode_partial(arr, codec, precision=None):
183188 compare_arrays (compare_arr , out , precision = precision )
184189
185190
186- def assert_array_items_equal (res , arr ) :
191+ def assert_array_items_equal (res : np . ndarray , arr : np . ndarray ) -> None :
187192 assert isinstance (res , np .ndarray )
188193 res = res .reshape (- 1 , order = 'A' )
189194 arr = arr .reshape (- 1 , order = 'A' )
@@ -204,7 +209,7 @@ def assert_array_items_equal(res, arr):
204209 assert a == r
205210
206211
207- def check_encode_decode_array (arr , codec ) :
212+ def check_encode_decode_array (arr : np . ndarray , codec : Codec ) -> None :
208213 enc = codec .encode (arr )
209214 dec = codec .decode (enc )
210215 assert_array_items_equal (arr , dec )
@@ -218,7 +223,7 @@ def check_encode_decode_array(arr, codec):
218223 assert_array_items_equal (arr , dec )
219224
220225
221- def check_encode_decode_array_to_bytes (arr , codec ) :
226+ def check_encode_decode_array_to_bytes (arr : np . ndarray , codec : Codec ) -> None :
222227 enc = codec .encode (arr )
223228 dec = codec .decode (enc )
224229 assert_array_items_equal (arr , dec )
@@ -228,21 +233,21 @@ def check_encode_decode_array_to_bytes(arr, codec):
228233 assert_array_items_equal (arr , out )
229234
230235
231- def check_config (codec ) :
236+ def check_config (codec : Codec ) -> None :
232237 config = codec .get_config ()
233238 # round-trip through JSON to check serialization
234239 config = _json .loads (_json .dumps (config ))
235240 assert codec == get_codec (config )
236241
237242
238- def check_repr (stmt ) :
243+ def check_repr (stmt : str ) -> None :
239244 # check repr matches instantiation statement
240245 codec = eval (stmt )
241246 actual = repr (codec )
242247 assert stmt == actual
243248
244249
245- def check_backwards_compatibility (codec_id , arrays , codecs , precision = None , prefix = None ):
250+ def check_backwards_compatibility (codec_id : str , arrays : Sequence [ np . ndarray ] , codecs : Sequence [ Codec ] , precision : Sequence [ int | None ] | None = None , prefix : str | None = None ) -> None :
246251 # setup directory to hold data fixture
247252 if prefix :
248253 fixture_dir = os .path .join ('fixture' , codec_id , prefix )
@@ -312,7 +317,7 @@ def check_backwards_compatibility(codec_id, arrays, codecs, precision=None, pref
312317 assert arr_bytes == ensure_bytes (dec )
313318
314319
315- def check_err_decode_object_buffer (compressor ) :
320+ def check_err_decode_object_buffer (compressor : Codec ) -> None :
316321 # cannot decode directly into object array, leads to segfaults
317322 a = np .arange (10 )
318323 enc = compressor .encode (a )
@@ -321,14 +326,14 @@ def check_err_decode_object_buffer(compressor):
321326 compressor .decode (enc , out = out )
322327
323328
324- def check_err_encode_object_buffer (compressor ) :
329+ def check_err_encode_object_buffer (compressor : Codec ) -> None :
325330 # compressors cannot encode object array
326331 a = np .array (['foo' , 'bar' , 'baz' ], dtype = object )
327332 with pytest .raises (TypeError ):
328333 compressor .encode (a )
329334
330335
331- def check_max_buffer_size (codec ) :
336+ def check_max_buffer_size (codec : Codec ) -> None :
332337 for max_buffer_size in (4 , 64 , 1024 ):
333338 old_max_buffer_size = codec .max_buffer_size
334339 try :
0 commit comments