5
5
import pickle
6
6
from contextlib import contextmanager
7
7
from itertools import product
8
+ from typing import Any , Callable , Iterator
8
9
9
10
from atomicwrites import AtomicWriter
10
11
12
+ from adaptive .learner .base_learner import BaseLearner
13
+
11
14
12
15
def named_product (** items ):
13
16
names = items .keys ()
@@ -16,7 +19,7 @@ def named_product(**items):
16
19
17
20
18
21
@contextmanager
19
- def restore (* learners ):
22
+ def restore (* learners ) -> Iterator [ None ] :
20
23
states = [learner .__getstate__ () for learner in learners ]
21
24
try :
22
25
yield
@@ -25,7 +28,7 @@ def restore(*learners):
25
28
learner .__setstate__ (state )
26
29
27
30
28
- def cache_latest (f ) :
31
+ def cache_latest (f : Callable ) -> Callable :
29
32
"""Cache the latest return value of the function and add it
30
33
as 'self._cache[f.__name__]'."""
31
34
@@ -40,7 +43,7 @@ def wrapper(*args, **kwargs):
40
43
return wrapper
41
44
42
45
43
- def save (fname , data , compress = True ):
46
+ def save (fname : str , data : Any , compress : bool = True ) -> None :
44
47
fname = os .path .expanduser (fname )
45
48
dirname = os .path .dirname (fname )
46
49
if dirname :
@@ -54,22 +57,22 @@ def save(fname, data, compress=True):
54
57
f .write (blob )
55
58
56
59
57
- def load (fname , compress = True ):
60
+ def load (fname : str , compress : bool = True ):
58
61
fname = os .path .expanduser (fname )
59
62
_open = gzip .open if compress else open
60
63
with _open (fname , "rb" ) as f :
61
64
return pickle .load (f )
62
65
63
66
64
- def copy_docstring_from (other ) :
67
+ def copy_docstring_from (other : Callable ) -> Callable :
65
68
def decorator (method ):
66
69
return functools .wraps (other )(method )
67
70
68
71
return decorator
69
72
70
73
71
74
class _RequireAttrsABCMeta (abc .ABCMeta ):
72
- def __call__ (self , * args , ** kwargs ):
75
+ def __call__ (self , * args , ** kwargs ) -> BaseLearner :
73
76
obj = super ().__call__ (* args , ** kwargs )
74
77
for name , type_ in obj .__annotations__ .items ():
75
78
try :
0 commit comments