dspub...@freemail.hu wrote: > I have a problem with HTTPConnection object send() method (pyver3.3.1). I > want to send data from file-like object with HTTPConnection.send( f ), and > I get a "data should be a bytes-like object or an iterable, ..." > exception. I have investigated a send method, and discovered a problem: if > data has a read attribute, send it , and try send it again with > self.sock.sendall(data). My opinion is need an "else" after the "if > hasattr(data, "read")" > > Please, somebody help me. Does it a real BUG or my mistake?
I think your analysis is correct. Please file a bug report on <http://bugs.python.org>. > http.client.py > > > if hasattr(data, "read") : > if self.debuglevel > 0: > print("sendIng a read()able") > encode = False > try: > mode = data.mode > except AttributeError: > # io.BytesIO and other file-like objects don't have a > # `mode` attribute. > pass > else: > if "b" not in mode: > encode = True > if self.debuglevel > 0: > print("encoding file using iso-8859-1") > while 1: > datablock = data.read(blocksize) > if not datablock: > break > if encode: > datablock = datablock.encode("iso-8859-1") > self.sock.sendall(datablock) > ELSE: #!!!! i guess missing !!!! > try: > self.sock.sendall(data) > except TypeError: > if isinstance(data, collections.Iterable): > for d in data: > self.sock.sendall(d) > else: > raise TypeError("data should be a bytes-like object " > "or an iterable, got %r" % type(data)) -- http://mail.python.org/mailman/listinfo/python-list