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

Unsupported typing: typing.Dict #494

Closed
HerrMuellerluedenscheid opened this issue May 14, 2021 · 2 comments
Closed

Unsupported typing: typing.Dict #494

HerrMuellerluedenscheid opened this issue May 14, 2021 · 2 comments

Comments

@HerrMuellerluedenscheid

Hey,

This problem occurrs after updating from xsdata 21.4 to 21.5:

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/xsdata/formats/dataclass/models/builders.py", line 408, in analyze_types
    types = evaluate(type_hint, globalns)
  File "/usr/local/lib/python3.8/site-packages/xsdata/formats/dataclass/typing.py", line 47, in evaluate
    return tuple(_evaluate(_eval_type(tp, globalns, localns)))
  File "/usr/local/lib/python3.8/site-packages/xsdata/formats/dataclass/typing.py", line 51, in _evaluate
    origin = get_origin(tp)
  File "/usr/local/lib/python3.8/site-packages/xsdata/formats/dataclass/typing.py", line 17, in get_origin
    raise TypeError()
TypeError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/qs-manager", line 33, in <module>
    sys.exit(load_entry_point('ringnes==0.2.3+580d308', 'console_scripts', 'qs-manager')())
  File "/usr/local/lib/python3.8/site-packages/ringnes-0.2.3+580d308-py3.8-linux-aarch64.egg/ringnes/app/qs_sensor.py", line 84, in main
    manager = QuakeManager(virtual_sensor=ns.virtual, dev_mode=ns.dev_mode)
  File "/usr/local/lib/python3.8/site-packages/ringnes-0.2.3+580d308-py3.8-linux-aarch64.egg/ringnes/manager.py", line 65, in __init__
    self.location.set_meta_data_manager(self.meta_manager)
  File "/usr/local/lib/python3.8/site-packages/ringnes-0.2.3+580d308-py3.8-linux-aarch64.egg/ringnes/location.py", line 259, in set_meta_data_manager
    self.notify_meta_new_station(self.get_meta_station())
  File "/usr/local/lib/python3.8/site-packages/ringnes-0.2.3+580d308-py3.8-linux-aarch64.egg/ringnes/meta/model.py", line 2298, in notify_meta_new_station
    self._meta_data_manager.new_station(station)
  File "/usr/local/lib/python3.8/site-packages/ringnes-0.2.3+580d308-py3.8-linux-aarch64.egg/ringnes/meta/manager.py", line 80, in wrapper
    ret = meth(self, *args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/ringnes-0.2.3+580d308-py3.8-linux-aarch64.egg/ringnes/meta/manager.py", line 252, in new_station
    self.new_channels(active_channels)
  File "/usr/local/lib/python3.8/site-packages/ringnes-0.2.3+580d308-py3.8-linux-aarch64.egg/ringnes/meta/manager.py", line 82, in wrapper
    self.save_json(self.metadata_path)
  File "/usr/local/lib/python3.8/site-packages/ringnes-0.2.3+580d308-py3.8-linux-aarch64.egg/ringnes/meta/manager.py", line 342, in save_json
    f.write(self.serializer_json.render(meta_stations))
  File "/usr/local/lib/python3.8/site-packages/xsdata/formats/dataclass/serializers/json.py", line 49, in render
    self.write(output, obj)
  File "/usr/local/lib/python3.8/site-packages/xsdata/formats/dataclass/serializers/json.py", line 59, in write
    self.dump_factory(self.convert(obj), out, indent=self.indent)
  File "/usr/local/lib/python3.8/site-packages/xsdata/formats/dataclass/serializers/json.py", line 70, in convert
    for var in self.context.build(obj.__class__).get_all_vars()
  File "/usr/local/lib/python3.8/site-packages/xsdata/formats/dataclass/context.py", line 152, in build
    self.cache[clazz] = XmlMetaBuilder.build(
  File "/usr/local/lib/python3.8/site-packages/xsdata/formats/dataclass/models/builders.py", line 75, in build
    for var in class_vars:
  File "/usr/local/lib/python3.8/site-packages/xsdata/formats/dataclass/models/builders.py", line 121, in build_vars
    yield builder.build(
  File "/usr/local/lib/python3.8/site-packages/xsdata/formats/dataclass/models/builders.py", line 205, in build
    origin, sub_origin, types = self.analyze_types(type_hint, globalns)
  File "/usr/local/lib/python3.8/site-packages/xsdata/formats/dataclass/models/builders.py", line 424, in analyze_types
    raise XmlContextError(f"Unsupported typing: {type_hint}")
xsdata.exceptions.XmlContextError: Unsupported typing: typing.Dict

Not sure where that is rooted exactly but I'll try to dig into it soon.

Regards

@tefra
Copy link
Owner

tefra commented May 14, 2021

If you use the code generator re-run it against your schema, otherwise replace all Dict typing with explicit arguments

xxx: Dict = field(... with xxx: Dict[str, str] = field(...

Currently for dictionaries only str,str arguments are supported, but I plan to extend this in the future.

tefra added a commit that referenced this issue May 22, 2021
@tefra tefra closed this as completed in 3b5495a May 22, 2021
@tefra
Copy link
Owner

tefra commented May 22, 2021

Hi @HerrMuellerluedenscheid , a fix to treat bare Dict annotations as Dict[str, str], practically reverting to the original behavior was merged on master and will be included in the next release

Thank you

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

2 participants