17
17
from .api_client import ApiClient
18
18
from .processing import Remote , Results
19
19
20
- LEGACY_KWARGS = [
21
- "full_stack" ,
22
- "delete" ,
23
- "retry_max" ,
24
- "sleep_max" ,
25
- "wait_until_complete" ,
26
- "info_callback" ,
27
- "warning_callback" ,
28
- "error_callback" ,
29
- "debug_callback" ,
30
- "metadata" ,
31
- "forget" ,
32
- "session" ,
33
- ]
34
-
35
20
LOGGER = logging .getLogger (__name__ )
36
21
F = TypeVar ("F" , bound = Callable [..., Any ])
37
22
@@ -68,6 +53,15 @@ def __exit__(
68
53
self .logger .removeHandler (handler )
69
54
70
55
56
+ def _deprecated_warning (** kwargs : Any ) -> None :
57
+ if kwargs := {k : v for k , v in kwargs .items () if v is not None }:
58
+ warnings .warn (
59
+ f"The following parameters are deprecated: { kwargs } ."
60
+ " Set them to None to silence this warning." ,
61
+ UserWarning ,
62
+ )
63
+
64
+
71
65
class LegacyApiClient (cdsapi .api .Client ): # type: ignore[misc]
72
66
def __init__ (
73
67
self ,
@@ -78,31 +72,36 @@ def __init__(
78
72
verify : bool | int | None = None ,
79
73
timeout : int = 60 ,
80
74
progress : bool = True ,
81
- * args : Any ,
82
- ** kwargs : Any ,
75
+ full_stack : None = None ,
76
+ delete : bool = False ,
77
+ retry_max : int = 500 ,
78
+ sleep_max : float = 120 ,
79
+ wait_until_complete : bool = True ,
80
+ info_callback : Callable [..., None ] | None = None ,
81
+ warning_callback : Callable [..., None ] | None = None ,
82
+ error_callback : Callable [..., None ] | None = None ,
83
+ debug_callback : Callable [..., None ] | None = None ,
84
+ metadata : None = None ,
85
+ forget : None = None ,
86
+ session : requests .Session | None = None ,
83
87
) -> None :
84
- kwargs .update (zip (LEGACY_KWARGS , args ))
85
- if wrong_kwargs := set (kwargs ) - set (LEGACY_KWARGS ):
86
- raise ValueError (f"Wrong parameters: { wrong_kwargs } ." )
88
+ _deprecated_warning (full_stack = full_stack , metadata = metadata , forget = forget )
87
89
88
90
self .url , self .key , verify = cdsapi .api .get_url_key_verify (url , key , verify )
89
91
self .verify = bool (verify )
90
92
self .quiet = quiet
91
93
self ._debug = debug
92
94
self .timeout = timeout
93
95
self .progress = progress
94
-
95
- self .sleep_max = kwargs .pop ("sleep_max" , 120 )
96
- self .wait_until_complete = kwargs .pop ("wait_until_complete" , True )
97
- self .delete = kwargs .pop ("delete" , False )
98
- self .retry_max = kwargs .pop ("retry_max" , 500 )
99
- self .session = kwargs .pop ("session" , requests .Session ())
100
- if kwargs :
101
- warnings .warn (
102
- "This is a beta version."
103
- f" The following parameters have not been implemented yet: { kwargs } ." ,
104
- UserWarning ,
105
- )
96
+ self .delete = delete
97
+ self .retry_max = retry_max
98
+ self .sleep_max = sleep_max
99
+ self .wait_until_complete = wait_until_complete
100
+ self .info_callback = info_callback
101
+ self .warning_callback = warning_callback
102
+ self .error_callback = error_callback
103
+ self .debug_callback = debug_callback
104
+ self .session = requests .Session () if session is None else session
106
105
107
106
self .client = self .logging_decorator (ApiClient )(
108
107
url = self .url ,
@@ -173,15 +172,24 @@ def retrieve(
173
172
174
173
# Decorate legacy methods
175
174
submitted .download = self .logging_decorator (submitted .download ) # type: ignore[method-assign]
176
- submitted .log = self .logging_decorator ( submitted . log ) # type: ignore[method-assign]
175
+ submitted .log = self .log # type: ignore[method-assign]
177
176
178
177
return submitted if target is None else submitted .download (target )
179
178
180
- def log (self , * args : Any , ** kwargs : Any ) -> None :
179
+ def log (self , level : int , * args : Any , ** kwargs : Any ) -> None :
181
180
with LoggingContext (
182
181
logger = LOGGER , quiet = self .quiet , debug = self ._debug
183
182
) as logger :
184
- logger .log (* args , ** kwargs )
183
+ if level == logging .INFO and self .info_callback is not None :
184
+ self .info_callback (* args , ** kwargs )
185
+ elif level == logging .WARNING and self .warning_callback is not None :
186
+ self .warning_callback (* args , ** kwargs )
187
+ elif level == logging .ERROR and self .error_callback is not None :
188
+ self .error_callback (* args , ** kwargs )
189
+ elif level == logging .DEBUG and self .debug_callback is not None :
190
+ self .debug_callback (* args , ** kwargs )
191
+ else :
192
+ logger .log (level , * args , ** kwargs )
185
193
186
194
def info (self , * args : Any , ** kwargs : Any ) -> None :
187
195
self .log (logging .INFO , * args , ** kwargs )
0 commit comments