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.

classification
Title: ExpatError not property wrapped
Type: behavior Stage: needs patch
Components: XML Versions: Python 3.9
process
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)
   1200
   1201 ##


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

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


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

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

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.
History
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