This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Title: ExpatError not property wrapped
Type: behavior Stage: needs patch
Components: XML Versions: Python 3.9
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: docs@python, fdrake, leos, loewis, matrixise, nanjekyejoannah, scoder
Priority: low Keywords:

Created on 2010-10-14 21:54 by leos, last changed 2022-04-11 14:57 by admin.

Messages (7)
msg118721 - (view) Author: Leo Shklovskii (leos) Date: 2010-10-14 21:54
From my understanding of the documentation, the expected behavior is for xmlrpclib to raise an xmlrpclib.Fault wrapping the original error from whatever parser it chose to use if there's an error in parsing the response.

If, however, its using Expat under the hood and the response is completely blank, the ExpatError percolates up to the calling code unwrapped.

The following stack trace
/usr/lib/python2.6/xmlrpclib.pyc in __call__(self, *args)
   1197         return _Method(self.__send, "%s.%s" % (self.__name, name))
   1198     def __call__(self, *args):
-> 1199         return self.__send(self.__name, args)
   1201 ##

/usr/lib/python2.6/xmlrpclib.pyc in __request(self, methodname, params)
   1487             self.__handler,
   1488             request,
-> 1489             verbose=self.__verbose
   1490             )

/usr/lib/python2.6/xmlrpclib.pyc in request(self, host, handler, request_body, verbose)
   1251             sock = None
-> 1253         return self._parse_response(h.getfile(), sock)
   1255     ##

/usr/lib/python2.6/xmlrpclib.pyc in _parse_response(self, file, sock)
   1389         file.close()
-> 1390         p.close()
   1392         return u.close()

/usr/lib/python2.6/xmlrpclib.pyc in close(self)
    603         def close(self):
--> 604             self._parser.Parse("", 1) # end of data
    605             del self._target, self._parser # get rid of circular references

ExpatError: no element found: line 1, column 0

Please let me know if I'm misinterpreting the docs or if you need any other information to repro this bug.
msg118722 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2010-10-14 22:08
> From my understanding of the documentation, the expected behavior
> is for xmlrpclib to raise an xmlrpclib.Fault [...]

What specific wording in the documentation makes you thinks so?

If anything, I'd expect a ResponseError (which appears undocumented).
msg118725 - (view) Author: Leo Shklovskii (leos) Date: 2010-10-14 22:23
Looking at the docs more closely, you're right, I'm not entirely sure what error should come out in that case but my main point with the bug is that the error should be an xmlrpclib error rather than one from the specific parser that its choosing to use.

Should it be a separate bug that ReponseError is undocumented then?
msg118726 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2010-10-14 22:31
Not necessarily a separate report. Would you be interested in writing a patch that clears that all up (for 2.7 and/or 3.2)?
msg118728 - (view) Author: Leo Shklovskii (leos) Date: 2010-10-14 22:43
I'm sorry, I would like to but I don't have the time in the near future. I'm running into this as a secondary symptom of a bigger issue (in our own setup, not in Python) that I'm troubleshooting.
msg342502 - (view) Author: Stéphane Wirtel (matrixise) * (Python committer) Date: 2019-05-14 18:45
Hi Scoder,

I am not sure if this issue is relevant for 3.7 and 3.8 but do you want to check this issue?

Thank you,
msg351709 - (view) Author: Stefan Behnel (scoder) * (Python committer) Date: 2019-09-10 15:49
I agree that it's surprising to get a low-level parser error from a high-level library like xmlrpc. I think this can be changed without deprecation, because users must expect exceptions from the xmlrpc library in any case.

Targeting to Py3.9, needs patch with tests.
Date User Action Args
2022-04-11 14:57:07adminsetgithub: 54317
2019-09-15 03:45:49nanjekyejoannahsetnosy: + nanjekyejoannah
2019-09-10 15:49:51scodersetpriority: normal -> low

stage: needs patch
messages: + msg351709
versions: + Python 3.9, - Python 2.7, Python 3.2, Python 3.7, Python 3.8
2019-05-14 18:45:54matrixisesetnosy: + matrixise, scoder

messages: + msg342502
versions: + Python 3.7, Python 3.8, - Python 3.1
2010-10-27 10:23:29fdrakesetnosy: + fdrake
2010-10-15 13:53:12eric.araujosetnosy: + docs@python

versions: + Python 3.1, Python 2.7, Python 3.2, - Python 2.6
2010-10-14 22:43:09leossetmessages: + msg118728
2010-10-14 22:31:58loewissetmessages: + msg118726
2010-10-14 22:23:10leossetmessages: + msg118725
2010-10-14 22:08:42loewissetnosy: + loewis
messages: + msg118722
2010-10-14 21:54:28leoscreate