Kaydet (Commit) c76a250f authored tarafından Guido van Rossum's avatar Guido van Rossum

Merged revisions 56782-56847 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/branches/p3yk

................
  r56808 | kurt.kaiser | 2007-08-07 14:15:45 -0700 (Tue, 07 Aug 2007) | 2 lines

  Replace sys.exitfunc call with atexit call
................
  r56835 | thomas.wouters | 2007-08-08 09:20:30 -0700 (Wed, 08 Aug 2007) | 8 lines


  Tests for dict comprehensions I forgot to 'svn add' when committing the
  actual feature.

  I was _sure_ I had checked in these new tests already, but I guess the
  checkin failed and I didn't notice.
................
  r56847 | guido.van.rossum | 2007-08-09 07:03:34 -0700 (Thu, 09 Aug 2007) | 30 lines

  Merged revisions 56760-56846 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk

  ........
    r56762 | georg.brandl | 2007-08-06 00:37:58 -0700 (Mon, 06 Aug 2007) | 2 lines

    Place #ifdef Py_USING_UNICODE around decode_unicode().
  ........
    r56763 | georg.brandl | 2007-08-06 00:39:09 -0700 (Mon, 06 Aug 2007) | 2 lines

    Replace unnecessary function call.
  ........
    r56764 | georg.brandl | 2007-08-06 00:52:20 -0700 (Mon, 06 Aug 2007) | 2 lines

    Patch #1765839: add link to https+proxy urllib2 opener.
  ........
    r56797 | georg.brandl | 2007-08-07 00:13:24 -0700 (Tue, 07 Aug 2007) | 2 lines

    Bug #1769002: fix a now-wrong sentence in the tutorial.
  ........
    r56830 | georg.brandl | 2007-08-08 06:03:41 -0700 (Wed, 08 Aug 2007) | 3 lines

    Revert the fix for #1548891, it broke backwards compatibility with arbitrary read buffers.
    Fixes #1730114.
  ........
    r56833 | georg.brandl | 2007-08-08 06:50:02 -0700 (Wed, 08 Aug 2007) | 2 lines

    Fix compilation warning.
  ........
