| +++++++++++ |
| Python News |
| +++++++++++ |
| |
| (editors: check NEWS.help for information about editing NEWS using ReST.) |
| |
| What's New in Python 2.5 alpha 2? |
| ================================= |
| |
| *Release date: XX-XXX-2006* |
| |
| Core and builtins |
| ----------------- |
| |
| - Bug #1454485, array.array('u') could crash the interpreter. This was |
| due to PyArgs_ParseTuple(args, 'u#', ...) trying to convert buffers (strings) |
| to unicode when it didn't make sense. 'u#' now requires a unicode string. |
| |
| - Py_UNICODE is unsigned. It was always documented as unsigned, but |
| due to a bug had a signed value in previous versions. |
| |
| - Patch #837242: ``id()`` of any Python object always gives a positive |
| number now, which might be a long integer. ``PyLong_FromVoidPtr`` and |
| ``PyLong_AsVoidPtr`` have been changed accordingly. Note that it has |
| never been correct to implement a ``__hash()__`` method that returns the |
| ``id()`` of an object: |
| |
| def __hash__(self): |
| return id(self) # WRONG |
| |
| because a hash result must be a (short) Python int but it was always |
| possible for ``id()`` to return a Python long. However, because ``id()`` |
| could return negative values before, on a 32-bit box an ``id()`` result |
| was always usable as a hash value before this patch. That's no longer |
| necessarily so. |
| |
| - Python on OS X 10.3 and above now uses dlopen() (via dynload_shlib.c) |
| to load extension modules and now provides the dl module. As a result, |
| sys.setdlopenflags() now works correctly on these systems. (SF patch |
| #1454844) |
| |
| - Patch #1463867: enhanced garbage collection to allow cleanup of cycles |
| involving generators that have paused outside of any ``try`` or ``with`` |
| blocks. (In 2.5a1, a paused generator that was part of a reference |
| cycle could not be garbage collected, regardless of whether it was |
| paused in a ``try`` or ``with`` block.) |
| |
| Extension Modules |
| ----------------- |
| |
| - Bug #1467952: os.listdir() now correctly raises an error if readdir() |
| fails with an error condition. |
| |
| - Fixed bsddb.db.DBError derived exceptions so they can be unpickled. |
| |
| - Bug #1117761: bsddb.*open() no longer raises an exception when using |
| the cachesize parameter. |
| |
| - Bug #1149413: bsddb.*open() no longer raises an exception when using |
| a temporary db (file=None) with the 'n' flag to truncate on open. |
| |
| - Bug #1332852: bsddb module minimum BerkeleyDB version raised to 3.3 |
| as older versions cause excessive test failures. |
| |
| Library |
| ------- |
| |
| - SimpleXMLRPCServer relied on the fcntl module, which is unavailable on |
| Windows. Bug #1469163. |
| |
| - The warnings, linecache, inspect, traceback, site, and doctest modules |
| were updated to work correctly with modules imported from zipfiles or |
| via other PEP 302 __loader__ objects. |
| |
| - Patch #1467770: Reduce usage of subprocess._active to processes which |
| the application hasn't waited on. |
| |
| - Patch #1462222: Fix Tix.Grid. |
| |
| - Fix exception when doing glob.glob('anything*/') |
| |
| Build |
| ----- |
| |
| - Patch #1429775: Link extension modules with the shared libpython. |
| |
| C API |
| ----- |
| |
| Tests |
| ----- |
| |
| - The test_contextlib test in 2.5a1 wasn't actually run unless you ran |
| it separately and by hand. It also wasn't cleaning up its changes to |
| the current Decimal context. |
| |
| |
| Documentation |
| ------------- |
| |
| |
| |
| What's New in Python 2.5 alpha 1? |
| ================================= |
| |
| *Release date: 05-APR-2006* |
| |
| Core and builtins |
| ----------------- |
| |
| - Bug #1421664: sys.stderr.encoding is now set to the same value as |
| sys.stdout.encoding. |
| |
| - __import__ accepts keyword arguments. |
| |
| - Patch #1460496: round() now accepts keyword arguments. |
| |
| - Fixed bug #1459029 - unicode reprs were double-escaped. |
| |
| - Patch #1396919: The system scope threads are reenabled on FreeBSD |
| 5.4 and later versions. |
| |
| - Bug #1115379: Compiling a Unicode string with an encoding declaration |
| now gives a SyntaxError. |
| |
| - Previously, Python code had no easy way to access the contents of a |
| cell object. Now, a ``cell_contents`` attribute has been added |
| (closes patch #1170323). |
| |
| - Patch #1123430: Python's small-object allocator now returns an arena to |
| the system ``free()`` when all memory within an arena becomes unused |
| again. Prior to Python 2.5, arenas (256KB chunks of memory) were never |
| freed. Some applications will see a drop in virtual memory size now, |
| especially long-running applications that, from time to time, temporarily |
| use a large number of small objects. Note that when Python returns an |
| arena to the platform C's ``free()``, there's no guarantee that the |
| platform C will in turn return that memory to the operating system. The |
| effect of the patch is to stop making that impossible, and in tests it |
| appears to be effective at least on Microsoft C and gcc-based systems. |
| Thanks to Evan Jones for hard work and patience. |
| |
| - Patch #1434038: property() now uses the getter's docstring if there is |
| no "doc" argument given. This makes it possible to legitimately use |
| property() as a decorator to produce a read-only property. |
| |
| - PEP 357, patch 1436368: add an __index__ method to int/long and a matching |
| nb_index slot to the PyNumberMethods struct. The slot is consulted instead |
| of requiring an int or long in slicing and a few other contexts, enabling |
| other objects (e.g. Numeric Python's integers) to be used as slice indices. |
| |
| - Fixed various bugs reported by Coverity's Prevent tool. |
| |
| - PEP 352, patch #1104669: Make exceptions new-style objects. Introduced the |
| new exception base class, BaseException, which has a new message attribute. |
| KeyboardInterrupt and SystemExit to directly inherit from BaseException now. |
| Raising a string exception now raises a DeprecationWarning. |
| |
| - Patch #1438387, PEP 328: relative and absolute imports. Imports can now be |
| explicitly relative, using 'from .module import name' to mean 'from the same |
| package as this module is in. Imports without dots still default to the |
| old relative-then-absolute, unless 'from __future__ import |
| absolute_import' is used. |
| |
| - Properly check if 'warnings' raises an exception (usually when a filter set |
| to "error" is triggered) when raising a warning for raising string |
| exceptions. |
| |
| - CO_GENERATOR_ALLOWED is no longer defined. This behavior is the default. |
| The name was removed from Include/code.h. |
| |
| - PEP 308: conditional expressions were added: (x if cond else y). |
| |
| - Patch 1433928: |
| - The copy module now "copies" function objects (as atomic objects). |
| - dict.__getitem__ now looks for a __missing__ hook before raising |
| KeyError. |
| |
| - PEP 343: with statement implemented. Needs ``from __future__ import |
| with_statement``. Use of 'with' as a variable will generate a warning. |
| Use of 'as' as a variable will also generate a warning (unless it's |
| part of an import statement). |
| The following objects have __context__ methods: |
| - The built-in file type. |
| - The thread.LockType type. |
| - The following types defined by the threading module: |
| Lock, RLock, Condition, Semaphore, BoundedSemaphore. |
| - The decimal.Context class. |
| |
| - Fix the encodings package codec search function to only search |
| inside its own package. Fixes problem reported in patch #1433198. |
| |
| Note: Codec packages should implement and register their own |
| codec search function. PEP 100 has the details. |
| |
| - PEP 353: Using ssize_t as the index type. |
| |
| - Patch #1400181, fix unicode string formatting to not use the locale. |
| This is how string objects work. u'%f' could use , instead of . |
| for the decimal point. Now both strings and unicode always use periods. |
| |
| - Bug #1244610, #1392915, fix build problem on OpenBSD 3.7 and 3.8. |
| configure would break checking curses.h. |
| |
| - Bug #959576: The pwd module is now builtin. This allows Python to be |
| built on UNIX platforms without $HOME set. |
| |
| - Bug #1072182, fix some potential problems if characters are signed. |
| |
| - Bug #889500, fix line number on SyntaxWarning for global declarations. |
| |
| - Bug #1378022, UTF-8 files with a leading BOM crashed the interpreter. |
| |
| - Support for converting hex strings to floats no longer works. |
| This was not portable. float('0x3') now raises a ValueError. |
| |
| - Patch #1382163: Expose Subversion revision number to Python. New C API |
| function Py_GetBuildNumber(). New attribute sys.subversion. Build number |
| is now displayed in interactive prompt banner. |
| |
| - Implementation of PEP 341 - Unification of try/except and try/finally. |
| "except" clauses can now be written together with a "finally" clause in |
| one try statement instead of two nested ones. Patch #1355913. |
| |
| - Bug #1379994: Builtin unicode_escape and raw_unicode_escape codec |
| now encodes backslash correctly. |
| |
| - Patch #1350409: Work around signal handling bug in Visual Studio 2005. |
| |
| - Bug #1281408: Py_BuildValue now works correctly even with unsigned longs |
| and long longs. |
| |
| - SF Bug #1350188, "setdlopenflags" leads to crash upon "import" |
| It was possible for dlerror() to return a NULL pointer, so |
| it will now use a default error message in this case. |
| |
| - Replaced most Unicode charmap codecs with new ones using the |
| new Unicode translate string feature in the builtin charmap |
| codec; the codecs were created from the mapping tables available |
| at ftp.unicode.org and contain a few updates (e.g. the Mac OS |
| encodings now include a mapping for the Apple logo) |
| |
| - Added a few more codecs for Mac OS encodings |
| |
| - Sped up some Unicode operations. |
| |
| - A new AST parser implementation was completed. The abstract |
| syntax tree is available for read-only (non-compile) access |
| to Python code; an _ast module was added. |
| |
| - SF bug #1167751: fix incorrect code being produced for generator expressions. |
| The following code now raises a SyntaxError: foo(a = i for i in range(10)) |
| |
| - SF Bug #976608: fix SystemError when mtime of an imported file is -1. |
| |
| - SF Bug #887946: fix segfault when redirecting stdin from a directory. |
| Provide a warning when a directory is passed on the command line. |
| |
| - Fix segfault with invalid coding. |
| |
| - SF bug #772896: unknown encoding results in MemoryError. |
| |
| - All iterators now have a Boolean value of True. Formerly, some iterators |
| supported a __len__() method which evaluated to False when the iterator |
| was empty. |
| |
| - On 64-bit platforms, when __len__() returns a value that cannot be |
| represented as a C int, raise OverflowError. |
| |
| - test__locale is skipped on OS X < 10.4 (only partial locale support is |
| present). |
| |
| - SF bug #893549: parsing keyword arguments was broken with a few format |
| codes. |
| |
| - Changes donated by Elemental Security to make it work on AIX 5.3 |
| with IBM's 64-bit compiler (SF patch #1284289). This also closes SF |
| bug #105470: test_pwd fails on 64bit system (Opteron). |
| |
| - Changes donated by Elemental Security to make it work on HP-UX 11 on |
| Itanium2 with HP's 64-bit compiler (SF patch #1225212). |
| |
| - Disallow keyword arguments for type constructors that don't use them |
| (fixes bug #1119418). |
| |
| - Forward UnicodeDecodeError into SyntaxError for source encoding errors. |
| |
| - SF bug #900092: When tracing (e.g. for hotshot), restore 'return' events for |
| exceptions that cause a function to exit. |
| |
| - The implementation of set() and frozenset() was revised to use its |
| own internal data structure. Memory consumption is reduced by 1/3 |
| and there are modest speed-ups as well. The API is unchanged. |
| |
| - SF bug #1238681: freed pointer is used in longobject.c:long_pow(). |
| |
| - SF bug #1229429: PyObject_CallMethod failed to decrement some |
| reference counts in some error exit cases. |
| |
| - SF bug #1185883: Python's small-object memory allocator took over |
| a block managed by the platform C library whenever a realloc specified |
| a small new size. However, there's no portable way to know then how |
| much of the address space following the pointer is valid, so there's no |
| portable way to copy data from the C-managed block into Python's |
| small-object space without risking a memory fault. Python's small-object |
| realloc now leaves such blocks under the control of the platform C |
| realloc. |
| |
| - SF bug #1232517: An overflow error was not detected properly when |
| attempting to convert a large float to an int in os.utime(). |
| |
| - SF bug #1224347: hex longs now print with lowercase letters just |
| like their int counterparts. |
| |
| - SF bug #1163563: the original fix for bug #1010677 ("thread Module |
| Breaks PyGILState_Ensure()") broke badly in the case of multiple |
| interpreter states; back out that fix and do a better job (see |
| http://mail.python.org/pipermail/python-dev/2005-June/054258.html |
| for a longer write-up of the problem). |
| |
| - SF patch #1180995: marshal now uses a binary format by default when |
| serializing floats. |
| |
| - SF patch #1181301: on platforms that appear to use IEEE 754 floats, |
| the routines that promise to produce IEEE 754 binary representations |
| of floats now simply copy bytes around. |
| |
| - bug #967182: disallow opening files with 'wU' or 'aU' as specified by PEP |
| 278. |
| |
| - patch #1109424: int, long, float, complex, and unicode now check for the |
| proper magic slot for type conversions when subclassed. Previously the |
| magic slot was ignored during conversion. Semantics now match the way |
| subclasses of str always behaved. int/long/float, conversion of an instance |
| to the base class has been moved to the proper nb_* magic slot and out of |
| PyNumber_*(). |
| Thanks Walter Dörwald. |
| |
| - Descriptors defined in C with a PyGetSetDef structure, where the setter is |
| NULL, now raise an AttributeError when attempting to set or delete the |
| attribute. Previously a TypeError was raised, but this was inconsistent |
| with the equivalent pure-Python implementation. |
| |
| - It is now safe to call PyGILState_Release() before |
| PyEval_InitThreads() (note that if there is reason to believe there |
| are multiple threads around you still must call PyEval_InitThreads() |
| before using the Python API; this fix is for extension modules that |
| have no way of knowing if Python is multi-threaded yet). |
| |
| - Typing Ctrl-C whilst raw_input() was waiting in a build with threads |
| disabled caused a crash. |
| |
| - Bug #1165306: instancemethod_new allowed the creation of a method |
| with im_class == im_self == NULL, which caused a crash when called. |
| |
| - Move exception finalisation later in the shutdown process - this |
| fixes the crash seen in bug #1165761 |
| |
| - Added two new builtins, any() and all(). |
| |
| - Defining a class with empty parentheses is now allowed |
| (e.g., ``class C(): pass`` is no longer a syntax error). |
| Patch #1176012 added support to the 'parser' module and 'compiler' package |
| (thanks to logistix for that added support). |
| |
| - Patch #1115086: Support PY_LONGLONG in structmember. |
| |
| - Bug #1155938: new style classes did not check that __init__() was |
| returning None. |
| |
| - Patch #802188: Report characters after line continuation character |
| ('\') with a specific error message. |
| |
| - Bug #723201: Raise a TypeError for passing bad objects to 'L' format. |
| |
| - Bug #1124295: the __name__ attribute of file objects was |
| inadvertently made inaccessible in restricted mode. |
| |
| - Bug #1074011: closing sys.std{out,err} now causes a flush() and |
| an ferror() call. |
| |
| - min() and max() now support key= arguments with the same meaning as in |
| list.sort(). |
| |
| - The peephole optimizer now performs simple constant folding in expressions: |
| (2+3) --> (5). |
| |
| - set and frozenset objects can now be marshalled. SF #1098985. |
| |
| - Bug #1077106: Poor argument checking could cause memory corruption |
| in calls to os.read(). |
| |
| - The parser did not complain about future statements in illegal |
| positions. It once again reports a syntax error if a future |
| statement occurs after anything other than a doc string. |
| |
| - Change the %s format specifier for str objects so that it returns a |
| unicode instance if the argument is not an instance of basestring and |
| calling __str__ on the argument returns a unicode instance. |
| |
| - Patch #1413181: changed ``PyThreadState_Delete()`` to forget about the |
| current thread state when the auto-GIL-state machinery knows about |
| it (since the thread state is being deleted, continuing to remember it |
| can't help, but can hurt if another thread happens to get created with |
| the same thread id). |
| |
| Extension Modules |
| ----------------- |
| |
| - Patch #1380952: fix SSL objects timing out on consecutive read()s |
| |
| - Patch #1309579: wait3 and wait4 were added to the posix module. |
| |
| - Patch #1231053: The audioop module now supports encoding/decoding of alaw. |
| In addition, the existing ulaw code was updated. |
| |
| - RFE #567972: Socket objects' family, type and proto properties are |
| now exposed via new attributes. |
| |
| - Everything under lib-old was removed. This includes the following modules: |
| Para, addpack, cmp, cmpcache, codehack, dircmp, dump, find, fmt, grep, |
| lockfile, newdir, ni, packmail, poly, rand, statcache, tb, tzparse, |
| util, whatsound, whrandom, zmod |
| |
| - The following modules were removed: regsub, reconvert, regex, regex_syntax. |
| |
| - re and sre were swapped, so help(re) provides full help. importing sre |
| is deprecated. The undocumented re.engine variable no longer exists. |
| |
| - Bug #1448490: Fixed a bug that ISO-2022 codecs could not handle |
| SS2 (single-shift 2) escape sequences correctly. |
| |
| - The unicodedata module was updated to the 4.1 version of the Unicode |
| database. The 3.2 version is still available as unicodedata.db_3_2_0 |
| for applications that require this specific version (such as IDNA). |
| |
| - The timing module is no longer built by default. It was deprecated |
| in PEP 4 in Python 2.0 or earlier. |
| |
| - Patch 1433928: Added a new type, defaultdict, to the collections module. |
| This uses the new __missing__ hook behavior added to dict (see above). |
| |
| - Bug #854823: socketmodule now builds on Sun platforms even when |
| INET_ADDRSTRLEN is not defined. |
| |
| - Patch #1393157: os.startfile() now has an optional argument to specify |
| a "command verb" to invoke on the file. |
| |
| - Bug #876637, prevent stack corruption when socket descriptor |
| is larger than FD_SETSIZE. |
| |
| - Patch #1407135, bug #1424041: harmonize mmap behavior of anonymous memory. |
| mmap.mmap(-1, size) now returns anonymous memory in both Unix and Windows. |
| mmap.mmap(0, size) should not be used on Windows for anonymous memory. |
| |
| - Patch #1422385: The nis module now supports access to domains other |
| than the system default domain. |
| |
| - Use Win32 API to implement os.stat/fstat. As a result, subsecond timestamps |
| are reported, the limit on path name lengths is removed, and stat reports |
| WindowsError now (instead of OSError). |
| |
| - Add bsddb.db.DBEnv.set_tx_timestamp allowing time based database recovery. |
| |
| - Bug #1413192, fix seg fault in bsddb if a transaction was deleted |
| before the env. |
| |
| - Patch #1103116: Basic AF_NETLINK support. |
| |
| - Bug #1402308, (possible) segfault when using mmap.mmap(-1, ...) |
| |
| - Bug #1400822, _curses over{lay,write} doesn't work when passing 6 ints. |
| Also fix ungetmouse() which did not accept arguments properly. |
| The code now conforms to the documented signature. |
| |
| - Bug #1400115, Fix segfault when calling curses.panel.userptr() |
| without prior setting of the userptr. |
| |
| - Fix 64-bit problems in bsddb. |
| |
| - Patch #1365916: fix some unsafe 64-bit mmap methods. |
| |
| - Bug #1290333: Added a workaround for cjkcodecs' _codecs_cn build |
| problem on AIX. |
| |
| - Bug #869197: os.setgroups rejects long integer arguments |
| |
| - Bug #1346533, select.poll() doesn't raise an error if timeout > sys.maxint |
| |
| - Bug #1344508, Fix UNIX mmap leaking file descriptors |
| |
| - Patch #1338314, Bug #1336623: fix tarfile so it can extract |
| REGTYPE directories from tarfiles written by old programs. |
| |
| - Patch #1407992, fixes broken bsddb module db associate when using |
| BerkeleyDB 3.3, 4.0 or 4.1. |
| |
| - Get bsddb module to build with BerkeleyDB version 4.4 |
| |
| - Get bsddb module to build with BerkeleyDB version 3.2 |
| |
| - Patch #1309009, Fix segfault in pyexpat when the XML document is in latin_1, |
| but Python incorrectly assumes it is in UTF-8 format |
| |
| - Fix parse errors in the readline module when compiling without threads. |
| |
| - Patch #1288833: Removed thread lock from socket.getaddrinfo on |
| FreeBSD 5.3 and later versions which got thread-safe getaddrinfo(3). |
| |
| - Patches #1298449 and #1298499: Add some missing checks for error |
| returns in cStringIO.c. |
| |
| - Patch #1297028: fix segfault if call type on MultibyteCodec, |
| MultibyteStreamReader, or MultibyteStreamWriter |
| |
| - Fix memory leak in posix.access(). |
| |
| - Patch #1213831: Fix typo in unicodedata._getcode. |
| |
| - Bug #1007046: os.startfile() did not accept unicode strings encoded in |
| the file system encoding. |
| |
| - Patch #756021: Special-case socket.inet_aton('255.255.255.255') for |
| platforms that don't have inet_aton(). |
| |
| - Bug #1215928: Fix bz2.BZ2File.seek() for 64-bit file offsets. |
| |
| - Bug #1191043: Fix bz2.BZ2File.(x)readlines for files containing one |
| line without newlines. |
| |
| - Bug #728515: mmap.resize() now resizes the file on Unix as it did |
| on Windows. |
| |
| - Patch #1180695: Add nanosecond stat resolution, and st_gen, |
| st_birthtime for FreeBSD. |
| |
| - Patch #1231069: The fcntl.ioctl function now uses the 'I' code for |
| the request code argument, which results in more C-like behaviour |
| for large or negative values. |
| |
| - Bug #1234979: For the argument of thread.Lock.acquire, the Windows |
| implementation treated all integer values except 1 as false. |
| |
| - Bug #1194181: bz2.BZ2File didn't handle mode 'U' correctly. |
| |
| - Patch #1212117: os.stat().st_flags is now accessible as a attribute |
| if available on the platform. |
| |
| - Patch #1103951: Expose O_SHLOCK and O_EXLOCK in the posix module if |
| available on the platform. |
| |
| - Bug #1166660: The readline module could segfault if hook functions |
| were set in a different thread than that which called readline. |
| |
| - collections.deque objects now support a remove() method. |
| |
| - operator.itemgetter() and operator.attrgetter() now support retrieving |
| multiple fields. This provides direct support for sorting on multiple |
| keys (primary, secondary, etc). |
| |
| - os.access now supports Unicode path names on non-Win32 systems. |
| |
| - Patches #925152, #1118602: Avoid reading after the end of the buffer |
| in pyexpat.GetInputContext. |
| |
| - Patches #749830, #1144555: allow UNIX mmap size to default to current |
| file size. |
| |
| - Added functional.partial(). See PEP309. |
| |
| - Patch #1093585: raise a ValueError for negative history items in readline. |
| {remove_history,replace_history} |
| |
| - The spwd module has been added, allowing access to the shadow password |
| database. |
| |
| - stat_float_times is now True. |
| |
| - array.array objects are now picklable. |
| |
| - the cPickle module no longer accepts the deprecated None option in the |
| args tuple returned by __reduce__(). |
| |
| - itertools.islice() now accepts None for the start and step arguments. |
| This allows islice() to work more readily with slices: |
| islice(s.start, s.stop, s.step) |
| |
| - datetime.datetime() now has a strptime class method which can be used to |
| create datetime object using a string and format. |
| |
| - Patch #1117961: Replace the MD5 implementation from RSA Data Security Inc |
| with the implementation from http://sourceforge.net/projects/libmd5-rfc/. |
| |
| Library |
| ------- |
| |
| - The email module's parsedate_tz function now sets the daylight savings |
| flag to -1 (unknown) since it can't tell from the date whether it should |
| be set. |
| |
| - Patch #624325: urlparse.urlparse() and urlparse.urlsplit() results |
| now sport attributes that provide access to the parts of the result. |
| |
| - Patch #1462498: sgmllib now handles entity and character references |
| in attribute values. |
| |
| - Added the sqlite3 package. This is based on pysqlite2.1.3, and provides |
| a DB-API interface in the standard library. You'll need sqlite 3.0.8 or |
| later to build this - if you have an earlier version, the C extension |
| module will not be built. |
| |
| - Bug #1460340: ``random.sample(dict)`` failed in various ways. Dicts |
| aren't officially supported here, and trying to use them will probably |
| raise an exception some day. But dicts have been allowed, and "mostly |
| worked", so support for them won't go away without warning. |
| |
| - Bug #1445068: getpass.getpass() can now be given an explicit stream |
| argument to specify where to write the prompt. |
| |
| - Patch #1462313, bug #1443328: the pickle modules now can handle classes |
| that have __private names in their __slots__. |
| |
| - Bug #1250170: mimetools now handles socket.gethostname() failures gracefully. |
| |
| - patch #1457316: "setup.py upload" now supports --identity to select the |
| key to be used for signing the uploaded code. |
| |
| - Queue.Queue objects now support .task_done() and .join() methods |
| to make it easier to monitor when daemon threads have completed |
| processing all enqueued tasks. Patch #1455676. |
| |
| - popen2.Popen objects now preserve the command in a .cmd attribute. |
| |
| - Added the ctypes ffi package. |
| |
| - email 4.0 package now integrated. This is largely the same as the email 3.0 |
| package that was included in Python 2.3, except that PEP 8 module names are |
| now used (e.g. mail.message instead of email.Message). The MIME classes |
| have been moved to a subpackage (e.g. email.mime.text instead of |
| email.MIMEText). The old names are still supported for now. Several |
| deprecated Message methods have been removed and lots of bugs have been |
| fixed. More details can be found in the email package documentation. |
| |
| - Patches #1436130/#1443155: codecs.lookup() now returns a CodecInfo object |
| (a subclass of tuple) that provides incremental decoders and encoders |
| (a way to use stateful codecs without the stream API). Python functions |
| codecs.getincrementaldecoder() and codecs.getincrementalencoder() as well |
| as C functions PyCodec_IncrementalEncoder() and PyCodec_IncrementalDecoder() |
| have been added. |
| |
| - Patch #1359365: Calling next() on a closed StringIO.String object raises |
| a ValueError instead of a StopIteration now (like file and cString.String do). |
| cStringIO.StringIO.isatty() will raise a ValueError now if close() has been |
| called before (like file and StringIO.StringIO do). |
| |
| - A regrtest option -w was added to re-run failed tests in verbose mode. |
| |
| - Patch #1446372: quit and exit can now be called from the interactive |
| interpreter to exit. |
| |
| - The function get_count() has been added to the gc module, and gc.collect() |
| grew an optional 'generation' argument. |
| |
| - A library msilib to generate Windows Installer files, and a distutils |
| command bdist_msi have been added. |
| |
| - PEP 343: new module contextlib.py defines decorator @contextmanager |
| and helpful context managers nested() and closing(). |
| |
| - The compiler package now supports future imports after the module docstring. |
| |
| - Bug #1413790: zipfile now sanitizes absolute archive names that are |
| not allowed by the specs. |
| |
| - Patch #1215184: FileInput now can be given an opening hook which can |
| be used to control how files are opened. |
| |
| - Patch #1212287: fileinput.input() now has a mode parameter for |
| specifying the file mode input files should be opened with. |
| |
| - Patch #1215184: fileinput now has a fileno() function for getting the |
| current file number. |
| |
| - Patch #1349274: gettext.install() now optionally installs additional |
| translation functions other than _() in the builtin namespace. |
| |
| - Patch #1337756: fileinput now accepts Unicode filenames. |
| |
| - Patch #1373643: The chunk module can now read chunks larger than |
| two gigabytes. |
| |
| - Patch #1417555: SimpleHTTPServer now returns Last-Modified headers. |
| |
| - Bug #1430298: It is now possible to send a mail with an empty |
| return address using smtplib. |
| |
| - Bug #1432260: The names of lambda functions are now properly displayed |
| in pydoc. |
| |
| - Patch #1412872: zipfile now sets the creator system to 3 (Unix) |
| unless the system is Win32. |
| |
| - Patch #1349118: urllib now supports user:pass@ style proxy |
| specifications, raises IOErrors when proxies for unsupported protocols |
| are defined, and uses the https proxy on https redirections. |
| |
| - Bug #902075: urllib2 now supports 'host:port' style proxy specifications. |
| |
| - Bug #1407902: Add support for sftp:// URIs to urlparse. |
| |
| - Bug #1371247: Update Windows locale identifiers in locale.py. |
| |
| - Bug #1394565: SimpleHTTPServer now doesn't choke on query parameters |
| any more. |
| |
| - Bug #1403410: The warnings module now doesn't get confused |
| when it can't find out the module name it generates a warning for. |
| |
| - Patch #1177307: Added a new codec utf_8_sig for UTF-8 with a BOM signature. |
| |
| - Patch #1157027: cookielib mishandles RFC 2109 cookies in Netscape mode |
| |
| - Patch #1117398: cookielib.LWPCookieJar and .MozillaCookieJar now raise |
| LoadError as documented, instead of IOError. For compatibility, |
| LoadError subclasses IOError. |
| |
| - Added the hashlib module. It provides secure hash functions for MD5 and |
| SHA1, 224, 256, 384, and 512. Note that recent developments make the |
| historic MD5 and SHA1 unsuitable for cryptographic-strength applications. |
| In <http://mail.python.org/pipermail/python-dev/2005-December/058850.html> |
| Ronald L. Rivest offered this advice for Python: |
| |
| "The consensus of researchers in this area (at least as |
| expressed at the NIST Hash Function Workshop 10/31/05), |
| is that SHA-256 is a good choice for the time being, but |
| that research should continue, and other alternatives may |
| arise from this research. The larger SHA's also seem OK." |
| |
| - Added a subset of Fredrik Lundh's ElementTree package. Available |
| modules are xml.etree.ElementTree, xml.etree.ElementPath, and |
| xml.etree.ElementInclude, from ElementTree 1.2.6. |
| |
| - Patch #1162825: Support non-ASCII characters in IDLE window titles. |
| |
| - Bug #1365984: urllib now opens "data:" URLs again. |
| |
| - Patch #1314396: prevent deadlock for threading.Thread.join() when an exception |
| is raised within the method itself on a previous call (e.g., passing in an |
| illegal argument) |
| |
| - Bug #1340337: change time.strptime() to always return ValueError when there |
| is an error in the format string. |
| |
| - Patch #754022: Greatly enhanced webbrowser.py (by Oleg Broytmann). |
| |
| - Bug #729103: pydoc.py: Fix docother() method to accept additional |
| "parent" argument. |
| |
| - Patch #1300515: xdrlib.py: Fix pack_fstring() to really use null bytes |
| for padding. |
| |
| - Bug #1296004: httplib.py: Limit maximal amount of data read from the |
| socket to avoid a MemoryError on Windows. |
| |
| - Patch #1166948: locale.py: Prefer LC_ALL, LC_CTYPE and LANG over LANGUAGE |
| to get the correct encoding. |
| |
| - Patch #1166938: locale.py: Parse LANGUAGE as a colon separated list of |
| languages. |
| |
| - Patch #1268314: Cache lines in StreamReader.readlines for performance. |
| |
| - Bug #1290505: Fix clearing the regex cache for time.strptime(). |
| |
| - Bug #1167128: Fix size of a symlink in a tarfile to be 0. |
| |
| - Patch #810023: Fix off-by-one bug in urllib.urlretrieve reporthook |
| functionality. |
| |
| - Bug #1163178: Make IDNA return an empty string when the input is empty. |
| |
| - Patch #848017: Make Cookie more RFC-compliant. Use CRLF as default output |
| separator and do not output trailing semicolon. |
| |
| - Patch #1062060: urllib.urlretrieve() now raises a new exception, named |
| ContentTooShortException, when the actually downloaded size does not |
| match the Content-Length header. |
| |
| - Bug #1121494: distutils.dir_utils.mkpath now accepts Unicode strings. |
| |
| - Bug #1178484: Return complete lines from codec stream readers |
| even if there is an exception in later lines, resulting in |
| correct line numbers for decoding errors in source code. |
| |
| - Bug #1192315: Disallow negative arguments to clear() in pdb. |
| |
| - Patch #827386: Support absolute source paths in msvccompiler.py. |
| |
| - Patch #1105730: Apply the new implementation of commonprefix in posixpath |
| to ntpath, macpath, os2emxpath and riscospath. |
| |
| - Fix a problem in Tkinter introduced by SF patch #869468: delete bogus |
| __hasattr__ and __delattr__ methods on class Tk that were breaking |
| Tkdnd. |
| |
| - Bug #1015140: disambiguated the term "article id" in nntplib docs and |
| docstrings to either "article number" or "message id". |
| |
| - Bug #1238170: threading.Thread.__init__ no longer has "kwargs={}" as a |
| parameter, but uses the usual "kwargs=None". |
| |
| - textwrap now processes text chunks at O(n) speed instead of O(n**2). |
| Patch #1209527 (Contributed by Connelly). |
| |
| - urllib2 has now an attribute 'httpresponses' mapping from HTTP status code |
| to W3C name (404 -> 'Not Found'). RFE #1216944. |
| |
| - Bug #1177468: Don't cache the /dev/urandom file descriptor for os.urandom, |
| as this can cause problems with apps closing all file descriptors. |
| |
| - Bug #839151: Fix an attempt to access sys.argv in the warnings module; |
| it can be missing in embedded interpreters |
| |
| - Bug #1155638: Fix a bug which affected HTTP 0.9 responses in httplib. |
| |
| - Bug #1100201: Cross-site scripting was possible on BaseHTTPServer via |
| error messages. |
| |
| - Bug #1108948: Cookie.py produced invalid JavaScript code. |
| |
| - The tokenize module now detects and reports indentation errors. |
| Bug #1224621. |
| |
| - The tokenize module has a new untokenize() function to support a full |
| roundtrip from lexed tokens back to Python source code. In addition, |
| the generate_tokens() function now accepts a callable argument that |
| terminates by raising StopIteration. |
| |
| - Bug #1196315: fix weakref.WeakValueDictionary constructor. |
| |
| - Bug #1213894: os.path.realpath didn't resolve symlinks that were the first |
| component of the path. |
| |
| - Patch #1120353: The xmlrpclib module provides better, more transparent, |
| support for datetime.{datetime,date,time} objects. With use_datetime set |
| to True, applications shouldn't have to fiddle with the DateTime wrapper |
| class at all. |
| |
| - distutils.commands.upload was added to support uploading distribution |
| files to PyPI. |
| |
| - distutils.commands.register now encodes the data as UTF-8 before posting |
| them to PyPI. |
| |
| - decimal operator and comparison methods now return NotImplemented |
| instead of raising a TypeError when interacting with other types. This |
| allows other classes to implement __radd__ style methods and have them |
| work as expected. |
| |
| - Bug #1163325: Decimal infinities failed to hash. Attempting to |
| hash a NaN raised an InvalidOperation instead of a TypeError. |
| |
| - Patch #918101: Add tarfile open mode r|* for auto-detection of the |
| stream compression; add, for symmetry reasons, r:* as a synonym of r. |
| |
| - Patch #1043890: Add extractall method to tarfile. |
| |
| - Patch #1075887: Don't require MSVC in distutils if there is nothing |
| to build. |
| |
| - Patch #1103407: Properly deal with tarfile iterators when untarring |
| symbolic links on Windows. |
| |
| - Patch #645894: Use getrusage for computing the time consumption in |
| profile.py if available. |
| |
| - Patch #1046831: Use get_python_version where appropriate in sysconfig.py. |
| |
| - Patch #1117454: Remove code to special-case cookies without values |
| in LWPCookieJar. |
| |
| - Patch #1117339: Add cookielib special name tests. |
| |
| - Patch #1112812: Make bsddb/__init__.py more friendly for modulefinder. |
| |
| - Patch #1110248: SYNC_FLUSH the zlib buffer for GZipFile.flush. |
| |
| - Patch #1107973: Allow to iterate over the lines of a tarfile.ExFileObject. |
| |
| - Patch #1104111: Alter setup.py --help and --help-commands. |
| |
| - Patch #1121234: Properly cleanup _exit and tkerror commands. |
| |
| - Patch #1049151: xdrlib now unpacks booleans as True or False. |
| |
| - Fixed bug in a NameError bug in cookielib. Patch #1116583. |
| |
| - Applied a security fix to SimpleXMLRPCserver (PSF-2005-001). This |
| disables recursive traversal through instance attributes, which can |
| be exploited in various ways. |
| |
| - Bug #1222790: in SimpleXMLRPCServer, set the reuse-address and close-on-exec |
| flags on the HTTP listening socket. |
| |
| - Bug #792570: SimpleXMLRPCServer had problems if the request grew too large. |
| Fixed by reading the HTTP body in chunks instead of one big socket.read(). |
| |
| - Patches #893642, #1039083: add allow_none, encoding arguments to constructors of |
| SimpleXMLRPCServer and CGIXMLRPCRequestHandler. |
| |
| - Bug #1110478: Revert os.environ.update to do putenv again. |
| |
| - Bug #1103844: fix distutils.install.dump_dirs() with negated options. |
| |
| - os.{SEEK_SET, SEEK_CUR, SEEK_END} have been added for convenience. |
| |
| - Enhancements to the csv module: |
| |
| + Dialects are now validated by the underlying C code, better |
| reflecting its capabilities, and improving its compliance with |
| PEP 305. |
| + Dialect parameter parsing has been re-implemented to improve error |
| reporting. |
| + quotechar=None and quoting=QUOTE_NONE now work the way PEP 305 |
| dictates. |
| + the parser now removes the escapechar prefix from escaped characters. |
| + when quoting=QUOTE_NONNUMERIC, the writer now tests for numeric |
| types, rather than any object than can be represented as a numeric. |
| + when quoting=QUOTE_NONNUMERIC, the reader now casts unquoted fields |
| to floats. |
| + reader now allows \r characters to be quoted (previously it only allowed |
| \n to be quoted). |
| + writer doublequote handling improved. |
| + Dialect classes passed to the module are no longer instantiated by |
| the module before being parsed (the former validation scheme required |
| this, but the mechanism was unreliable). |
| + The dialect registry now contains instances of the internal |
| C-coded dialect type, rather than references to python objects. |
| + the internal c-coded dialect type is now immutable. |
| + register_dialect now accepts the same keyword dialect specifications |
| as the reader and writer, allowing the user to register dialects |
| without first creating a dialect class. |
| + a configurable limit to the size of parsed fields has been added - |
| previously, an unmatched quote character could result in the entire |
| file being read into the field buffer before an error was reported. |
| + A new module method csv.field_size_limit() has been added that sets |
| the parser field size limit (returning the former limit). The initial |
| limit is 128kB. |
| + A line_num attribute has been added to the reader object, which tracks |
| the number of lines read from the source iterator. This is not |
| the same as the number of records returned, as records can span |
| multiple lines. |
| + reader and writer objects were not being registered with the cyclic-GC. |
| This has been fixed. |
| |
| - _DummyThread objects in the threading module now delete self.__block that is |
| inherited from _Thread since it uses up a lock allocated by 'thread'. The |
| lock primitives tend to be limited in number and thus should not be wasted on |
| a _DummyThread object. Fixes bug #1089632. |
| |
| - The imghdr module now detects Exif files. |
| |
| - StringIO.truncate() now correctly adjusts the size attribute. |
| (Bug #951915). |
| |
| - locale.py now uses an updated locale alias table (built using |
| Tools/i18n/makelocalealias.py, a tool to parse the X11 locale |
| alias file); the encoding lookup was enhanced to use Python's |
| encoding alias table. |
| |
| - moved deprecated modules to Lib/lib-old: whrandom, tzparse, statcache. |
| |
| - the pickle module no longer accepts the deprecated None option in the |
| args tuple returned by __reduce__(). |
| |
| - optparse now optionally imports gettext. This allows its use in setup.py. |
| |
| - the pickle module no longer uses the deprecated bin parameter. |
| |
| - the shelve module no longer uses the deprecated binary parameter. |
| |
| - the pstats module no longer uses the deprecated ignore() method. |
| |
| - the filecmp module no longer uses the deprecated use_statcache argument. |
| |
| - unittest.TestCase.run() and unittest.TestSuite.run() can now be successfully |
| extended or overridden by subclasses. Formerly, the subclassed method would |
| be ignored by the rest of the module. (Bug #1078905). |
| |
| - heapq.nsmallest() and heapq.nlargest() now support key= arguments with |
| the same meaning as in list.sort(). |
| |
| - Bug #1076985: ``codecs.StreamReader.readline()`` now calls ``read()`` only |
| once when a size argument is given. This prevents a buffer overflow in the |
| tokenizer with very long source lines. |
| |
| - Bug #1083110: ``zlib.decompress.flush()`` would segfault if called |
| immediately after creating the object, without any intervening |
| ``.decompress()`` calls. |
| |
| - The reconvert.quote function can now emit triple-quoted strings. The |
| reconvert module now has some simple documentation. |
| |
| - ``UserString.MutableString`` now supports negative indices in |
| ``__setitem__`` and ``__delitem__`` |
| |
| - Bug #1149508: ``textwrap`` now handles hyphenated numbers (eg. "2004-03-05") |
| correctly. |
| |
| - Partial fixes for SF bugs #1163244 and #1175396: If a chunk read by |
| ``codecs.StreamReader.readline()`` has a trailing "\r", read one more |
| character even if the user has passed a size parameter to get a proper |
| line ending. Remove the special handling of a "\r\n" that has been split |
| between two lines. |
| |
| - Bug #1251300: On UCS-4 builds the "unicode-internal" codec will now complain |
| about illegal code points. The codec now supports PEP 293 style error |
| handlers. |
| |
| - Bug #1235646: ``codecs.StreamRecoder.next()`` now reencodes the data it reads |
| from the input stream, so that the output is a byte string in the correct |
| encoding instead of a unicode string. |
| |
| - Bug #1202493: Fixing SRE parser to handle '{}' as perl does, rather than |
| considering it exactly like a '*'. |
| |
| - Bug #1245379: Add "unicode-1-1-utf-7" as an alias for "utf-7" to |
| ``encodings.aliases``. |
| |
| - ` uu.encode()`` and ``uu.decode()`` now support unicode filenames. |
| |
| - Patch #1413711: Certain patterns of differences were making difflib |
| touch the recursion limit. |
| |
| - Bug #947906: An object oriented interface has been added to the calendar |
| module. It's possible to generate HTML calendar now and the module can be |
| called as a script (e.g. via ``python -mcalendar``). Localized month and |
| weekday names can be ouput (even if an exotic encoding is used) using |
| special classes that use unicode. |
| |
| Build |
| ----- |
| |
| - Fix test_float, test_long, and test_struct failures on Tru64 with gcc |
| by using -mieee gcc option. |
| |
| - Patch #1432345: Make python compile on DragonFly. |
| |
| - Build support for Win64-AMD64 was added. |
| |
| - Patch #1428494: Prefer linking against ncursesw over ncurses library. |
| |
| - Patch #881820: look for openpty and forkpty also in libbsd. |
| |
| - The sources of zlib are now part of the Python distribution (zlib 1.2.3). |
| The zlib module is now builtin on Windows. |
| |
| - Use -xcode=pic32 for CCSHARED on Solaris with SunPro. |
| |
| - Bug #1189330: configure did not correctly determine the necessary |
| value of LINKCC if python was built with GCC 4.0. |
| |
| - Upgrade Windows build to zlib 1.2.3 which eliminates a potential security |
| vulnerability in zlib 1.2.1 and 1.2.2. |
| |
| - EXTRA_CFLAGS has been introduced as an environment variable to hold compiler |
| flags that change binary compatibility. Changes were also made to |
| distutils.sysconfig to also use the environment variable when used during |
| compilation of the interpreter and of C extensions through distutils. |
| |
| - SF patch 1171735: Darwin 8's headers are anal about POSIX compliance, |
| and linking has changed (prebinding is now deprecated, and libcc_dynamic |
| no longer exists). This configure patch makes things right. |
| |
| - Bug #1158607: Build with --disable-unicode again. |
| |
| - spwdmodule.c is built only if either HAVE_GETSPNAM or HAVE_HAVE_GETSPENT is |
| defined. Discovered as a result of not being able to build on OS X. |
| |
| - setup.py now uses the directories specified in LDFLAGS using the -L option |
| and in CPPFLAGS using the -I option for adding library and include |
| directories, respectively, for compiling extension modules against. This has |
| led to the core being compiled using the values in CPPFLAGS. It also removes |
| the need for the special-casing of both DarwinPorts and Fink for darwin since |
| the proper directories can be specified in LDFLAGS (``-L/sw/lib`` for Fink, |
| ``-L/opt/local/lib`` for DarwinPorts) and CPPFLAGS (``-I/sw/include`` for |
| Fink, ``-I/opt/local/include`` for DarwinPorts). |
| |
| - Test in configure.in that checks for tzset no longer dependent on tm->tm_zone |
| to exist in the struct (not required by either ISO C nor the UNIX 2 spec). |
| Tests for sanity in tzname when HAVE_TZNAME defined were also defined. |
| Closes bug #1096244. Thanks Gregory Bond. |
| |
| C API |
| ----- |
| |
| - ``PyMem_{Del, DEL}`` and ``PyMem_{Free, FREE}`` no longer map to |
| ``PyObject_{Free, FREE}``. They map to the system ``free()`` now. If memory |
| is obtained via the ``PyObject_`` family, it must be released via the |
| ``PyObject_`` family, and likewise for the ``PyMem_`` family. This has |
| always been officially true, but when Python's small-object allocator was |
| introduced, an attempt was made to cater to a few extension modules |
| discovered at the time that obtained memory via ``PyObject_New`` but |
| released it via ``PyMem_DEL``. It's years later, and if such code still |
| exists it will fail now (probably with segfaults, but calling wrong |
| low-level memory management functions can yield many symptoms). |
| |
| - Added a C API for set and frozenset objects. |
| |
| - Removed PyRange_New(). |
| |
| - Patch #1313939: PyUnicode_DecodeCharmap() accepts a unicode string as the |
| mapping argument now. This string is used as a mapping table. Byte values |
| greater than the length of the string and 0xFFFE are treated as undefined |
| mappings. |
| |
| |
| Tests |
| ----- |
| |
| - In test_os, st_?time is now truncated before comparing it with ST_?TIME. |
| |
| - Patch #1276356: New resource "urlfetch" is implemented. This enables |
| even impatient people to run tests that require remote files. |
| |
| |
| Documentation |
| ------------- |
| |
| - Bug #1402224: Add warning to dl docs about crashes. |
| |
| - Bug #1396471: Document that Windows' ftell() can return invalid |
| values for text files with UNIX-style line endings. |
| |
| - Bug #1274828: Document os.path.splitunc(). |
| |
| - Bug #1190204: Clarify which directories are searched by site.py. |
| |
| - Bug #1193849: Clarify os.path.expanduser() documentation. |
| |
| - Bug #1243192: re.UNICODE and re.LOCALE affect \d, \D, \s and \S. |
| |
| - Bug #755617: Document the effects of os.chown() on Windows. |
| |
| - Patch #1180012: The documentation for modulefinder is now in the library reference. |
| |
| - Patch #1213031: Document that os.chown() accepts argument values of -1. |
| |
| - Bug #1190563: Document os.waitpid() return value with WNOHANG flag. |
| |
| - Bug #1175022: Correct the example code for property(). |
| |
| - Document the IterableUserDict class in the UserDict module. |
| Closes bug #1166582. |
| |
| - Remove all latent references for "Macintosh" that referred to semantics for |
| Mac OS 9 and change to reflect the state for OS X. |
| Closes patch #1095802. Thanks Jack Jansen. |
| |
| Mac |
| --- |
| |
| |
| New platforms |
| ------------- |
| |
| - FreeBSD 7 support is added. |
| |
| |
| Tools/Demos |
| ----------- |
| |
| - Created Misc/Vim/vim_syntax.py to auto-generate a python.vim file in that |
| directory for syntax highlighting in Vim. Vim directory was added and placed |
| vimrc to it (was previous up a level). |
| |
| - Added two new files to Tools/scripts: pysource.py, which recursively |
| finds Python source files, and findnocoding.py, which finds Python |
| source files that need an encoding declaration. |
| Patch #784089, credits to Oleg Broytmann. |
| |
| - Bug #1072853: pindent.py used an uninitialized variable. |
| |
| - Patch #1177597: Correct Complex.__init__. |
| |
| - Fixed a display glitch in Pynche, which could cause the right arrow to |
| wiggle over by a pixel. |
| |
| ---- |
| |
| **(For information about older versions, consult the HISTORY file.)** |