Skip to content

Commit 4d70c3d

Browse files
committed
Partially merge trunk into p3yk. The removal of Mac/Tools is confusing svn
merge in bad ways, so I'll have to merge that extra-carefully (probably manually.) Merged revisions 46495-46605 via svnmerge from svn+ssh://[email protected]/python/trunk ........ r46495 | tim.peters | 2006-05-28 03:52:38 +0200 (Sun, 28 May 2006) | 2 lines Added missing svn:eol-style property to text files. ........ r46497 | tim.peters | 2006-05-28 12:41:29 +0200 (Sun, 28 May 2006) | 3 lines PyErr_Display(), PyErr_WriteUnraisable(): Coverity found a cut-and-paste bug in both: `className` was referenced before being checked for NULL. ........ r46499 | fredrik.lundh | 2006-05-28 14:06:46 +0200 (Sun, 28 May 2006) | 5 lines needforspeed: added Py_MEMCPY macro (currently tuned for Visual C only), and use it for string copy operations. this gives a 20% speedup on some string benchmarks. ........ r46501 | michael.hudson | 2006-05-28 17:51:40 +0200 (Sun, 28 May 2006) | 26 lines Quality control, meet exceptions.c. Fix a number of problems with the need for speed code: One is doing this sort of thing: Py_DECREF(self->field); self->field = newval; Py_INCREF(self->field); without being very sure that self->field doesn't start with a value that has a __del__, because that almost certainly can lead to segfaults. As self->args is constrained to be an exact tuple we may as well exploit this fact consistently. This leads to quite a lot of simplification (and, hey, probably better performance). Add some error checking in places lacking it. Fix some rather strange indentation in the Unicode code. Delete some trailing whitespace. More to come, I haven't fixed all the reference leaks yet... ........ r46502 | george.yoshida | 2006-05-28 18:39:09 +0200 (Sun, 28 May 2006) | 3 lines Patch #1080727: add "encoding" parameter to doctest.DocFileSuite Contributed by Bjorn Tillenius. ........ r46503 | martin.v.loewis | 2006-05-28 18:57:38 +0200 (Sun, 28 May 2006) | 4 lines Rest of patch #1490384: Commit icon source, remove claim that Erik von Blokland is the author of the installer picture. ........ r46504 | michael.hudson | 2006-05-28 19:40:29 +0200 (Sun, 28 May 2006) | 16 lines Quality control, meet exceptions.c, round two. Make some functions that should have been static static. Fix a bunch of refleaks by fixing the definition of MiddlingExtendsException. Remove all the __new__ implementations apart from BaseException_new. Rewrite most code that needs it to cope with NULL fields (such code could get excercised anyway, the __new__-removal just makes it more likely). This involved editing the code for WindowsError, which I can't test. This fixes all the refleaks in at least the start of a regrtest -R :: run. ........ r46505 | marc-andre.lemburg | 2006-05-28 19:46:58 +0200 (Sun, 28 May 2006) | 10 lines Initial version of systimes - a module to provide platform dependent performance measurements. The module is currently just a proof-of-concept implementation, but will integrated into pybench once it is stable enough. License: pybench license. Author: Marc-Andre Lemburg. ........ r46507 | armin.rigo | 2006-05-28 21:13:17 +0200 (Sun, 28 May 2006) | 15 lines ("Forward-port" of r46506) Remove various dependencies on dictionary order in the standard library tests, and one (clearly an oversight, potentially critical) in the standard library itself - base64.py. Remaining open issues: * test_extcall is an output test, messy to make robust * tarfile.py has a potential bug here, but I'm not familiar enough with this code. Filed in as SF bug #1496501. * urllib2.HTTPPasswordMgr() returns a random result if there is more than one matching root path. I'm asking python-dev for clarification... ........ r46508 | georg.brandl | 2006-05-28 22:11:45 +0200 (Sun, 28 May 2006) | 4 lines The empty string is a valid import path. (fixes #1496539) ........ r46509 | georg.brandl | 2006-05-28 22:23:12 +0200 (Sun, 28 May 2006) | 3 lines Patch #1496206: urllib2 PasswordMgr ./. default ports ........ r46510 | georg.brandl | 2006-05-28 22:57:09 +0200 (Sun, 28 May 2006) | 3 lines Fix refleaks in UnicodeError get and set methods. ........ r46511 | michael.hudson | 2006-05-28 23:19:03 +0200 (Sun, 28 May 2006) | 3 lines use the UnicodeError traversal and clearing functions in UnicodeError subclasses. ........ r46512 | thomas.wouters | 2006-05-28 23:32:12 +0200 (Sun, 28 May 2006) | 4 lines Make last patch valid C89 so Windows compilers can deal with it. ........ r46513 | georg.brandl | 2006-05-28 23:42:54 +0200 (Sun, 28 May 2006) | 3 lines Fix ref-antileak in _struct.c which eventually lead to deallocating None. ........ r46514 | georg.brandl | 2006-05-28 23:57:35 +0200 (Sun, 28 May 2006) | 4 lines Correct None refcount issue in Mac modules. (Are they still used?) ........ r46515 | armin.rigo | 2006-05-29 00:07:08 +0200 (Mon, 29 May 2006) | 3 lines A clearer error message when passing -R to regrtest.py with release builds of Python. ........ r46516 | georg.brandl | 2006-05-29 00:14:04 +0200 (Mon, 29 May 2006) | 3 lines Fix C function calling conventions in _sre module. ........ r46517 | georg.brandl | 2006-05-29 00:34:51 +0200 (Mon, 29 May 2006) | 3 lines Convert audioop over to METH_VARARGS. ........ r46518 | georg.brandl | 2006-05-29 00:38:57 +0200 (Mon, 29 May 2006) | 3 lines METH_NOARGS functions do get called with two args. ........ r46519 | georg.brandl | 2006-05-29 11:46:51 +0200 (Mon, 29 May 2006) | 4 lines Fix refleak in socketmodule. Replace bogus Py_BuildValue calls. Fix refleak in exceptions. ........ r46520 | nick.coghlan | 2006-05-29 14:43:05 +0200 (Mon, 29 May 2006) | 7 lines Apply modified version of Collin Winter's patch #1478788 Renames functional extension module to _functools and adds a Python functools module so that utility functions like update_wrapper can be added easily. ........ r46522 | georg.brandl | 2006-05-29 15:53:16 +0200 (Mon, 29 May 2006) | 3 lines Convert fmmodule to METH_VARARGS. ........ r46523 | georg.brandl | 2006-05-29 16:13:21 +0200 (Mon, 29 May 2006) | 3 lines Fix #1494605. ........ r46524 | georg.brandl | 2006-05-29 16:28:05 +0200 (Mon, 29 May 2006) | 3 lines Handle PyMem_Malloc failure in pystrtod.c. Closes #1494671. ........ r46525 | georg.brandl | 2006-05-29 16:33:55 +0200 (Mon, 29 May 2006) | 3 lines Fix compiler warning. ........ r46526 | georg.brandl | 2006-05-29 16:39:00 +0200 (Mon, 29 May 2006) | 3 lines Fix #1494787 (pyclbr counts whitespace as superclass name) ........ r46527 | bob.ippolito | 2006-05-29 17:47:29 +0200 (Mon, 29 May 2006) | 1 line simplify the struct code a bit (no functional changes) ........ r46528 | armin.rigo | 2006-05-29 19:59:47 +0200 (Mon, 29 May 2006) | 2 lines Silence a warning. ........ r46529 | georg.brandl | 2006-05-29 21:39:45 +0200 (Mon, 29 May 2006) | 3 lines Correct some value converting strangenesses. ........ r46530 | nick.coghlan | 2006-05-29 22:27:44 +0200 (Mon, 29 May 2006) | 1 line When adding a module like functools, it helps to let SVN know about the file. ........ r46531 | georg.brandl | 2006-05-29 22:52:54 +0200 (Mon, 29 May 2006) | 4 lines Patches #1497027 and #972322: try HTTP digest auth first, and watch out for handler name collisions. ........ r46532 | georg.brandl | 2006-05-29 22:57:01 +0200 (Mon, 29 May 2006) | 3 lines Add News entry for last commit. ........ r46533 | georg.brandl | 2006-05-29 23:04:52 +0200 (Mon, 29 May 2006) | 4 lines Make use of METH_O and METH_NOARGS where possible. Use Py_UnpackTuple instead of PyArg_ParseTuple where possible. ........ r46534 | georg.brandl | 2006-05-29 23:58:42 +0200 (Mon, 29 May 2006) | 3 lines Convert more modules to METH_VARARGS. ........ r46535 | georg.brandl | 2006-05-30 00:00:30 +0200 (Tue, 30 May 2006) | 3 lines Whoops. ........ r46536 | fredrik.lundh | 2006-05-30 00:42:07 +0200 (Tue, 30 May 2006) | 4 lines fixed "abc".count("", 100) == -96 error (hopefully, nobody's relying on the current behaviour ;-) ........ r46537 | bob.ippolito | 2006-05-30 00:55:48 +0200 (Tue, 30 May 2006) | 1 line struct: modulo math plus warning on all endian-explicit formats for compatibility with older struct usage (ugly) ........ r46539 | bob.ippolito | 2006-05-30 02:26:01 +0200 (Tue, 30 May 2006) | 1 line Add a length check to aifc to ensure it doesn't write a bogus file ........ r46540 | tim.peters | 2006-05-30 04:25:25 +0200 (Tue, 30 May 2006) | 10 lines deprecated_err(): Stop bizarre warning messages when the tests are run in the order: test_genexps (or any other doctest-based test) test_struct test_doctest The `warnings` module needs an advertised way to save/restore its internal filter list. ........ r46541 | tim.peters | 2006-05-30 04:26:46 +0200 (Tue, 30 May 2006) | 2 lines Whitespace normalization. ........ r46542 | tim.peters | 2006-05-30 04:30:30 +0200 (Tue, 30 May 2006) | 2 lines Set a binary svn:mime-type property on this UTF-8 encoded file. ........ r46543 | neal.norwitz | 2006-05-30 05:18:50 +0200 (Tue, 30 May 2006) | 1 line Simplify further by using AddStringConstant ........ r46544 | tim.peters | 2006-05-30 06:16:25 +0200 (Tue, 30 May 2006) | 6 lines Convert relevant dict internals to Py_ssize_t. I don't have a box with nearly enough RAM, or an OS, that could get close to tickling this, though (requires a dict w/ at least 2**31 entries). ........ r46545 | neal.norwitz | 2006-05-30 06:19:21 +0200 (Tue, 30 May 2006) | 1 line Remove stray | in comment ........ r46546 | neal.norwitz | 2006-05-30 06:25:05 +0200 (Tue, 30 May 2006) | 1 line Use Py_SAFE_DOWNCAST for safety. Fix format strings. Remove 2 more stray | in comment ........ r46547 | neal.norwitz | 2006-05-30 06:43:23 +0200 (Tue, 30 May 2006) | 1 line No DOWNCAST is required since sizeof(Py_ssize_t) >= sizeof(int) and Py_ReprEntr returns an int ........ r46548 | tim.peters | 2006-05-30 07:04:59 +0200 (Tue, 30 May 2006) | 3 lines dict_print(): Explicitly narrow the return value from a (possibly) wider variable. ........ r46549 | tim.peters | 2006-05-30 07:23:59 +0200 (Tue, 30 May 2006) | 5 lines dict_print(): So that Neal & I don't spend the rest of our lives taking turns rewriting code that works ;-), get rid of casting illusions by declaring a new variable with the obvious type. ........ r46550 | georg.brandl | 2006-05-30 09:04:55 +0200 (Tue, 30 May 2006) | 3 lines Restore exception pickle support. #1497319. ........ r46551 | georg.brandl | 2006-05-30 09:13:29 +0200 (Tue, 30 May 2006) | 3 lines Add a test case for exception pickling. args is never NULL. ........ r46552 | neal.norwitz | 2006-05-30 09:21:10 +0200 (Tue, 30 May 2006) | 1 line Don't fail if the (sub)pkgname already exist. ........ r46553 | georg.brandl | 2006-05-30 09:34:45 +0200 (Tue, 30 May 2006) | 3 lines Disallow keyword args for exceptions. ........ r46554 | neal.norwitz | 2006-05-30 09:36:54 +0200 (Tue, 30 May 2006) | 5 lines I'm impatient. I think this will fix a few more problems with the buildbots. I'm not sure this is the best approach, but I can't think of anything better. If this creates problems, feel free to revert, but I think it's safe and should make things a little better. ........ r46555 | georg.brandl | 2006-05-30 10:17:00 +0200 (Tue, 30 May 2006) | 4 lines Do the check for no keyword arguments in __init__ so that subclasses of Exception can be supplied keyword args ........ r46556 | georg.brandl | 2006-05-30 10:47:19 +0200 (Tue, 30 May 2006) | 3 lines Convert test_exceptions to unittest. ........ r46557 | andrew.kuchling | 2006-05-30 14:52:01 +0200 (Tue, 30 May 2006) | 1 line Add SoC name, and reorganize this section a bit ........ r46559 | tim.peters | 2006-05-30 17:53:34 +0200 (Tue, 30 May 2006) | 11 lines PyLong_FromString(): Continued fraction analysis (explained in a new comment) suggests there are almost certainly large input integers in all non-binary input bases for which one Python digit too few is initally allocated to hold the final result. Instead of assert-failing when that happens, allocate more space. Alas, I estimate it would take a few days to find a specific such case, so this isn't backed up by a new test (not to mention that such a case may take hours to run, since conversion time is quadratic in the number of digits, and preliminary attempts suggested that the smallest such inputs contain at least a million digits). ........ r46560 | fredrik.lundh | 2006-05-30 19:11:48 +0200 (Tue, 30 May 2006) | 3 lines changed find/rfind to return -1 for matches outside the source string ........ r46561 | bob.ippolito | 2006-05-30 19:37:54 +0200 (Tue, 30 May 2006) | 1 line Change wrapping terminology to overflow masking ........ r46562 | fredrik.lundh | 2006-05-30 19:39:58 +0200 (Tue, 30 May 2006) | 3 lines changed count to return 0 for slices outside the source string ........ r46568 | tim.peters | 2006-05-31 01:28:02 +0200 (Wed, 31 May 2006) | 2 lines Whitespace normalization. ........ r46569 | brett.cannon | 2006-05-31 04:19:54 +0200 (Wed, 31 May 2006) | 5 lines Clarify wording on default values for strptime(); defaults are used when better values cannot be inferred. Closes bug #1496315. ........ r46572 | neal.norwitz | 2006-05-31 09:43:27 +0200 (Wed, 31 May 2006) | 1 line Calculate smallest properly (it was off by one) and use proper ssize_t types for Win64 ........ r46573 | neal.norwitz | 2006-05-31 10:01:08 +0200 (Wed, 31 May 2006) | 1 line Revert last checkin, it is better to do make distclean ........ r46574 | neal.norwitz | 2006-05-31 11:02:44 +0200 (Wed, 31 May 2006) | 3 lines On 64-bit platforms running test_struct after test_tarfile would fail since the deprecation warning wouldn't be raised. ........ r46575 | thomas.heller | 2006-05-31 13:37:58 +0200 (Wed, 31 May 2006) | 3 lines PyTuple_Pack is not available in Python 2.3, but ctypes must stay compatible with that. ........ r46576 | andrew.kuchling | 2006-05-31 15:18:56 +0200 (Wed, 31 May 2006) | 1 line 'functional' module was renamed to 'functools' ........ r46577 | kristjan.jonsson | 2006-05-31 15:35:41 +0200 (Wed, 31 May 2006) | 1 line Fixup the PCBuild8 project directory. exceptions.c have moved to Objects, and the functionalmodule.c has been replaced with _functoolsmodule.c. Other minor changes to .vcproj files and .sln to fix compilation ........ r46578 | andrew.kuchling | 2006-05-31 16:08:48 +0200 (Wed, 31 May 2006) | 15 lines [Bug #1473048] SimpleXMLRPCServer and DocXMLRPCServer don't look at the path of the HTTP request at all; you can POST or GET from / or /RPC2 or /blahblahblah with the same results. Security scanners that look for /cgi-bin/phf will therefore report lots of vulnerabilities. Fix: add a .rpc_paths attribute to the SimpleXMLRPCServer class, and report a 404 error if the path isn't on the allowed list. Possibly-controversial aspect of this change: the default makes only '/' and '/RPC2' legal. Maybe this will break people's applications (though I doubt it). We could just set the default to an empty tuple, which would exactly match the current behaviour. ........ r46579 | andrew.kuchling | 2006-05-31 16:12:47 +0200 (Wed, 31 May 2006) | 1 line Mention SimpleXMLRPCServer change ........ r46580 | tim.peters | 2006-05-31 16:28:07 +0200 (Wed, 31 May 2006) | 2 lines Trimmed trailing whitespace. ........ r46581 | tim.peters | 2006-05-31 17:33:22 +0200 (Wed, 31 May 2006) | 4 lines _range_error(): Speed and simplify (there's no real need for loops here). Assert that size_t is actually big enough, and that f->size is at least one. Wrap a long line. ........ r46582 | tim.peters | 2006-05-31 17:34:37 +0200 (Wed, 31 May 2006) | 2 lines Repaired error in new comment. ........ r46584 | neal.norwitz | 2006-06-01 07:32:49 +0200 (Thu, 01 Jun 2006) | 4 lines Remove ; at end of macro. There was a compiler recently that warned about extra semi-colons. It may have been the HP C compiler. This file will trigger a bunch of those warnings now. ........ r46585 | georg.brandl | 2006-06-01 08:39:19 +0200 (Thu, 01 Jun 2006) | 3 lines Correctly unpickle 2.4 exceptions via __setstate__ (patch #1498571) ........ r46586 | georg.brandl | 2006-06-01 10:27:32 +0200 (Thu, 01 Jun 2006) | 3 lines Correctly allocate complex types with tp_alloc. (bug #1498638) ........ r46587 | georg.brandl | 2006-06-01 14:30:46 +0200 (Thu, 01 Jun 2006) | 2 lines Correctly dispatch Faults in loads (patch #1498627) ........ r46588 | georg.brandl | 2006-06-01 15:00:49 +0200 (Thu, 01 Jun 2006) | 3 lines Some code style tweaks, and remove apply. ........ r46589 | armin.rigo | 2006-06-01 15:19:12 +0200 (Thu, 01 Jun 2006) | 5 lines [ 1497053 ] Let dicts propagate the exceptions in user __eq__(). [ 1456209 ] dictresize() vulnerability ( <- backport candidate ). ........ r46590 | tim.peters | 2006-06-01 15:41:46 +0200 (Thu, 01 Jun 2006) | 2 lines Whitespace normalization. ........ r46591 | tim.peters | 2006-06-01 15:49:23 +0200 (Thu, 01 Jun 2006) | 2 lines Record bugs 1275608 and 1456209 as being fixed. ........ r46592 | tim.peters | 2006-06-01 15:56:26 +0200 (Thu, 01 Jun 2006) | 5 lines Re-enable a new empty-string test added during the NFS sprint, but disabled then because str and unicode strings gave different results. The implementations were repaired later during the sprint, but the new test remained disabled. ........ r46594 | tim.peters | 2006-06-01 17:50:44 +0200 (Thu, 01 Jun 2006) | 7 lines Armin committed his patch while I was reviewing it (I'm sure he didn't know this), so merged in some changes I made during review. Nothing material apart from changing a new `mask` local from int to Py_ssize_t. Mostly this is repairing comments that were made incorrect, and adding new comments. Also a few minor code rewrites for clarity or helpful succinctness. ........ r46599 | neal.norwitz | 2006-06-02 06:45:53 +0200 (Fri, 02 Jun 2006) | 1 line Convert docstrings to comments so regrtest -v prints method names ........ r46600 | neal.norwitz | 2006-06-02 06:50:49 +0200 (Fri, 02 Jun 2006) | 2 lines Fix memory leak found by valgrind. ........ r46601 | neal.norwitz | 2006-06-02 06:54:52 +0200 (Fri, 02 Jun 2006) | 1 line More memory leaks from valgrind ........ r46602 | neal.norwitz | 2006-06-02 08:23:00 +0200 (Fri, 02 Jun 2006) | 11 lines Patch #1357836: Prevent an invalid memory read from test_coding in case the done flag is set. In that case, the loop isn't entered. I wonder if rather than setting the done flag in the cases before the loop, if they should just exit early. This code looks like it should be refactored. Backport candidate (also the early break above if decoding_fgets fails) ........ r46603 | martin.blais | 2006-06-02 15:03:43 +0200 (Fri, 02 Jun 2006) | 1 line Fixed struct test to not use unittest. ........ r46605 | tim.peters | 2006-06-03 01:22:51 +0200 (Sat, 03 Jun 2006) | 10 lines pprint functions used to sort a dict (by key) if and only if the output required more than one line. "Small" dicts got displayed in seemingly random order (the hash-induced order produced by dict.__repr__). None of this was documented. Now pprint functions always sort dicts by key, and the docs promise it. This was proposed and agreed to during the PyCon 2006 core sprint -- I just didn't have time for it before now. ........
1 parent 60254fe commit 4d70c3d

File tree

139 files changed

+13193
-12203
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

139 files changed

+13193
-12203
lines changed

Doc/Makefile.deps

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,7 @@ LIBFILES= $(MANSTYLES) $(INDEXSTYLES) $(COMMONTEX) \
262262
lib/libsimplexmlrpc.tex \
263263
lib/libdocxmlrpc.tex \
264264
lib/libpyexpat.tex \
265+
lib/libfunctools.tex \
265266
lib/xmldom.tex \
266267
lib/xmldomminidom.tex \
267268
lib/xmldompulldom.tex \

Doc/lib/lib.tex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,8 @@ \chapter*{Front Matter\label{front}}
129129
% Functions, Functional, Generators and Iterators
130130
% XXX intro functional
131131
\input{libitertools}
132-
\input{libfunctional}
133-
\input{liboperator} % from runtime - better with itertools and functional
132+
\input{libfunctools}
133+
\input{liboperator} % from runtime - better with itertools and functools
134134

135135

136136
% =============

Doc/lib/libdoctest.tex

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -868,7 +868,7 @@ \subsection{Basic API\label{doctest-basic-api}}
868868
globs}\optional{, verbose}\optional{,
869869
report}\optional{, optionflags}\optional{,
870870
extraglobs}\optional{, raise_on_error}\optional{,
871-
parser}}
871+
parser}\optional{, encoding}}
872872

