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: xmlrpc.client binary object examples needs to use binary mode
Type: behavior Stage: needs patch
Components: Documentation Versions: Python 3.1, Python 3.2
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: georg.brandl Nosy List: georg.brandl, loewis, mnewman, vstinner
Priority: normal Keywords:

Created on 2010-01-29 00:21 by mnewman, last changed 2022-04-11 14:56 by admin. This issue is now closed.

Messages (3)
msg98488 - (view) Author: Michael Newman (mnewman) Date: 2010-01-29 00:21
In Section 20.23.3 Binary Objects of:

The server AND client examples fail because the read and write methods are not set to binary mode.

Example of what the client portion shows if you use the examples "as is" with Python 3.1.1 (r311:74483) on win32:

Traceback (most recent call last):
  File "", line 10, in <module>
  File "C:\python31\lib\xmlrpc\", line 1029, in __call__
    return self.__send(self.__name, args)
  File "C:\python31\lib\xmlrpc\", line 1271, in __request
  File "C:\python31\lib\xmlrpc\", line 1070, in request
    return self.parse_response(resp)
  File "C:\python31\lib\xmlrpc\", line 1169, in parse_response
    return u.close()
  File "C:\python31\lib\xmlrpc\", line 673, in close
    raise Fault(**self._stack[0])
xmlrpc.client.Fault: <Fault 1: "<class 'UnicodeDecodeError'>:'charmap' codec can't decode byte 0x81 in position 297: character maps to <undefined>">

To fix it, the server example should have:

handle = open("python_logo.jpg", "rb")

and the client example should have:

handle = open("fetched_python_logo.jpg", "wb")
msg98545 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2010-01-30 02:19
Fixed in trunk by r77836 (r77837) and py3k by r77838 (r77839), thanks.
msg98546 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2010-01-30 02:21
Note: The python3 example closed the file after the return instruction :-( I fixed that by using the with syntax, as does Python trunk example.
Date User Action Args
2022-04-11 14:56:57adminsetgithub: 52049
2010-01-30 02:21:26vstinnersetmessages: + msg98546
2010-01-30 02:19:50vstinnersetstatus: open -> closed
resolution: fixed
2010-01-30 02:19:38vstinnersetnosy: + vstinner
messages: + msg98545
2010-01-29 01:57:45ezio.melottisetversions: + Python 3.2
nosy: + loewis

priority: normal
type: behavior
stage: needs patch
2010-01-29 00:21:14mnewmancreate