python-zeep icon indicating copy to clipboard operation
python-zeep copied to clipboard

The "Extension" part at ONVIF wsdl is always parsed into a weird dict

Open kaburagisec opened this issue 4 months ago • 0 comments

I use zeep as the main ONVIF library for my repo at nirsimetri/onvif-python.

Since I also implemented it in PHP with native SOAPClient, the results are better in PHP like this:

{
    "Capabilities": {
        ...
        "Extension": {
            "DeviceIO": {
                "XAddr": "http:\/\/192.168.1.3\/onvif\/DeviceIO",
                "VideoSources": 1,
                "VideoOutputs": 0,
                "AudioSources": 1,
                "AudioOutputs": 1,
                "RelayOutputs": 0
            },
            "Recording": {
                "XAddr": "http:\/\/192.168.1.3\/onvif\/Recording",
                "ReceiverSource": false,
                "MediaProfileSource": true,
                "DynamicRecordings": false,
                "DynamicTracks": false,
                "MaxStringLength": 64
            },
            "Search": {
                "XAddr": "http:\/\/192.168.1.3\/onvif\/SearchRecording",
                "MetadataSearch": false
            },
            "Replay": {
                "XAddr": "http:\/\/192.168.1.3\/onvif\/Replay"
            }
        }
    }
}

But, when I use zeep (python) as a library, the "Extension" section is parsed like this:

{
    ...
    'Extension': {
        '_value_1': [
            <Element {http://www.onvif.org/ver10/schema}DeviceIO at 0x1fe03a83d00>,
            <Element {http://www.onvif.org/ver10/schema}Recording at 0x1fe03a973c0>,
            <Element {http://www.onvif.org/ver10/schema}Search at 0x1fe03a96900>,
            <Element {http://www.onvif.org/ver10/schema}Replay at 0x1fe03a96ac0>
        ],
        'DeviceIO': None,
        'Display': None,
        'Recording': None,
        'Search': None,
        'Replay': None,
        'Receiver': None,
        'AnalyticsDevice': None,
        'Extensions': None
    },
    '_attr_1': None
}

I still haven't found a solution to this, and I'm already using the latest version of Zeep:

$ pip show zeep
Name: zeep
Version: 4.3.2
Summary: A Python SOAP client

So, is there any PR or fix regarding this issue?

kaburagisec avatar Sep 26 '25 18:09 kaburagisec