Skip to content

Commit

Permalink
fixes mypy reported issue in tests package and refactors test with ty…
Browse files Browse the repository at this point in the history
…ping support
  • Loading branch information
sufyankhanrao committed Feb 24, 2025
1 parent 417e3f2 commit 9ad1c0e
Show file tree
Hide file tree
Showing 42 changed files with 6,339 additions and 575 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -160,4 +160,5 @@ cython_debug/
.idea/

# Visual Studio Code
.vscode/
.vscode/
.qodo
2 changes: 1 addition & 1 deletion apimatic_core/response_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ def __init__(self):
self._xml_item_name: Optional[str] = None

@validate_call
def deserializer(self, deserializer: Optional[Callable[[Union[str, bytes]], Any]]) -> 'ResponseHandler':
def deserializer(self, deserializer: Any) -> 'ResponseHandler':
self._deserializer = deserializer
return self

Expand Down
64 changes: 4 additions & 60 deletions apimatic_core/utilities/api_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -217,39 +217,6 @@ def json_deserialize(

return unboxing_function(decoded)

@staticmethod
@validate_call
def apply_unboxing_function(
value: Any, unboxing_function: Callable[[Any], Any], is_array: bool=False, is_dict: bool=False,
is_array_of_map: bool=False, is_map_of_array: bool=False, dimension_count: int=1
) -> Any:
if is_dict:
if is_map_of_array:
return {k: ApiHelper.apply_unboxing_function(v,
unboxing_function,
is_array=True,
dimension_count=dimension_count)
for k, v in value.items()}
else:
return {k: unboxing_function(v) for k, v in value.items()}
elif is_array:
if is_array_of_map:
return [
ApiHelper.apply_unboxing_function(element,
unboxing_function,
is_dict=True,
dimension_count=dimension_count)
for element in value]
elif dimension_count > 1:
return [ApiHelper.apply_unboxing_function(element, unboxing_function,
is_array=True,
dimension_count=dimension_count - 1)
for element in value]
else:
return [unboxing_function(element) for element in value]

return unboxing_function(value)

@staticmethod
@validate_call
def dynamic_deserialize(dynamic_response: Optional[str]) -> Any:
Expand Down Expand Up @@ -313,19 +280,19 @@ def datetime_deserialize(
if DateTimeFormat.HTTP_DATE_TIME == datetime_format:
if isinstance(deserialized_response, list):
return [element.datetime for element in
ApiHelper.json_deserialize(value, ApiHelper.HttpDateTime.from_value)]
ApiHelper.json_deserialize(str(value), ApiHelper.HttpDateTime.from_value)]
else:
return ApiHelper.HttpDateTime.from_value(value).datetime
elif DateTimeFormat.UNIX_DATE_TIME == datetime_format:
if isinstance(deserialized_response, list):
return [element.datetime for element in
ApiHelper.json_deserialize(value, ApiHelper.UnixDateTime.from_value)]
ApiHelper.json_deserialize(str(value), ApiHelper.UnixDateTime.from_value)]
else:
return ApiHelper.UnixDateTime.from_value(value).datetime
elif DateTimeFormat.RFC3339_DATE_TIME == datetime_format:
if isinstance(deserialized_response, list):
return [element.datetime for element in
ApiHelper.json_deserialize(value, ApiHelper.RFC3339DateTime.from_value)]
ApiHelper.json_deserialize(str(value), ApiHelper.RFC3339DateTime.from_value)]
else:
return ApiHelper.RFC3339DateTime.from_value(value).datetime

Expand Down Expand Up @@ -744,29 +711,6 @@ def to_lower_case(list_of_string: Optional[List[str]]) -> Optional[List[str]]:

return list(map(lambda x: x.lower(), list_of_string))

@staticmethod
@validate_call
def get_additional_properties(
dictionary: Dict[str, Any], unboxing_function: Callable[[Any], Any]
) -> Dict[str, Any]:
"""Extracts additional properties from the dictionary.
Args:
dictionary (dict): The dictionary to extract additional properties from.
unboxing_function (callable): The deserializer to apply to each item in the dictionary.
Returns:
dict: A dictionary containing the additional properties and their values.
"""
additional_properties = {}
for key, value in dictionary.items():
try:
additional_properties[key] = unboxing_function(value)
except Exception:
pass

return additional_properties

@staticmethod
def sanitize_model(**kwargs: Any) -> Dict[str, Any]:
_sanitized_dump: Dict[str, Any] = {}
Expand Down Expand Up @@ -802,7 +746,7 @@ def sanitize_model(**kwargs: Any) -> Dict[str, Any]:

@staticmethod
def check_conflicts_with_additional_properties(
model_cls: BaseModel, properties: Dict[str, Any], additional_props_field: str
model_cls: BaseModel, properties: Any, additional_props_field: str
) -> None:
"""Raise ValueError if properties contain names conflicting with model fields."""
defined_fields = {
Expand Down
Loading

0 comments on commit 9ad1c0e

Please sign in to comment.