mvantellingen / python-zeep

A Python SOAP client
http://docs.python-zeep.org
Other
1.88k stars 578 forks source link

RecursionError: maximum recursion depth exceeded while calling a Python object #1312

Open falk-stefan opened 2 years ago

falk-stefan commented 2 years ago

I am using zeep==4.1.0 (Conda, Python 3.10) and experience a weird issue:

Only in debug-mode (PyCharm), zeep will throw me the following RecursionError

  ...
  File "/home/sfalk/miniconda3/envs/ris-sync/lib/python3.10/site-packages/zeep/xsd/elements/element.py", line 232, in render
    self._render_value_item(parent, value, render_path)
  File "/home/sfalk/miniconda3/envs/ris-sync/lib/python3.10/site-packages/zeep/xsd/elements/element.py", line 255, in _render_value_item
    return value._xsd_type.render(node, value, xsd_type, render_path)
  File "/home/sfalk/miniconda3/envs/ris-sync/lib/python3.10/site-packages/zeep/xsd/types/complex.py", line 295, in render
    element.render(node, element_value, child_path)
  File "/home/sfalk/miniconda3/envs/ris-sync/lib/python3.10/site-packages/zeep/xsd/elements/indicators.py", line 251, in render
    element.render(parent, element_value, child_path)
  File "/home/sfalk/miniconda3/envs/ris-sync/lib/python3.10/site-packages/zeep/xsd/elements/element.py", line 232, in render
    self._render_value_item(parent, value, render_path)
  File "/home/sfalk/miniconda3/envs/ris-sync/lib/python3.10/site-packages/zeep/xsd/elements/element.py", line 255, in _render_value_item
    return value._xsd_type.render(node, value, xsd_type, render_path)
  File "/home/sfalk/miniconda3/envs/ris-sync/lib/python3.10/site-packages/zeep/xsd/types/complex.py", line 273, in render
    and not isinstance(value, (list, dict, CompoundValue))
  File "/home/sfalk/miniconda3/envs/ris-sync/lib/python3.10/site-packages/zeep/xsd/valueobjects.py", line 150, in __getattribute__
    def __getattribute__(self, key):
RecursionError: maximum recursion depth exceeded while calling a Python object
python-BaseException

I am simply running the following code in debug mode:

import zeep

def main():
    wsdl = "https://data.bka.gv.at/ris/ogd/v2.6/ogdrisservice.asmx?WSDL"
    client = zeep.Client(wsdl=wsdl)
    print(client.service.Version())
    result = client.service.SearchDocuments(
        {
            "Suche": {
                "Judikatur": {
                    "Vfgh": {}
                }
            }
        }
    )
    print(result)

    print("All done.")

if __name__ == '__main__':
    main()
frost-nzcr4 commented 1 year ago

Consider updating attrs.