mirror of https://github.com/python/cpython.git
merge heads
This commit is contained in:
commit
9bc3653083
|
@ -153,7 +153,7 @@ I'm not going to talk about it here, except to warn you that you need to use
|
||||||
there, you may wait forever for the reply, because the request may still be in
|
there, you may wait forever for the reply, because the request may still be in
|
||||||
your output buffer.
|
your output buffer.
|
||||||
|
|
||||||
Now we come the major stumbling block of sockets - ``send`` and ``recv`` operate
|
Now we come to the major stumbling block of sockets - ``send`` and ``recv`` operate
|
||||||
on the network buffers. They do not necessarily handle all the bytes you hand
|
on the network buffers. They do not necessarily handle all the bytes you hand
|
||||||
them (or expect from them), because their major focus is handling the network
|
them (or expect from them), because their major focus is handling the network
|
||||||
buffers. In general, they return when the associated network buffers have been
|
buffers. In general, they return when the associated network buffers have been
|
||||||
|
@ -164,7 +164,7 @@ been completely dealt with.
|
||||||
When a ``recv`` returns 0 bytes, it means the other side has closed (or is in
|
When a ``recv`` returns 0 bytes, it means the other side has closed (or is in
|
||||||
the process of closing) the connection. You will not receive any more data on
|
the process of closing) the connection. You will not receive any more data on
|
||||||
this connection. Ever. You may be able to send data successfully; I'll talk
|
this connection. Ever. You may be able to send data successfully; I'll talk
|
||||||
about that some on the next page.
|
more about this later.
|
||||||
|
|
||||||
A protocol like HTTP uses a socket for only one transfer. The client sends a
|
A protocol like HTTP uses a socket for only one transfer. The client sends a
|
||||||
request, then reads a reply. That's it. The socket is discarded. This means that
|
request, then reads a reply. That's it. The socket is discarded. This means that
|
||||||
|
|
|
@ -786,6 +786,9 @@ def _tunnel(self):
|
||||||
line = response.fp.readline(_MAXLINE + 1)
|
line = response.fp.readline(_MAXLINE + 1)
|
||||||
if len(line) > _MAXLINE:
|
if len(line) > _MAXLINE:
|
||||||
raise LineTooLong("header line")
|
raise LineTooLong("header line")
|
||||||
|
if not line:
|
||||||
|
# for sites which EOF without sending a trailer
|
||||||
|
break
|
||||||
if line == b'\r\n':
|
if line == b'\r\n':
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|
|
@ -1521,7 +1521,8 @@ def resolve(thing, forceload=0):
|
||||||
raise ImportError('no Python documentation found for %r' % thing)
|
raise ImportError('no Python documentation found for %r' % thing)
|
||||||
return object, thing
|
return object, thing
|
||||||
else:
|
else:
|
||||||
return thing, getattr(thing, '__name__', None)
|
name = getattr(thing, '__name__', None)
|
||||||
|
return thing, name if isinstance(name, str) else None
|
||||||
|
|
||||||
def render_doc(thing, title='Python Library Documentation: %s', forceload=0,
|
def render_doc(thing, title='Python Library Documentation: %s', forceload=0,
|
||||||
renderer=None):
|
renderer=None):
|
||||||
|
|
|
@ -286,6 +286,17 @@ def test_issue8225(self):
|
||||||
result, doc_loc = get_pydoc_text(xml.etree)
|
result, doc_loc = get_pydoc_text(xml.etree)
|
||||||
self.assertEqual(doc_loc, "", "MODULE DOCS incorrectly includes a link")
|
self.assertEqual(doc_loc, "", "MODULE DOCS incorrectly includes a link")
|
||||||
|
|
||||||
|
def test_non_str_name(self):
|
||||||
|
# issue14638
|
||||||
|
# Treat illegal (non-str) name like no name
|
||||||
|
class A:
|
||||||
|
__name__ = 42
|
||||||
|
class B:
|
||||||
|
pass
|
||||||
|
adoc = pydoc.render_doc(A())
|
||||||
|
bdoc = pydoc.render_doc(B())
|
||||||
|
self.assertEqual(adoc.replace("A", "B"), bdoc)
|
||||||
|
|
||||||
def test_not_here(self):
|
def test_not_here(self):
|
||||||
missing_module = "test.i_am_not_here"
|
missing_module = "test.i_am_not_here"
|
||||||
result = str(run_pydoc(missing_module), 'ascii')
|
result = str(run_pydoc(missing_module), 'ascii')
|
||||||
|
|
|
@ -65,6 +65,12 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #14638: pydoc now treats non-string __name__ values as if they
|
||||||
|
were missing, instead of raising an error.
|
||||||
|
|
||||||
|
- Issue #13684: Fix httplib tunnel issue of infinite loops for certain sites
|
||||||
|
which send EOF without trailing \r\n.
|
||||||
|
|
||||||
- Issue #14605: Add importlib.abc.FileLoader, importlib.machinery.(FileFinder,
|
- Issue #14605: Add importlib.abc.FileLoader, importlib.machinery.(FileFinder,
|
||||||
SourceFileLoader, _SourcelessFileLoader, ExtensionFileLoader).
|
SourceFileLoader, _SourcelessFileLoader, ExtensionFileLoader).
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue