mirror of
https://github.com/python/cpython.git
synced 2026-01-03 05:54:03 +00:00
svn+ssh://pythondev@svn.python.org/python/trunk ........ r53954 | jeremy.hylton | 2007-02-26 10:41:18 -0800 (Mon, 26 Feb 2007) | 10 lines Do not copy free variables to locals in class namespaces. Fixes bug 1569356, but at the cost of a minor incompatibility in locals(). Add test that verifies that the class namespace is not polluted. Also clarify the behavior in the library docs. Along the way, cleaned up the dict_to_map and map_to_dict implementations and added some comments that explain what they do. ........ r53955 | jeremy.hylton | 2007-02-26 11:00:20 -0800 (Mon, 26 Feb 2007) | 2 lines Fix assertion. ........ r53969 | neal.norwitz | 2007-02-26 14:41:45 -0800 (Mon, 26 Feb 2007) | 3 lines When printing an unraisable error, don't print exceptions. before the name. This duplicates the behavior whening normally printing exceptions. ........ r53970 | andrew.kuchling | 2007-02-26 15:02:47 -0800 (Mon, 26 Feb 2007) | 1 line Markup fix ........ r53975 | neal.norwitz | 2007-02-26 15:48:27 -0800 (Mon, 26 Feb 2007) | 3 lines SF #1669182, 2.5 was already fixed. Just assert in 2.6 since string exceptions are gone. ........ r53976 | andrew.kuchling | 2007-02-26 15:54:17 -0800 (Mon, 26 Feb 2007) | 1 line Add some items ........ r53981 | jeremy.hylton | 2007-02-26 17:01:59 -0800 (Mon, 26 Feb 2007) | 4 lines Fix long-standing bug in name mangling for package imports Reported by Mike Verdone. ........ r53993 | jeremy.hylton | 2007-02-27 08:00:06 -0800 (Tue, 27 Feb 2007) | 2 lines tabify ........ r53994 | jeremy.hylton | 2007-02-27 08:13:23 -0800 (Tue, 27 Feb 2007) | 5 lines tabify Note that ast.c still has a mix of tabs and spaces, because it attempts to use four-space indents for more of the new code. ........ r53996 | jeremy.hylton | 2007-02-27 09:24:48 -0800 (Tue, 27 Feb 2007) | 2 lines whitespace normalization ........ r53997 | jeremy.hylton | 2007-02-27 10:29:45 -0800 (Tue, 27 Feb 2007) | 24 lines Add checking for a number of metaclass error conditions. We add some new rules that are required for preserving internal invariants of types. 1. If type (or a subclass of type) appears in bases, it must appear before any non-type bases. If a non-type base (like a regular new-style class) occurred first, it could trick type into allocating the new class an __dict__ which must be impossible. 2. There are several checks that are made of bases when creating a type. Those checks are now repeated when assigning to __bases__. We also add the restriction that assignment to __bases__ may not change the metaclass of the type. Add new tests for these cases and for a few other oddball errors that were no previously tested. Remove a crasher test that was fixed. Also some internal refactoring: Extract the code to find the most derived metaclass of a type and its bases. It is now needed in two places. Rewrite the TypeError checks in test_descr to use doctest. The tests now clearly show what exception they expect to see. ........ r53998 | jeremy.hylton | 2007-02-27 10:33:31 -0800 (Tue, 27 Feb 2007) | 2 lines Add news about changes to metaclasses and __bases__ error checking. ........ r54016 | armin.rigo | 2007-02-28 01:25:29 -0800 (Wed, 28 Feb 2007) | 3 lines Modify the segfaulting example to show why r53997 is not a solution to it. ........ r54022 | brett.cannon | 2007-02-28 10:15:00 -0800 (Wed, 28 Feb 2007) | 2 lines Add a test for instantiating SyntaxError with no arguments. ........ r54026 | raymond.hettinger | 2007-02-28 10:27:41 -0800 (Wed, 28 Feb 2007) | 1 line Docstring nit. ........ r54033 | raymond.hettinger | 2007-02-28 10:37:52 -0800 (Wed, 28 Feb 2007) | 1 line Prepare collections module for pure python code entries. ........ r54053 | raymond.hettinger | 2007-02-28 22:16:43 -0800 (Wed, 28 Feb 2007) | 1 line Add collections.NamedTuple ........ r54054 | neal.norwitz | 2007-02-28 23:04:41 -0800 (Wed, 28 Feb 2007) | 1 line Add Pat and Eric for work on PEP 3101 in the sandbox ........ r54061 | andrew.kuchling | 2007-03-01 06:36:12 -0800 (Thu, 01 Mar 2007) | 1 line Add NamedTuple ........ r54080 | georg.brandl | 2007-03-02 06:37:12 -0800 (Fri, 02 Mar 2007) | 2 lines Bug #1628895: some better tries to find HTML documentation in pydoc. ........ r54086 | raymond.hettinger | 2007-03-02 11:20:46 -0800 (Fri, 02 Mar 2007) | 1 line Fix embarrassing typo and fix constantification of None ........ r54088 | georg.brandl | 2007-03-02 12:30:14 -0800 (Fri, 02 Mar 2007) | 2 lines Bugs #1668032, #1668036, #1669304: clarify behavior of PyMem_Realloc and _Resize. ........ r54114 | georg.brandl | 2007-03-04 09:18:54 -0800 (Sun, 04 Mar 2007) | 2 lines Fix a bug in test_dict and test_userdict, found at the PyPy sprint. ........ r54124 | skip.montanaro | 2007-03-04 12:52:28 -0800 (Sun, 04 Mar 2007) | 2 lines Teach setup.py how to find Berkeley DB on Macs using MacPorts. ........ r54125 | skip.montanaro | 2007-03-04 12:54:12 -0800 (Sun, 04 Mar 2007) | 1 line note MacPorts/BerkDB change in setup.py ........ r54136 | neal.norwitz | 2007-03-04 23:52:01 -0800 (Sun, 04 Mar 2007) | 1 line Added Pete for 3101 too ........ r54138 | facundo.batista | 2007-03-05 08:31:54 -0800 (Mon, 05 Mar 2007) | 1 line Minor corrections to docs, and an explanation comentary ........ r54139 | georg.brandl | 2007-03-05 14:28:08 -0800 (Mon, 05 Mar 2007) | 3 lines Patch #1674228: when assigning a slice (old-style), check for the sq_ass_slice instead of the sq_slice slot. ........ r54149 | georg.brandl | 2007-03-06 01:33:01 -0800 (Tue, 06 Mar 2007) | 3 lines Nit: a struct field is set to GenericAlloc, not GenericAlloc(). ........ r54150 | georg.brandl | 2007-03-06 02:02:47 -0800 (Tue, 06 Mar 2007) | 3 lines Patch #1671450: add a section about subclassing builtin types to the "extending and embedding" tutorial. ........ r54152 | martin.v.loewis | 2007-03-06 02:41:24 -0800 (Tue, 06 Mar 2007) | 2 lines Patch #1121142: Implement ZipFile.open. ........ r54154 | georg.brandl | 2007-03-06 03:51:14 -0800 (Tue, 06 Mar 2007) | 2 lines A test case for the fix in #1674228. ........ r54156 | georg.brandl | 2007-03-06 03:52:24 -0800 (Tue, 06 Mar 2007) | 2 lines Patch #1672481: fix bug in idlelib.MultiCall. ........ r54159 | georg.brandl | 2007-03-06 04:17:50 -0800 (Tue, 06 Mar 2007) | 1 line Bug #1674503: close the file opened by execfile() in an error condition. ........ r54160 | georg.brandl | 2007-03-06 05:32:52 -0800 (Tue, 06 Mar 2007) | 3 lines Fix another reincarnation of bug #1576657 in defaultdict. ........ r54162 | georg.brandl | 2007-03-06 05:35:00 -0800 (Tue, 06 Mar 2007) | 2 lines A test case for the defaultdict KeyError bug. ........ r54164 | georg.brandl | 2007-03-06 05:37:45 -0800 (Tue, 06 Mar 2007) | 3 lines Patch #1663234: you can now run doctest on test files and modules using "python -m doctest [-v] filename ...". ........ r54165 | martin.v.loewis | 2007-03-06 06:43:00 -0800 (Tue, 06 Mar 2007) | 3 lines Patch #912410: Replace HTML entity references for attribute values in HTMLParser. ........ r54166 | skip.montanaro | 2007-03-06 07:41:38 -0800 (Tue, 06 Mar 2007) | 1 line patch 1673619 - identify extension modules which cannot be built ........ r54167 | guido.van.rossum | 2007-03-06 07:50:01 -0800 (Tue, 06 Mar 2007) | 5 lines Patch #1646728: datetime.fromtimestamp fails with negative fractional times. With unittest. Somebody please backport to 2.5. ........ r54169 | georg.brandl | 2007-03-06 09:49:14 -0800 (Tue, 06 Mar 2007) | 2 lines Fix cmp vs. key argument for list.sort. ........ r54170 | georg.brandl | 2007-03-06 10:21:32 -0800 (Tue, 06 Mar 2007) | 2 lines Small nit, found by Neal. ........ r54171 | georg.brandl | 2007-03-06 10:29:58 -0800 (Tue, 06 Mar 2007) | 3 lines Patch #1602128: clarify that richcmp methods can return NotImplemented and should return True or False otherwise. ........ r54173 | georg.brandl | 2007-03-06 10:41:12 -0800 (Tue, 06 Mar 2007) | 2 lines Patch #1638879: don't accept strings with embedded NUL bytes in long(). ........ r54175 | georg.brandl | 2007-03-06 10:47:31 -0800 (Tue, 06 Mar 2007) | 2 lines Patch #1673121: update README wrt. OSX default shell. ........ r54177 | georg.brandl | 2007-03-06 10:59:11 -0800 (Tue, 06 Mar 2007) | 3 lines Patch #1654417: make operator.{get,set,del}slice use the full range of Py_ssize_t. ........ r54180 | walter.doerwald | 2007-03-06 12:38:57 -0800 (Tue, 06 Mar 2007) | 4 lines Patch for bug #1633621: if curses.resizeterm() or curses.resize_term() is called, update _curses.LINES, _curses.COLS, curses.LINES and curses.COLS. ........ r54182 | walter.doerwald | 2007-03-06 13:15:24 -0800 (Tue, 06 Mar 2007) | 2 lines Document change to curses. ........ r54188 | georg.brandl | 2007-03-06 16:34:46 -0800 (Tue, 06 Mar 2007) | 5 lines Variant of patch #697613: don't exit the interpreter on a SystemExit exception if the -i command line option or PYTHONINSPECT environment variable is given, but break into the interactive interpreter just like on other exceptions or normal program exit. (backport) ........ r54189 | georg.brandl | 2007-03-06 16:40:28 -0800 (Tue, 06 Mar 2007) | 4 lines Patch #703779: unset __file__ in __main__ after running a file. This makes the filenames the warning module prints much more sensible when a PYTHONSTARTUP file is used. ........ r54192 | george.yoshida | 2007-03-06 20:21:18 -0800 (Tue, 06 Mar 2007) | 2 lines add versionadded info ........ r54195 | georg.brandl | 2007-03-06 23:39:06 -0800 (Tue, 06 Mar 2007) | 2 lines Patch #812285: allow multiple auth schemes in AbstractBasicAuthHandler. ........ r54197 | georg.brandl | 2007-03-07 00:31:51 -0800 (Wed, 07 Mar 2007) | 3 lines Patch #1001604: glob.glob() now returns unicode filenames if it was given a unicode argument and os.listdir() returns unicode filenames. ........ r54199 | georg.brandl | 2007-03-07 01:09:40 -0800 (Wed, 07 Mar 2007) | 3 lines Patches #1550273, #1550272: fix a few bugs in unittest and add a comprehensive test suite for the module. ........ r54201 | georg.brandl | 2007-03-07 01:21:06 -0800 (Wed, 07 Mar 2007) | 3 lines Patch #787789: allow to pass custom TestRunner instances to unittest's main() function. ........ r54202 | georg.brandl | 2007-03-07 01:34:45 -0800 (Wed, 07 Mar 2007) | 2 lines Patch #1669331: clarify shutil.copyfileobj() behavior wrt. file position. ........ r54204 | martin.v.loewis | 2007-03-07 03:04:33 -0800 (Wed, 07 Mar 2007) | 2 lines Bug #1115886: os.path.splitext('.cshrc') gives now ('.cshrc', ''). ........ r54206 | georg.brandl | 2007-03-07 03:37:42 -0800 (Wed, 07 Mar 2007) | 2 lines Patch #1675471: convert test_pty to unittest. ........ r54207 | georg.brandl | 2007-03-07 03:54:49 -0800 (Wed, 07 Mar 2007) | 4 lines Add some sanity checks to unittest.TestSuite's addTest(s) methods. Fixes #878275. ........ r54209 | guido.van.rossum | 2007-03-07 07:16:29 -0800 (Wed, 07 Mar 2007) | 3 lines Windows doesn't support negative timestamps. Skip the tests involving them if os.name == "nt". ........ r54219 | martin.v.loewis | 2007-03-08 05:42:43 -0800 (Thu, 08 Mar 2007) | 2 lines Add missing ) in parenthical remark. ........ r54220 | georg.brandl | 2007-03-08 09:49:06 -0800 (Thu, 08 Mar 2007) | 2 lines Fix #1676656: \em is different from \emph... ........ r54222 | georg.brandl | 2007-03-08 10:37:31 -0800 (Thu, 08 Mar 2007) | 2 lines Add a NEWS entry for rev. 54207,8. ........ r54225 | raymond.hettinger | 2007-03-08 11:24:27 -0800 (Thu, 08 Mar 2007) | 1 line SF 1676321: empty() returned wrong result ........ r54227 | collin.winter | 2007-03-08 11:58:14 -0800 (Thu, 08 Mar 2007) | 1 line Backported r54226 from p3yk: Move test_unittest, test_doctest and test_doctest2 higher up in the testing order. ........ r54230 | raymond.hettinger | 2007-03-08 13:33:47 -0800 (Thu, 08 Mar 2007) | 1 line SF #1637850: make_table in difflib did not work with unicode ........ r54232 | collin.winter | 2007-03-08 14:16:25 -0800 (Thu, 08 Mar 2007) | 1 line Patch #1668482: don't use '-' in mkstemp ........ r54233 | brett.cannon | 2007-03-08 15:58:11 -0800 (Thu, 08 Mar 2007) | 10 lines Introduce test.test_support.TransientResource. It's a context manager to surround calls to resources that may or may not be available. Specifying the expected exception and attributes to be raised if the resource is not available prevents overly broad catching of exceptions. This is meant to help suppress spurious failures by raising test.test_support.ResourceDenied if the exception matches. It would probably be good to go through the various network tests and surround the calls to catch connection timeouts (as done with test_socket_ssl in this commit). ........ r54234 | collin.winter | 2007-03-08 19:15:56 -0800 (Thu, 08 Mar 2007) | 1 line Patch #1481079: Support of HTTP_REFERER in CGIHTTPServer.py ........ r54235 | collin.winter | 2007-03-08 19:26:32 -0800 (Thu, 08 Mar 2007) | 1 line Add NEWS item for patch #1481079 (r54234). ........ r54237 | neal.norwitz | 2007-03-08 21:59:01 -0800 (Thu, 08 Mar 2007) | 1 line Fix SF #1676971, Complex OverflowError has a typo ........ r54239 | georg.brandl | 2007-03-09 04:58:41 -0800 (Fri, 09 Mar 2007) | 2 lines Typo. ........ r54240 | martin.v.loewis | 2007-03-09 07:35:55 -0800 (Fri, 09 Mar 2007) | 2 lines Patch #957003: Implement smtplib.LMTP. ........ r54243 | collin.winter | 2007-03-09 10:09:10 -0800 (Fri, 09 Mar 2007) | 2 lines Bug #1629566: clarify the docs on the return values of parsedate() and parsedate_tz() in email.utils and rfc822. ........ r54244 | thomas.heller | 2007-03-09 11:21:28 -0800 (Fri, 09 Mar 2007) | 3 lines Fix bug #1646630: ctypes.string_at(buf, 0) and ctypes.wstring_at(buf, 0) returned string up to the first NUL character. ........ r54245 | martin.v.loewis | 2007-03-09 11:36:01 -0800 (Fri, 09 Mar 2007) | 2 lines Add Ziga Seilnacht. ........ r54247 | collin.winter | 2007-03-09 12:33:07 -0800 (Fri, 09 Mar 2007) | 2 lines Patch #1491866: change the complex() constructor to allow parthensized forms. This means complex(repr(x)) now works instead of raising a ValueError. ........ r54248 | thomas.heller | 2007-03-09 12:39:22 -0800 (Fri, 09 Mar 2007) | 7 lines Bug #1651235: When a tuple was passed to a ctypes function call, Python would crash instead of raising an error. The crash was caused by a section of code that should have been removed long ago, at that time ctypes had other ways to pass parameters to function calls. ........ r54250 | collin.winter | 2007-03-09 15:30:39 -0800 (Fri, 09 Mar 2007) | 1 line Hashing simplification pointed out by Thomas Wouters. ........ r54252 | collin.winter | 2007-03-09 18:23:40 -0800 (Fri, 09 Mar 2007) | 5 lines * Unlink test files before and after each test; hopefully this will cut down on recent buildbot failures in test_islink. * Drop safe_remove() in favor of test_support.unlink(). * Fix the indentation of test_samefile so that it runs. ........ r54253 | collin.winter | 2007-03-09 18:51:26 -0800 (Fri, 09 Mar 2007) | 3 lines Bug #1531963: Make SocketServer.TCPServer's server_address always be equal to calling getsockname() on the server's socket. Will backport. ........ r54254 | neal.norwitz | 2007-03-09 19:19:18 -0800 (Fri, 09 Mar 2007) | 4 lines Simplify a little by handling the TCP case first. Update to use predominant style of spaces around = in args list and print to stderr if debugging. ........ r54256 | collin.winter | 2007-03-09 19:35:34 -0800 (Fri, 09 Mar 2007) | 1 line Add proper attribution for a bug fix. ........ r54257 | georg.brandl | 2007-03-09 23:38:14 -0800 (Fri, 09 Mar 2007) | 2 lines Typos. ........ r54260 | collin.winter | 2007-03-10 06:33:32 -0800 (Sat, 10 Mar 2007) | 1 line Convert an assert to a raise so it works even in the presence of -O. ........ r54262 | collin.winter | 2007-03-10 06:41:48 -0800 (Sat, 10 Mar 2007) | 2 lines Patch #1599845: Add an option to disable the implicit calls to server_bind() and server_activate() in the constructors for TCPServer, SimpleXMLRPCServer and DocXMLRPCServer. ........ r54268 | georg.brandl | 2007-03-11 00:28:46 -0800 (Sun, 11 Mar 2007) | 2 lines Add missing "return" statements in exception handler. ........ r54270 | ziga.seilnacht | 2007-03-11 08:54:54 -0700 (Sun, 11 Mar 2007) | 3 lines Patch #1675981: remove unreachable code from type.__new__() method. __dict__ and __weakref__ are removed from the slots tuple earlier in the code, in the loop that mangles slot names. Will backport. ........ r54271 | collin.winter | 2007-03-11 09:00:20 -0700 (Sun, 11 Mar 2007) | 3 lines Patch #1192590: Fix pdb's "ignore" and "condition" commands so they trap the IndexError caused by passing in an invalid breakpoint number. Will backport. ........ r54274 | vinay.sajip | 2007-03-11 11:32:07 -0700 (Sun, 11 Mar 2007) | 1 line Fix resource leak reported in SF #1516995. ........ r54278 | collin.winter | 2007-03-11 18:55:54 -0700 (Sun, 11 Mar 2007) | 4 lines Patch #1678662: ftp.python.org does not exist. So the testcode in urllib.py must use a more stable FTP. Will backport. ........ r54280 | barry.warsaw | 2007-03-11 20:20:01 -0700 (Sun, 11 Mar 2007) | 8 lines Tokio Kikuchi's fix for SF bug #1629369; folding whitespace allowed in the display name of an email address, e.g. Foo \tBar <foo@example.com> Test case added by Barry. ........ r54282 | skip.montanaro | 2007-03-11 20:30:50 -0700 (Sun, 11 Mar 2007) | 4 lines Sane humans would call these invalid tests, but Andrew McNamara pointed out that given the inputs in these tests Excel does indeed produce the output these tests expect. Document that for future confused folks. ........ r54283 | martin.v.loewis | 2007-03-12 03:50:39 -0700 (Mon, 12 Mar 2007) | 2 lines Bug #1675511: Use -Kpic instead of -xcode=pic32 on Solaris/x86. ........ r54285 | martin.v.loewis | 2007-03-12 04:01:10 -0700 (Mon, 12 Mar 2007) | 2 lines Patch #1677862: Require a space or tab after import in .pth files. ........ r54287 | georg.brandl | 2007-03-12 06:17:36 -0700 (Mon, 12 Mar 2007) | 8 lines Backport from Py3k branch: Patch #1591665: implement the __dir__() special function lookup in PyObject_Dir. Had to change a few bits of the patch because classobjs and __methods__ are still in Py2.6. ........ r54288 | georg.brandl | 2007-03-12 07:30:05 -0700 (Mon, 12 Mar 2007) | 3 lines Bug #1678647: write a newline after printing an exception in any case, even when converting the value to a string failed. ........ r54290 | collin.winter | 2007-03-12 08:57:19 -0700 (Mon, 12 Mar 2007) | 1 line Patch #1678088: convert test_operations to use unittest, fold the result into test_dict. ........ r54291 | collin.winter | 2007-03-12 09:11:39 -0700 (Mon, 12 Mar 2007) | 3 lines Bug #742342: make Python stop segfaulting on infinitely-recursive reload()s. Fixed by patch #922167. Will backport. ........ r54292 | georg.brandl | 2007-03-12 09:15:09 -0700 (Mon, 12 Mar 2007) | 2 lines Typo fix. ........ r54295 | collin.winter | 2007-03-12 10:24:07 -0700 (Mon, 12 Mar 2007) | 1 line Patch #1670993: Refactor test_threadedtempfile.py to use unittest. ........ r54296 | tim.peters | 2007-03-12 11:07:52 -0700 (Mon, 12 Mar 2007) | 2 lines Whitespace normalization. ........ r54297 | tim.peters | 2007-03-12 11:09:22 -0700 (Mon, 12 Mar 2007) | 2 lines Set missing svn:eol-style property on text files. ........ r54315 | brett.cannon | 2007-03-12 19:34:09 -0700 (Mon, 12 Mar 2007) | 8 lines Add test.test_support.transient_internet . Returns a context manager that nests test.test_support.TransientResource context managers that capture exceptions raised when the Internet connection is flaky. Initially using in test_socket_ssl but should probably be expanded to cover any test that should not raise the captured exceptions if the Internet connection works. ........ r54316 | brett.cannon | 2007-03-12 20:05:40 -0700 (Mon, 12 Mar 2007) | 2 lines Fix a typo where the variable name was not updated. ........ r54318 | neal.norwitz | 2007-03-12 21:59:58 -0700 (Mon, 12 Mar 2007) | 1 line Add Jerry Seutter for a bunch of his recent patches refactoring tests ........ r54319 | neal.norwitz | 2007-03-12 22:07:14 -0700 (Mon, 12 Mar 2007) | 7 lines Add some other acks for recent checkins: Brian Leair - 922167 Tomer Filiba - 1591665 Jeremy Jones - 1192590 ........ r54321 | neal.norwitz | 2007-03-12 22:31:38 -0700 (Mon, 12 Mar 2007) | 9 lines Fix some style nits: * lines too long * wrong indentation * space after a function name * wrong function name in error string * simplifying some logic Also add an error check to PyDict_SetItemString. ........ r54322 | georg.brandl | 2007-03-13 00:23:16 -0700 (Tue, 13 Mar 2007) | 2 lines Typo and grammar fixes. ........ r54323 | georg.brandl | 2007-03-13 00:50:57 -0700 (Tue, 13 Mar 2007) | 2 lines Patch #1679379: add documentation for fnmatch.translate(). ........ r54325 | georg.brandl | 2007-03-13 00:57:51 -0700 (Tue, 13 Mar 2007) | 2 lines Patch #1642844: comments to clarify the complexobject constructor. ........ r54326 | georg.brandl | 2007-03-13 01:14:27 -0700 (Tue, 13 Mar 2007) | 3 lines Patch #1668100: urllib2 now correctly raises URLError instead of OSError if accessing a local file via the file:// protocol fails. ........ r54327 | georg.brandl | 2007-03-13 02:32:11 -0700 (Tue, 13 Mar 2007) | 4 lines Patch #1635454: the csv.DictWriter class now includes the offending field names in its exception message if you try to write a record with a dictionary containing fields not in the CSV field names list. ........ r54328 | georg.brandl | 2007-03-13 02:41:31 -0700 (Tue, 13 Mar 2007) | 3 lines Patch #1555098: use str.join() instead of repeated string concatenation in robotparser. ........ r54329 | georg.brandl | 2007-03-13 03:06:48 -0700 (Tue, 13 Mar 2007) | 3 lines Patch #1542681: add entries for "with", "as" and "CONTEXTMANAGERS" to pydoc's help keywords. ........ r54331 | georg.brandl | 2007-03-13 03:19:22 -0700 (Tue, 13 Mar 2007) | 3 lines Patch #1569798: fix a bug in distutils when building Python from a directory within sys.exec_prefix. ........ r54333 | martin.v.loewis | 2007-03-13 03:24:00 -0700 (Tue, 13 Mar 2007) | 4 lines Patch #1449244: Support Unicode strings in email.message.Message.{set_charset,get_content_charset}. Will backport. ........ r54335 | lars.gustaebel | 2007-03-13 03:47:19 -0700 (Tue, 13 Mar 2007) | 34 lines This is the implementation of POSIX.1-2001 (pax) format read/write support. The TarInfo class now contains all necessary logic to process and create tar header data which has been moved there from the TarFile class. The fromtarfile() method was added. The new path and linkpath properties are aliases for the name and linkname attributes in correspondence to the pax naming scheme. The TarFile constructor and classmethods now accept a number of keyword arguments which could only be set as attributes before (e.g. dereference, ignore_zeros). The encoding and pax_headers arguments were added for pax support. There is a new tarinfo keyword argument that allows using subclassed TarInfo objects in TarFile. The boolean TarFile.posix attribute is deprecated, because now three tar formats are supported. Instead, the desired format for writing is specified using the constants USTAR_FORMAT, GNU_FORMAT and PAX_FORMAT as the format keyword argument. This change affects TarInfo.tobuf() as well. The test suite has been heavily reorganized and partially rewritten. A new testtar.tar was added that contains sample data in many formats from 4 different tar programs. Some bugs and quirks that also have been fixed: Directory names do no longer have a trailing slash in TarInfo.name or TarFile.getnames(). Adding the same file twice does not create a hardlink file member. The TarFile constructor does no longer need a name argument. The TarFile._mode attribute was renamed to mode and contains either 'r', 'w' or 'a'. ........ r54336 | georg.brandl | 2007-03-13 05:34:25 -0700 (Tue, 13 Mar 2007) | 3 lines Bug #1622896: fix a rare corner case where the bz2 module raised an error in spite of a succesful compression. ........ r54338 | lars.gustaebel | 2007-03-13 08:47:07 -0700 (Tue, 13 Mar 2007) | 3 lines Quick fix for tests that fail on systems with an encoding other than 'iso8859-1'. ........ r54339 | georg.brandl | 2007-03-13 10:43:32 -0700 (Tue, 13 Mar 2007) | 4 lines Patch #1603688: ConfigParser.SafeConfigParser now checks values that are set for invalid interpolation sequences that would lead to errors on reading back those values. ........ r54341 | georg.brandl | 2007-03-13 11:15:41 -0700 (Tue, 13 Mar 2007) | 3 lines Patch #1581073: add a flag to textwrap that prevents the dropping of whitespace while wrapping. ........ r54343 | georg.brandl | 2007-03-13 11:24:40 -0700 (Tue, 13 Mar 2007) | 2 lines Patch #1605192: list allowed states in error messages for imaplib. ........ r54344 | georg.brandl | 2007-03-13 11:31:49 -0700 (Tue, 13 Mar 2007) | 4 lines Patch #1537850: tempfile.NamedTemporaryFile now has a "delete" parameter which can be set to False to prevent the default delete-on-close behavior. ........ r54345 | collin.winter | 2007-03-13 11:53:04 -0700 (Tue, 13 Mar 2007) | 9 lines Add acks for recent patch checkins: Arvin Schnell - 1668482 S?\195?\169bastien Martini - 1481079 Heiko Wundram - 1491866 Damon Kohler - 1545011 Peter Parente - 1599845 Bjorn Lindqvist - 1678662 ........ r54346 | georg.brandl | 2007-03-13 12:00:36 -0700 (Tue, 13 Mar 2007) | 2 lines Acks for recent patches. ........ r54347 | georg.brandl | 2007-03-13 12:18:18 -0700 (Tue, 13 Mar 2007) | 3 lines Fix a tab. ........ r54348 | georg.brandl | 2007-03-13 12:32:21 -0700 (Tue, 13 Mar 2007) | 4 lines Patch #1533909: the timeit module now accepts callables in addition to strings for the code to time and the setup code. Also added two convenience functions for instantiating a Timer and calling its methods. ........ r54352 | georg.brandl | 2007-03-13 13:02:57 -0700 (Tue, 13 Mar 2007) | 3 lines Patch #1530482: add pydoc.render_doc() which returns the documentation for a thing instead of paging it to stdout, which pydoc.doc() does. ........ r54357 | thomas.heller | 2007-03-13 13:42:52 -0700 (Tue, 13 Mar 2007) | 1 line Patch #1649190: Adding support for _Bool to ctypes as c_bool, by David Remahl. ........ r54358 | georg.brandl | 2007-03-13 13:46:32 -0700 (Tue, 13 Mar 2007) | 2 lines Patch #1444529: the builtin compile() now accepts keyword arguments. (backport) ........ r54359 | thomas.heller | 2007-03-13 14:01:39 -0700 (Tue, 13 Mar 2007) | 1 line Add versionadded marker for ctypes.c_bool. ........ r54360 | georg.brandl | 2007-03-13 14:08:15 -0700 (Tue, 13 Mar 2007) | 3 lines Patch #1393667: pdb now has a "run" command which restarts the debugged Python program, optionally with different arguments. ........ r54361 | georg.brandl | 2007-03-13 14:32:01 -0700 (Tue, 13 Mar 2007) | 3 lines Deprecate commands.getstatus(). ........ r54362 | georg.brandl | 2007-03-13 14:32:56 -0700 (Tue, 13 Mar 2007) | 2 lines NEWS entry for getstatus() deprecation. ........ r54363 | georg.brandl | 2007-03-13 14:58:44 -0700 (Tue, 13 Mar 2007) | 4 lines Patch #1429539: pdb now correctly initializes the __main__ module for the debugged script, which means that imports from __main__ work correctly now. ........ r54364 | georg.brandl | 2007-03-13 15:07:36 -0700 (Tue, 13 Mar 2007) | 4 lines Patch #957650: "%var%" environment variable references are now properly expanded in ntpath.expandvars(), also "~user" home directory references are recognized and handled on Windows. ........ r54365 | georg.brandl | 2007-03-13 15:16:30 -0700 (Tue, 13 Mar 2007) | 2 lines Patch #1194449: correctly detect unbound methods in pydoc. ........ r54367 | georg.brandl | 2007-03-13 15:49:43 -0700 (Tue, 13 Mar 2007) | 5 lines Patch #1185447: binascii.b2a_qp() now correctly quotes binary characters with ASCII value less than 32. Also, it correctly quotes dots only if they occur on a single line, as opposed to the previous behavior of quoting dots if they are the second character of any line. ........ r54368 | collin.winter | 2007-03-13 16:02:15 -0700 (Tue, 13 Mar 2007) | 1 line Inline PyImport_GetModulesReloading(). ........ r54371 | barry.warsaw | 2007-03-13 21:59:50 -0700 (Tue, 13 Mar 2007) | 6 lines SF bug #1582282; decode_header() incorrectly splits not-conformant RFC 2047-like headers where there is no whitespace between encoded words. This fix changes the matching regexp to include a trailing lookahead assertion that the closing ?= must be followed by whitespace, newline, or end-of-string. This also changes the regexp to add the MULTILINE flag. ........ r54372 | gregory.p.smith | 2007-03-14 00:17:40 -0700 (Wed, 14 Mar 2007) | 2 lines correct order and names of the less often used keyword parameters. ........ r54373 | gregory.p.smith | 2007-03-14 00:19:50 -0700 (Wed, 14 Mar 2007) | 5 lines Its time to stop listing (Unix, Windows) when we really mean "everything but Mac OS 9" now that nobody is likely to use Python on Mac OS 9 and most of the (Mac) platform items are all OS X special API specific since OS X is unixy enough for these modules to be available out of the box. ........ r54376 | georg.brandl | 2007-03-14 01:27:52 -0700 (Wed, 14 Mar 2007) | 4 lines Bug #767111: fix long-standing bug in urllib which caused an AttributeError instead of an IOError when the server's response didn't contain a valid HTTP status line. ........ r54378 | ziga.seilnacht | 2007-03-14 05:24:09 -0700 (Wed, 14 Mar 2007) | 4 lines Patch #1680015: Don't modify __slots__ tuple if it contains an unicode name. Remove a reference leak that happened if the name could not be converted to string. Will backport. ........ r54386 | martin.v.loewis | 2007-03-14 13:02:31 -0700 (Wed, 14 Mar 2007) | 3 lines Patch #1559413: Fix test_cmd_line if sys.executable contains a space. Will backport. ........ r54389 | brett.cannon | 2007-03-14 14:40:13 -0700 (Wed, 14 Mar 2007) | 3 lines Note how test_socket_ssl has various exceptions that deal with a flaky Net connection are silenced. ........ r54390 | brett.cannon | 2007-03-14 14:44:15 -0700 (Wed, 14 Mar 2007) | 2 lines Raise ResourceDenied in test_urllib2net when the Net connection goes bad. ........ r54391 | neal.norwitz | 2007-03-14 21:41:20 -0700 (Wed, 14 Mar 2007) | 1 line Wrap a long line and fix a typo (is -> if) ........ r54392 | georg.brandl | 2007-03-15 00:38:14 -0700 (Thu, 15 Mar 2007) | 3 lines Patch #1680978: consistently use "alive" instead of "active" in the thread lib doc. ........ r54394 | georg.brandl | 2007-03-15 00:41:30 -0700 (Thu, 15 Mar 2007) | 3 lines Patch #1681153: the wave module now closes a file object it opened if initialization failed. ........ r54397 | ziga.seilnacht | 2007-03-15 04:44:55 -0700 (Thu, 15 Mar 2007) | 3 lines Patch #1462488: prevent a segfault in object_reduce_ex() by splitting the implementation for __reduce__ and __reduce_ex__ into two separate functions. Fixes bug #931877. Will backport. ........ r54404 | collin.winter | 2007-03-15 21:11:30 -0700 (Thu, 15 Mar 2007) | 3 lines Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements. Will backport. ........ r54406 | georg.brandl | 2007-03-16 00:55:09 -0700 (Fri, 16 Mar 2007) | 5 lines Bug #1681228: the webbrowser module now correctly uses the default GNOME or KDE browser, depending on whether there is a session of one of those present. Also, it tries the Windows default browser before trying Mozilla variants. (backport) ........ r54407 | georg.brandl | 2007-03-16 01:22:40 -0700 (Fri, 16 Mar 2007) | 4 lines Patch #1273829: os.walk() now has a "followlinks" parameter. If set to True (which is not the default), it visits symlinks pointing to directories. ........ r54408 | georg.brandl | 2007-03-16 01:24:21 -0700 (Fri, 16 Mar 2007) | 2 lines Add \versionadded tag. ........ r54409 | georg.brandl | 2007-03-16 01:33:47 -0700 (Fri, 16 Mar 2007) | 2 lines RFE #1670167: fix in isinstance() docs. ........ r54412 | ziga.seilnacht | 2007-03-16 04:59:38 -0700 (Fri, 16 Mar 2007) | 3 lines Patch #1623563: allow __class__ assignment for classes with __slots__. The old and the new class are still required to have the same slot names, but the order in which they are specified is not relevant. ........ r54413 | ziga.seilnacht | 2007-03-16 05:11:11 -0700 (Fri, 16 Mar 2007) | 2 lines Whitespace cleanup. Also remove the empty lines from the previous check in. ........ r54414 | jeremy.hylton | 2007-03-16 07:49:11 -0700 (Fri, 16 Mar 2007) | 2 lines Remove warning: funcion declaration isn't a prototype ........ r54415 | jeremy.hylton | 2007-03-16 08:59:47 -0700 (Fri, 16 Mar 2007) | 11 lines Clean up formatting of this file. The file should now follow PEP 7, except that it uses 4 space indents (in the style of Py3k). This particular code would be really hard to read with the regular tab idents. Other changes: - reflow long lines - change multi-line conditionals to have test at end of line ........ r54417 | collin.winter | 2007-03-16 14:13:35 -0700 (Fri, 16 Mar 2007) | 1 line Patch #1676994: Refactor test_popen2 to use unittest. ........ r54418 | collin.winter | 2007-03-16 14:15:35 -0700 (Fri, 16 Mar 2007) | 1 line Remove test/output/test_popen2 (missed in r54417). ........ r54419 | collin.winter | 2007-03-16 15:16:08 -0700 (Fri, 16 Mar 2007) | 1 line Patch 1339796: add a relpath() function to os.path. ........ r54421 | georg.brandl | 2007-03-17 09:08:45 -0700 (Sat, 17 Mar 2007) | 5 lines Patch #1675423: PyComplex_AsCComplex() now tries to convert an object to complex using its __complex__() method before falling back to the __float__() method. Therefore, the functions in the cmath module now can operate on objects that define a __complex__() method. (backport) ........ r54423 | gregory.p.smith | 2007-03-17 15:33:35 -0700 (Sat, 17 Mar 2007) | 2 lines move note to the correct section ........ r54426 | georg.brandl | 2007-03-18 01:25:00 -0700 (Sun, 18 Mar 2007) | 2 lines Patch #1682878: the new socket methods are recv_into and recvfrom_into, not *_buf. ........ r54432 | georg.brandl | 2007-03-18 11:28:25 -0700 (Sun, 18 Mar 2007) | 2 lines Patch #1678339: test case for bug in difflib. ........ r54439 | collin.winter | 2007-03-19 11:52:08 -0700 (Mon, 19 Mar 2007) | 1 line Patch #1630118: add a SpooledTemporaryFile class to tempfile. ........ r54441 | georg.brandl | 2007-03-19 12:02:48 -0700 (Mon, 19 Mar 2007) | 2 lines Patch #1683328: fixes and enhancements for "unparse" demo. ........ r54456 | neal.norwitz | 2007-03-19 22:07:28 -0700 (Mon, 19 Mar 2007) | 1 line Add some doc that was left out from some change to platform.py ........ r54457 | neal.norwitz | 2007-03-19 22:08:23 -0700 (Mon, 19 Mar 2007) | 1 line Add a comment about 3k migration ........ r54458 | neal.norwitz | 2007-03-19 22:21:21 -0700 (Mon, 19 Mar 2007) | 1 line Get rid of deprecation warning when testing commands.getstatus() ........ r54459 | neal.norwitz | 2007-03-19 22:23:09 -0700 (Mon, 19 Mar 2007) | 4 lines Try backing out 54407 to see if it corrects the problems on the Windows buildbots. This rev was backported, so we will need to keep both branches in sync, pending the outcome of the test after this checkin. ........ r54460 | neal.norwitz | 2007-03-19 23:13:25 -0700 (Mon, 19 Mar 2007) | 1 line Try to make this test more resistant to dropping from previous runs (ie, files that may exist but cause the test to fail). Should be backported (assuming it works :-) ........ r54461 | neal.norwitz | 2007-03-19 23:16:26 -0700 (Mon, 19 Mar 2007) | 1 line Try to make this test more resistant to dropping from previous runs (ie, files that may exist but cause the test to fail). Should be backported (assuming it works :-) ........ r54462 | neal.norwitz | 2007-03-19 23:53:17 -0700 (Mon, 19 Mar 2007) | 5 lines Try to be a little more resilient to errors. This might help the test pass, but my guess is that it won't. I'm guessing that some other test is leaving this file open which means it can't be removed under Windows AFAIK. ........ r54463 | neal.norwitz | 2007-03-20 01:14:57 -0700 (Tue, 20 Mar 2007) | 8 lines Try to get test_urllib to pass on Windows by closing the file. I'm guessing that's the problem. h.getfile() must be called *after* h.getreply() and the fp can be None. I'm not entirely convinced this is the best fix (or even correct). The buildbots will tell us if things improve or not. I don't know if this needs to be backported (assuming it actually works). ........ r54465 | raymond.hettinger | 2007-03-20 14:27:24 -0700 (Tue, 20 Mar 2007) | 1 line Extend work on rev 52962 and 53829 eliminating redundant PyObject_Hash() calls and fixing set/dict interoperability. ........ r54468 | georg.brandl | 2007-03-20 16:05:14 -0700 (Tue, 20 Mar 2007) | 2 lines Fix for glob.py if filesystem encoding is None. ........ r54479 | neal.norwitz | 2007-03-20 23:39:48 -0700 (Tue, 20 Mar 2007) | 1 line Remove unused file spotted by Paul Hankin ........ r54480 | georg.brandl | 2007-03-21 02:00:39 -0700 (Wed, 21 Mar 2007) | 3 lines Patch #1682205: a TypeError while unpacking an iterable is no longer masked by a generic one with the message "unpack non-sequence". ........ r54482 | georg.brandl | 2007-03-21 02:10:29 -0700 (Wed, 21 Mar 2007) | 2 lines New test for rev. 54407 which only uses directories under TESTFN. ........ r54483 | georg.brandl | 2007-03-21 02:16:53 -0700 (Wed, 21 Mar 2007) | 2 lines Patch #1684834: document some utility C API functions. ........ r54485 | georg.brandl | 2007-03-21 04:51:25 -0700 (Wed, 21 Mar 2007) | 2 lines Fix #1684254: split BROWSER contents with shlex to avoid displaying 'URL'. ........ r54487 | andrew.kuchling | 2007-03-21 07:32:43 -0700 (Wed, 21 Mar 2007) | 1 line Add comments on maintenance of this file ........ r54489 | andrew.kuchling | 2007-03-21 09:57:32 -0700 (Wed, 21 Mar 2007) | 1 line Fix sentence, and fix typo in example ........ r54490 | andrew.kuchling | 2007-03-21 09:59:20 -0700 (Wed, 21 Mar 2007) | 1 line Put code examples at left margin instead of indenting them ........ r54491 | facundo.batista | 2007-03-21 12:41:24 -0700 (Wed, 21 Mar 2007) | 1 line Minor clarification, saying that blocking means no timeout (from bug #882297) ........ r54492 | ziga.seilnacht | 2007-03-21 13:07:56 -0700 (Wed, 21 Mar 2007) | 2 lines Bug #1675967: re patterns pickled with older Python versions can now be unpickled. Will backport. ........ r54495 | raymond.hettinger | 2007-03-21 13:33:57 -0700 (Wed, 21 Mar 2007) | 1 line Add test and fix for fromkeys() optional argument. ........ r54524 | georg.brandl | 2007-03-22 01:05:45 -0700 (Thu, 22 Mar 2007) | 2 lines Bug #1685704: use -m switch in timeit docs. ........ r54533 | thomas.heller | 2007-03-22 12:44:31 -0700 (Thu, 22 Mar 2007) | 5 lines Back out "Patch #1643874: memory leak in ctypes fixed." The code in this patch leaves no way to give up the ownership of a BSTR instance. ........ r54538 | thomas.heller | 2007-03-22 13:34:37 -0700 (Thu, 22 Mar 2007) | 2 lines Explain the purpose of the b_needsfree flag (forward ported from release25-maint). ........ r54539 | guido.van.rossum | 2007-03-22 21:58:42 -0700 (Thu, 22 Mar 2007) | 12 lines - Bug #1683368: The object.__init__() and object.__new__() methods are now stricter in rejecting excess arguments. The only time when either allows excess arguments is when it is not overridden and the other one is. For backwards compatibility, when both are overridden, it is a deprecation warning (for now; maybe a Py3k warning later). When merging this into 3.0, the warnings should become errors. Note: without the change to string.py, lots of spurious warnings happen. What's going on there? ........ r54540 | neal.norwitz | 2007-03-22 22:17:23 -0700 (Thu, 22 Mar 2007) | 1 line Add Mark Dickinson for SF # 1675423. ........ r54541 | martin.v.loewis | 2007-03-23 03:35:49 -0700 (Fri, 23 Mar 2007) | 3 lines Patch #1686451: Fix return type for PySequence_{Count,Index,Fast_GET_SIZE}. Will backport. ........ r54543 | martin.v.loewis | 2007-03-23 06:27:15 -0700 (Fri, 23 Mar 2007) | 3 lines Bug #978833: Revert r50844, as it broke _socketobject.dup. Will backport. ........ r54545 | guido.van.rossum | 2007-03-23 11:53:03 -0700 (Fri, 23 Mar 2007) | 8 lines Add a type.__init__() method that enforces the same signature as type.__new__(), and then calls object.__init__(cls), just to be anal. This allows us to restore the code in string.py's _TemplateMetaclass that called super(...).__init__(name, bases, dct), which I commented out yesterday since it broke due to the stricter argument checking added to object.__init__(). ........ r54546 | facundo.batista | 2007-03-23 11:54:07 -0700 (Fri, 23 Mar 2007) | 4 lines Added a 'create_connect()' function to socket.py, which creates a connection with an optional timeout, and modified httplib.py to use this function in HTTPConnection. Applies patch 1676823. ........ r54547 | guido.van.rossum | 2007-03-23 12:39:01 -0700 (Fri, 23 Mar 2007) | 2 lines Add note about type.__init__(). ........ r54553 | thomas.heller | 2007-03-23 12:55:27 -0700 (Fri, 23 Mar 2007) | 5 lines Prevent creation (followed by a segfault) of array types when the size overflows the valid Py_ssize_t range. Check return values of PyMem_Malloc. Will backport to release25-maint. ........ r54555 | facundo.batista | 2007-03-23 13:23:08 -0700 (Fri, 23 Mar 2007) | 6 lines Surrounded with try/finally to socket's default timeout setting changes in the tests, so failing one test won't produce strange results in others. Also relaxed the timeout settings in the test (where actually the value didn't mean anything). ........ r54556 | collin.winter | 2007-03-23 15:24:39 -0700 (Fri, 23 Mar 2007) | 1 line Make test_relpath() pass on Windows. ........ r54559 | ziga.seilnacht | 2007-03-24 07:24:26 -0700 (Sat, 24 Mar 2007) | 6 lines Patch #1489771: update syntax rules in Python Reference Manual. Python 2.5 added support for explicit relative import statements and yield expressions, which were missing in the manual. Also fix grammar productions that used the names from the Grammar file, markup that broke the generated grammar.txt, and wrap some lines that broke the pdf output. Will backport. ........ r54565 | georg.brandl | 2007-03-24 15:20:34 -0700 (Sat, 24 Mar 2007) | 2 lines Remove typo accent. ........ r54566 | georg.brandl | 2007-03-24 15:27:56 -0700 (Sat, 24 Mar 2007) | 2 lines Revert accidental change. ........ r54567 | brett.cannon | 2007-03-24 18:32:36 -0700 (Sat, 24 Mar 2007) | 3 lines Change the docs to no longer claim that unittest is preferred over doctest for regression tests. ........ r54568 | facundo.batista | 2007-03-24 18:53:21 -0700 (Sat, 24 Mar 2007) | 4 lines Redone the tests, using the infrastructure already present for threading and socket serving. ........ r54570 | facundo.batista | 2007-03-24 20:20:05 -0700 (Sat, 24 Mar 2007) | 3 lines Closing the HTTP connection after each test, and listening more. ........ r54572 | georg.brandl | 2007-03-25 11:44:35 -0700 (Sun, 25 Mar 2007) | 2 lines Markup fix. ........ r54573 | georg.brandl | 2007-03-25 12:04:55 -0700 (Sun, 25 Mar 2007) | 2 lines Markup fix. ........ r54580 | facundo.batista | 2007-03-26 13:18:31 -0700 (Mon, 26 Mar 2007) | 5 lines Added an optional timeout to FTP class. Also I started a test_ftplib.py file to test the ftp lib (right now I included a basic test, the timeout one, and nothing else). ........ r54581 | georg.brandl | 2007-03-26 13:28:28 -0700 (Mon, 26 Mar 2007) | 2 lines Some nits. ........ r54582 | facundo.batista | 2007-03-26 13:56:09 -0700 (Mon, 26 Mar 2007) | 4 lines Forgot to add the file before the previous commit, here go the ftplib tests. ........ r54585 | facundo.batista | 2007-03-27 11:23:21 -0700 (Tue, 27 Mar 2007) | 5 lines Added an optional timeout to poplib.POP3. Also created a test_poplib.py file with a basic test and the timeout ones. Docs are also updated. ........ r54586 | facundo.batista | 2007-03-27 11:50:29 -0700 (Tue, 27 Mar 2007) | 3 lines The basic test cases of poplib.py. ........ r54594 | facundo.batista | 2007-03-27 20:45:20 -0700 (Tue, 27 Mar 2007) | 4 lines Bug 1688393. Adds a control of negative values in socket.recvfrom, which caused an ugly crash. ........ r54599 | facundo.batista | 2007-03-28 11:25:54 -0700 (Wed, 28 Mar 2007) | 5 lines Added timeout to smtplib (to SMTP and SMTP_SSL). Also created the test_smtplib.py file, with a basic test and the timeout ones. Docs are updated too. ........ r54603 | collin.winter | 2007-03-28 16:34:06 -0700 (Wed, 28 Mar 2007) | 3 lines Consolidate patches #1690164, 1683397, and 1690169, all of which refactor XML-related test suites. The patches are applied together because they use a common output/xmltests file. Thanks to Jerry Seutter for all three patches. ........ r54604 | collin.winter | 2007-03-28 19:28:16 -0700 (Wed, 28 Mar 2007) | 1 line Make test_zipfile clean up its temporary files properly. ........ r54605 | georg.brandl | 2007-03-29 00:41:32 -0700 (Thu, 29 Mar 2007) | 2 lines These are actually methods. ........ r54606 | georg.brandl | 2007-03-29 05:42:07 -0700 (Thu, 29 Mar 2007) | 4 lines In Windows' time.clock(), when QueryPerformanceFrequency() fails, the C lib's clock() is used, but it must be divided by CLOCKS_PER_SEC as for the POSIX implementation (thanks to #pypy). ........ r54608 | facundo.batista | 2007-03-29 11:22:35 -0700 (Thu, 29 Mar 2007) | 5 lines Added timout parameter to telnetlib.Telnet. Also created test_telnetlib.py with a basic test and timeout ones. Docs are also updated. ........ r54613 | facundo.batista | 2007-03-30 06:00:35 -0700 (Fri, 30 Mar 2007) | 4 lines Added the posibility to pass the timeout to FTP.connect, not only when instantiating the class. Docs and tests are updated. ........ r54614 | collin.winter | 2007-03-30 07:01:25 -0700 (Fri, 30 Mar 2007) | 1 line Bug #1688274: add documentation for C-level class objects. ........ r54615 | marc-andre.lemburg | 2007-03-30 08:01:42 -0700 (Fri, 30 Mar 2007) | 4 lines Bump the patch level version of distutils since there were a few bug fixes since the 2.5.0 release. ........ r54617 | georg.brandl | 2007-03-30 08:49:05 -0700 (Fri, 30 Mar 2007) | 2 lines Markup fix. ........ r54618 | georg.brandl | 2007-03-30 10:39:39 -0700 (Fri, 30 Mar 2007) | 2 lines Label name fix. ........ r54619 | georg.brandl | 2007-03-30 10:47:21 -0700 (Fri, 30 Mar 2007) | 2 lines Duplicate label fix. ........ r54620 | georg.brandl | 2007-03-30 10:48:39 -0700 (Fri, 30 Mar 2007) | 2 lines Markup fix. ........ r54623 | andrew.kuchling | 2007-03-30 11:00:15 -0700 (Fri, 30 Mar 2007) | 1 line Add item. (Oops, accidentally checked this in on my branch) ........ r54624 | georg.brandl | 2007-03-30 12:01:38 -0700 (Fri, 30 Mar 2007) | 2 lines Duplicate label fix. ........ r54625 | georg.brandl | 2007-03-30 12:14:02 -0700 (Fri, 30 Mar 2007) | 2 lines Markup fix. ........ r54629 | georg.brandl | 2007-03-31 03:17:31 -0700 (Sat, 31 Mar 2007) | 2 lines repair string literal. ........ r54630 | georg.brandl | 2007-03-31 04:54:58 -0700 (Sat, 31 Mar 2007) | 2 lines Markup fix. ........ r54631 | georg.brandl | 2007-03-31 04:58:36 -0700 (Sat, 31 Mar 2007) | 2 lines Duplicate label fix. ........ r54632 | georg.brandl | 2007-03-31 04:59:54 -0700 (Sat, 31 Mar 2007) | 2 lines Typo fix. ........ r54633 | neal.norwitz | 2007-03-31 11:54:18 -0700 (Sat, 31 Mar 2007) | 1 line Fix method names. Will backport. ........ r54634 | georg.brandl | 2007-03-31 11:56:11 -0700 (Sat, 31 Mar 2007) | 4 lines Bug #1655392: don't add -L/usr/lib/pythonX.Y/config to the LDFLAGS returned by python-config if Python was built with --enable-shared because that prevented the shared library from being used. ........ r54637 | collin.winter | 2007-03-31 12:31:34 -0700 (Sat, 31 Mar 2007) | 1 line Shut up an occaisonal buildbot error due to test files being left around. ........ r54644 | neal.norwitz | 2007-04-01 11:24:22 -0700 (Sun, 01 Apr 2007) | 11 lines SF #1685563, MSVCCompiler creates redundant and long PATH strings If MSVCCompiler.initialize() was called multiple times, the path would get duplicated. On Windows, this is a problem because the path is limited to 4k. There's no benefit in adding a path multiple times, so prevent that from occuring. We also normalize the path before checking for duplicates so things like /a and /a/ won't both be stored. Will backport. ........ r54646 | brett.cannon | 2007-04-01 11:47:27 -0700 (Sun, 01 Apr 2007) | 8 lines time.strptime's caching of its locale object was being recreated when the locale changed but not used during the function call it was recreated during. The test in this checkin is untested (OS X does not have the proper locale support for me to test), although the fix for the bug this deals with was tested by the OP (#1290505). Once the buildbots verify the test at least doesn't fail it becomes a backport candidate. ........ r54647 | brett.cannon | 2007-04-01 12:46:19 -0700 (Sun, 01 Apr 2007) | 3 lines Fix the test for recreating the locale cache object by not worrying about if one of the test locales cannot be set. ........ r54649 | georg.brandl | 2007-04-01 14:29:15 -0700 (Sun, 01 Apr 2007) | 2 lines Fix a lot of markup and meta-information glitches. ........ r54650 | georg.brandl | 2007-04-01 14:39:52 -0700 (Sun, 01 Apr 2007) | 2 lines Another fix. ........ r54651 | georg.brandl | 2007-04-01 15:39:10 -0700 (Sun, 01 Apr 2007) | 2 lines Lots of explicit class names for method and member descs. ........ r54652 | georg.brandl | 2007-04-01 15:40:12 -0700 (Sun, 01 Apr 2007) | 2 lines Explicit class names. ........ r54653 | georg.brandl | 2007-04-01 15:47:31 -0700 (Sun, 01 Apr 2007) | 2 lines Some semantic fixes. ........ r54654 | georg.brandl | 2007-04-01 16:29:10 -0700 (Sun, 01 Apr 2007) | 2 lines Remove bogus entry. ........ r54655 | georg.brandl | 2007-04-01 16:31:30 -0700 (Sun, 01 Apr 2007) | 2 lines Fix the class name of strings. ........ r54658 | raymond.hettinger | 2007-04-02 10:29:30 -0700 (Mon, 02 Apr 2007) | 1 line SF #1693079: Cannot save empty array in shelve ........ r54663 | raymond.hettinger | 2007-04-02 15:54:21 -0700 (Mon, 02 Apr 2007) | 3 lines Array module's buffer interface can now handle empty arrays. ........ r54664 | guido.van.rossum | 2007-04-02 16:55:37 -0700 (Mon, 02 Apr 2007) | 5 lines Fix warnings about object.__init__() signature. Two (test_array and test_descr) were bug IMO; the third (copy_reg) is a work-around which recognizes that object.__init__() doesn't do anything. ........ r54666 | raymond.hettinger | 2007-04-02 17:02:11 -0700 (Mon, 02 Apr 2007) | 1 line SF 1602378 Clarify docstrings for bisect ........ r54668 | raymond.hettinger | 2007-04-02 18:39:43 -0700 (Mon, 02 Apr 2007) | 3 lines SF #1382213: Tutorial section 9.5.1 ignores MRO for new-style classes ........ r54669 | matthias.klose | 2007-04-02 21:35:59 -0700 (Mon, 02 Apr 2007) | 4 lines - Fix an off-by-one bug in locale.strxfrm(). patch taken from http://bugs.debian.org/416934. ........ r54671 | georg.brandl | 2007-04-03 00:04:27 -0700 (Tue, 03 Apr 2007) | 9 lines Fix the strange case of \begin{methoddesc}[NNTP]{...} where \ifx#1\@undefined ended up comparing N and N, therefore executing the true part of the conditional, blowing up at \@undefined. ........ r54672 | facundo.batista | 2007-04-03 07:05:08 -0700 (Tue, 03 Apr 2007) | 4 lines Now using unittest for the tests infraestructure. Also split the tests in those who need the network, and that who doesn't. ........ r54673 | walter.doerwald | 2007-04-03 09:08:10 -0700 (Tue, 03 Apr 2007) | 4 lines Move the functionality for catching warnings in test_warnings.py into a separate class to that reusing the functionality in test_structmembers.py doesn't rerun the tests from test_warnings.py. ........ r54674 | walter.doerwald | 2007-04-03 09:16:24 -0700 (Tue, 03 Apr 2007) | 2 lines Document that CatchWarningTests is reused by test_structmembers.py. ........ r54675 | walter.doerwald | 2007-04-03 09:53:43 -0700 (Tue, 03 Apr 2007) | 4 lines Add tests for the filename. Test that the stacklevel is handled correctly. ........ r54676 | facundo.batista | 2007-04-03 10:29:48 -0700 (Tue, 03 Apr 2007) | 6 lines Added a SSL server to test_socket_ssl.py to be able to test locally. Now, it checks if have openssl available and run those specific tests (it starts openssl at the beggining of all the tests and then kills it at the end). ........ r54677 | walter.doerwald | 2007-04-03 11:33:29 -0700 (Tue, 03 Apr 2007) | 6 lines Implement a contextmanager test.test_support.catch_warning that can be used to catch the last warning issued by the warning framework. Change test_warnings.py and test_structmembers.py to use this new contextmanager. ........ r54678 | facundo.batista | 2007-04-03 14:15:34 -0700 (Tue, 03 Apr 2007) | 4 lines Changed the whole structure of startup and checking if the server is available. Hope to not get more false alarms. ........ r54681 | facundo.batista | 2007-04-04 07:10:40 -0700 (Wed, 04 Apr 2007) | 4 lines Fixed the way that the .pem files are looked for, and changed how to kill the process in win32 to use the _handle attribute. ........ r54682 | guido.van.rossum | 2007-04-04 10:43:02 -0700 (Wed, 04 Apr 2007) | 4 lines Fix a race condition in this test -- instead of assuming that it will take the test server thread at most 0.5 seconds to get ready, use an event variable. ........ r54683 | collin.winter | 2007-04-04 11:14:17 -0700 (Wed, 04 Apr 2007) | 1 line Clean up imports. ........ r54684 | collin.winter | 2007-04-04 11:16:24 -0700 (Wed, 04 Apr 2007) | 1 line Stop using test_support.verify(). ........ r54685 | martin.v.loewis | 2007-04-04 11:30:36 -0700 (Wed, 04 Apr 2007) | 2 lines Bug #1686475: Support stat'ing open files on Windows again. Will backport to 2.5. ........ r54687 | collin.winter | 2007-04-04 11:33:40 -0700 (Wed, 04 Apr 2007) | 1 line Make test_getopt use unittest. ........ r54688 | collin.winter | 2007-04-04 11:36:30 -0700 (Wed, 04 Apr 2007) | 1 line Make test_softspace use unittest. ........ r54689 | ziga.seilnacht | 2007-04-04 11:38:47 -0700 (Wed, 04 Apr 2007) | 2 lines Fix WalkTests.test_traversal() on Windows. The cleanup in MakedirTests.setUp() can now be removed. ........ r54695 | raymond.hettinger | 2007-04-05 11:00:03 -0700 (Thu, 05 Apr 2007) | 3 lines Bug #1563759: struct.unpack doens't support buffer protocol objects ........ r54697 | collin.winter | 2007-04-05 13:05:07 -0700 (Thu, 05 Apr 2007) | 1 line Convert test_long_future to use unittest. ........ r54698 | collin.winter | 2007-04-05 13:08:56 -0700 (Thu, 05 Apr 2007) | 1 line Convert test_normalization to use unittest. ........ r54699 | andrew.kuchling | 2007-04-05 18:11:58 -0700 (Thu, 05 Apr 2007) | 1 line Some grammar fixes ........ r54704 | collin.winter | 2007-04-06 12:27:40 -0700 (Fri, 06 Apr 2007) | 1 line Convert test_stringprep to use unittest. ........ r54705 | collin.winter | 2007-04-06 12:32:32 -0700 (Fri, 06 Apr 2007) | 1 line Import cleanup in test_crypt. ........ r54706 | collin.winter | 2007-04-06 13:00:05 -0700 (Fri, 06 Apr 2007) | 1 line Convert test_gc to use unittest. ........ r54707 | collin.winter | 2007-04-06 13:03:11 -0700 (Fri, 06 Apr 2007) | 1 line Convert test_module to use unittest. ........ r54711 | collin.winter | 2007-04-06 21:40:43 -0700 (Fri, 06 Apr 2007) | 1 line Convert test_fileinput to use unittest. ........ r54712 | brett.cannon | 2007-04-07 21:29:32 -0700 (Sat, 07 Apr 2007) | 5 lines Doc that file.next() has undefined behaviour when called on a file opened with 'w'. Closes bug #1569057. To be backported once 2.5 branch is unfrozen. ........ r54726 | vinay.sajip | 2007-04-09 09:16:10 -0700 (Mon, 09 Apr 2007) | 1 line Added optional timeout to SocketHandler.makeSocket (SF #1695948) ........ r54727 | ziga.seilnacht | 2007-04-09 12:10:29 -0700 (Mon, 09 Apr 2007) | 3 lines Patch #1695862: remove old test directory that causes test_urllib failures on Windows buildbots. The change is a one time fix and will be removed after a successful buildbot run. ........ r54729 | facundo.batista | 2007-04-09 20:00:37 -0700 (Mon, 09 Apr 2007) | 3 lines Minor fix to the tests pass ok even with -O. ........ r54730 | collin.winter | 2007-04-09 21:44:49 -0700 (Mon, 09 Apr 2007) | 1 line Typo fix. ........ r54732 | facundo.batista | 2007-04-10 05:58:45 -0700 (Tue, 10 Apr 2007) | 5 lines General clean-up. Lot of margin corrections, comments, some typos. Exceptions now are raised in the new style. And a mockup class is now also new style. Thanks Santiago Pereson. ........ r54741 | georg.brandl | 2007-04-10 14:39:38 -0700 (Tue, 10 Apr 2007) | 2 lines Repair a duplicate label and some obsolete uses of \setindexsubitem. ........ r54746 | andrew.kuchling | 2007-04-11 06:39:00 -0700 (Wed, 11 Apr 2007) | 1 line Add window.chgat() method, submitted via e-mail by Fabian Kreutz ........ r54747 | andrew.kuchling | 2007-04-11 06:42:25 -0700 (Wed, 11 Apr 2007) | 1 line Point readers at the patch submission instructions ........ r54748 | andrew.kuchling | 2007-04-11 06:47:13 -0700 (Wed, 11 Apr 2007) | 1 line Describe undocumented third argument to touchline() ........ r54757 | georg.brandl | 2007-04-11 10:16:24 -0700 (Wed, 11 Apr 2007) | 3 lines Add some missing NULL checks which trigger crashes on low-memory conditions. Found by Victor Stinner. Will backport when 2.5 branch is unfrozen. ........ r54760 | raymond.hettinger | 2007-04-11 11:40:58 -0700 (Wed, 11 Apr 2007) | 1 line SF 1191699: Make slices picklable ........ r54762 | georg.brandl | 2007-04-11 12:25:11 -0700 (Wed, 11 Apr 2007) | 2 lines Exceptions are no longer old-style instances. Fix accordingly. ........ r54763 | georg.brandl | 2007-04-11 16:28:44 -0700 (Wed, 11 Apr 2007) | 2 lines Repair missing spaces after \UNIX. ........ r54772 | raymond.hettinger | 2007-04-11 21:10:00 -0700 (Wed, 11 Apr 2007) | 1 line SF 1193128: Let str.translate(None) be an identity transformation ........ r54784 | georg.brandl | 2007-04-12 00:01:19 -0700 (Thu, 12 Apr 2007) | 2 lines Patch #1698951: clarify deprecation message in rexec and Bastion ........ r54785 | ziga.seilnacht | 2007-04-12 01:46:51 -0700 (Thu, 12 Apr 2007) | 2 lines Patch #1695862: remove the cleanup code, now that Windows buildbots are green again. ........ r54786 | walter.doerwald | 2007-04-12 03:35:00 -0700 (Thu, 12 Apr 2007) | 3 lines Fix utf-8-sig incremental decoder, which didn't recognise a BOM when the first chunk fed to the decoder started with a BOM, but was longer than 3 bytes. ........ r54807 | barry.warsaw | 2007-04-13 11:47:14 -0700 (Fri, 13 Apr 2007) | 8 lines Port r54805 from python25-maint branch: Add code to read from master_fd in the parent, breaking when we get an OSError (EIO can occur on Linux) or there's no more data to read. Without this, test_pty.py can hang on the waitpid() because the child is blocking on the stdout write. This will definitely happen on Mac OS X and could potentially happen on other platforms. See the comment for details. ........ r54812 | kristjan.jonsson | 2007-04-13 15:07:33 -0700 (Fri, 13 Apr 2007) | 1 line Fix a bug when using the __lltrace__ opcode tracer, and a problem sith signed chars in frameobject.c which can occur with opcodes > 127 ........ r54814 | kristjan.jonsson | 2007-04-13 15:20:13 -0700 (Fri, 13 Apr 2007) | 1 line Fix potential crash in path manipulation on windows ........ r54816 | trent.mick | 2007-04-13 16:22:05 -0700 (Fri, 13 Apr 2007) | 4 lines Add the necessary dependency for the Windows VC6 build to ensure 'pythoncore' is built before '_ctypes' is attempted. Will backport to 2.5 once it is unfrozen for 2.5.1. ........ r54825 | neal.norwitz | 2007-04-13 22:25:50 -0700 (Fri, 13 Apr 2007) | 3 lines When __slots__ are set to a unicode string, make it work the same as setting a plain string, ie don't expand to single letter identifiers. ........ r54841 | neal.norwitz | 2007-04-16 00:37:55 -0700 (Mon, 16 Apr 2007) | 1 line SF #1701207, Fix bogus assertion (and test it!) ........ r54844 | collin.winter | 2007-04-16 15:10:32 -0700 (Mon, 16 Apr 2007) | 1 line Check the availability of the urlfetch resource earlier than before. ........ r54849 | martin.v.loewis | 2007-04-16 22:02:01 -0700 (Mon, 16 Apr 2007) | 2 lines Add Travis Oliphant. ........ r54873 | brett.cannon | 2007-04-18 20:44:17 -0700 (Wed, 18 Apr 2007) | 2 lines Silence a compiler warning about incompatible pointer types. ........ r54874 | neal.norwitz | 2007-04-18 22:52:37 -0700 (Wed, 18 Apr 2007) | 2 lines SF #1703270, add missing declaration in readline.c to avoid compiler warning. ........ r54875 | armin.rigo | 2007-04-19 07:44:48 -0700 (Thu, 19 Apr 2007) | 8 lines Revert r53997 as per http://mail.python.org/pipermail/python-dev/2007-March/071796.html . I've kept a couple of still-valid extra tests in test_descr, but didn't bother to sort through the new comments and refactorings added in r53997 to see if some of them could be kept. If so, they could go in a follow-up check-in. ........ r54876 | armin.rigo | 2007-04-19 07:56:48 -0700 (Thu, 19 Apr 2007) | 2 lines Fix a usage of the dangerous pattern decref - modify field - incref. ........ r54884 | neal.norwitz | 2007-04-19 22:20:38 -0700 (Thu, 19 Apr 2007) | 9 lines Add an optional address to copy the failure mails to. Detect a conflict in the only file that should have outstanding changes when this script is run. This doesn't matter on the trunk, but does when run on a branch. Trunk always has the date set to today in boilerplate.tex. Each time a release is cut with a different date, a conflict occurs. (We could copy a known good version, but then we would lose changes to this file.) ........ r54918 | georg.brandl | 2007-04-21 13:35:38 -0700 (Sat, 21 Apr 2007) | 3 lines Bug #1704790: bind name "sys" locally in __del__ method so that it is not cleared before __del__ is run. ........ r54920 | facundo.batista | 2007-04-21 18:18:56 -0700 (Sat, 21 Apr 2007) | 5 lines Added tests for other methods of SSL object. Now we cover all the object methods. This is the final step to close the #451607 bug. ........ r54927 | facundo.batista | 2007-04-23 10:08:31 -0700 (Mon, 23 Apr 2007) | 5 lines As specified in RFC 2616, 2xx code indicates that the client's request was successfully received, understood, and accepted. Now in these cases no error is raised. Also fixed tests. ........ r54929 | collin.winter | 2007-04-23 20:43:46 -0700 (Mon, 23 Apr 2007) | 1 line Convert PyUnit -> unittest. ........ r54931 | collin.winter | 2007-04-23 21:09:52 -0700 (Mon, 23 Apr 2007) | 1 line Remove code that hasn't been called in years. ........ r54932 | neal.norwitz | 2007-04-23 21:53:12 -0700 (Mon, 23 Apr 2007) | 1 line Fix SF #1703110, Incorrect example for add_password() (use uri, not host) ........ r54934 | georg.brandl | 2007-04-24 03:36:42 -0700 (Tue, 24 Apr 2007) | 2 lines Some new year updates. ........ r54938 | facundo.batista | 2007-04-24 06:54:38 -0700 (Tue, 24 Apr 2007) | 4 lines Added a comment about last change in urllib2.py (all 2xx responses are ok now). ........ r54939 | georg.brandl | 2007-04-24 08:10:09 -0700 (Tue, 24 Apr 2007) | 2 lines Bug #1705717: error in sys.argv docs. ........ r54941 | georg.brandl | 2007-04-24 08:27:13 -0700 (Tue, 24 Apr 2007) | 4 lines Bug #1706381: Specifying the SWIG option "-c++" in the setup.py file (as opposed to the command line) will now write file names ending in ".cpp" too. ........ r54944 | raymond.hettinger | 2007-04-24 15:13:43 -0700 (Tue, 24 Apr 2007) | 1 line Fix markup ........ r54945 | kristjan.jonsson | 2007-04-24 17:10:50 -0700 (Tue, 24 Apr 2007) | 1 line Merge change 54909 from release25-maint: Fix several minor issues discovered using code analysis in VisualStudio 2005 Team Edition ........ r54947 | kristjan.jonsson | 2007-04-24 17:17:39 -0700 (Tue, 24 Apr 2007) | 1 line Make pythoncore compile cleanly with VisualStudio 2005. Used an explicit typecast to get a 64 bit integer, and undefined the Yield macro that conflicts with winbase.h ........ r54948 | kristjan.jonsson | 2007-04-24 17:19:26 -0700 (Tue, 24 Apr 2007) | 1 line Remove obsolete comment. Importing of .dll files has been discontinued, only .pyd files supported on windows now. ........ r54949 | georg.brandl | 2007-04-24 23:24:59 -0700 (Tue, 24 Apr 2007) | 2 lines Patch #1698768: updated the "using Python on the Mac" intro. ........ r54951 | georg.brandl | 2007-04-24 23:25:55 -0700 (Tue, 24 Apr 2007) | 2 lines Markup fix. ........ r54953 | neal.norwitz | 2007-04-24 23:30:05 -0700 (Tue, 24 Apr 2007) | 3 lines Whitespace normalization. Ugh, we really need to do this more often. You might want to review this change as it's my first time. Be gentle. :-) ........ r54956 | collin.winter | 2007-04-25 10:29:52 -0700 (Wed, 25 Apr 2007) | 1 line Standardize on test.test_support.run_unittest() (as opposed to a mix of run_unittest() and run_suite()). Also, add functionality to run_unittest() that admits usage of unittest.TestLoader.loadTestsFromModule(). ........ r54957 | collin.winter | 2007-04-25 10:37:35 -0700 (Wed, 25 Apr 2007) | 1 line Remove functionality from test_datetime.test_main() that does reference count checking; 'regrtest.py -R' is the way to do this kind of testing. ........ r54958 | collin.winter | 2007-04-25 10:57:53 -0700 (Wed, 25 Apr 2007) | 1 line Change test_support.have_unicode to use True/False instead of 1/0. ........ r54959 | tim.peters | 2007-04-25 11:47:18 -0700 (Wed, 25 Apr 2007) | 2 lines Whitespace normalization. ........ r54960 | tim.peters | 2007-04-25 11:48:35 -0700 (Wed, 25 Apr 2007) | 2 lines Set missing svn:eol-style property on text files. ........ r54961 | collin.winter | 2007-04-25 11:54:36 -0700 (Wed, 25 Apr 2007) | 1 line Import and raise statement cleanup. ........ r54969 | collin.winter | 2007-04-25 13:41:34 -0700 (Wed, 25 Apr 2007) | 1 line Convert test_ossaudiodev to use unittest. ........ r54974 | collin.winter | 2007-04-25 14:50:25 -0700 (Wed, 25 Apr 2007) | 1 line Fix an issue related to the unittest conversion. ........ r54979 | fred.drake | 2007-04-25 21:42:19 -0700 (Wed, 25 Apr 2007) | 1 line fix some markup errors ........ r54982 | kristjan.jonsson | 2007-04-26 02:15:08 -0700 (Thu, 26 Apr 2007) | 1 line Export function sanitize_the_mode from fileobject.c as _PyFile_SanitizeMode(). Use this function in posixmodule.c when implementing fdopen(). This fixes test_subprocess.py for a VisualStudio 2005 compile. ........ r54983 | kristjan.jonsson | 2007-04-26 06:44:16 -0700 (Thu, 26 Apr 2007) | 1 line The locale "En" appears not to be valid on windows underi VisualStudio.2005. Added "English" to the test_locale.py to make the testsuite pass for that build ........ r54984 | steve.holden | 2007-04-26 07:23:12 -0700 (Thu, 26 Apr 2007) | 1 line Minor wording change on slicing aide-memoire. ........ r54985 | kristjan.jonsson | 2007-04-26 08:24:54 -0700 (Thu, 26 Apr 2007) | 1 line Accomodate 64 bit time_t in the _bsddb module. ........
2075 lines
86 KiB
TeX
2075 lines
86 KiB
TeX
\chapter{Built-in Types \label{types}}
|
|
|
|
The following sections describe the standard types that are built into
|
|
the interpreter.
|
|
\note{Historically (until release 2.2), Python's built-in types have
|
|
differed from user-defined types because it was not possible to use
|
|
the built-in types as the basis for object-oriented inheritance.
|
|
This limitation does not exist any longer.}
|
|
|
|
The principal built-in types are numerics, sequences, mappings, files,
|
|
classes, instances and exceptions.
|
|
\indexii{built-in}{types}
|
|
|
|
Some operations are supported by several object types; in particular,
|
|
practically all objects can be compared, tested for truth value,
|
|
and converted to a string (with
|
|
the \function{repr()} function or the slightly different
|
|
\function{str()} function). The latter
|
|
function is implicitly used when an object is written by the
|
|
\keyword{print}\stindex{print} statement.
|
|
(Information on the \ulink{\keyword{print} statement}{../ref/print.html}
|
|
and other language statements can be found in the
|
|
\citetitle[../ref/ref.html]{Python Reference Manual} and the
|
|
\citetitle[../tut/tut.html]{Python Tutorial}.)
|
|
|
|
|
|
\section{Truth Value Testing\label{truth}}
|
|
|
|
Any object can be tested for truth value, for use in an \keyword{if} or
|
|
\keyword{while} condition or as operand of the Boolean operations below.
|
|
The following values are considered false:
|
|
\stindex{if}
|
|
\stindex{while}
|
|
\indexii{truth}{value}
|
|
\indexii{Boolean}{operations}
|
|
\index{false}
|
|
|
|
\begin{itemize}
|
|
|
|
\item \code{None}
|
|
\withsubitem{(Built-in object)}{\ttindex{None}}
|
|
|
|
\item \code{False}
|
|
\withsubitem{(Built-in object)}{\ttindex{False}}
|
|
|
|
\item zero of any numeric type, for example, \code{0}, \code{0L},
|
|
\code{0.0}, \code{0j}.
|
|
|
|
\item any empty sequence, for example, \code{''}, \code{()}, \code{[]}.
|
|
|
|
\item any empty mapping, for example, \code{\{\}}.
|
|
|
|
\item instances of user-defined classes, if the class defines a
|
|
\method{__bool__()} or \method{__len__()} method, when that
|
|
method returns the integer zero or \class{bool} value
|
|
\code{False}.\footnote{Additional
|
|
information on these special methods may be found in the
|
|
\citetitle[../ref/ref.html]{Python Reference Manual}.}
|
|
|
|
\end{itemize}
|
|
|
|
All other values are considered true --- so objects of many types are
|
|
always true.
|
|
\index{true}
|
|
|
|
Operations and built-in functions that have a Boolean result always
|
|
return \code{0} or \code{False} for false and \code{1} or \code{True}
|
|
for true, unless otherwise stated. (Important exception: the Boolean
|
|
operations \samp{or}\opindex{or} and \samp{and}\opindex{and} always
|
|
return one of their operands.)
|
|
\index{False}
|
|
\index{True}
|
|
|
|
\section{Boolean Operations ---
|
|
\keyword{and}, \keyword{or}, \keyword{not}
|
|
\label{boolean}}
|
|
|
|
These are the Boolean operations, ordered by ascending priority:
|
|
\indexii{Boolean}{operations}
|
|
|
|
\begin{tableiii}{c|l|c}{code}{Operation}{Result}{Notes}
|
|
\lineiii{\var{x} or \var{y}}
|
|
{if \var{x} is false, then \var{y}, else \var{x}}{(1)}
|
|
\lineiii{\var{x} and \var{y}}
|
|
{if \var{x} is false, then \var{x}, else \var{y}}{(1)}
|
|
\hline
|
|
\lineiii{not \var{x}}
|
|
{if \var{x} is false, then \code{True}, else \code{False}}{(2)}
|
|
\end{tableiii}
|
|
\opindex{and}
|
|
\opindex{or}
|
|
\opindex{not}
|
|
|
|
\noindent
|
|
Notes:
|
|
|
|
\begin{description}
|
|
|
|
\item[(1)]
|
|
These only evaluate their second argument if needed for their outcome.
|
|
|
|
\item[(2)]
|
|
\samp{not} has a lower priority than non-Boolean operators, so
|
|
\code{not \var{a} == \var{b}} is interpreted as \code{not (\var{a} ==
|
|
\var{b})}, and \code{\var{a} == not \var{b}} is a syntax error.
|
|
|
|
\end{description}
|
|
|
|
|
|
\section{Comparisons \label{comparisons}}
|
|
|
|
Comparison operations are supported by all objects. They all have the
|
|
same priority (which is higher than that of the Boolean operations).
|
|
Comparisons can be chained arbitrarily; for example, \code{\var{x} <
|
|
\var{y} <= \var{z}} is equivalent to \code{\var{x} < \var{y} and
|
|
\var{y} <= \var{z}}, except that \var{y} is evaluated only once (but
|
|
in both cases \var{z} is not evaluated at all when \code{\var{x} <
|
|
\var{y}} is found to be false).
|
|
\indexii{chaining}{comparisons}
|
|
|
|
This table summarizes the comparison operations:
|
|
|
|
\begin{tableiii}{c|l|c}{code}{Operation}{Meaning}{Notes}
|
|
\lineiii{<}{strictly less than}{}
|
|
\lineiii{<=}{less than or equal}{}
|
|
\lineiii{>}{strictly greater than}{}
|
|
\lineiii{>=}{greater than or equal}{}
|
|
\lineiii{==}{equal}{}
|
|
\lineiii{!=}{not equal}{}
|
|
\lineiii{is}{object identity}{}
|
|
\lineiii{is not}{negated object identity}{}
|
|
\end{tableiii}
|
|
\indexii{operator}{comparison}
|
|
\opindex{==} % XXX *All* others have funny characters < ! >
|
|
\opindex{is}
|
|
\opindex{is not}
|
|
|
|
Objects of different types, except different numeric types and different string types, never
|
|
compare equal; such objects are ordered consistently but arbitrarily
|
|
(so that sorting a heterogeneous array yields a consistent result).
|
|
Furthermore, some types (for example, file objects) support only a
|
|
degenerate notion of comparison where any two objects of that type are
|
|
unequal. Again, such objects are ordered arbitrarily but
|
|
consistently. The \code{<}, \code{<=}, \code{>} and \code{>=}
|
|
operators will raise a \exception{TypeError} exception when any operand
|
|
is a complex number.
|
|
\indexii{object}{numeric}
|
|
\indexii{objects}{comparing}
|
|
|
|
Instances of a class normally compare as non-equal unless the class
|
|
\withsubitem{(instance method)}{\ttindex{__cmp__()}}
|
|
defines the \method{__cmp__()} method. Refer to the
|
|
\citetitle[../ref/customization.html]{Python Reference Manual} for
|
|
information on the use of this method to effect object comparisons.
|
|
|
|
\strong{Implementation note:} Objects of different types except
|
|
numbers are ordered by their type names; objects of the same types
|
|
that don't support proper comparison are ordered by their address.
|
|
|
|
Two more operations with the same syntactic priority,
|
|
\samp{in}\opindex{in} and \samp{not in}\opindex{not in}, are supported
|
|
only by sequence types (below).
|
|
|
|
|
|
\section{Numeric Types ---
|
|
\class{int}, \class{float}, \class{long}, \class{complex}
|
|
\label{typesnumeric}}
|
|
|
|
There are four distinct numeric types: \dfn{plain integers},
|
|
\dfn{long integers},
|
|
\dfn{floating point numbers}, and \dfn{complex numbers}.
|
|
In addition, Booleans are a subtype of plain integers.
|
|
Plain integers (also just called \dfn{integers})
|
|
are implemented using \ctype{long} in C, which gives them at least 32
|
|
bits of precision (\code{sys.maxint} is always set to the maximum
|
|
plain integer value for the current platform, the minimum value is
|
|
\code{-sys.maxint - 1}). Long integers have unlimited precision.
|
|
Floating point numbers are implemented using \ctype{double} in C.
|
|
All bets on their precision are off unless you happen to know the
|
|
machine you are working with.
|
|
\obindex{numeric}
|
|
\obindex{Boolean}
|
|
\obindex{integer}
|
|
\obindex{long integer}
|
|
\obindex{floating point}
|
|
\obindex{complex number}
|
|
\indexii{C}{language}
|
|
|
|
Complex numbers have a real and imaginary part, which are each
|
|
implemented using \ctype{double} in C. To extract these parts from
|
|
a complex number \var{z}, use \code{\var{z}.real} and \code{\var{z}.imag}.
|
|
|
|
Numbers are created by numeric literals or as the result of built-in
|
|
functions and operators. Unadorned integer literals (including hex
|
|
and octal numbers) yield plain integers unless the value they denote
|
|
is too large to be represented as a plain integer, in which case
|
|
they yield a long integer. Integer literals with an
|
|
\character{L} or \character{l} suffix yield long integers
|
|
(\character{L} is preferred because \samp{1l} looks too much like
|
|
eleven!). Numeric literals containing a decimal point or an exponent
|
|
sign yield floating point numbers. Appending \character{j} or
|
|
\character{J} to a numeric literal yields a complex number with a
|
|
zero real part. A complex numeric literal is the sum of a real and
|
|
an imaginary part.
|
|
\indexii{numeric}{literals}
|
|
\indexii{integer}{literals}
|
|
\indexiii{long}{integer}{literals}
|
|
\indexii{floating point}{literals}
|
|
\indexii{complex number}{literals}
|
|
\indexii{hexadecimal}{literals}
|
|
\indexii{octal}{literals}
|
|
|
|
Python fully supports mixed arithmetic: when a binary arithmetic
|
|
operator has operands of different numeric types, the operand with the
|
|
``narrower'' type is widened to that of the other, where plain
|
|
integer is narrower than long integer is narrower than floating point is
|
|
narrower than complex.
|
|
Comparisons between numbers of mixed type use the same rule.\footnote{
|
|
As a consequence, the list \code{[1, 2]} is considered equal
|
|
to \code{[1.0, 2.0]}, and similarly for tuples.
|
|
} The constructors \function{int()}, \function{long()}, \function{float()},
|
|
and \function{complex()} can be used
|
|
to produce numbers of a specific type.
|
|
\index{arithmetic}
|
|
\bifuncindex{int}
|
|
\bifuncindex{long}
|
|
\bifuncindex{float}
|
|
\bifuncindex{complex}
|
|
|
|
All numeric types (except complex) support the following operations,
|
|
sorted by ascending priority (operations in the same box have the same
|
|
priority; all numeric operations have a higher priority than
|
|
comparison operations):
|
|
|
|
\begin{tableiii}{c|l|c}{code}{Operation}{Result}{Notes}
|
|
\lineiii{\var{x} + \var{y}}{sum of \var{x} and \var{y}}{}
|
|
\lineiii{\var{x} - \var{y}}{difference of \var{x} and \var{y}}{}
|
|
\hline
|
|
\lineiii{\var{x} * \var{y}}{product of \var{x} and \var{y}}{}
|
|
\lineiii{\var{x} / \var{y}}{quotient of \var{x} and \var{y}}{(1)}
|
|
\lineiii{\var{x} // \var{y}}{(floored) quotient of \var{x} and \var{y}}{(5)}
|
|
\lineiii{\var{x} \%{} \var{y}}{remainder of \code{\var{x} / \var{y}}}{(4)}
|
|
\hline
|
|
\lineiii{-\var{x}}{\var{x} negated}{}
|
|
\lineiii{+\var{x}}{\var{x} unchanged}{}
|
|
\hline
|
|
\lineiii{abs(\var{x})}{absolute value or magnitude of \var{x}}{}
|
|
\lineiii{int(\var{x})}{\var{x} converted to integer}{(2)}
|
|
\lineiii{long(\var{x})}{\var{x} converted to long integer}{(2)}
|
|
\lineiii{float(\var{x})}{\var{x} converted to floating point}{}
|
|
\lineiii{complex(\var{re},\var{im})}{a complex number with real part \var{re}, imaginary part \var{im}. \var{im} defaults to zero.}{}
|
|
\lineiii{\var{c}.conjugate()}{conjugate of the complex number \var{c}}{}
|
|
\lineiii{divmod(\var{x}, \var{y})}{the pair \code{(\var{x} // \var{y}, \var{x} \%{} \var{y})}}{(3)(4)}
|
|
\lineiii{pow(\var{x}, \var{y})}{\var{x} to the power \var{y}}{}
|
|
\lineiii{\var{x} ** \var{y}}{\var{x} to the power \var{y}}{}
|
|
\end{tableiii}
|
|
\indexiii{operations on}{numeric}{types}
|
|
\withsubitem{(complex number method)}{\ttindex{conjugate()}}
|
|
|
|
\noindent
|
|
Notes:
|
|
\begin{description}
|
|
|
|
\item[(1)]
|
|
For (plain or long) integer division, the result is an integer.
|
|
The result is always rounded towards minus infinity: 1/2 is 0,
|
|
(-1)/2 is -1, 1/(-2) is -1, and (-1)/(-2) is 0. Note that the result
|
|
is a long integer if either operand is a long integer, regardless of
|
|
the numeric value.
|
|
\indexii{integer}{division}
|
|
\indexiii{long}{integer}{division}
|
|
|
|
\item[(2)]
|
|
Conversion from floating point to (long or plain) integer may round or
|
|
truncate as in C; see functions \function{floor()} and
|
|
\function{ceil()} in the \refmodule{math}\refbimodindex{math} module
|
|
for well-defined conversions.
|
|
\withsubitem{(in module math)}{\ttindex{floor()}\ttindex{ceil()}}
|
|
\indexii{numeric}{conversions}
|
|
\indexii{C}{language}
|
|
|
|
\item[(3)]
|
|
See section \ref{built-in-funcs}, ``Built-in Functions,'' for a full
|
|
description.
|
|
|
|
\item[(4)]
|
|
Complex floor division operator, modulo operator, and \function{divmod()}.
|
|
|
|
\deprecated{2.3}{Instead convert to float using \function{abs()}
|
|
if appropriate.}
|
|
|
|
\item[(5)]
|
|
Also referred to as integer division. The resultant value is a whole integer,
|
|
though the result's type is not necessarily int.
|
|
\end{description}
|
|
% XXXJH exceptions: overflow (when? what operations?) zerodivision
|
|
|
|
\subsection{Bit-string Operations on Integer Types \label{bitstring-ops}}
|
|
\nodename{Bit-string Operations}
|
|
|
|
Plain and long integer types support additional operations that make
|
|
sense only for bit-strings. Negative numbers are treated as their 2's
|
|
complement value (for long integers, this assumes a sufficiently large
|
|
number of bits that no overflow occurs during the operation).
|
|
|
|
The priorities of the binary bit-wise operations are all lower than
|
|
the numeric operations and higher than the comparisons; the unary
|
|
operation \samp{\~} has the same priority as the other unary numeric
|
|
operations (\samp{+} and \samp{-}).
|
|
|
|
This table lists the bit-string operations sorted in ascending
|
|
priority (operations in the same box have the same priority):
|
|
|
|
\begin{tableiii}{c|l|c}{code}{Operation}{Result}{Notes}
|
|
\lineiii{\var{x} | \var{y}}{bitwise \dfn{or} of \var{x} and \var{y}}{}
|
|
\lineiii{\var{x} \^{} \var{y}}{bitwise \dfn{exclusive or} of \var{x} and \var{y}}{}
|
|
\lineiii{\var{x} \&{} \var{y}}{bitwise \dfn{and} of \var{x} and \var{y}}{}
|
|
% The empty groups below prevent conversion to guillemets.
|
|
\lineiii{\var{x} <{}< \var{n}}{\var{x} shifted left by \var{n} bits}{(1), (2)}
|
|
\lineiii{\var{x} >{}> \var{n}}{\var{x} shifted right by \var{n} bits}{(1), (3)}
|
|
\hline
|
|
\lineiii{\~\var{x}}{the bits of \var{x} inverted}{}
|
|
\end{tableiii}
|
|
\indexiii{operations on}{integer}{types}
|
|
\indexii{bit-string}{operations}
|
|
\indexii{shifting}{operations}
|
|
\indexii{masking}{operations}
|
|
|
|
\noindent
|
|
Notes:
|
|
\begin{description}
|
|
\item[(1)] Negative shift counts are illegal and cause a
|
|
\exception{ValueError} to be raised.
|
|
\item[(2)] A left shift by \var{n} bits is equivalent to
|
|
multiplication by \code{pow(2, \var{n})} without overflow check.
|
|
\item[(3)] A right shift by \var{n} bits is equivalent to
|
|
division by \code{pow(2, \var{n})} without overflow check.
|
|
\end{description}
|
|
|
|
|
|
\section{Iterator Types \label{typeiter}}
|
|
|
|
\versionadded{2.2}
|
|
\index{iterator protocol}
|
|
\index{protocol!iterator}
|
|
\index{sequence!iteration}
|
|
\index{container!iteration over}
|
|
|
|
Python supports a concept of iteration over containers. This is
|
|
implemented using two distinct methods; these are used to allow
|
|
user-defined classes to support iteration. Sequences, described below
|
|
in more detail, always support the iteration methods.
|
|
|
|
One method needs to be defined for container objects to provide
|
|
iteration support:
|
|
|
|
\begin{methoddesc}[container]{__iter__}{}
|
|
Return an iterator object. The object is required to support the
|
|
iterator protocol described below. If a container supports
|
|
different types of iteration, additional methods can be provided to
|
|
specifically request iterators for those iteration types. (An
|
|
example of an object supporting multiple forms of iteration would be
|
|
a tree structure which supports both breadth-first and depth-first
|
|
traversal.) This method corresponds to the \member{tp_iter} slot of
|
|
the type structure for Python objects in the Python/C API.
|
|
\end{methoddesc}
|
|
|
|
The iterator objects themselves are required to support the following
|
|
two methods, which together form the \dfn{iterator protocol}:
|
|
|
|
\begin{methoddesc}[iterator]{__iter__}{}
|
|
Return the iterator object itself. This is required to allow both
|
|
containers and iterators to be used with the \keyword{for} and
|
|
\keyword{in} statements. This method corresponds to the
|
|
\member{tp_iter} slot of the type structure for Python objects in
|
|
the Python/C API.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[iterator]{next}{}
|
|
Return the next item from the container. If there are no further
|
|
items, raise the \exception{StopIteration} exception. This method
|
|
corresponds to the \member{tp_iternext} slot of the type structure
|
|
for Python objects in the Python/C API.
|
|
\end{methoddesc}
|
|
|
|
Python defines several iterator objects to support iteration over
|
|
general and specific sequence types, dictionaries, and other more
|
|
specialized forms. The specific types are not important beyond their
|
|
implementation of the iterator protocol.
|
|
|
|
The intention of the protocol is that once an iterator's \method{__next__()}
|
|
method raises \exception{StopIteration}, it will continue to do so on subsequent
|
|
calls. Implementations that do not obey this property are deemed broken. (This
|
|
constraint was added in Python 2.3; in Python 2.2, various iterators are broken
|
|
according to this rule.)
|
|
|
|
Python's generators provide a convenient way to implement the iterator protocol.
|
|
If a container object's \method{__iter__()} method is implemented as a
|
|
generator, it will automatically return an iterator object (technically, a
|
|
generator object) supplying the \method{__iter__()} and \method{__next__()}
|
|
methods.
|
|
|
|
|
|
\section{Sequence Types ---
|
|
\class{str}, \class{unicode}, \class{list},
|
|
\class{tuple}, \class{buffer}, \class{xrange}
|
|
\label{typesseq}}
|
|
|
|
There are six sequence types: strings, Unicode strings, lists,
|
|
tuples, buffers, and xrange objects.
|
|
|
|
String literals are written in single or double quotes:
|
|
\code{'xyzzy'}, \code{"frobozz"}. See chapter 2 of the
|
|
\citetitle[../ref/strings.html]{Python Reference Manual} for more about
|
|
string literals. Unicode strings are much like strings, but are
|
|
specified in the syntax using a preceding \character{u} character:
|
|
\code{u'abc'}, \code{u"def"}. Lists are constructed with square brackets,
|
|
separating items with commas: \code{[a, b, c]}. Tuples are
|
|
constructed by the comma operator (not within square brackets), with
|
|
or without enclosing parentheses, but an empty tuple must have the
|
|
enclosing parentheses, such as \code{a, b, c} or \code{()}. A single
|
|
item tuple must have a trailing comma, such as \code{(d,)}.
|
|
\obindex{sequence}
|
|
\obindex{string}
|
|
\obindex{Unicode}
|
|
\obindex{tuple}
|
|
\obindex{list}
|
|
|
|
Buffer objects are not directly supported by Python syntax, but can be
|
|
created by calling the builtin function
|
|
\function{buffer()}.\bifuncindex{buffer} They don't support
|
|
concatenation or repetition.
|
|
\obindex{buffer}
|
|
|
|
Xrange objects are similar to buffers in that there is no specific
|
|
syntax to create them, but they are created using the \function{xrange()}
|
|
function.\bifuncindex{xrange} They don't support slicing,
|
|
concatenation or repetition, and using \code{in}, \code{not in},
|
|
\function{min()} or \function{max()} on them is inefficient.
|
|
\obindex{xrange}
|
|
|
|
Most sequence types support the following operations. The \samp{in} and
|
|
\samp{not in} operations have the same priorities as the comparison
|
|
operations. The \samp{+} and \samp{*} operations have the same
|
|
priority as the corresponding numeric operations.\footnote{They must
|
|
have since the parser can't tell the type of the operands.}
|
|
|
|
This table lists the sequence operations sorted in ascending priority
|
|
(operations in the same box have the same priority). In the table,
|
|
\var{s} and \var{t} are sequences of the same type; \var{n}, \var{i}
|
|
and \var{j} are integers:
|
|
|
|
\begin{tableiii}{c|l|c}{code}{Operation}{Result}{Notes}
|
|
\lineiii{\var{x} in \var{s}}{\code{True} if an item of \var{s} is equal to \var{x}, else \code{False}}{(1)}
|
|
\lineiii{\var{x} not in \var{s}}{\code{False} if an item of \var{s} is
|
|
equal to \var{x}, else \code{True}}{(1)}
|
|
\hline
|
|
\lineiii{\var{s} + \var{t}}{the concatenation of \var{s} and \var{t}}{(6)}
|
|
\lineiii{\var{s} * \var{n}\textrm{,} \var{n} * \var{s}}{\var{n} shallow copies of \var{s} concatenated}{(2)}
|
|
\hline
|
|
\lineiii{\var{s}[\var{i}]}{\var{i}'th item of \var{s}, origin 0}{(3)}
|
|
\lineiii{\var{s}[\var{i}:\var{j}]}{slice of \var{s} from \var{i} to \var{j}}{(3), (4)}
|
|
\lineiii{\var{s}[\var{i}:\var{j}:\var{k}]}{slice of \var{s} from \var{i} to \var{j} with step \var{k}}{(3), (5)}
|
|
\hline
|
|
\lineiii{len(\var{s})}{length of \var{s}}{}
|
|
\lineiii{min(\var{s})}{smallest item of \var{s}}{}
|
|
\lineiii{max(\var{s})}{largest item of \var{s}}{}
|
|
\end{tableiii}
|
|
\indexiii{operations on}{sequence}{types}
|
|
\bifuncindex{len}
|
|
\bifuncindex{min}
|
|
\bifuncindex{max}
|
|
\indexii{concatenation}{operation}
|
|
\indexii{repetition}{operation}
|
|
\indexii{subscript}{operation}
|
|
\indexii{slice}{operation}
|
|
\indexii{extended slice}{operation}
|
|
\opindex{in}
|
|
\opindex{not in}
|
|
|
|
\noindent
|
|
Notes:
|
|
|
|
\begin{description}
|
|
\item[(1)] When \var{s} is a string or Unicode string object the
|
|
\code{in} and \code{not in} operations act like a substring test. In
|
|
Python versions before 2.3, \var{x} had to be a string of length 1.
|
|
In Python 2.3 and beyond, \var{x} may be a string of any length.
|
|
|
|
\item[(2)] Values of \var{n} less than \code{0} are treated as
|
|
\code{0} (which yields an empty sequence of the same type as
|
|
\var{s}). Note also that the copies are shallow; nested structures
|
|
are not copied. This often haunts new Python programmers; consider:
|
|
|
|
\begin{verbatim}
|
|
>>> lists = [[]] * 3
|
|
>>> lists
|
|
[[], [], []]
|
|
>>> lists[0].append(3)
|
|
>>> lists
|
|
[[3], [3], [3]]
|
|
\end{verbatim}
|
|
|
|
What has happened is that \code{[[]]} is a one-element list containing
|
|
an empty list, so all three elements of \code{[[]] * 3} are (pointers to)
|
|
this single empty list. Modifying any of the elements of \code{lists}
|
|
modifies this single list. You can create a list of different lists this
|
|
way:
|
|
|
|
\begin{verbatim}
|
|
>>> lists = [[] for i in range(3)]
|
|
>>> lists[0].append(3)
|
|
>>> lists[1].append(5)
|
|
>>> lists[2].append(7)
|
|
>>> lists
|
|
[[3], [5], [7]]
|
|
\end{verbatim}
|
|
|
|
\item[(3)] If \var{i} or \var{j} is negative, the index is relative to
|
|
the end of the string: \code{len(\var{s}) + \var{i}} or
|
|
\code{len(\var{s}) + \var{j}} is substituted. But note that \code{-0} is
|
|
still \code{0}.
|
|
|
|
\item[(4)] The slice of \var{s} from \var{i} to \var{j} is defined as
|
|
the sequence of items with index \var{k} such that \code{\var{i} <=
|
|
\var{k} < \var{j}}. If \var{i} or \var{j} is greater than
|
|
\code{len(\var{s})}, use \code{len(\var{s})}. If \var{i} is omitted
|
|
or \code{None}, use \code{0}. If \var{j} is omitted or \code{None},
|
|
use \code{len(\var{s})}. If \var{i} is greater than or equal to \var{j},
|
|
the slice is empty.
|
|
|
|
\item[(5)] The slice of \var{s} from \var{i} to \var{j} with step
|
|
\var{k} is defined as the sequence of items with index
|
|
\code{\var{x} = \var{i} + \var{n}*\var{k}} such that
|
|
$0 \leq n < \frac{j-i}{k}$. In other words, the indices
|
|
are \code{i}, \code{i+k}, \code{i+2*k}, \code{i+3*k} and so on, stopping when
|
|
\var{j} is reached (but never including \var{j}). If \var{i} or \var{j}
|
|
is greater than \code{len(\var{s})}, use \code{len(\var{s})}. If
|
|
\var{i} or \var{j} are omitted or \code{None}, they become ``end'' values
|
|
(which end depends on the sign of \var{k}). Note, \var{k} cannot
|
|
be zero. If \var{k} is \code{None}, it is treated like \code{1}.
|
|
|
|
\item[(6)] If \var{s} and \var{t} are both strings, some Python
|
|
implementations such as CPython can usually perform an in-place optimization
|
|
for assignments of the form \code{\var{s}=\var{s}+\var{t}} or
|
|
\code{\var{s}+=\var{t}}. When applicable, this optimization makes
|
|
quadratic run-time much less likely. This optimization is both version
|
|
and implementation dependent. For performance sensitive code, it is
|
|
preferable to use the \method{str.join()} method which assures consistent
|
|
linear concatenation performance across versions and implementations.
|
|
\versionchanged[Formerly, string concatenation never occurred in-place]{2.4}
|
|
|
|
\end{description}
|
|
|
|
|
|
\subsection{String Methods \label{string-methods}}
|
|
\indexii{string}{methods}
|
|
|
|
These are the string methods which both 8-bit strings and Unicode
|
|
objects support:
|
|
|
|
\begin{methoddesc}[str]{capitalize}{}
|
|
Return a copy of the string with only its first character capitalized.
|
|
|
|
For 8-bit strings, this method is locale-dependent.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{center}{width\optional{, fillchar}}
|
|
Return centered in a string of length \var{width}. Padding is done
|
|
using the specified \var{fillchar} (default is a space).
|
|
\versionchanged[Support for the \var{fillchar} argument]{2.4}
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{count}{sub\optional{, start\optional{, end}}}
|
|
Return the number of occurrences of substring \var{sub} in string
|
|
S\code{[\var{start}:\var{end}]}. Optional arguments \var{start} and
|
|
\var{end} are interpreted as in slice notation.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{decode}{\optional{encoding\optional{, errors}}}
|
|
Decodes the string using the codec registered for \var{encoding}.
|
|
\var{encoding} defaults to the default string encoding. \var{errors}
|
|
may be given to set a different error handling scheme. The default is
|
|
\code{'strict'}, meaning that encoding errors raise
|
|
\exception{UnicodeError}. Other possible values are \code{'ignore'},
|
|
\code{'replace'} and any other name registered via
|
|
\function{codecs.register_error}, see section~\ref{codec-base-classes}.
|
|
\versionadded{2.2}
|
|
\versionchanged[Support for other error handling schemes added]{2.3}
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{encode}{\optional{encoding\optional{,errors}}}
|
|
Return an encoded version of the string. Default encoding is the current
|
|
default string encoding. \var{errors} may be given to set a different
|
|
error handling scheme. The default for \var{errors} is
|
|
\code{'strict'}, meaning that encoding errors raise a
|
|
\exception{UnicodeError}. Other possible values are \code{'ignore'},
|
|
\code{'replace'}, \code{'xmlcharrefreplace'}, \code{'backslashreplace'}
|
|
and any other name registered via \function{codecs.register_error},
|
|
see section~\ref{codec-base-classes}.
|
|
For a list of possible encodings, see section~\ref{standard-encodings}.
|
|
\versionadded{2.0}
|
|
\versionchanged[Support for \code{'xmlcharrefreplace'} and
|
|
\code{'backslashreplace'} and other error handling schemes added]{2.3}
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{endswith}{suffix\optional{, start\optional{, end}}}
|
|
Return \code{True} if the string ends with the specified \var{suffix},
|
|
otherwise return \code{False}. \var{suffix} can also be a tuple of
|
|
suffixes to look for. With optional \var{start}, test beginning at
|
|
that position. With optional \var{end}, stop comparing at that position.
|
|
|
|
\versionchanged[Accept tuples as \var{suffix}]{2.5}
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{expandtabs}{\optional{tabsize}}
|
|
Return a copy of the string where all tab characters are expanded
|
|
using spaces. If \var{tabsize} is not given, a tab size of \code{8}
|
|
characters is assumed.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{find}{sub\optional{, start\optional{, end}}}
|
|
Return the lowest index in the string where substring \var{sub} is
|
|
found, such that \var{sub} is contained in the range [\var{start},
|
|
\var{end}]. Optional arguments \var{start} and \var{end} are
|
|
interpreted as in slice notation. Return \code{-1} if \var{sub} is
|
|
not found.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{index}{sub\optional{, start\optional{, end}}}
|
|
Like \method{find()}, but raise \exception{ValueError} when the
|
|
substring is not found.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{isalnum}{}
|
|
Return true if all characters in the string are alphanumeric and there
|
|
is at least one character, false otherwise.
|
|
|
|
For 8-bit strings, this method is locale-dependent.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{isalpha}{}
|
|
Return true if all characters in the string are alphabetic and there
|
|
is at least one character, false otherwise.
|
|
|
|
For 8-bit strings, this method is locale-dependent.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{isdigit}{}
|
|
Return true if all characters in the string are digits and there
|
|
is at least one character, false otherwise.
|
|
|
|
For 8-bit strings, this method is locale-dependent.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{islower}{}
|
|
Return true if all cased characters in the string are lowercase and
|
|
there is at least one cased character, false otherwise.
|
|
|
|
For 8-bit strings, this method is locale-dependent.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{isspace}{}
|
|
Return true if there are only whitespace characters in the string and
|
|
there is at least one character, false otherwise.
|
|
|
|
For 8-bit strings, this method is locale-dependent.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{istitle}{}
|
|
Return true if the string is a titlecased string and there is at least one
|
|
character, for example uppercase characters may only follow uncased
|
|
characters and lowercase characters only cased ones. Return false
|
|
otherwise.
|
|
|
|
For 8-bit strings, this method is locale-dependent.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{isupper}{}
|
|
Return true if all cased characters in the string are uppercase and
|
|
there is at least one cased character, false otherwise.
|
|
|
|
For 8-bit strings, this method is locale-dependent.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{join}{seq}
|
|
Return a string which is the concatenation of the strings in the
|
|
sequence \var{seq}. The separator between elements is the string
|
|
providing this method.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{ljust}{width\optional{, fillchar}}
|
|
Return the string left justified in a string of length \var{width}.
|
|
Padding is done using the specified \var{fillchar} (default is a
|
|
space). The original string is returned if
|
|
\var{width} is less than \code{len(\var{s})}.
|
|
\versionchanged[Support for the \var{fillchar} argument]{2.4}
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{lower}{}
|
|
Return a copy of the string converted to lowercase.
|
|
|
|
For 8-bit strings, this method is locale-dependent.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{lstrip}{\optional{chars}}
|
|
Return a copy of the string with leading characters removed. The
|
|
\var{chars} argument is a string specifying the set of characters
|
|
to be removed. If omitted or \code{None}, the \var{chars} argument
|
|
defaults to removing whitespace. The \var{chars} argument is not
|
|
a prefix; rather, all combinations of its values are stripped:
|
|
\begin{verbatim}
|
|
>>> ' spacious '.lstrip()
|
|
'spacious '
|
|
>>> 'www.example.com'.lstrip('cmowz.')
|
|
'example.com'
|
|
\end{verbatim}
|
|
\versionchanged[Support for the \var{chars} argument]{2.2.2}
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{partition}{sep}
|
|
Split the string at the first occurrence of \var{sep}, and return
|
|
a 3-tuple containing the part before the separator, the separator
|
|
itself, and the part after the separator. If the separator is not
|
|
found, return a 3-tuple containing the string itself, followed by
|
|
two empty strings.
|
|
\versionadded{2.5}
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{replace}{old, new\optional{, count}}
|
|
Return a copy of the string with all occurrences of substring
|
|
\var{old} replaced by \var{new}. If the optional argument
|
|
\var{count} is given, only the first \var{count} occurrences are
|
|
replaced.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{rfind}{sub \optional{,start \optional{,end}}}
|
|
Return the highest index in the string where substring \var{sub} is
|
|
found, such that \var{sub} is contained within s[start,end]. Optional
|
|
arguments \var{start} and \var{end} are interpreted as in slice
|
|
notation. Return \code{-1} on failure.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{rindex}{sub\optional{, start\optional{, end}}}
|
|
Like \method{rfind()} but raises \exception{ValueError} when the
|
|
substring \var{sub} is not found.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{rjust}{width\optional{, fillchar}}
|
|
Return the string right justified in a string of length \var{width}.
|
|
Padding is done using the specified \var{fillchar} (default is a space).
|
|
The original string is returned if
|
|
\var{width} is less than \code{len(\var{s})}.
|
|
\versionchanged[Support for the \var{fillchar} argument]{2.4}
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{rpartition}{sep}
|
|
Split the string at the last occurrence of \var{sep}, and return
|
|
a 3-tuple containing the part before the separator, the separator
|
|
itself, and the part after the separator. If the separator is not
|
|
found, return a 3-tuple containing two empty strings, followed by
|
|
the string itself.
|
|
\versionadded{2.5}
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{rsplit}{\optional{sep \optional{,maxsplit}}}
|
|
Return a list of the words in the string, using \var{sep} as the
|
|
delimiter string. If \var{maxsplit} is given, at most \var{maxsplit}
|
|
splits are done, the \emph{rightmost} ones. If \var{sep} is not specified
|
|
or \code{None}, any whitespace string is a separator. Except for splitting
|
|
from the right, \method{rsplit()} behaves like \method{split()} which
|
|
is described in detail below.
|
|
\versionadded{2.4}
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{rstrip}{\optional{chars}}
|
|
Return a copy of the string with trailing characters removed. The
|
|
\var{chars} argument is a string specifying the set of characters
|
|
to be removed. If omitted or \code{None}, the \var{chars} argument
|
|
defaults to removing whitespace. The \var{chars} argument is not
|
|
a suffix; rather, all combinations of its values are stripped:
|
|
\begin{verbatim}
|
|
>>> ' spacious '.rstrip()
|
|
' spacious'
|
|
>>> 'mississippi'.rstrip('ipz')
|
|
'mississ'
|
|
\end{verbatim}
|
|
\versionchanged[Support for the \var{chars} argument]{2.2.2}
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{split}{\optional{sep \optional{,maxsplit}}}
|
|
Return a list of the words in the string, using \var{sep} as the
|
|
delimiter string. If \var{maxsplit} is given, at most \var{maxsplit}
|
|
splits are done. (thus, the list will have at most \code{\var{maxsplit}+1}
|
|
elements). If \var{maxsplit} is not specified, then there
|
|
is no limit on the number of splits (all possible splits are made).
|
|
Consecutive delimiters are not grouped together and are
|
|
deemed to delimit empty strings (for example, \samp{'1,,2'.split(',')}
|
|
returns \samp{['1', '', '2']}). The \var{sep} argument may consist of
|
|
multiple characters (for example, \samp{'1, 2, 3'.split(', ')} returns
|
|
\samp{['1', '2', '3']}). Splitting an empty string with a specified
|
|
separator returns \samp{['']}.
|
|
|
|
If \var{sep} is not specified or is \code{None}, a different splitting
|
|
algorithm is applied. First, whitespace characters (spaces, tabs,
|
|
newlines, returns, and formfeeds) are stripped from both ends. Then,
|
|
words are separated by arbitrary length strings of whitespace
|
|
characters. Consecutive whitespace delimiters are treated as a single
|
|
delimiter (\samp{'1 2 3'.split()} returns \samp{['1', '2', '3']}).
|
|
Splitting an empty string or a string consisting of just whitespace
|
|
returns an empty list.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{splitlines}{\optional{keepends}}
|
|
Return a list of the lines in the string, breaking at line
|
|
boundaries. Line breaks are not included in the resulting list unless
|
|
\var{keepends} is given and true.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{startswith}{prefix\optional{,
|
|
start\optional{, end}}}
|
|
Return \code{True} if string starts with the \var{prefix}, otherwise
|
|
return \code{False}. \var{prefix} can also be a tuple of
|
|
prefixes to look for. With optional \var{start}, test string beginning at
|
|
that position. With optional \var{end}, stop comparing string at that
|
|
position.
|
|
|
|
\versionchanged[Accept tuples as \var{prefix}]{2.5}
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{strip}{\optional{chars}}
|
|
Return a copy of the string with the leading and trailing characters
|
|
removed. The \var{chars} argument is a string specifying the set of
|
|
characters to be removed. If omitted or \code{None}, the \var{chars}
|
|
argument defaults to removing whitespace. The \var{chars} argument is not
|
|
a prefix or suffix; rather, all combinations of its values are stripped:
|
|
\begin{verbatim}
|
|
>>> ' spacious '.strip()
|
|
'spacious'
|
|
>>> 'www.example.com'.strip('cmowz.')
|
|
'example'
|
|
\end{verbatim}
|
|
\versionchanged[Support for the \var{chars} argument]{2.2.2}
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{swapcase}{}
|
|
Return a copy of the string with uppercase characters converted to
|
|
lowercase and vice versa.
|
|
|
|
For 8-bit strings, this method is locale-dependent.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{title}{}
|
|
Return a titlecased version of the string: words start with uppercase
|
|
characters, all remaining cased characters are lowercase.
|
|
|
|
For 8-bit strings, this method is locale-dependent.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{translate}{table\optional{, deletechars}}
|
|
Return a copy of the string where all characters occurring in the
|
|
optional argument \var{deletechars} are removed, and the remaining
|
|
characters have been mapped through the given translation table, which
|
|
must be a string of length 256.
|
|
|
|
You can use the \function{maketrans()} helper function in the
|
|
\refmodule{string} module to create a translation table.
|
|
For string objects, set the \var{table} argument to \code{None}
|
|
for translations that only delete characters:
|
|
\begin{verbatim}
|
|
>>> 'read this short text'.translate(None, 'aeiou')
|
|
'rd ths shrt txt'
|
|
\end{verbatim}
|
|
\versionadded[Support for a \code{None} \var{table} argument]{2.6}
|
|
|
|
For Unicode objects, the \method{translate()} method does not
|
|
accept the optional \var{deletechars} argument. Instead, it
|
|
returns a copy of the \var{s} where all characters have been mapped
|
|
through the given translation table which must be a mapping of
|
|
Unicode ordinals to Unicode ordinals, Unicode strings or \code{None}.
|
|
Unmapped characters are left untouched. Characters mapped to \code{None}
|
|
are deleted. Note, a more flexible approach is to create a custom
|
|
character mapping codec using the \refmodule{codecs} module (see
|
|
\module{encodings.cp1251} for an example).
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{upper}{}
|
|
Return a copy of the string converted to uppercase.
|
|
|
|
For 8-bit strings, this method is locale-dependent.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[str]{zfill}{width}
|
|
Return the numeric string left filled with zeros in a string
|
|
of length \var{width}. The original string is returned if
|
|
\var{width} is less than \code{len(\var{s})}.
|
|
\versionadded{2.2.2}
|
|
\end{methoddesc}
|
|
|
|
|
|
\subsection{String Formatting Operations \label{typesseq-strings}}
|
|
|
|
\index{formatting, string (\%{})}
|
|
\index{interpolation, string (\%{})}
|
|
\index{string!formatting}
|
|
\index{string!interpolation}
|
|
\index{printf-style formatting}
|
|
\index{sprintf-style formatting}
|
|
\index{\protect\%{} formatting}
|
|
\index{\protect\%{} interpolation}
|
|
|
|
String and Unicode objects have one unique built-in operation: the
|
|
\code{\%} operator (modulo). This is also known as the string
|
|
\emph{formatting} or \emph{interpolation} operator. Given
|
|
\code{\var{format} \% \var{values}} (where \var{format} is a string or
|
|
Unicode object), \code{\%} conversion specifications in \var{format}
|
|
are replaced with zero or more elements of \var{values}. The effect
|
|
is similar to the using \cfunction{sprintf()} in the C language. If
|
|
\var{format} is a Unicode object, or if any of the objects being
|
|
converted using the \code{\%s} conversion are Unicode objects, the
|
|
result will also be a Unicode object.
|
|
|
|
If \var{format} requires a single argument, \var{values} may be a
|
|
single non-tuple object.\footnote{To format only a tuple you
|
|
should therefore provide a singleton tuple whose only element
|
|
is the tuple to be formatted.} Otherwise, \var{values} must be a tuple with
|
|
exactly the number of items specified by the format string, or a
|
|
single mapping object (for example, a dictionary).
|
|
|
|
A conversion specifier contains two or more characters and has the
|
|
following components, which must occur in this order:
|
|
|
|
\begin{enumerate}
|
|
\item The \character{\%} character, which marks the start of the
|
|
specifier.
|
|
\item Mapping key (optional), consisting of a parenthesised sequence
|
|
of characters (for example, \code{(somename)}).
|
|
\item Conversion flags (optional), which affect the result of some
|
|
conversion types.
|
|
\item Minimum field width (optional). If specified as an
|
|
\character{*} (asterisk), the actual width is read from the
|
|
next element of the tuple in \var{values}, and the object to
|
|
convert comes after the minimum field width and optional
|
|
precision.
|
|
\item Precision (optional), given as a \character{.} (dot) followed
|
|
by the precision. If specified as \character{*} (an
|
|
asterisk), the actual width is read from the next element of
|
|
the tuple in \var{values}, and the value to convert comes after
|
|
the precision.
|
|
\item Length modifier (optional).
|
|
\item Conversion type.
|
|
\end{enumerate}
|
|
|
|
When the right argument is a dictionary (or other mapping type), then
|
|
the formats in the string \emph{must} include a parenthesised mapping key into
|
|
that dictionary inserted immediately after the \character{\%}
|
|
character. The mapping key selects the value to be formatted from the
|
|
mapping. For example:
|
|
|
|
\begin{verbatim}
|
|
>>> print '%(language)s has %(#)03d quote types.' % \
|
|
{'language': "Python", "#": 2}
|
|
Python has 002 quote types.
|
|
\end{verbatim}
|
|
|
|
In this case no \code{*} specifiers may occur in a format (since they
|
|
require a sequential parameter list).
|
|
|
|
The conversion flag characters are:
|
|
|
|
\begin{tableii}{c|l}{character}{Flag}{Meaning}
|
|
\lineii{\#}{The value conversion will use the ``alternate form''
|
|
(where defined below).}
|
|
\lineii{0}{The conversion will be zero padded for numeric values.}
|
|
\lineii{-}{The converted value is left adjusted (overrides
|
|
the \character{0} conversion if both are given).}
|
|
\lineii{{~}}{(a space) A blank should be left before a positive number
|
|
(or empty string) produced by a signed conversion.}
|
|
\lineii{+}{A sign character (\character{+} or \character{-}) will
|
|
precede the conversion (overrides a "space" flag).}
|
|
\end{tableii}
|
|
|
|
A length modifier (\code{h}, \code{l}, or \code{L}) may be
|
|
present, but is ignored as it is not necessary for Python.
|
|
|
|
The conversion types are:
|
|
|
|
\begin{tableiii}{c|l|c}{character}{Conversion}{Meaning}{Notes}
|
|
\lineiii{d}{Signed integer decimal.}{}
|
|
\lineiii{i}{Signed integer decimal.}{}
|
|
\lineiii{o}{Unsigned octal.}{(1)}
|
|
\lineiii{u}{Unsigned decimal.}{}
|
|
\lineiii{x}{Unsigned hexadecimal (lowercase).}{(2)}
|
|
\lineiii{X}{Unsigned hexadecimal (uppercase).}{(2)}
|
|
\lineiii{e}{Floating point exponential format (lowercase).}{(3)}
|
|
\lineiii{E}{Floating point exponential format (uppercase).}{(3)}
|
|
\lineiii{f}{Floating point decimal format.}{(3)}
|
|
\lineiii{F}{Floating point decimal format.}{(3)}
|
|
\lineiii{g}{Floating point format. Uses exponential format
|
|
if exponent is greater than -4 or less than precision,
|
|
decimal format otherwise.}{(4)}
|
|
\lineiii{G}{Floating point format. Uses exponential format
|
|
if exponent is greater than -4 or less than precision,
|
|
decimal format otherwise.}{(4)}
|
|
\lineiii{c}{Single character (accepts integer or single character
|
|
string).}{}
|
|
\lineiii{r}{String (converts any python object using
|
|
\function{repr()}).}{(5)}
|
|
\lineiii{s}{String (converts any python object using
|
|
\function{str()}).}{(6)}
|
|
\lineiii{\%}{No argument is converted, results in a \character{\%}
|
|
character in the result.}{}
|
|
\end{tableiii}
|
|
|
|
\noindent
|
|
Notes:
|
|
\begin{description}
|
|
\item[(1)]
|
|
The alternate form causes a leading zero (\character{0}) to be
|
|
inserted between left-hand padding and the formatting of the
|
|
number if the leading character of the result is not already a
|
|
zero.
|
|
\item[(2)]
|
|
The alternate form causes a leading \code{'0x'} or \code{'0X'}
|
|
(depending on whether the \character{x} or \character{X} format
|
|
was used) to be inserted between left-hand padding and the
|
|
formatting of the number if the leading character of the result is
|
|
not already a zero.
|
|
\item[(3)]
|
|
The alternate form causes the result to always contain a decimal
|
|
point, even if no digits follow it.
|
|
|
|
The precision determines the number of digits after the decimal
|
|
point and defaults to 6.
|
|
\item[(4)]
|
|
The alternate form causes the result to always contain a decimal
|
|
point, and trailing zeroes are not removed as they would
|
|
otherwise be.
|
|
|
|
The precision determines the number of significant digits before
|
|
and after the decimal point and defaults to 6.
|
|
\item[(5)]
|
|
The \code{\%r} conversion was added in Python 2.0.
|
|
|
|
The precision determines the maximal number of characters used.
|
|
\item[(6)]
|
|
If the object or format provided is a \class{unicode} string,
|
|
the resulting string will also be \class{unicode}.
|
|
|
|
The precision determines the maximal number of characters used.
|
|
\end{description}
|
|
|
|
% XXX Examples?
|
|
|
|
Since Python strings have an explicit length, \code{\%s} conversions
|
|
do not assume that \code{'\e0'} is the end of the string.
|
|
|
|
For safety reasons, floating point precisions are clipped to 50;
|
|
\code{\%f} conversions for numbers whose absolute value is over 1e25
|
|
are replaced by \code{\%g} conversions.\footnote{
|
|
These numbers are fairly arbitrary. They are intended to
|
|
avoid printing endless strings of meaningless digits without hampering
|
|
correct use and without having to know the exact precision of floating
|
|
point values on a particular machine.
|
|
} All other errors raise exceptions.
|
|
|
|
Additional string operations are defined in standard modules
|
|
\refmodule{string}\refstmodindex{string}\ and
|
|
\refmodule{re}.\refstmodindex{re}
|
|
|
|
|
|
\subsection{XRange Type \label{typesseq-xrange}}
|
|
|
|
The \class{xrange}\obindex{xrange} type is an immutable sequence which
|
|
is commonly used for looping. The advantage of the \class{xrange}
|
|
type is that an \class{xrange} object will always take the same amount
|
|
of memory, no matter the size of the range it represents. There are
|
|
no consistent performance advantages.
|
|
|
|
XRange objects have very little behavior: they only support indexing,
|
|
iteration, and the \function{len()} function.
|
|
|
|
|
|
\subsection{Mutable Sequence Types \label{typesseq-mutable}}
|
|
|
|
List objects support additional operations that allow in-place
|
|
modification of the object.
|
|
Other mutable sequence types (when added to the language) should
|
|
also support these operations.
|
|
Strings and tuples are immutable sequence types: such objects cannot
|
|
be modified once created.
|
|
The following operations are defined on mutable sequence types (where
|
|
\var{x} is an arbitrary object):
|
|
\indexiii{mutable}{sequence}{types}
|
|
\obindex{list}
|
|
|
|
\begin{tableiii}{c|l|c}{code}{Operation}{Result}{Notes}
|
|
\lineiii{\var{s}[\var{i}] = \var{x}}
|
|
{item \var{i} of \var{s} is replaced by \var{x}}{}
|
|
\lineiii{\var{s}[\var{i}:\var{j}] = \var{t}}
|
|
{slice of \var{s} from \var{i} to \var{j}
|
|
is replaced by the contents of the iterable \var{t}}{}
|
|
\lineiii{del \var{s}[\var{i}:\var{j}]}
|
|
{same as \code{\var{s}[\var{i}:\var{j}] = []}}{}
|
|
\lineiii{\var{s}[\var{i}:\var{j}:\var{k}] = \var{t}}
|
|
{the elements of \code{\var{s}[\var{i}:\var{j}:\var{k}]} are replaced by those of \var{t}}{(1)}
|
|
\lineiii{del \var{s}[\var{i}:\var{j}:\var{k}]}
|
|
{removes the elements of \code{\var{s}[\var{i}:\var{j}:\var{k}]} from the list}{}
|
|
\lineiii{\var{s}.append(\var{x})}
|
|
{same as \code{\var{s}[len(\var{s}):len(\var{s})] = [\var{x}]}}{(2)}
|
|
\lineiii{\var{s}.extend(\var{x})}
|
|
{same as \code{\var{s}[len(\var{s}):len(\var{s})] = \var{x}}}{(3)}
|
|
\lineiii{\var{s}.count(\var{x})}
|
|
{return number of \var{i}'s for which \code{\var{s}[\var{i}] == \var{x}}}{}
|
|
\lineiii{\var{s}.index(\var{x}\optional{, \var{i}\optional{, \var{j}}})}
|
|
{return smallest \var{k} such that \code{\var{s}[\var{k}] == \var{x}} and
|
|
\code{\var{i} <= \var{k} < \var{j}}}{(4)}
|
|
\lineiii{\var{s}.insert(\var{i}, \var{x})}
|
|
{same as \code{\var{s}[\var{i}:\var{i}] = [\var{x}]}}{(5)}
|
|
\lineiii{\var{s}.pop(\optional{\var{i}})}
|
|
{same as \code{\var{x} = \var{s}[\var{i}]; del \var{s}[\var{i}]; return \var{x}}}{(6)}
|
|
\lineiii{\var{s}.remove(\var{x})}
|
|
{same as \code{del \var{s}[\var{s}.index(\var{x})]}}{(4)}
|
|
\lineiii{\var{s}.reverse()}
|
|
{reverses the items of \var{s} in place}{(7)}
|
|
\lineiii{\var{s}.sort(\optional{\var{cmp}\optional{,
|
|
\var{key}\optional{, \var{reverse}}}})}
|
|
{sort the items of \var{s} in place}{(7), (8), (9), (10)}
|
|
\end{tableiii}
|
|
\indexiv{operations on}{mutable}{sequence}{types}
|
|
\indexiii{operations on}{sequence}{types}
|
|
\indexiii{operations on}{list}{type}
|
|
\indexii{subscript}{assignment}
|
|
\indexii{slice}{assignment}
|
|
\indexii{extended slice}{assignment}
|
|
\stindex{del}
|
|
\withsubitem{(list method)}{
|
|
\ttindex{append()}\ttindex{extend()}\ttindex{count()}\ttindex{index()}
|
|
\ttindex{insert()}\ttindex{pop()}\ttindex{remove()}\ttindex{reverse()}
|
|
\ttindex{sort()}}
|
|
\noindent
|
|
Notes:
|
|
\begin{description}
|
|
\item[(1)] \var{t} must have the same length as the slice it is
|
|
replacing.
|
|
|
|
\item[(2)] The C implementation of Python has historically accepted
|
|
multiple parameters and implicitly joined them into a tuple; this
|
|
no longer works in Python 2.0. Use of this misfeature has been
|
|
deprecated since Python 1.4.
|
|
|
|
\item[(3)] \var{x} can be any iterable object.
|
|
|
|
\item[(4)] Raises \exception{ValueError} when \var{x} is not found in
|
|
\var{s}. When a negative index is passed as the second or third parameter
|
|
to the \method{index()} method, the list length is added, as for slice
|
|
indices. If it is still negative, it is truncated to zero, as for
|
|
slice indices. \versionchanged[Previously, \method{index()} didn't
|
|
have arguments for specifying start and stop positions]{2.3}
|
|
|
|
\item[(5)] When a negative index is passed as the first parameter to
|
|
the \method{insert()} method, the list length is added, as for slice
|
|
indices. If it is still negative, it is truncated to zero, as for
|
|
slice indices. \versionchanged[Previously, all negative indices
|
|
were truncated to zero]{2.3}
|
|
|
|
\item[(6)] The \method{pop()} method is only supported by the list and
|
|
array types. The optional argument \var{i} defaults to \code{-1},
|
|
so that by default the last item is removed and returned.
|
|
|
|
\item[(7)] The \method{sort()} and \method{reverse()} methods modify the
|
|
list in place for economy of space when sorting or reversing a large
|
|
list. To remind you that they operate by side effect, they don't return
|
|
the sorted or reversed list.
|
|
|
|
\item[(8)] The \method{sort()} method takes optional arguments for
|
|
controlling the comparisons.
|
|
|
|
\var{cmp} specifies a custom comparison function of two arguments
|
|
(list items) which should return a negative, zero or positive number
|
|
depending on whether the first argument is considered smaller than,
|
|
equal to, or larger than the second argument:
|
|
\samp{\var{cmp}=\keyword{lambda} \var{x},\var{y}:
|
|
\function{cmp}(x.lower(), y.lower())}
|
|
|
|
\var{key} specifies a function of one argument that is used to
|
|
extract a comparison key from each list element:
|
|
\samp{\var{key}=\function{str.lower}}
|
|
|
|
\var{reverse} is a boolean value. If set to \code{True}, then the
|
|
list elements are sorted as if each comparison were reversed.
|
|
|
|
In general, the \var{key} and \var{reverse} conversion processes are
|
|
much faster than specifying an equivalent \var{cmp} function. This is
|
|
because \var{cmp} is called multiple times for each list element while
|
|
\var{key} and \var{reverse} touch each element only once.
|
|
|
|
\versionchanged[Support for \code{None} as an equivalent to omitting
|
|
\var{cmp} was added]{2.3}
|
|
|
|
\versionchanged[Support for \var{key} and \var{reverse} was added]{2.4}
|
|
|
|
\item[(9)] Starting with Python 2.3, the \method{sort()} method is
|
|
guaranteed to be stable. A sort is stable if it guarantees not to
|
|
change the relative order of elements that compare equal --- this is
|
|
helpful for sorting in multiple passes (for example, sort by
|
|
department, then by salary grade).
|
|
|
|
\item[(10)] While a list is being sorted, the effect of attempting to
|
|
mutate, or even inspect, the list is undefined. The C
|
|
implementation of Python 2.3 and newer makes the list appear empty
|
|
for the duration, and raises \exception{ValueError} if it can detect
|
|
that the list has been mutated during a sort.
|
|
\end{description}
|
|
|
|
\section{Set Types ---
|
|
\class{set}, \class{frozenset}
|
|
\label{types-set}}
|
|
\obindex{set}
|
|
|
|
A \dfn{set} object is an unordered collection of distinct hashable objects.
|
|
Common uses include membership testing, removing duplicates from a sequence,
|
|
and computing mathematical operations such as intersection, union, difference,
|
|
and symmetric difference.
|
|
\versionadded{2.4}
|
|
|
|
Like other collections, sets support \code{\var{x} in \var{set}},
|
|
\code{len(\var{set})}, and \code{for \var{x} in \var{set}}. Being an
|
|
unordered collection, sets do not record element position or order of
|
|
insertion. Accordingly, sets do not support indexing, slicing, or
|
|
other sequence-like behavior.
|
|
|
|
There are currently two builtin set types, \class{set} and \class{frozenset}.
|
|
The \class{set} type is mutable --- the contents can be changed using methods
|
|
like \method{add()} and \method{remove()}. Since it is mutable, it has no
|
|
hash value and cannot be used as either a dictionary key or as an element of
|
|
another set. The \class{frozenset} type is immutable and hashable --- its
|
|
contents cannot be altered after is created; however, it can be used as
|
|
a dictionary key or as an element of another set.
|
|
|
|
Instances of \class{set} and \class{frozenset} provide the following operations:
|
|
|
|
\begin{tableiii}{c|c|l}{code}{Operation}{Equivalent}{Result}
|
|
\lineiii{len(\var{s})}{}{cardinality of set \var{s}}
|
|
|
|
\hline
|
|
\lineiii{\var{x} in \var{s}}{}
|
|
{test \var{x} for membership in \var{s}}
|
|
\lineiii{\var{x} not in \var{s}}{}
|
|
{test \var{x} for non-membership in \var{s}}
|
|
\lineiii{\var{s}.issubset(\var{t})}{\code{\var{s} <= \var{t}}}
|
|
{test whether every element in \var{s} is in \var{t}}
|
|
\lineiii{\var{s}.issuperset(\var{t})}{\code{\var{s} >= \var{t}}}
|
|
{test whether every element in \var{t} is in \var{s}}
|
|
|
|
\hline
|
|
\lineiii{\var{s}.union(\var{t})}{\var{s} | \var{t}}
|
|
{new set with elements from both \var{s} and \var{t}}
|
|
\lineiii{\var{s}.intersection(\var{t})}{\var{s} \&\ \var{t}}
|
|
{new set with elements common to \var{s} and \var{t}}
|
|
\lineiii{\var{s}.difference(\var{t})}{\var{s} - \var{t}}
|
|
{new set with elements in \var{s} but not in \var{t}}
|
|
\lineiii{\var{s}.symmetric_difference(\var{t})}{\var{s} \^\ \var{t}}
|
|
{new set with elements in either \var{s} or \var{t} but not both}
|
|
\lineiii{\var{s}.copy()}{}
|
|
{new set with a shallow copy of \var{s}}
|
|
\end{tableiii}
|
|
|
|
Note, the non-operator versions of \method{union()}, \method{intersection()},
|
|
\method{difference()}, and \method{symmetric_difference()},
|
|
\method{issubset()}, and \method{issuperset()} methods will accept any
|
|
iterable as an argument. In contrast, their operator based counterparts
|
|
require their arguments to be sets. This precludes error-prone constructions
|
|
like \code{set('abc') \&\ 'cbs'} in favor of the more readable
|
|
\code{set('abc').intersection('cbs')}.
|
|
|
|
Both \class{set} and \class{frozenset} support set to set comparisons.
|
|
Two sets are equal if and only if every element of each set is contained in
|
|
the other (each is a subset of the other).
|
|
A set is less than another set if and only if the first set is a proper
|
|
subset of the second set (is a subset, but is not equal).
|
|
A set is greater than another set if and only if the first set is a proper
|
|
superset of the second set (is a superset, but is not equal).
|
|
|
|
Instances of \class{set} are compared to instances of \class{frozenset} based
|
|
on their members. For example, \samp{set('abc') == frozenset('abc')} returns
|
|
\code{True}.
|
|
|
|
The subset and equality comparisons do not generalize to a complete
|
|
ordering function. For example, any two disjoint sets are not equal and
|
|
are not subsets of each other, so \emph{all} of the following return
|
|
\code{False}: \code{\var{a}<\var{b}}, \code{\var{a}==\var{b}}, or
|
|
\code{\var{a}>\var{b}}.
|
|
Accordingly, sets do not implement the \method{__cmp__} method.
|
|
|
|
Since sets only define partial ordering (subset relationships), the output
|
|
of the \method{list.sort()} method is undefined for lists of sets.
|
|
|
|
Set elements are like dictionary keys; they need to define both
|
|
\method{__hash__} and \method{__eq__} methods.
|
|
|
|
Binary operations that mix \class{set} instances with \class{frozenset}
|
|
return the type of the first operand. For example:
|
|
\samp{frozenset('ab') | set('bc')} returns an instance of \class{frozenset}.
|
|
|
|
The following table lists operations available for \class{set}
|
|
that do not apply to immutable instances of \class{frozenset}:
|
|
|
|
\begin{tableiii}{c|c|l}{code}{Operation}{Equivalent}{Result}
|
|
\lineiii{\var{s}.update(\var{t})}
|
|
{\var{s} |= \var{t}}
|
|
{update set \var{s}, adding elements from \var{t}}
|
|
\lineiii{\var{s}.intersection_update(\var{t})}
|
|
{\var{s} \&= \var{t}}
|
|
{update set \var{s}, keeping only elements found in both \var{s} and \var{t}}
|
|
\lineiii{\var{s}.difference_update(\var{t})}
|
|
{\var{s} -= \var{t}}
|
|
{update set \var{s}, removing elements found in \var{t}}
|
|
\lineiii{\var{s}.symmetric_difference_update(\var{t})}
|
|
{\var{s} \textasciicircum= \var{t}}
|
|
{update set \var{s}, keeping only elements found in either \var{s} or \var{t}
|
|
but not in both}
|
|
|
|
\hline
|
|
\lineiii{\var{s}.add(\var{x})}{}
|
|
{add element \var{x} to set \var{s}}
|
|
\lineiii{\var{s}.remove(\var{x})}{}
|
|
{remove \var{x} from set \var{s}; raises \exception{KeyError}
|
|
if not present}
|
|
\lineiii{\var{s}.discard(\var{x})}{}
|
|
{removes \var{x} from set \var{s} if present}
|
|
\lineiii{\var{s}.pop()}{}
|
|
{remove and return an arbitrary element from \var{s}; raises
|
|
\exception{KeyError} if empty}
|
|
\lineiii{\var{s}.clear()}{}
|
|
{remove all elements from set \var{s}}
|
|
\end{tableiii}
|
|
|
|
Note, the non-operator versions of the \method{update()},
|
|
\method{intersection_update()}, \method{difference_update()}, and
|
|
\method{symmetric_difference_update()} methods will accept any iterable
|
|
as an argument.
|
|
|
|
|
|
\section{Mapping Types --- \class{dict} \label{typesmapping}}
|
|
\obindex{mapping}
|
|
\obindex{dictionary}
|
|
|
|
A \dfn{mapping} object maps immutable values to
|
|
arbitrary objects. Mappings are mutable objects. There is currently
|
|
only one standard mapping type, the \dfn{dictionary}. A dictionary's keys are
|
|
almost arbitrary values. Only values containing lists, dictionaries
|
|
or other mutable types (that are compared by value rather than by
|
|
object identity) may not be used as keys.
|
|
Numeric types used for keys obey the normal rules for numeric
|
|
comparison: if two numbers compare equal (such as \code{1} and
|
|
\code{1.0}) then they can be used interchangeably to index the same
|
|
dictionary entry.
|
|
|
|
Dictionaries are created by placing a comma-separated list of
|
|
\code{\var{key}: \var{value}} pairs within braces, for example:
|
|
\code{\{'jack': 4098, 'sjoerd': 4127\}} or
|
|
\code{\{4098: 'jack', 4127: 'sjoerd'\}}.
|
|
|
|
The following operations are defined on mappings (where \var{a} and
|
|
\var{b} are mappings, \var{k} is a key, and \var{v} and \var{x} are
|
|
arbitrary objects):
|
|
\indexiii{operations on}{mapping}{types}
|
|
\indexiii{operations on}{dictionary}{type}
|
|
\stindex{del}
|
|
\bifuncindex{len}
|
|
\withsubitem{(dictionary method)}{
|
|
\ttindex{clear()}
|
|
\ttindex{copy()}
|
|
\ttindex{has_key()}
|
|
\ttindex{fromkeys()}
|
|
\ttindex{items()}
|
|
\ttindex{keys()}
|
|
\ttindex{update()}
|
|
\ttindex{values()}
|
|
\ttindex{get()}
|
|
\ttindex{setdefault()}
|
|
\ttindex{pop()}
|
|
\ttindex{popitem()}
|
|
\ttindex{iteritems()}
|
|
\ttindex{iterkeys()}
|
|
\ttindex{itervalues()}}
|
|
|
|
\begin{tableiii}{c|l|c}{code}{Operation}{Result}{Notes}
|
|
\lineiii{len(\var{a})}{the number of items in \var{a}}{}
|
|
\lineiii{\var{a}[\var{k}]}{the item of \var{a} with key \var{k}}{(1), (10)}
|
|
\lineiii{\var{a}[\var{k}] = \var{v}}
|
|
{set \code{\var{a}[\var{k}]} to \var{v}}
|
|
{}
|
|
\lineiii{del \var{a}[\var{k}]}
|
|
{remove \code{\var{a}[\var{k}]} from \var{a}}
|
|
{(1)}
|
|
\lineiii{\var{a}.clear()}{remove all items from \code{a}}{}
|
|
\lineiii{\var{a}.copy()}{a (shallow) copy of \code{a}}{}
|
|
\lineiii{\var{k} in \var{a}}
|
|
{\code{True} if \var{a} has a key \var{k}, else \code{False}}
|
|
{(2)}
|
|
\lineiii{\var{k} not in \var{a}}
|
|
{Equivalent to \code{not} \var{k} in \var{a}}
|
|
{(2)}
|
|
\lineiii{\var{a}.has_key(\var{k})}
|
|
{Equivalent to \var{k} \code{in} \var{a}, use that form in new code}
|
|
{}
|
|
\lineiii{\var{a}.items()}
|
|
{a copy of \var{a}'s list of (\var{key}, \var{value}) pairs}
|
|
{(3)}
|
|
\lineiii{\var{a}.keys()}{a copy of \var{a}'s list of keys}{(3)}
|
|
\lineiii{\var{a}.update(\optional{\var{b}})}
|
|
{updates \var{a} with key/value pairs from \var{b}, overwriting
|
|
existing keys, returns \code{None}}
|
|
{(9)}
|
|
\lineiii{\var{a}.fromkeys(\var{seq}\optional{, \var{value}})}
|
|
{Creates a new dictionary with keys from \var{seq} and values set to \var{value}}
|
|
{(7)}
|
|
\lineiii{\var{a}.values()}{a copy of \var{a}'s list of values}{(3)}
|
|
\lineiii{\var{a}.get(\var{k}\optional{, \var{x}})}
|
|
{\code{\var{a}[\var{k}]} if \code{\var{k} in \var{a}},
|
|
else \var{x}}
|
|
{(4)}
|
|
\lineiii{\var{a}.setdefault(\var{k}\optional{, \var{x}})}
|
|
{\code{\var{a}[\var{k}]} if \code{\var{k} in \var{a}},
|
|
else \var{x} (also setting it)}
|
|
{(5)}
|
|
\lineiii{\var{a}.pop(\var{k}\optional{, \var{x}})}
|
|
{\code{\var{a}[\var{k}]} if \code{\var{k} in \var{a}},
|
|
else \var{x} (and remove k)}
|
|
{(8)}
|
|
\lineiii{\var{a}.popitem()}
|
|
{remove and return an arbitrary (\var{key}, \var{value}) pair}
|
|
{(6)}
|
|
\lineiii{\var{a}.iteritems()}
|
|
{return an iterator over (\var{key}, \var{value}) pairs}
|
|
{(2), (3)}
|
|
\lineiii{\var{a}.iterkeys()}
|
|
{return an iterator over the mapping's keys}
|
|
{(2), (3)}
|
|
\lineiii{\var{a}.itervalues()}
|
|
{return an iterator over the mapping's values}
|
|
{(2), (3)}
|
|
\end{tableiii}
|
|
|
|
\noindent
|
|
Notes:
|
|
\begin{description}
|
|
\item[(1)] Raises a \exception{KeyError} exception if \var{k} is not
|
|
in the map.
|
|
|
|
\item[(2)] \versionadded{2.2}
|
|
|
|
\item[(3)] Keys and values are listed in an arbitrary order which is
|
|
non-random, varies across Python implementations, and depends on the
|
|
dictionary's history of insertions and deletions.
|
|
If \method{items()}, \method{keys()}, \method{values()},
|
|
\method{iteritems()}, \method{iterkeys()}, and \method{itervalues()}
|
|
are called with no intervening modifications to the dictionary, the
|
|
lists will directly correspond. This allows the creation of
|
|
\code{(\var{value}, \var{key})} pairs using \function{zip()}:
|
|
\samp{pairs = zip(\var{a}.values(), \var{a}.keys())}. The same
|
|
relationship holds for the \method{iterkeys()} and
|
|
\method{itervalues()} methods: \samp{pairs = zip(\var{a}.itervalues(),
|
|
\var{a}.iterkeys())} provides the same value for \code{pairs}.
|
|
Another way to create the same list is \samp{pairs = [(v, k) for (k,
|
|
v) in \var{a}.iteritems()]}.
|
|
|
|
\item[(4)] Never raises an exception if \var{k} is not in the map,
|
|
instead it returns \var{x}. \var{x} is optional; when \var{x} is not
|
|
provided and \var{k} is not in the map, \code{None} is returned.
|
|
|
|
\item[(5)] \function{setdefault()} is like \function{get()}, except
|
|
that if \var{k} is missing, \var{x} is both returned and inserted into
|
|
the dictionary as the value of \var{k}. \var{x} defaults to \code{None}.
|
|
|
|
\item[(6)] \function{popitem()} is useful to destructively iterate
|
|
over a dictionary, as often used in set algorithms. If the dictionary
|
|
is empty, calling \function{popitem()} raises a \exception{KeyError}.
|
|
|
|
\item[(7)] \function{fromkeys()} is a class method that returns a
|
|
new dictionary. \var{value} defaults to \code{None}. \versionadded{2.3}
|
|
|
|
\item[(8)] \function{pop()} raises a \exception{KeyError} when no default
|
|
value is given and the key is not found. \versionadded{2.3}
|
|
|
|
\item[(9)] \function{update()} accepts either another mapping object
|
|
or an iterable of key/value pairs (as a tuple or other iterable of
|
|
length two). If keyword arguments are specified, the mapping is
|
|
then is updated with those key/value pairs:
|
|
\samp{d.update(red=1, blue=2)}.
|
|
\versionchanged[Allowed the argument to be an iterable of key/value
|
|
pairs and allowed keyword arguments]{2.4}
|
|
|
|
\item[(10)] If a subclass of dict defines a method \method{__missing__},
|
|
if the key \var{k} is not present, the \var{a}[\var{k}] operation calls
|
|
that method with the key \var{k} as argument. The \var{a}[\var{k}]
|
|
operation then returns or raises whatever is returned or raised by the
|
|
\function{__missing__}(\var{k}) call if the key is not present.
|
|
No other operations or methods invoke \method{__missing__}().
|
|
If \method{__missing__} is not defined, \exception{KeyError} is raised.
|
|
\method{__missing__} must be a method; it cannot be an instance variable.
|
|
For an example, see \module{collections}.\class{defaultdict}.
|
|
\versionadded{2.5}
|
|
|
|
\end{description}
|
|
|
|
\section{File Objects
|
|
\label{bltin-file-objects}}
|
|
|
|
File objects\obindex{file} are implemented using C's \code{stdio}
|
|
package and can be created with the built-in constructor
|
|
\function{file()}\bifuncindex{file} described in section
|
|
\ref{built-in-funcs}, ``Built-in Functions.''\footnote{\function{file()}
|
|
is new in Python 2.2. The older built-in \function{open()} is an
|
|
alias for \function{file()}.} File objects are also returned
|
|
by some other built-in functions and methods, such as
|
|
\function{os.popen()} and \function{os.fdopen()} and the
|
|
\method{makefile()} method of socket objects.
|
|
\refstmodindex{os}
|
|
\refbimodindex{socket}
|
|
|
|
When a file operation fails for an I/O-related reason, the exception
|
|
\exception{IOError} is raised. This includes situations where the
|
|
operation is not defined for some reason, like \method{seek()} on a tty
|
|
device or writing a file opened for reading.
|
|
|
|
Files have the following methods:
|
|
|
|
|
|
\begin{methoddesc}[file]{close}{}
|
|
Close the file. A closed file cannot be read or written any more.
|
|
Any operation which requires that the file be open will raise a
|
|
\exception{ValueError} after the file has been closed. Calling
|
|
\method{close()} more than once is allowed.
|
|
|
|
As of Python 2.5, you can avoid having to call this method explicitly
|
|
if you use the \keyword{with} statement. For example, the following
|
|
code will automatically close \code{f} when the \keyword{with} block
|
|
is exited:
|
|
|
|
\begin{verbatim}
|
|
from __future__ import with_statement
|
|
|
|
with open("hello.txt") as f:
|
|
for line in f:
|
|
print line
|
|
\end{verbatim}
|
|
|
|
In older versions of Python, you would have needed to do this to get
|
|
the same effect:
|
|
|
|
\begin{verbatim}
|
|
f = open("hello.txt")
|
|
try:
|
|
for line in f:
|
|
print line
|
|
finally:
|
|
f.close()
|
|
\end{verbatim}
|
|
|
|
\note{Not all ``file-like'' types in Python support use as a context
|
|
manager for the \keyword{with} statement. If your code is intended to
|
|
work with any file-like object, you can use the \function{closing()}
|
|
function in the \module{contextlib} module instead of using the object
|
|
directly. See section~\ref{context-closing} for details.}
|
|
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[file]{flush}{}
|
|
Flush the internal buffer, like \code{stdio}'s
|
|
\cfunction{fflush()}. This may be a no-op on some file-like
|
|
objects.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[file]{fileno}{}
|
|
\index{file descriptor}
|
|
\index{descriptor, file}
|
|
Return the integer ``file descriptor'' that is used by the
|
|
underlying implementation to request I/O operations from the
|
|
operating system. This can be useful for other, lower level
|
|
interfaces that use file descriptors, such as the
|
|
\refmodule{fcntl}\refbimodindex{fcntl} module or
|
|
\function{os.read()} and friends. \note{File-like objects
|
|
which do not have a real file descriptor should \emph{not} provide
|
|
this method!}
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[file]{isatty}{}
|
|
Return \code{True} if the file is connected to a tty(-like) device, else
|
|
\code{False}. \note{If a file-like object is not associated
|
|
with a real file, this method should \emph{not} be implemented.}
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[file]{__next__}{}
|
|
A file object is its own iterator, for example \code{iter(\var{f})} returns
|
|
\var{f} (unless \var{f} is closed). When a file is used as an
|
|
iterator, typically in a \keyword{for} loop (for example,
|
|
\code{for line in f: print line}), the \method{__next__()} method is
|
|
called repeatedly. This method returns the next input line, or raises
|
|
\exception{StopIteration} when \EOF{} is hit when the file is open for
|
|
reading (behavior is undefined when the file is open for writing). In
|
|
order to make a \keyword{for} loop the most efficient way of looping
|
|
over the lines of a file (a very common operation), the
|
|
\method{__next__()} method uses a hidden read-ahead buffer. As a
|
|
consequence of using a read-ahead buffer, combining \method{__next__()}
|
|
with other file methods (like \method{readline()}) does not work
|
|
right. However, using \method{seek()} to reposition the file to an
|
|
absolute position will flush the read-ahead buffer.
|
|
\versionadded{2.3}
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[file]{read}{\optional{size}}
|
|
Read at most \var{size} bytes from the file (less if the read hits
|
|
\EOF{} before obtaining \var{size} bytes). If the \var{size}
|
|
argument is negative or omitted, read all data until \EOF{} is
|
|
reached. The bytes are returned as a string object. An empty
|
|
string is returned when \EOF{} is encountered immediately. (For
|
|
certain files, like ttys, it makes sense to continue reading after
|
|
an \EOF{} is hit.) Note that this method may call the underlying
|
|
C function \cfunction{fread()} more than once in an effort to
|
|
acquire as close to \var{size} bytes as possible. Also note that
|
|
when in non-blocking mode, less data than what was requested may
|
|
be returned, even if no \var{size} parameter was given.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[file]{readline}{\optional{size}}
|
|
Read one entire line from the file. A trailing newline character is
|
|
kept in the string (but may be absent when a file ends with an
|
|
incomplete line).\footnote{
|
|
The advantage of leaving the newline on is that
|
|
returning an empty string is then an unambiguous \EOF{}
|
|
indication. It is also possible (in cases where it might
|
|
matter, for example, if you
|
|
want to make an exact copy of a file while scanning its lines)
|
|
to tell whether the last line of a file ended in a newline
|
|
or not (yes this happens!).
|
|
} If the \var{size} argument is present and
|
|
non-negative, it is a maximum byte count (including the trailing
|
|
newline) and an incomplete line may be returned.
|
|
An empty string is returned \emph{only} when \EOF{} is encountered
|
|
immediately. \note{Unlike \code{stdio}'s \cfunction{fgets()}, the
|
|
returned string contains null characters (\code{'\e 0'}) if they
|
|
occurred in the input.}
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[file]{readlines}{\optional{sizehint}}
|
|
Read until \EOF{} using \method{readline()} and return a list containing
|
|
the lines thus read. If the optional \var{sizehint} argument is
|
|
present, instead of reading up to \EOF, whole lines totalling
|
|
approximately \var{sizehint} bytes (possibly after rounding up to an
|
|
internal buffer size) are read. Objects implementing a file-like
|
|
interface may choose to ignore \var{sizehint} if it cannot be
|
|
implemented, or cannot be implemented efficiently.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[file]{seek}{offset\optional{, whence}}
|
|
Set the file's current position, like \code{stdio}'s \cfunction{fseek()}.
|
|
The \var{whence} argument is optional and defaults to
|
|
\code{os.SEEK_SET} or \code{0}
|
|
(absolute file positioning); other values are \code{os.SEEK_CUR} or \code{1}
|
|
(seek
|
|
relative to the current position) and \code{os.SEEK_END} or \code{2}
|
|
(seek relative to the
|
|
file's end). There is no return value. Note that if the file is
|
|
opened for appending (mode \code{'a'} or \code{'a+'}), any
|
|
\method{seek()} operations will be undone at the next write. If the
|
|
file is only opened for writing in append mode (mode \code{'a'}),
|
|
this method is essentially a no-op, but it remains useful for files
|
|
opened in append mode with reading enabled (mode \code{'a+'}). If the
|
|
file is opened in text mode (without \code{'b'}), only offsets returned
|
|
by \method{tell()} are legal. Use of other offsets causes undefined
|
|
behavior.
|
|
|
|
Note that not all file objects are seekable.
|
|
\versionchanged{Passing float values as offset has been deprecated}[2.6]
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[file]{tell}{}
|
|
Return the file's current position, like \code{stdio}'s
|
|
\cfunction{ftell()}.
|
|
|
|
\note{On Windows, \method{tell()} can return illegal values (after an
|
|
\cfunction{fgets()}) when reading files with \UNIX{}-style line-endings.
|
|
Use binary mode (\code{'rb'}) to circumvent this problem.}
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[file]{truncate}{\optional{size}}
|
|
Truncate the file's size. If the optional \var{size} argument is
|
|
present, the file is truncated to (at most) that size. The size
|
|
defaults to the current position. The current file position is
|
|
not changed. Note that if a specified size exceeds the file's
|
|
current size, the result is platform-dependent: possibilities
|
|
include that the file may remain unchanged, increase to the specified
|
|
size as if zero-filled, or increase to the specified size with
|
|
undefined new content.
|
|
Availability: Windows, many \UNIX{} variants.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[file]{write}{str}
|
|
Write a string to the file. There is no return value. Due to
|
|
buffering, the string may not actually show up in the file until
|
|
the \method{flush()} or \method{close()} method is called.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[file]{writelines}{sequence}
|
|
Write a sequence of strings to the file. The sequence can be any
|
|
iterable object producing strings, typically a list of strings.
|
|
There is no return value.
|
|
(The name is intended to match \method{readlines()};
|
|
\method{writelines()} does not add line separators.)
|
|
\end{methoddesc}
|
|
|
|
|
|
Files support the iterator protocol. Each iteration returns the same
|
|
result as \code{\var{file}.readline()}, and iteration ends when the
|
|
\method{readline()} method returns an empty string.
|
|
|
|
|
|
File objects also offer a number of other interesting attributes.
|
|
These are not required for file-like objects, but should be
|
|
implemented if they make sense for the particular object.
|
|
|
|
\begin{memberdesc}[file]{closed}
|
|
bool indicating the current state of the file object. This is a
|
|
read-only attribute; the \method{close()} method changes the value.
|
|
It may not be available on all file-like objects.
|
|
\end{memberdesc}
|
|
|
|
\begin{memberdesc}[file]{encoding}
|
|
The encoding that this file uses. When Unicode strings are written
|
|
to a file, they will be converted to byte strings using this encoding.
|
|
In addition, when the file is connected to a terminal, the attribute
|
|
gives the encoding that the terminal is likely to use (that
|
|
information might be incorrect if the user has misconfigured the
|
|
terminal). The attribute is read-only and may not be present on
|
|
all file-like objects. It may also be \code{None}, in which case
|
|
the file uses the system default encoding for converting Unicode
|
|
strings.
|
|
|
|
\versionadded{2.3}
|
|
\end{memberdesc}
|
|
|
|
\begin{memberdesc}[file]{mode}
|
|
The I/O mode for the file. If the file was created using the
|
|
\function{open()} built-in function, this will be the value of the
|
|
\var{mode} parameter. This is a read-only attribute and may not be
|
|
present on all file-like objects.
|
|
\end{memberdesc}
|
|
|
|
\begin{memberdesc}[file]{name}
|
|
If the file object was created using \function{open()}, the name of
|
|
the file. Otherwise, some string that indicates the source of the
|
|
file object, of the form \samp{<\mbox{\ldots}>}. This is a read-only
|
|
attribute and may not be present on all file-like objects.
|
|
\end{memberdesc}
|
|
|
|
\begin{memberdesc}[file]{newlines}
|
|
If Python was built with the \longprogramopt{with-universal-newlines}
|
|
option to \program{configure} (the default) this read-only attribute
|
|
exists, and for files opened in
|
|
universal newline read mode it keeps track of the types of newlines
|
|
encountered while reading the file. The values it can take are
|
|
\code{'\e r'}, \code{'\e n'}, \code{'\e r\e n'}, \code{None} (unknown,
|
|
no newlines read yet) or a tuple containing all the newline
|
|
types seen, to indicate that multiple
|
|
newline conventions were encountered. For files not opened in universal
|
|
newline read mode the value of this attribute will be \code{None}.
|
|
\end{memberdesc}
|
|
|
|
\begin{memberdesc}[file]{softspace}
|
|
Boolean that indicates whether a space character needs to be printed
|
|
before another value when using the \keyword{print} statement.
|
|
Classes that are trying to simulate a file object should also have a
|
|
writable \member{softspace} attribute, which should be initialized to
|
|
zero. This will be automatic for most classes implemented in Python
|
|
(care may be needed for objects that override attribute access); types
|
|
implemented in C will have to provide a writable
|
|
\member{softspace} attribute.
|
|
\note{This attribute is not used to control the
|
|
\keyword{print} statement, but to allow the implementation of
|
|
\keyword{print} to keep track of its internal state.}
|
|
\end{memberdesc}
|
|
|
|
|
|
\section{Context Manager Types \label{typecontextmanager}}
|
|
|
|
\versionadded{2.5}
|
|
\index{context manager}
|
|
\index{context management protocol}
|
|
\index{protocol!context management}
|
|
|
|
Python's \keyword{with} statement supports the concept of a runtime
|
|
context defined by a context manager. This is implemented using
|
|
two separate methods that allow user-defined classes to define
|
|
a runtime context that is entered before the statement body is
|
|
executed and exited when the statement ends.
|
|
|
|
The \dfn{context management protocol} consists of a pair of
|
|
methods that need to be provided for a context manager object to
|
|
define a runtime context:
|
|
|
|
\begin{methoddesc}[context manager]{__enter__}{}
|
|
Enter the runtime context and return either this object or another
|
|
object related to the runtime context. The value returned by this
|
|
method is bound to the identifier in the \keyword{as} clause of
|
|
\keyword{with} statements using this context manager.
|
|
|
|
An example of a context manager that returns itself is a file object.
|
|
File objects return themselves from __enter__() to allow
|
|
\function{open()} to be used as the context expression in a
|
|
\keyword{with} statement.
|
|
|
|
An example of a context manager that returns a related
|
|
object is the one returned by \code{decimal.Context.get_manager()}.
|
|
These managers set the active decimal context to a copy of the
|
|
original decimal context and then return the copy. This allows
|
|
changes to be made to the current decimal context in the body of
|
|
the \keyword{with} statement without affecting code outside
|
|
the \keyword{with} statement.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[context manager]{__exit__}{exc_type, exc_val, exc_tb}
|
|
Exit the runtime context and return a Boolean flag indicating if any
|
|
expection that occurred should be suppressed. If an exception
|
|
occurred while executing the body of the \keyword{with} statement, the
|
|
arguments contain the exception type, value and traceback information.
|
|
Otherwise, all three arguments are \code{None}.
|
|
|
|
Returning a true value from this method will cause the \keyword{with}
|
|
statement to suppress the exception and continue execution with the
|
|
statement immediately following the \keyword{with} statement. Otherwise
|
|
the exception continues propagating after this method has finished
|
|
executing. Exceptions that occur during execution of this method will
|
|
replace any exception that occurred in the body of the \keyword{with}
|
|
statement.
|
|
|
|
The exception passed in should never be reraised explicitly - instead,
|
|
this method should return a false value to indicate that the method
|
|
completed successfully and does not want to suppress the raised
|
|
exception. This allows context management code (such as
|
|
\code{contextlib.nested}) to easily detect whether or not an
|
|
\method{__exit__()} method has actually failed.
|
|
\end{methoddesc}
|
|
|
|
Python defines several context managers to support easy thread
|
|
synchronisation, prompt closure of files or other objects, and
|
|
simpler manipulation of the active decimal arithmetic
|
|
context. The specific types are not treated specially beyond
|
|
their implementation of the context management protocol.
|
|
|
|
Python's generators and the \code{contextlib.contextfactory} decorator
|
|
provide a convenient way to implement these protocols. If a generator
|
|
function is decorated with the \code{contextlib.contextfactory}
|
|
decorator, it will return a context manager implementing the necessary
|
|
\method{__enter__()} and \method{__exit__()} methods, rather than the
|
|
iterator produced by an undecorated generator function.
|
|
|
|
Note that there is no specific slot for any of these methods in the
|
|
type structure for Python objects in the Python/C API. Extension
|
|
types wanting to define these methods must provide them as a normal
|
|
Python accessible method. Compared to the overhead of setting up the
|
|
runtime context, the overhead of a single class dictionary lookup
|
|
is negligible.
|
|
|
|
|
|
\section{Other Built-in Types \label{typesother}}
|
|
|
|
The interpreter supports several other kinds of objects.
|
|
Most of these support only one or two operations.
|
|
|
|
|
|
\subsection{Modules \label{typesmodules}}
|
|
|
|
The only special operation on a module is attribute access:
|
|
\code{\var{m}.\var{name}}, where \var{m} is a module and \var{name}
|
|
accesses a name defined in \var{m}'s symbol table. Module attributes
|
|
can be assigned to. (Note that the \keyword{import} statement is not,
|
|
strictly speaking, an operation on a module object; \code{import
|
|
\var{foo}} does not require a module object named \var{foo} to exist,
|
|
rather it requires an (external) \emph{definition} for a module named
|
|
\var{foo} somewhere.)
|
|
|
|
A special member of every module is \member{__dict__}.
|
|
This is the dictionary containing the module's symbol table.
|
|
Modifying this dictionary will actually change the module's symbol
|
|
table, but direct assignment to the \member{__dict__} attribute is not
|
|
possible (you can write \code{\var{m}.__dict__['a'] = 1}, which
|
|
defines \code{\var{m}.a} to be \code{1}, but you can't write
|
|
\code{\var{m}.__dict__ = \{\}}). Modifying \member{__dict__} directly
|
|
is not recommended.
|
|
|
|
Modules built into the interpreter are written like this:
|
|
\code{<module 'sys' (built-in)>}. If loaded from a file, they are
|
|
written as \code{<module 'os' from
|
|
'/usr/local/lib/python\shortversion/os.pyc'>}.
|
|
|
|
|
|
\subsection{Classes and Class Instances \label{typesobjects}}
|
|
\nodename{Classes and Instances}
|
|
|
|
See chapters 3 and 7 of the \citetitle[../ref/ref.html]{Python
|
|
Reference Manual} for these.
|
|
|
|
|
|
\subsection{Functions \label{typesfunctions}}
|
|
|
|
Function objects are created by function definitions. The only
|
|
operation on a function object is to call it:
|
|
\code{\var{func}(\var{argument-list})}.
|
|
|
|
There are really two flavors of function objects: built-in functions
|
|
and user-defined functions. Both support the same operation (to call
|
|
the function), but the implementation is different, hence the
|
|
different object types.
|
|
|
|
See the \citetitle[../ref/ref.html]{Python Reference Manual} for more
|
|
information.
|
|
|
|
\subsection{Methods \label{typesmethods}}
|
|
\obindex{method}
|
|
|
|
Methods are functions that are called using the attribute notation.
|
|
There are two flavors: built-in methods (such as \method{append()} on
|
|
lists) and class instance methods. Built-in methods are described
|
|
with the types that support them.
|
|
|
|
The implementation adds two special read-only attributes to class
|
|
instance methods: \code{\var{m}.im_self} is the object on which the
|
|
method operates, and \code{\var{m}.im_func} is the function
|
|
implementing the method. Calling \code{\var{m}(\var{arg-1},
|
|
\var{arg-2}, \textrm{\ldots}, \var{arg-n})} is completely equivalent to
|
|
calling \code{\var{m}.im_func(\var{m}.im_self, \var{arg-1},
|
|
\var{arg-2}, \textrm{\ldots}, \var{arg-n})}.
|
|
|
|
Class instance methods are either \emph{bound} or \emph{unbound},
|
|
referring to whether the method was accessed through an instance or a
|
|
class, respectively. When a method is unbound, its \code{im_self}
|
|
attribute will be \code{None} and if called, an explicit \code{self}
|
|
object must be passed as the first argument. In this case,
|
|
\code{self} must be an instance of the unbound method's class (or a
|
|
subclass of that class), otherwise a \exception{TypeError} is raised.
|
|
|
|
Like function objects, methods objects support getting
|
|
arbitrary attributes. However, since method attributes are actually
|
|
stored on the underlying function object (\code{meth.im_func}),
|
|
setting method attributes on either bound or unbound methods is
|
|
disallowed. Attempting to set a method attribute results in a
|
|
\exception{TypeError} being raised. In order to set a method attribute,
|
|
you need to explicitly set it on the underlying function object:
|
|
|
|
\begin{verbatim}
|
|
class C:
|
|
def method(self):
|
|
pass
|
|
|
|
c = C()
|
|
c.method.im_func.whoami = 'my name is c'
|
|
\end{verbatim}
|
|
|
|
See the \citetitle[../ref/ref.html]{Python Reference Manual} for more
|
|
information.
|
|
|
|
|
|
\subsection{Code Objects \label{bltin-code-objects}}
|
|
\obindex{code}
|
|
|
|
Code objects are used by the implementation to represent
|
|
``pseudo-compiled'' executable Python code such as a function body.
|
|
They differ from function objects because they don't contain a
|
|
reference to their global execution environment. Code objects are
|
|
returned by the built-in \function{compile()} function and can be
|
|
extracted from function objects through their \member{__code__}
|
|
attribute.
|
|
\bifuncindex{compile}
|
|
\withsubitem{(function object attribute)}{\ttindex{__code__}}
|
|
|
|
A code object can be executed or evaluated by passing it (instead of a
|
|
source string) to the \function{exec()} or \function{eval()}
|
|
built-in functions.
|
|
\bifuncindex{exec}
|
|
\bifuncindex{eval}
|
|
|
|
See the \citetitle[../ref/ref.html]{Python Reference Manual} for more
|
|
information.
|
|
|
|
|
|
\subsection{Type Objects \label{bltin-type-objects}}
|
|
|
|
Type objects represent the various object types. An object's type is
|
|
accessed by the built-in function \function{type()}. There are no special
|
|
operations on types. The standard module \refmodule{types} defines names
|
|
for all standard built-in types.
|
|
\bifuncindex{type}
|
|
\refstmodindex{types}
|
|
|
|
Types are written like this: \code{<type 'int'>}.
|
|
|
|
|
|
\subsection{The Null Object \label{bltin-null-object}}
|
|
|
|
This object is returned by functions that don't explicitly return a
|
|
value. It supports no special operations. There is exactly one null
|
|
object, named \code{None} (a built-in name).
|
|
|
|
It is written as \code{None}.
|
|
|
|
|
|
\subsection{The Ellipsis Object \label{bltin-ellipsis-object}}
|
|
|
|
This object is mostly used by extended slice notation (see the
|
|
\citetitle[../ref/ref.html]{Python Reference Manual}). It supports no
|
|
special operations. There is exactly one ellipsis object, named
|
|
\constant{Ellipsis} (a built-in name).
|
|
|
|
It is written as \code{Ellipsis} or \code{...}.
|
|
|
|
\subsection{Boolean Values}
|
|
|
|
Boolean values are the two constant objects \code{False} and
|
|
\code{True}. They are used to represent truth values (although other
|
|
values can also be considered false or true). In numeric contexts
|
|
(for example when used as the argument to an arithmetic operator),
|
|
they behave like the integers 0 and 1, respectively. The built-in
|
|
function \function{bool()} can be used to cast any value to a Boolean,
|
|
if the value can be interpreted as a truth value (see section Truth
|
|
Value Testing above).
|
|
|
|
They are written as \code{False} and \code{True}, respectively.
|
|
\index{False}
|
|
\index{True}
|
|
\indexii{Boolean}{values}
|
|
|
|
|
|
\subsection{Internal Objects \label{typesinternal}}
|
|
|
|
See the \citetitle[../ref/ref.html]{Python Reference Manual} for this
|
|
information. It describes stack frame objects, traceback objects, and
|
|
slice objects.
|
|
|
|
|
|
\section{Special Attributes \label{specialattrs}}
|
|
|
|
The implementation adds a few special read-only attributes to several
|
|
object types, where they are relevant. Some of these are not reported
|
|
by the \function{dir()} built-in function.
|
|
|
|
\begin{memberdesc}[object]{__dict__}
|
|
A dictionary or other mapping object used to store an
|
|
object's (writable) attributes.
|
|
\end{memberdesc}
|
|
|
|
\begin{memberdesc}[object]{__methods__}
|
|
\deprecated{2.2}{Use the built-in function \function{dir()} to get a
|
|
list of an object's attributes. This attribute is no longer available.}
|
|
\end{memberdesc}
|
|
|
|
\begin{memberdesc}[object]{__members__}
|
|
\deprecated{2.2}{Use the built-in function \function{dir()} to get a
|
|
list of an object's attributes. This attribute is no longer available.}
|
|
\end{memberdesc}
|
|
|
|
\begin{memberdesc}[instance]{__class__}
|
|
The class to which a class instance belongs.
|
|
\end{memberdesc}
|
|
|
|
\begin{memberdesc}[class]{__bases__}
|
|
The tuple of base classes of a class object. If there are no base
|
|
classes, this will be an empty tuple.
|
|
\end{memberdesc}
|
|
|
|
\begin{memberdesc}[class]{__name__}
|
|
The name of the class or type.
|
|
\end{memberdesc}
|