This commit is contained in:
@@ -107,10 +107,7 @@ def _instantiate(
|
||||
TypeError: If instantiation fails
|
||||
"""
|
||||
# Handle JSON payload first
|
||||
try:
|
||||
json_payload = json.loads(payload) if is_json and isinstance(payload, str) else None
|
||||
except Exception:
|
||||
json_payload = None
|
||||
json_payload = json.loads(payload) if is_json and isinstance(payload, str) else None
|
||||
|
||||
# Handle basic types
|
||||
if type_string == "str":
|
||||
@@ -143,12 +140,22 @@ def _instantiate(
|
||||
if type_string.startswith("typing.Set"):
|
||||
if json_payload is not None:
|
||||
return set(json_payload)
|
||||
return set(payload if isinstance(payload, list) else payload.split(","))
|
||||
_set_type = _extract_type_of(type_string)
|
||||
return set(
|
||||
payload
|
||||
if isinstance(payload, list)
|
||||
else [_instantiate(_set_type, p) for p in payload.split(",")]
|
||||
)
|
||||
|
||||
if type_string.startswith("typing.Tuple"):
|
||||
if json_payload is not None:
|
||||
return tuple(json_payload)
|
||||
return tuple(payload if isinstance(payload, list) else payload.split(","))
|
||||
_tuple_type = _extract_type_of(type_string)
|
||||
return tuple(
|
||||
payload
|
||||
if isinstance(payload, list)
|
||||
else [_instantiate(_tuple_type, p) for p in payload.split(",")]
|
||||
)
|
||||
|
||||
if type_string.startswith("typing.Optional"):
|
||||
inner_type = _extract_type_of(type_string)
|
||||
|
||||
Reference in New Issue
Block a user