................
üst 34d19287
...@@ -541,7 +541,9 @@ steps to setting up a `Basic Authentication`_ handler : :: ...@@ -541,7 +541,9 @@ steps to setting up a `Basic Authentication`_ handler : ::
.. note:: .. note::
Currently ``urllib2`` *does not* support fetching of ``https`` Currently ``urllib2`` *does not* support fetching of ``https``
locations through a proxy. This can be a problem. locations through a proxy. However, this can be enabled by extending
urllib2 as shown in the recipe [#]_.
Sockets and Layers Sockets and Layers
================== ==================
...@@ -596,3 +598,6 @@ This document was reviewed and revised by John Lee. ...@@ -596,3 +598,6 @@ This document was reviewed and revised by John Lee.
is set to use the proxy, which urllib2 picks up on. In order to test is set to use the proxy, which urllib2 picks up on. In order to test
scripts with a localhost server, I have to prevent urllib2 from using scripts with a localhost server, I have to prevent urllib2 from using
the proxy. the proxy.
.. [#] urllib2 opener for SSL proxy (CONNECT method): `ASPN Cookbook Recipe
<http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/456195>`_.
...@@ -78,6 +78,10 @@ Unlike the memory files implemented by the \refmodule{StringIO} ...@@ -78,6 +78,10 @@ Unlike the memory files implemented by the \refmodule{StringIO}
module, those provided by this module are not able to accept Unicode module, those provided by this module are not able to accept Unicode
strings that cannot be encoded as plain \ASCII{} strings. strings that cannot be encoded as plain \ASCII{} strings.
Calling \function{StringIO()} with a Unicode string parameter populates
the object with the buffer representation of the Unicode string, instead of
encoding the string.
Another difference from the \refmodule{StringIO} module is that calling Another difference from the \refmodule{StringIO} module is that calling
\function{StringIO()} with a string parameter creates a read-only object. \function{StringIO()} with a string parameter creates a read-only object.
Unlike an object created without a string parameter, it does not have Unlike an object created without a string parameter, it does not have
......
...@@ -2942,15 +2942,14 @@ which the current module is a submodule), the \keyword{import} ...@@ -2942,15 +2942,14 @@ which the current module is a submodule), the \keyword{import}
statement looks for a top-level module with the given name. statement looks for a top-level module with the given name.
When packages are structured into subpackages (as with the When packages are structured into subpackages (as with the
\module{sound} package in the example), there's no shortcut to refer \module{sound} package in the example), you can use absolute
to submodules of sibling packages - the full name of the subpackage imports to refer to submodules of siblings packages.
must be used. For example, if the module For example, if the module \module{sound.filters.vocoder} needs to
\module{sound.filters.vocoder} needs to use the \module{echo} module use the \module{echo} module in the \module{sound.effects} package,
in the \module{sound.effects} package, it can use \code{from it can use \code{from sound.effects import echo}.
sound.effects import echo}.
Starting with Python 2.5, in addition to the implicit relative imports Starting with Python 2.5, in addition to the implicit relative imports
described above, you can write explicit relative imports with the described above, you can also write explicit relative imports with the
\code{from module import name} form of import statement. These explicit \code{from module import name} form of import statement. These explicit
relative imports use leading dots to indicate the current and parent relative imports use leading dots to indicate the current and parent
packages involved in the relative import. From the \module{surround} packages involved in the relative import. From the \module{surround}
......
...@@ -193,14 +193,16 @@ def flush_stdout(): ...@@ -193,14 +193,16 @@ def flush_stdout():
"""XXX How to do this now?""" """XXX How to do this now?"""
def exit(): def exit():
"""Exit subprocess, possibly after first deleting sys.exitfunc """Exit subprocess, possibly after first clearing exit functions.
If config-main.cfg/.def 'General' 'delete-exitfunc' is True, then any If config-main.cfg/.def 'General' 'delete-exitfunc' is True, then any
sys.exitfunc will be removed before exiting. (VPython support) functions registered with atexit will be removed before exiting.
(VPython support)
""" """
if no_exitfunc: if no_exitfunc:
del sys.exitfunc import atexit
atexit._clear()
sys.exit(0) sys.exit(0)
class MyRPCServer(rpc.RPCServer): class MyRPCServer(rpc.RPCServer):
......
...@@ -428,7 +428,7 @@ class SGMLParser(markupbase.ParserBase): ...@@ -428,7 +428,7 @@ class SGMLParser(markupbase.ParserBase):
if replacement is None: if replacement is None:
self.unknown_entityref(name) self.unknown_entityref(name)
else: else:
self.handle_data(self.convert_entityref(name)) self.handle_data(replacement)
# Example -- handle data, should be overridden # Example -- handle data, should be overridden
def handle_data(self, data): def handle_data(self, data):
......
doctests = """
>>> k = "old value"
>>> { k: None for k in range(10) }
{0: None, 1: None, 2: None, 3: None, 4: None, 5: None, 6: None, 7: None, 8: None, 9: None}
>>> k
'old value'
>>> { k: k+10 for k in range(10) }
{0: 10, 1: 11, 2: 12, 3: 13, 4: 14, 5: 15, 6: 16, 7: 17, 8: 18, 9: 19}
>>> g = "Global variable"
>>> { k: g for k in range(10) }
{0: 'Global variable', 1: 'Global variable', 2: 'Global variable', 3: 'Global variable', 4: 'Global variable', 5: 'Global variable', 6: 'Global variable', 7: 'Global variable', 8: 'Global variable', 9: 'Global variable'}
>>> { k: v for k in range(10) for v in range(10) if k == v }
{0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9}
>>> { k: v for v in range(10) for k in range(v*9, v*10) }
{9: 1, 18: 2, 19: 2, 27: 3, 28: 3, 29: 3, 36: 4, 37: 4, 38: 4, 39: 4, 45: 5, 46: 5, 47: 5, 48: 5, 49: 5, 54: 6, 55: 6, 56: 6, 57: 6, 58: 6, 59: 6, 63: 7, 64: 7, 65: 7, 66: 7, 67: 7, 68: 7, 69: 7, 72: 8, 73: 8, 74: 8, 75: 8, 76: 8, 77: 8, 78: 8, 79: 8, 81: 9, 82: 9, 83: 9, 84: 9, 85: 9, 86: 9, 87: 9, 88: 9, 89: 9}
>>> { x: y for y, x in ((1, 2), (3, 4)) } = 5 # doctest: +IGNORE_EXCEPTION_DETAIL
Traceback (most recent call last):
...
SyntaxError: ...
>>> { x: y for y, x in ((1, 2), (3, 4)) } += 5 # doctest: +IGNORE_EXCEPTION_DETAIL
Traceback (most recent call last):
...
SyntaxError: ...
"""
__test__ = {'doctests' : doctests}
def test_main(verbose=None):
import sys
from test import test_support
from test import test_dictcomps
test_support.run_doctest(test_dictcomps, verbose)
# verify reference counting
if verbose and hasattr(sys, "gettotalrefcount"):
import gc
counts = [None] * 5
for i in range(len(counts)):
test_support.run_doctest(test_dictcomps, verbose)
gc.collect()
counts[i] = sys.gettotalrefcount()
print(counts)
if __name__ == "__main__":
test_main(verbose=True)
...@@ -664,8 +664,11 @@ newIobject(PyObject *s) { ...@@ -664,8 +664,11 @@ newIobject(PyObject *s) {
char *buf; char *buf;
Py_ssize_t size; Py_ssize_t size;
if (PyObject_AsCharBuffer(s, (const char **)&buf, &size) != 0) if (PyObject_AsReadBuffer(s, (const void **)&buf, &size)) {
return NULL; PyErr_Format(PyExc_TypeError, "expected read buffer, %.200s found",
s->ob_type->tp_name);
return NULL;
}
self = PyObject_New(Iobject, &Itype); self = PyObject_New(Iobject, &Itype);
if (!self) return NULL; if (!self) return NULL;
......
...@@ -3112,6 +3112,7 @@ decode_utf8(const char **sPtr, const char *end, char* encoding) ...@@ -3112,6 +3112,7 @@ decode_utf8(const char **sPtr, const char *end, char* encoding)
return v; return v;
} }
#ifdef Py_USING_UNICODE
static PyObject * static PyObject *
decode_unicode(const char *s, size_t len, int rawmode, const char *encoding) decode_unicode(const char *s, size_t len, int rawmode, const char *encoding)
{ {
...@@ -3174,6 +3175,7 @@ decode_unicode(const char *s, size_t len, int rawmode, const char *encoding) ...@@ -3174,6 +3175,7 @@ decode_unicode(const char *s, size_t len, int rawmode, const char *encoding)
Py_XDECREF(u); Py_XDECREF(u);
return v; return v;
} }
#endif
/* s is a Python string literal, including the bracketing quote characters, /* s is a Python string literal, including the bracketing quote characters,
* and r &/or u prefixes (if any), and embedded escape sequences (if any). * and r &/or u prefixes (if any), and embedded escape sequences (if any).
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment