Zeep does not correctly handle ONVIF WSDL
Hello all,
I am using zeep 4.2.0, with WSDL v1.1.
I am attempting to implement ONVIF via zeep, but i am seeing many issues in the responses, they are either incomplete, incorrectly parsed or simply fail to work.
Quick and easy examples to reproduce failure cases.
python3.7 -m zeep https://www.onvif.org/ver10/device/wsdl/devicemgmt.wsdl python3.7 -m zeep https://www.onvif.org/ver10/events/wsdl/event.wsdl python3.7 -m zeep https://www.onvif.org/ver20/media/wsdl/media.wsdl
Traceback (most recent call last): File "/usr/lib/python3.7/runpy.py", line 193, in _run_module_as_main "__main__", mod_spec) File "/usr/lib/python3.7/runpy.py", line 85, in _run_code exec(code, run_globals) File "/usr/local/lib/python3.7/dist-packages/zeep-4.2.0-py3.7.egg/zeep/__main__.py", line 92, in <module> main(args) File "/usr/local/lib/python3.7/dist-packages/zeep-4.2.0-py3.7.egg/zeep/__main__.py", line 87, in main client.wsdl.dump() File "/usr/local/lib/python3.7/dist-packages/zeep-4.2.0-py3.7.egg/zeep/wsdl/wsdl.py", line 124, in dump value = type_obj.signature(schema=self.types) File "/usr/local/lib/python3.7/dist-packages/zeep-4.2.0-py3.7.egg/zeep/xsd/types/complex.py", line 506, in signature part = element.signature(schema, standalone=False) File "/usr/local/lib/python3.7/dist-packages/zeep-4.2.0-py3.7.egg/zeep/xsd/elements/indicators.py", line 269, in signature value = element.signature(schema, standalone=False) File "/usr/local/lib/python3.7/dist-packages/zeep-4.2.0-py3.7.egg/zeep/xsd/elements/element.py", line 315, in signature value = self.type.signature(schema, standalone=False) File "/usr/local/lib/python3.7/dist-packages/zeep-4.2.0-py3.7.egg/zeep/xsd/types/complex.py", line 513, in signature value = ", ".join(parts) TypeError: sequence item 0: expected str instance, NoneType found
Is there something wrong with ONVIF WSDL ? Am i doing something wrong ? or can zeep only handle very simply WSDL docs ???
In my testing, suds works without issue, so zeep should be able to handle ONVIF aswell.
You can see the example pull_live_events.py from the nirsimetri/onvif-python library