1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
|
+++++++++++
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 #1161914: Add a python-config script.
- Patch #1324762:Remove ccpython.cc; replace --with-cxx with
--with-cxx-main. Link with C++ compiler only if --with-cxx-main was
specified. (Can be overridden by explicitly setting LINKCC.) Decouple
CXX from --with-cxx-main, see description in README.
- 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.)**
|