55import json
66from copy import deepcopy
77from json import JSONDecodeError
8- from typing import Any , Dict , List , Mapping , Optional
8+ from typing import Any , Dict , List , Optional
9+ from collections .abc import Mapping
910
1011from airbyte_cdk .connector_builder .models import (
1112 AuxiliaryRequest ,
3536# -------
3637
3738
38- def airbyte_message_to_json (message : AirbyteMessage ) -> Optional [ Dict [ str , JsonType ]] :
39+ def airbyte_message_to_json (message : AirbyteMessage ) -> dict [ str , JsonType ] | None :
3940 """
4041 Converts an AirbyteMessage to a JSON dictionary if its type is LOG.
4142
@@ -64,7 +65,7 @@ def airbyte_message_to_json(message: AirbyteMessage) -> Optional[Dict[str, JsonT
6465 return None
6566
6667
67- def clean_config (config : Dict [str , Any ]) -> Dict [str , Any ]:
68+ def clean_config (config : dict [str , Any ]) -> dict [str , Any ]:
6869 """
6970 Cleans the configuration dictionary by removing all keys that start with a double underscore.
7071
@@ -85,7 +86,7 @@ def clean_config(config: Dict[str, Any]) -> Dict[str, Any]:
8586 return cleaned_config
8687
8788
88- def create_request_from_log_message (json_http_message : Dict [str , Any ]) -> HttpRequest :
89+ def create_request_from_log_message (json_http_message : dict [str , Any ]) -> HttpRequest :
8990 """
9091 Creates an HttpRequest object from the provided JSON-formatted log message.
9192
@@ -129,7 +130,7 @@ def create_request_from_log_message(json_http_message: Dict[str, Any]) -> HttpRe
129130 )
130131
131132
132- def create_response_from_log_message (json_http_message : Dict [str , Any ]) -> HttpResponse :
133+ def create_response_from_log_message (json_http_message : dict [str , Any ]) -> HttpResponse :
133134 """
134135 Generate an HttpResponse instance from a JSON log message containing HTTP response details.
135136
@@ -174,7 +175,7 @@ def parse_json(log_message: AirbyteLogMessage) -> JsonType:
174175 return None
175176
176177
177- def parse_slice_description (log_message : str ) -> Dict [str , Any ]:
178+ def parse_slice_description (log_message : str ) -> dict [str , Any ]:
178179 """
179180 Parses a log message containing a JSON payload and returns it as a dictionary.
180181
@@ -203,7 +204,7 @@ def parse_slice_description(log_message: str) -> Dict[str, Any]:
203204def should_close_page (
204205 at_least_one_page_in_group : bool ,
205206 message : AirbyteMessage ,
206- json_message : Optional [ Dict [ str , Any ]] ,
207+ json_message : dict [ str , Any ] | None ,
207208) -> bool :
208209 """
209210 Determines whether a page should be closed based on its content and state.
@@ -269,7 +270,7 @@ def should_close_page_for_slice(at_least_one_page_in_group: bool, message: Airby
269270 return at_least_one_page_in_group and should_process_slice_descriptor (message )
270271
271272
272- def is_page_http_request (json_message : Optional [ Dict [ str , Any ]] ) -> bool :
273+ def is_page_http_request (json_message : dict [ str , Any ] | None ) -> bool :
273274 """
274275 Determines whether a given JSON message represents a page HTTP request.
275276
@@ -291,7 +292,7 @@ def is_page_http_request(json_message: Optional[Dict[str, Any]]) -> bool:
291292 return is_http_log (json_message ) and not is_auxiliary_http_request (json_message )
292293
293294
294- def is_http_log (message : Dict [str , JsonType ]) -> bool :
295+ def is_http_log (message : dict [str , JsonType ]) -> bool :
295296 """
296297 Determine if the provided log message represents an HTTP log.
297298
@@ -308,7 +309,7 @@ def is_http_log(message: Dict[str, JsonType]) -> bool:
308309 return bool (message .get ("http" , False ))
309310
310311
311- def is_auxiliary_http_request (message : Optional [ Dict [ str , Any ]] ) -> bool :
312+ def is_auxiliary_http_request (message : dict [ str , Any ] | None ) -> bool :
312313 """
313314 Determines if the provided message represents an auxiliary HTTP request.
314315
@@ -415,10 +416,10 @@ def is_state_message(message: AirbyteMessage) -> bool:
415416
416417
417418def handle_current_slice (
418- current_slice_pages : List [StreamReadPages ],
419- current_slice_descriptor : Optional [ Dict [ str , Any ]] = None ,
420- latest_state_message : Optional [ Dict [ str , Any ]] = None ,
421- auxiliary_requests : Optional [ List [ AuxiliaryRequest ]] = None ,
419+ current_slice_pages : list [StreamReadPages ],
420+ current_slice_descriptor : dict [ str , Any ] | None = None ,
421+ latest_state_message : dict [ str , Any ] | None = None ,
422+ auxiliary_requests : list [ AuxiliaryRequest ] | None = None ,
422423) -> StreamReadSlices :
423424 """
424425 Handles the current slice by packaging its pages, descriptor, and state into a StreamReadSlices instance.
@@ -441,10 +442,10 @@ def handle_current_slice(
441442
442443
443444def handle_current_page (
444- current_page_request : Optional [ HttpRequest ] ,
445- current_page_response : Optional [ HttpResponse ] ,
446- current_slice_pages : List [StreamReadPages ],
447- current_page_records : List [Mapping [str , Any ]],
445+ current_page_request : HttpRequest | None ,
446+ current_page_response : HttpResponse | None ,
447+ current_slice_pages : list [StreamReadPages ],
448+ current_page_records : list [Mapping [str , Any ]],
448449) -> tuple [None , None ]:
449450 """
450451 Closes the current page by appending its request, response, and records
@@ -472,7 +473,7 @@ def handle_current_page(
472473 return None , None
473474
474475
475- def handle_auxiliary_request (json_message : Dict [str , JsonType ]) -> AuxiliaryRequest :
476+ def handle_auxiliary_request (json_message : dict [str , JsonType ]) -> AuxiliaryRequest :
476477 """
477478 Parses the provided JSON message and constructs an AuxiliaryRequest object by extracting
478479 relevant fields from nested dictionaries.
@@ -517,10 +518,10 @@ def handle_auxiliary_request(json_message: Dict[str, JsonType]) -> AuxiliaryRequ
517518
518519def handle_log_message (
519520 message : AirbyteMessage ,
520- json_message : Dict [str , JsonType ] | None ,
521+ json_message : dict [str , JsonType ] | None ,
521522 at_least_one_page_in_group : bool ,
522- current_page_request : Optional [ HttpRequest ] ,
523- current_page_response : Optional [ HttpResponse ] ,
523+ current_page_request : HttpRequest | None ,
524+ current_page_response : HttpResponse | None ,
524525) -> LOG_MESSAGES_OUTPUT_TYPE :
525526 """
526527 Process a log message by handling both HTTP-specific and auxiliary log entries.
@@ -571,7 +572,7 @@ def handle_record_message(
571572 schema_inferrer : SchemaInferrer ,
572573 datetime_format_inferrer : DatetimeFormatInferrer ,
573574 records_count : int ,
574- current_page_records : List [Mapping [str , Any ]],
575+ current_page_records : list [Mapping [str , Any ]],
575576) -> int :
576577 """
577578 Processes an Airbyte record message by updating the current batch and accumulating schema and datetime format information.
@@ -600,7 +601,7 @@ def handle_record_message(
600601# -------
601602
602603
603- def get_airbyte_cdk_from_message (json_message : Dict [str , JsonType ]) -> dict : # type: ignore
604+ def get_airbyte_cdk_from_message (json_message : dict [str , JsonType ]) -> dict : # type: ignore
604605 """
605606 Retrieves the "airbyte_cdk" dictionary from the provided JSON message.
606607
@@ -658,7 +659,7 @@ def get_auxiliary_request_title_prefix(stream: dict) -> str: # type: ignore
658659 return "Parent stream: " if stream .get ("is_substream" , False ) else ""
659660
660661
661- def get_http_property_from_message (json_message : Dict [str , JsonType ]) -> dict : # type: ignore
662+ def get_http_property_from_message (json_message : dict [str , JsonType ]) -> dict : # type: ignore
662663 """
663664 Retrieves the "http" dictionary from the provided JSON message.
664665
0 commit comments