Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot perform operations with custom destination, fails to unmarshal #88

Open
jettdc opened this issue May 22, 2024 · 0 comments
Open

Comments

@jettdc
Copy link

jettdc commented May 22, 2024

When the response comes back, there is no destination_type field, meaning that it fails to deserialize.

KeyError                                  Traceback (most recent call last)
Cell In[46], line 1
----> 1 res = s.destinations.list_destinations(request=api.ListDestinationsRequest(
      2     workspace_ids=[
      3         workspace_id
      4     ],
      5 ))

File ~/envs/default/lib/python3.11/site-packages/airbyte_api/destinations.py:223, in Destinations.list_destinations(self, request)
    220 if http_res.status_code == 200:
    221     # pylint: disable=no-else-return
    222     if utils.match_content_type(http_res.headers.get('Content-Type') or '', 'application/json'):                
--> 223         out = utils.unmarshal_json(http_res.text, Optional[models.DestinationsResponse])
    224         res.destinations_response = out
    225     else:

File ~/envs/default/lib/python3.11/site-packages/airbyte_api/utils/utils.py:825, in unmarshal_json(data, typ, decoder)
    823 json_dict = json.loads(data)
    824 try:
--> 825     out = unmarshal.from_dict({"res": json_dict})
    826 except AttributeError as attr_err:
    827     raise AttributeError(
    828         f"unable to unmarshal {data} as {typ} - {attr_err}"
    829     ) from attr_err

File ~/envs/default/lib/python3.11/site-packages/dataclasses_json/api.py:70, in DataClassJsonMixin.from_dict(cls, kvs, infer_missing)
     65 @classmethod
     66 def from_dict(cls: Type[A],
     67               kvs: Json,
     68               *,
     69               infer_missing=False) -> A:
---> 70     return _decode_dataclass(cls, kvs, infer_missing)

File ~/envs/default/lib/python3.11/site-packages/dataclasses_json/core.py:221, in _decode_dataclass(cls, kvs, infer_missing)
    219     init_kwargs[field.name] = value
    220 elif _is_supported_generic(field_type) and field_type != str:
--> 221     init_kwargs[field.name] = _decode_generic(field_type,
    222                                               field_value,
    223                                               infer_missing)
    224 else:
    225     init_kwargs[field.name] = _support_extended_types(field_type,
    226                                                       field_value)

File ~/envs/default/lib/python3.11/site-packages/dataclasses_json/core.py:323, in _decode_generic(type_, value, infer_missing)
    321 elif _is_optional(type_) and len(_args) == 2:  # Optional
    322     type_arg = _get_type_arg_param(type_, 0)
--> 323     res = _decode_type(type_arg, value, infer_missing)
    324 else:  # Union (already decoded or try to decode a dataclass)
    325     type_options = _get_type_args(type_)

File ~/envs/default/lib/python3.11/site-packages/dataclasses_json/core.py:235, in _decode_type(type_, value, infer_missing)
    233     return _get_decoder_in_global_config(type_)(value)
    234 if _is_supported_generic(type_):
--> 235     return _decode_generic(type_, value, infer_missing)
    236 if is_dataclass(type_) or is_dataclass(value):
    237     return _decode_dataclass(type_, value, infer_missing)

File ~/envs/default/lib/python3.11/site-packages/dataclasses_json/core.py:315, in _decode_generic(type_, value, infer_missing)
    313 elif _is_generic_dataclass(type_):
    314     origin = _get_type_origin(type_)
--> 315     res = _decode_dataclass(origin, value, infer_missing)
    316 else:  # Optional or Union
    317     _args = _get_type_args(type_)

File ~/envs/default/lib/python3.11/site-packages/dataclasses_json/core.py:221, in _decode_dataclass(cls, kvs, infer_missing)
    219     init_kwargs[field.name] = value
    220 elif _is_supported_generic(field_type) and field_type != str:
--> 221     init_kwargs[field.name] = _decode_generic(field_type,
    222                                               field_value,
    223                                               infer_missing)
    224 else:
    225     init_kwargs[field.name] = _support_extended_types(field_type,
    226                                                       field_value)

File ~/envs/default/lib/python3.11/site-packages/dataclasses_json/core.py:303, in _decode_generic(type_, value, infer_missing)
    301     xs = dict(zip(_decode_items(_get_type_arg_param(type_, 0), value.keys(), infer_missing), value.values()))
    302 else:
--> 303     xs = _decode_items(_get_type_arg_param(type_, 0), value, infer_missing)
    305 # get the constructor if using corresponding generic type in `typing`
    306 # otherwise fallback on constructing using type_ itself
    307 materialize_type = type_

File ~/envs/default/lib/python3.11/site-packages/dataclasses_json/core.py:402, in _decode_items(type_args, xs, infer_missing)
    397     else:
    398         raise TypeError(f"Number of types specified in the collection type {str(type_args)} "
    399                         f"does not match number of elements in the collection. In case you are working with tuples"
    400                         f"take a look at this document "
    401                         f"docs.python.org/3/library/typing.html#annotating-tuples.")
--> 402 return list(_decode_type(type_args, x, infer_missing) for x in xs)

File ~/envs/default/lib/python3.11/site-packages/dataclasses_json/core.py:402, in <genexpr>(.0)
    397     else:
    398         raise TypeError(f"Number of types specified in the collection type {str(type_args)} "
    399                         f"does not match number of elements in the collection. In case you are working with tuples"
    400                         f"take a look at this document "
    401                         f"docs.python.org/3/library/typing.html#annotating-tuples.")
--> 402 return list(_decode_type(type_args, x, infer_missing) for x in xs)

File ~/envs/default/lib/python3.11/site-packages/dataclasses_json/core.py:235, in _decode_type(type_, value, infer_missing)
    233     return _get_decoder_in_global_config(type_)(value)
    234 if _is_supported_generic(type_):
--> 235     return _decode_generic(type_, value, infer_missing)
    236 if is_dataclass(type_) or is_dataclass(value):
    237     return _decode_dataclass(type_, value, infer_missing)

File ~/envs/default/lib/python3.11/site-packages/dataclasses_json/core.py:315, in _decode_generic(type_, value, infer_missing)
    313 elif _is_generic_dataclass(type_):
    314     origin = _get_type_origin(type_)
--> 315     res = _decode_dataclass(origin, value, infer_missing)
    316 else:  # Optional or Union
    317     _args = _get_type_args(type_)

File ~/envs/default/lib/python3.11/site-packages/dataclasses_json/core.py:173, in _decode_dataclass(cls, kvs, infer_missing)
    170 if not field.init:
    171     continue
--> 173 field_value = kvs[field.name]
    174 field_type = types[field.name]
    175 if field_value is None:

KeyError: 'destination_type'

These operations work fine if I just use the public api.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant