2020from __future__ import annotations
2121
2222import os
23- from typing import TYPE_CHECKING , Any
23+ from typing import TYPE_CHECKING , Any , cast
2424from urllib .parse import urlsplit
2525
2626from airflow .configuration import conf
@@ -159,59 +159,63 @@ def _default_conn_name_from(mod_path, hook_name):
159159 "logging/remote_task_handler_kwargs must be a JSON object (a python dict), we got "
160160 f"{ type (remote_task_handler_kwargs )} "
161161 )
162+ _handler_kwargs = cast ("dict[str, Any]" , remote_task_handler_kwargs )
162163 delete_local_copy = conf .getboolean ("logging" , "delete_local_logs" )
163164
164165 if remote_base_log_folder .startswith ("s3://" ):
165166 from airflow .providers .amazon .aws .log .s3_task_handler import S3RemoteLogIO
166167
167168 _default_conn_name_from ("airflow.providers.amazon.aws.hooks.s3" , "S3Hook" )
168169 REMOTE_TASK_LOG = S3RemoteLogIO (
169- ** (
170+ ** cast (
171+ "dict[str, Any]" ,
170172 {
171173 "base_log_folder" : BASE_LOG_FOLDER ,
172174 "remote_base" : remote_base_log_folder ,
173175 "delete_local_copy" : delete_local_copy ,
174176 }
175- | remote_task_handler_kwargs
177+ | _handler_kwargs ,
176178 )
177179 )
178- remote_task_handler_kwargs = {}
180+ _handler_kwargs = {}
179181
180182 elif remote_base_log_folder .startswith ("cloudwatch://" ):
181183 from airflow .providers .amazon .aws .log .cloudwatch_task_handler import CloudWatchRemoteLogIO
182184
183185 _default_conn_name_from ("airflow.providers.amazon.aws.hooks.logs" , "AwsLogsHook" )
184186 url_parts = urlsplit (remote_base_log_folder )
185187 REMOTE_TASK_LOG = CloudWatchRemoteLogIO (
186- ** (
188+ ** cast (
189+ "dict[str, Any]" ,
187190 {
188191 "base_log_folder" : BASE_LOG_FOLDER ,
189192 "remote_base" : remote_base_log_folder ,
190193 "delete_local_copy" : delete_local_copy ,
191194 "log_group_arn" : url_parts .netloc + url_parts .path ,
192195 }
193- | remote_task_handler_kwargs
196+ | _handler_kwargs ,
194197 )
195198 )
196- remote_task_handler_kwargs = {}
199+ _handler_kwargs = {}
197200 elif remote_base_log_folder .startswith ("gs://" ):
198201 from airflow .providers .google .cloud .log .gcs_task_handler import GCSRemoteLogIO
199202
200203 _default_conn_name_from ("airflow.providers.google.cloud.hooks.gcs" , "GCSHook" )
201204 key_path = conf .get_mandatory_value ("logging" , "google_key_path" , fallback = None )
202205
203206 REMOTE_TASK_LOG = GCSRemoteLogIO (
204- ** (
207+ ** cast (
208+ "dict[str, Any]" ,
205209 {
206210 "base_log_folder" : BASE_LOG_FOLDER ,
207211 "remote_base" : remote_base_log_folder ,
208212 "delete_local_copy" : delete_local_copy ,
209213 "gcp_key_path" : key_path ,
210214 }
211- | remote_task_handler_kwargs
215+ | _handler_kwargs ,
212216 )
213217 )
214- remote_task_handler_kwargs = {}
218+ _handler_kwargs = {}
215219 elif remote_base_log_folder .startswith ("wasb" ):
216220 from airflow .providers .microsoft .azure .log .wasb_task_handler import WasbRemoteLogIO
217221
@@ -224,17 +228,18 @@ def _default_conn_name_from(mod_path, hook_name):
224228 wasb_remote_base = remote_base_log_folder .removeprefix ("wasb://" )
225229
226230 REMOTE_TASK_LOG = WasbRemoteLogIO (
227- ** (
231+ ** cast (
232+ "dict[str, Any]" ,
228233 {
229234 "base_log_folder" : BASE_LOG_FOLDER ,
230235 "remote_base" : wasb_remote_base ,
231236 "delete_local_copy" : delete_local_copy ,
232237 "wasb_container" : wasb_log_container ,
233238 }
234- | remote_task_handler_kwargs
239+ | _handler_kwargs ,
235240 )
236241 )
237- remote_task_handler_kwargs = {}
242+ _handler_kwargs = {}
238243 elif remote_base_log_folder .startswith ("stackdriver://" ):
239244 key_path = conf .get_mandatory_value ("logging" , "GOOGLE_KEY_PATH" , fallback = None )
240245 # stackdriver:///airflow-tasks => airflow-tasks
@@ -255,32 +260,34 @@ def _default_conn_name_from(mod_path, hook_name):
255260 _default_conn_name_from ("airflow.providers.alibaba.cloud.hooks.oss" , "OSSHook" )
256261
257262 REMOTE_TASK_LOG = OSSRemoteLogIO (
258- ** (
263+ ** cast (
264+ "dict[str, Any]" ,
259265 {
260266 "base_log_folder" : BASE_LOG_FOLDER ,
261267 "remote_base" : remote_base_log_folder ,
262268 "delete_local_copy" : delete_local_copy ,
263269 }
264- | remote_task_handler_kwargs
270+ | _handler_kwargs ,
265271 )
266272 )
267- remote_task_handler_kwargs = {}
273+ _handler_kwargs = {}
268274 elif remote_base_log_folder .startswith ("hdfs://" ):
269275 from airflow .providers .apache .hdfs .log .hdfs_task_handler import HdfsRemoteLogIO
270276
271277 _default_conn_name_from ("airflow.providers.apache.hdfs.hooks.webhdfs" , "WebHDFSHook" )
272278
273279 REMOTE_TASK_LOG = HdfsRemoteLogIO (
274- ** (
280+ ** cast (
281+ "dict[str, Any]" ,
275282 {
276283 "base_log_folder" : BASE_LOG_FOLDER ,
277284 "remote_base" : urlsplit (remote_base_log_folder ).path ,
278285 "delete_local_copy" : delete_local_copy ,
279286 }
280- | remote_task_handler_kwargs
287+ | _handler_kwargs ,
281288 )
282289 )
283- remote_task_handler_kwargs = {}
290+ _handler_kwargs = {}
284291 elif ELASTICSEARCH_HOST :
285292 from airflow .providers .elasticsearch .log .es_task_handler import ElasticsearchRemoteLogIO
286293
0 commit comments