873873
All arguments except \var{filename} are optional, and should be
874874
specified in keyword form.
@@ -941,7 +941,13 @@ \subsection{Basic API\label{doctest-basic-api}}
941941
subclass) that should be used to extract tests from the files. It
942942
defaults to a normal parser (i.e., \code{\class{DocTestParser}()}).
943943

944+
Optional argument \var{encoding} specifies an encoding that should
945+
be used to convert the file to unicode.
946+
944947
\versionadded{2.4}
948+
949+
\versionchanged[The parameter \var{encoding} was added]{2.5}
950+
945951
\end{funcdesc}
946952

947953
\begin{funcdesc}{testmod}{\optional{m}\optional{, name}\optional{,
@@ -1061,7 +1067,8 @@ \subsection{Unittest API\label{doctest-unittest-api}}
10611067
\begin{funcdesc}{DocFileSuite}{\optional{module_relative}\optional{,
10621068
package}\optional{, setUp}\optional{,
10631069
tearDown}\optional{, globs}\optional{,
1064-
optionflags}\optional{, parser}}
1070+
optionflags}\optional{, parser}\optional{,
1071+
encoding}}
10651072

10661073
Convert doctest tests from one or more text files to a
10671074
\class{\refmodule{unittest}.TestSuite}.
@@ -1128,11 +1135,17 @@ \subsection{Unittest API\label{doctest-unittest-api}}
11281135
subclass) that should be used to extract tests from the files. It
11291136
defaults to a normal parser (i.e., \code{\class{DocTestParser}()}).
11301137

1138+
Optional argument \var{encoding} specifies an encoding that should
1139+
be used to convert the file to unicode.
1140+
11311141
\versionadded{2.4}
11321142

11331143
\versionchanged[The global \code{__file__} was added to the
11341144
globals provided to doctests loaded from a text file using
11351145
\function{DocFileSuite()}]{2.5}
1146+
1147+
\versionchanged[The parameter \var{encoding} was added]{2.5}
1148+
11361149
\end{funcdesc}
11371150

11381151
\begin{funcdesc}{DocTestSuite}{\optional{module}\optional{,

Doc/lib/libfunctional.tex renamed to Doc/lib/libfunctools.tex

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
\section{\module{functional} ---
1+
\section{\module{functools} ---
22
Higher order functions and operations on callable objects.}
33

4-
\declaremodule{standard}{functional} % standard library, in Python
4+
\declaremodule{standard}{functools} % standard library, in Python
55

66
\moduleauthor{Peter Harris}{[email protected]}
77
\moduleauthor{Raymond Hettinger}{[email protected]}
@@ -11,12 +11,12 @@ \section{\module{functional} ---
1111

1212
\versionadded{2.5}
1313

14-
The \module{functional} module is for higher-order functions: functions
14+
The \module{functools} module is for higher-order functions: functions
1515
that act on or return other functions. In general, any callable object can
1616
be treated as a function for the purposes of this module.
1717

1818

19-
The \module{functional} module defines the following function:
19+
The \module{functools} module defines the following function:
2020

2121
\begin{funcdesc}{partial}{func\optional{,*args}\optional{, **keywords}}
2222
Return a new \class{partial} object which when called will behave like

Doc/lib/libpprint.tex

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ \section{\module{pprint} ---
2020
allowed width. Construct \class{PrettyPrinter} objects explicitly if
2121
you need to adjust the width constraint.
2222

23+
\versionchanged[Dictionaries are sorted by key before the display is
24+
computed; before 2.5, a dictionary was sorted only if its display
25+
required more than one line, although that wasn't documented]{2.5}
26+
2327
The \module{pprint} module defines one class:
2428

2529

Doc/lib/libsimplexmlrpc.tex

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,15 @@ \subsection{SimpleXMLRPCServer Objects \label{simple-xmlrpc-servers}}
111111
Registers the XML-RPC multicall function system.multicall.
112112
\end{methoddesc}
113113

114+
\begin{memberdesc}[SimpleXMLRPCServer]{rpc_paths}
115+
An attribute value that must be a tuple listing valid path portions of
116+
the URL for receiving XML-RPC requests. Requests posted to other
117+
paths will result in a 404 ``no such page'' HTTP error. If this
118+
tuple is empty, all paths will be considered valid.
119+
The default value is \code{('/', '/RPC2')}.
120+
\versionadded{2.5}
121+
\end{memberdesc}
122+
114123
Example:
115124

116125
\begin{verbatim}

Doc/lib/libtime.tex

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,8 @@ \section{\module{time} ---
314314
according to \var{format}, \exception{ValueError} is raised. If the
315315
string to be parsed has excess data after parsing,
316316
\exception{ValueError} is raised. The default values used to fill in
317-
any missing data are \code{(1900, 1, 1, 0, 0, 0, 0, 1, -1)} .
317+
any missing data when more accurate values cannot be inferred are
318+
\code{(1900, 1, 1, 0, 0, 0, 0, 1, -1)} .
318319

319320
Support for the \code{\%Z} directive is based on the values contained in
320321
\code{tzname} and whether \code{daylight} is true. Because of this,

Doc/lib/liburllib2.tex

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,7 @@ \section{\module{urllib2} ---
6565

6666
Beginning in Python 2.3, a \class{BaseHandler} subclass may also
6767
change its \member{handler_order} member variable to modify its
68-
position in the handlers list. Besides \class{ProxyHandler}, which has
69-
\member{handler_order} of \code{100}, all handlers currently have it
70-
set to \code{500}.
68+
position in the handlers list.
7169
\end{funcdesc}
7270

7371

Doc/whatsnew/whatsnew25.tex

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ \section{PEP 308: Conditional Expressions\label{pep-308}}
125125
%======================================================================
126126
\section{PEP 309: Partial Function Application\label{pep-309}}
127127

128-
The \module{functional} module is intended to contain tools for
128+
The \module{functools} module is intended to contain tools for
129129
functional-style programming. Currently it only contains a
130130
\class{partial()} function, but new functions will probably be added
131131
in future versions of Python.
@@ -136,7 +136,7 @@ \section{PEP 309: Partial Function Application\label{pep-309}}
136136
you could create a new function \code{g(b, c)} that was equivalent to
137137
\code{f(1, b, c)}. This is called ``partial function application'',
138138
and is provided by the \class{partial} class in the new
139-
\module{functional} module.
139+
\module{functools} module.
140140

141141
The constructor for \class{partial} takes the arguments
142142
\code{(\var{function}, \var{arg1}, \var{arg2}, ...
@@ -147,18 +147,18 @@ \section{PEP 309: Partial Function Application\label{pep-309}}
147147
Here's a small but realistic example:
148148

149149
\begin{verbatim}
150-
import functional
150+
import functools
151151
152152
def log (message, subsystem):
153153
"Write the contents of 'message' to the specified subsystem."
154154
print '%s: %s' % (subsystem, message)
155155
...
156156
157-
server_log = functional.partial(log, subsystem='server')
157+
server_log = functools.partial(log, subsystem='server')
158158
server_log('Unable to open socket')
159159
\end{verbatim}
160160

161-
Here's another example, from a program that uses PyGTk. Here a
161+
Here's another example, from a program that uses PyGTK. Here a
162162
context-sensitive pop-up menu is being constructed dynamically. The
163163
callback provided for the menu option is a partially applied version
164164
of the \method{open_item()} method, where the first argument has been
@@ -170,7 +170,7 @@ \section{PEP 309: Partial Function Application\label{pep-309}}
170170
def open_item(self, path):
171171
...
172172
def init (self):
173-
open_func = functional.partial(self.open_item, item_path)
173+
open_func = functools.partial(self.open_item, item_path)
174174
popup_menu.append( ("Open", open_func, 1) )
175175
\end{verbatim}
176176

@@ -1508,6 +1508,14 @@ \section{New, Improved, and Removed Modules\label{modules}}
15081508
(Patch from Robert Kiendl.)
15091509
% Patch #1472854
15101510

1511+
\item The \module{SimpleXMLRPCServer} and \module{DocXMLRPCServer}
1512+
classes now have a \member{rpc_paths} attribute that constrains
1513+
XML-RPC operations to a limited set of URL paths; the default is
1514+
to allow only \code{'/'} and \code{'/RPC2'}. Setting
1515+
\member{rpc_paths} to \code{None} or an empty tuple disables
1516+
this path checking.
1517+
% Bug #1473048
1518+
15111519
\item The \module{socket} module now supports \constant{AF_NETLINK}
15121520
sockets on Linux, thanks to a patch from Philippe Biondi.
15131521
Netlink sockets are a Linux-specific mechanism for communications
@@ -2163,6 +2171,13 @@ \section{Porting to Python 2.5\label{porting}}
21632171
arguments instead. The modules also no longer accept the deprecated
21642172
\var{bin} keyword parameter.
21652173

2174+
\item Library: The \module{SimpleXMLRPCServer} and \module{DocXMLRPCServer}
2175+
classes now have a \member{rpc_paths} attribute that constrains
2176+
XML-RPC operations to a limited set of URL paths; the default is
2177+
to allow only \code{'/'} and \code{'/RPC2'}. Setting
2178+
\member{rpc_paths} to \code{None} or an empty tuple disables
2179+
this path checking.
2180+
21662181
\item C API: Many functions now use \ctype{Py_ssize_t}
21672182
instead of \ctype{int} to allow processing more data on 64-bit
21682183
machines. Extension code may need to make the same change to avoid

Include/dictobject.h

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ extern "C" {
88
/* Dictionary object type -- mapping from hashable object to object */
99

1010
/* The distribution includes a separate file, Objects/dictnotes.txt,
11-
describing explorations into dictionary design and optimization.
11+
describing explorations into dictionary design and optimization.
1212
It covers typical dictionary use patterns, the parameters for
1313
tuning dictionaries, and several ideas for possible optimizations.
1414
*/
@@ -48,7 +48,11 @@ meaning otherwise.
4848
#define PyDict_MINSIZE 8
4949

5050
typedef struct {
51-
long me_hash; /* cached hash code of me_key */
51+
/* Cached hash code of me_key. Note that hash codes are C longs.
52+
* We have to use Py_ssize_t instead because dict_popitem() abuses
53+
* me_hash to hold a search finger.
54+
*/
55+
Py_ssize_t me_hash;
5256
PyObject *me_key;
5357
PyObject *me_value;
5458
} PyDictEntry;
@@ -65,14 +69,14 @@ it's two-thirds full.
6569
typedef struct _dictobject PyDictObject;
6670
struct _dictobject {
6771
PyObject_HEAD
68-
int ma_fill; /* # Active + # Dummy */
69-
int ma_used; /* # Active */
72+
Py_ssize_t ma_fill; /* # Active + # Dummy */
73+
Py_ssize_t ma_used; /* # Active */
7074

7175
/* The table contains ma_mask + 1 slots, and that's a power of 2.
7276
* We store the mask instead of the size because the mask is more
7377
* frequently needed.
7478
*/
75-
int ma_mask;
79+
Py_ssize_t ma_mask;
7680

7781
/* ma_table points to ma_smalltable for small tables, else to
7882
* additional malloc'ed memory. ma_table is never NULL! This rule

Include/pyport.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,27 @@ typedef Py_intptr_t Py_ssize_t;
174174
#define Py_LOCAL_INLINE(type) static type
175175
#endif
176176

177+
/* Py_MEMCPY can be used instead of memcpy in cases where the copied blocks
178+
* are often very short. While most platforms have highly optimized code for
179+
* large transfers, the setup costs for memcpy are often quite high. MEMCPY
180+
* solves this by doing short copies "in line".
181+
*/
182+
183+
#if defined(_MSC_VER)
184+
#define Py_MEMCPY(target, source, length) do { \
185+
size_t i_, n_ = (length); \
186+
char *t_ = (void*) (target); \
187+
const char *s_ = (void*) (source); \
188+
if (n_ >= 16) \
189+
memcpy(t_, s_, n_); \
190+
else \
191+
for (i_ = 0; i_ < n_; i_++) \
192+
t_[i_] = s_[i_]; \
193+
} while (0)
194+
#else
195+
#define Py_MEMCPY memcpy
196+
#endif
197+
177198
#include <stdlib.h>
178199

179200
#include <math.h> /* Moved here from the math section, before extern "C" */

Include/unicodeobject.h

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -357,15 +357,8 @@ typedef PY_UNICODE_TYPE Py_UNICODE;
357357
Py_UNICODE_ISDIGIT(ch) || \
358358
Py_UNICODE_ISNUMERIC(ch))
359359

360-
/* memcpy has a considerable setup overhead on many platforms; use a
361-
loop for short strings (the "16" below is pretty arbitary) */
362-
#define Py_UNICODE_COPY(target, source, length) do\
363-
{Py_ssize_t i_; Py_UNICODE *t_ = (target); const Py_UNICODE *s_ = (source);\
364-
if (length > 16)\
365-
memcpy(t_, s_, (length)*sizeof(Py_UNICODE));\
366-
else\
367-
for (i_ = 0; i_ < (length); i_++) t_[i_] = s_[i_];\
368-
} while (0)
360+
#define Py_UNICODE_COPY(target, source, length) \
361+
Py_MEMCPY((target), (source), (length)*sizeof(Py_UNICODE))
369362

370363
#define Py_UNICODE_FILL(target, value, length) do\
371364
{Py_ssize_t i_; Py_UNICODE *t_ = (target); Py_UNICODE v_ = (value);\

Lib/DocXMLRPCServer.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,10 @@ def do_GET(self):
227227
Interpret all HTTP GET requests as requests for server
228228
documentation.
229229
"""
230+
# Check that the path is legal
231+
if not self.is_rpc_path_valid():
232+
self.report_404()
233+
return
230234

231235
response = self.server.generate_html_documentation()
232236
self.send_response(200)

Lib/SimpleXMLRPCServer.py

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -247,10 +247,10 @@ def _marshaled_dispatch(self, data, dispatch_method = None):
247247
of changing method dispatch behavior.
248248
"""
249249

250-
params, method = xmlrpclib.loads(data)
251-
252-
# generate response
253250
try:
251+
params, method = xmlrpclib.loads(data)
252+
253+
# generate response
254254
if dispatch_method is not None:
255255
response = dispatch_method(method, params)
256256
else:
@@ -423,13 +423,29 @@ class SimpleXMLRPCRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
423423
XML-RPC requests.
424424
"""
425425

426+
# Class attribute listing the accessible path components;
427+
# paths not on this list will result in a 404 error.
428+
rpc_paths = ('/', '/RPC2')
429+
430+
def is_rpc_path_valid(self):
431+
if self.rpc_paths:
432+
return self.path in self.rpc_paths
433+
else:
434+
# If .rpc_paths is empty, just assume all paths are legal
435+
return True
436+
426437
def do_POST(self):
427438
"""Handles the HTTP POST request.
428439
429440
Attempts to interpret all HTTP POST requests as XML-RPC calls,
430441
which are forwarded to the server's _dispatch method for handling.
431442
"""
432443

444+
# Check that the path is legal
445+
if not self.is_rpc_path_valid():
446+
self.report_404()
447+
return
448+
433449
try:
434450
# Get arguments by reading body of request.
435451
# We read this in chunks to avoid straining
@@ -468,6 +484,18 @@ def do_POST(self):
468484
self.wfile.flush()
469485
self.connection.shutdown(1)
470486

487+
def report_404 (self):
488+
# Report a 404 error
489+
self.send_response(404)
490+
response = 'No such page'
491+
self.send_header("Content-type", "text/plain")
492+
self.send_header("Content-length", str(len(response)))
493+
self.end_headers()
494+
self.wfile.write(response)
495+
# shut down the connection
496+
self.wfile.flush()
497+
self.connection.shutdown(1)
498+
471499
def log_request(self, code='-', size='-'):
472500
"""Selectively log an accepted request."""
473501

Lib/aifc.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,8 @@ def _write_long(f, x):
201201
f.write(struct.pack('>L', x))
202202

203203
def _write_string(f, s):
204+
if len(s) > 255:
205+
raise ValueError("string exceeds maximum pstring length")
204206
f.write(chr(len(s)))
205207
f.write(s)
206208
if len(s) & 1 == 0:

0 commit comments

Comments
 (0)