Commit cc5ea686 authored by Georg Brandl's avatar Georg Brandl

Merge in changes from 3.2.1b1 release repo.

parents 00dd182b 34f2433f
...@@ -85,3 +85,4 @@ e3af5f3a7904c0d5343ec9633ea66e7acfd23a66 v3.2b2 ...@@ -85,3 +85,4 @@ e3af5f3a7904c0d5343ec9633ea66e7acfd23a66 v3.2b2
acf3e24dd0d0dfd1e20c907d696d3da965a8f56f v3.2rc2 acf3e24dd0d0dfd1e20c907d696d3da965a8f56f v3.2rc2
18c1f52896501c7ee13b038454a39acb45a87979 v3.2rc3 18c1f52896501c7ee13b038454a39acb45a87979 v3.2rc3
a222a015e28d8ae9af3899258dc6c15c3d40add0 v3.2 a222a015e28d8ae9af3899258dc6c15c3d40add0 v3.2
8ffac2337a3323323d02153ac919fd1483176652 v3.2.1b1
...@@ -186,99 +186,6 @@ documenting/fromlatex,152,:noindex,:noindex: ...@@ -186,99 +186,6 @@ documenting/fromlatex,152,:noindex,:noindex:
documenting/fromlatex,162,.. describe:,.. describe:: a == b documenting/fromlatex,162,.. describe:,.. describe:: a == b
documenting/fromlatex,168,.. cmdoption:,.. cmdoption:: -O documenting/fromlatex,168,.. cmdoption:,.. cmdoption:: -O
documenting/fromlatex,168,.. envvar:,.. envvar:: PYTHONINSPECT documenting/fromlatex,168,.. envvar:,.. envvar:: PYTHONINSPECT
documenting/markup,33,.. sectionauthor:,.. sectionauthor:: Guido van Rossum <guido@python.org>
documenting/markup,42,:mod,:mod:`parrot` -- Dead parrot access
documenting/markup,42,`,:mod:`parrot` -- Dead parrot access
documenting/markup,42,.. module:,.. module:: parrot
documenting/markup,42,:platform,":platform: Unix, Windows"
documenting/markup,42,:synopsis,:synopsis: Analyze and reanimate dead parrots.
documenting/markup,42,.. moduleauthor:,.. moduleauthor:: Eric Cleese <eric@python.invalid>
documenting/markup,42,.. moduleauthor:,.. moduleauthor:: John Idle <john@python.invalid>
documenting/markup,88,:noindex,:noindex:
documenting/markup,95,.. function:,.. function:: spam(eggs)
documenting/markup,95,:noindex,:noindex:
documenting/markup,101,.. method:,.. method:: FileInput.input(...)
documenting/markup,121,:function,c:function
documenting/markup,121,.. c:,".. c:function:: PyObject* PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems)"
documenting/markup,121,::,".. c:function:: PyObject* PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems)"
documenting/markup,131,:member,c:member
documenting/markup,131,.. c:,.. c:member:: PyObject* PyTypeObject.tp_bases
documenting/markup,131,::,.. c:member:: PyObject* PyTypeObject.tp_bases
documenting/markup,139,:macro,c:macro
documenting/markup,143,:type,c:type
documenting/markup,150,:var,c:var
documenting/markup,150,.. cvar:,.. cvar:: PyObject* PyClass_Type
documenting/markup,179,.. function:,".. function:: Timer.repeat([repeat=3[, number=1000000]])"
documenting/markup,210,.. decorator:,.. decorator:: removename
documenting/markup,210,.. decorator:,.. decorator:: setnewname(name)
documenting/markup,210,:func,:func:
documenting/markup,233,:meth,:meth:
documenting/markup,246,.. cmdoption:,.. cmdoption:: -m <module>
documenting/markup,264,.. describe:,.. describe:: opcode
documenting/markup,293,.. highlightlang:,.. highlightlang:: c
documenting/markup,313,.. literalinclude:,.. literalinclude:: example.py
documenting/markup,328,:rolename,:rolename:`content`
documenting/markup,328,`,:rolename:`content`
documenting/markup,333,:role,:role:`title <target>`
documenting/markup,333,`,:role:`title <target>`
documenting/markup,339,:meth,:meth:`~Queue.Queue.get`
documenting/markup,339,`,:meth:`~Queue.Queue.get`
documenting/markup,387,:func,:func:`filter`
documenting/markup,387,`,:func:`filter`
documenting/markup,387,:func,:func:`foo.filter`
documenting/markup,387,`,:func:`foo.filter`
documenting/markup,393,:func,:func:`open`
documenting/markup,393,`,:func:`open`
documenting/markup,393,:func,:func:`.open`
documenting/markup,393,`,:func:`.open`
documenting/markup,409,:data,c:data
documenting/markup,413,:func,c:func
documenting/markup,417,:macro,c:macro
documenting/markup,421,:type,c:type
documenting/markup,426,:member,c:member
documenting/markup,476,:file,... is installed in :file:`/usr/lib/python2.{x}/site-packages` ...
documenting/markup,476,`,... is installed in :file:`/usr/lib/python2.{x}/site-packages` ...
documenting/markup,495,:kbd,:kbd:`C-x C-f`
documenting/markup,495,`,:kbd:`C-x C-f`
documenting/markup,495,:kbd,:kbd:`Control-x Control-f`
documenting/markup,495,`,:kbd:`Control-x Control-f`
documenting/markup,509,:mailheader,:mailheader:`Content-Type`
documenting/markup,509,`,:mailheader:`Content-Type`
documenting/markup,518,:manpage,:manpage:`ls(1)`
documenting/markup,518,`,:manpage:`ls(1)`
documenting/markup,534,:menuselection,:menuselection:`Start --> Programs`
documenting/markup,534,`,:menuselection:`Start --> Programs`
documenting/markup,549,`,``code``
documenting/markup,567,:file,:file:
documenting/markup,567,`,``code``
documenting/markup,602,:ref,:ref:`label-name`
documenting/markup,602,`,:ref:`label-name`
documenting/markup,606,:ref,"It refers to the section itself, see :ref:`my-reference-label`."
documenting/markup,606,`,"It refers to the section itself, see :ref:`my-reference-label`."
documenting/markup,615,:ref,:ref:
documenting/markup,636,.. note:,.. note::
documenting/markup,663,.. versionadded:,.. versionadded:: 3.1
documenting/markup,688,::,.. impl-detail::
documenting/markup,688,::,.. impl-detail:: This shortly mentions an implementation detail.
documenting/markup,708,.. seealso:,.. seealso::
documenting/markup,708,:mod,Module :mod:`zipfile`
documenting/markup,708,`,Module :mod:`zipfile`
documenting/markup,708,:mod,Documentation of the :mod:`zipfile` standard module.
documenting/markup,708,`,Documentation of the :mod:`zipfile` standard module.
documenting/markup,708,`,"`GNU tar manual, Basic Tar Format <http://link>`_"
documenting/markup,722,.. centered:,.. centered::
documenting/markup,767,.. toctree:,.. toctree::
documenting/markup,767,:maxdepth,:maxdepth: 2
documenting/markup,783,.. index:,.. index::
documenting/markup,813,.. index:,".. index:: BNF, grammar, syntax, notation"
documenting/markup,844,`,"unaryneg ::= ""-"" `integer`"
documenting/markup,849,.. productionlist:,.. productionlist::
documenting/markup,849,`,"try1_stmt: ""try"" "":"" `suite`"
documenting/markup,849,`,": (""except"" [`expression` ["","" `target`]] "":"" `suite`)+"
documenting/markup,849,`,": [""else"" "":"" `suite`]"
documenting/markup,849,`,": [""finally"" "":"" `suite`]"
documenting/markup,849,`,"try2_stmt: ""try"" "":"" `suite`"
documenting/markup,849,`,": ""finally"" "":"" `suite`"
documenting/rest,33,`,``text`` documenting/rest,33,`,``text``
documenting/rest,47,:rolename,:rolename:`content` documenting/rest,47,:rolename,:rolename:`content`
documenting/rest,47,`,:rolename:`content` documenting/rest,47,`,:rolename:`content`
...@@ -386,3 +293,101 @@ whatsnew/3.2,,:cafe,"netloc='[dead:beef:cafe:5417:affe:8FA3:deaf:feed]'," ...@@ -386,3 +293,101 @@ whatsnew/3.2,,:cafe,"netloc='[dead:beef:cafe:5417:affe:8FA3:deaf:feed]',"
whatsnew/3.2,,:affe,"netloc='[dead:beef:cafe:5417:affe:8FA3:deaf:feed]'," whatsnew/3.2,,:affe,"netloc='[dead:beef:cafe:5417:affe:8FA3:deaf:feed]',"
whatsnew/3.2,,:deaf,"netloc='[dead:beef:cafe:5417:affe:8FA3:deaf:feed]'," whatsnew/3.2,,:deaf,"netloc='[dead:beef:cafe:5417:affe:8FA3:deaf:feed]',"
whatsnew/3.2,,:feed,"netloc='[dead:beef:cafe:5417:affe:8FA3:deaf:feed]'," whatsnew/3.2,,:feed,"netloc='[dead:beef:cafe:5417:affe:8FA3:deaf:feed]',"
documenting/markup,33,.. sectionauthor:,.. sectionauthor:: Guido van Rossum <guido@python.org>
documenting/markup,42,:mod,:mod:`parrot` -- Dead parrot access
documenting/markup,42,`,:mod:`parrot` -- Dead parrot access
documenting/markup,42,.. module:,.. module:: parrot
documenting/markup,42,:platform,":platform: Unix, Windows"
documenting/markup,42,:synopsis,:synopsis: Analyze and reanimate dead parrots.
documenting/markup,42,.. moduleauthor:,.. moduleauthor:: Eric Cleese <eric@python.invalid>
documenting/markup,42,.. moduleauthor:,.. moduleauthor:: John Idle <john@python.invalid>
documenting/markup,88,:noindex,:noindex:
documenting/markup,95,.. function:,.. function:: spam(eggs)
documenting/markup,95,:noindex,:noindex:
documenting/markup,101,.. method:,.. method:: FileInput.input(...)
documenting/markup,121,:function,c:function
documenting/markup,121,.. c:,".. c:function:: PyObject* PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems)"
documenting/markup,121,::,".. c:function:: PyObject* PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems)"
documenting/markup,131,:member,c:member
documenting/markup,131,.. c:,.. c:member:: PyObject* PyTypeObject.tp_bases
documenting/markup,131,::,.. c:member:: PyObject* PyTypeObject.tp_bases
documenting/markup,139,:macro,c:macro
documenting/markup,143,:type,c:type
documenting/markup,150,:var,c:var
documenting/markup,150,.. cvar:,.. cvar:: PyObject* PyClass_Type
documenting/markup,179,.. function:,".. function:: repeat([repeat=3[, number=1000000]])"
documenting/markup,210,.. decorator:,.. decorator:: removename
documenting/markup,210,.. decorator:,.. decorator:: setnewname(name)
documenting/markup,210,:func,:func:
documenting/markup,237,.. class:,.. class:: Spam
documenting/markup,237,.. data:,.. data:: ham
documenting/markup,237,.. data:,.. data:: Spam.eggs
documenting/markup,250,:meth,:meth:
documenting/markup,263,.. cmdoption:,.. cmdoption:: -m <module>
documenting/markup,281,.. describe:,.. describe:: opcode
documenting/markup,310,.. highlightlang:,.. highlightlang:: c
documenting/markup,330,.. literalinclude:,.. literalinclude:: example.py
documenting/markup,345,:rolename,:rolename:`content`
documenting/markup,345,`,:rolename:`content`
documenting/markup,350,:role,:role:`title <target>`
documenting/markup,350,`,:role:`title <target>`
documenting/markup,356,:meth,:meth:`~Queue.Queue.get`
documenting/markup,356,`,:meth:`~Queue.Queue.get`
documenting/markup,404,:func,:func:`filter`
documenting/markup,404,`,:func:`filter`
documenting/markup,404,:func,:func:`foo.filter`
documenting/markup,404,`,:func:`foo.filter`
documenting/markup,410,:func,:func:`open`
documenting/markup,410,`,:func:`open`
documenting/markup,410,:func,:func:`.open`
documenting/markup,410,`,:func:`.open`
documenting/markup,426,:data,c:data
documenting/markup,430,:func,c:func
documenting/markup,434,:macro,c:macro
documenting/markup,438,:type,c:type
documenting/markup,443,:member,c:member
documenting/markup,493,:file,... is installed in :file:`/usr/lib/python2.{x}/site-packages` ...
documenting/markup,493,`,... is installed in :file:`/usr/lib/python2.{x}/site-packages` ...
documenting/markup,512,:kbd,:kbd:`C-x C-f`
documenting/markup,512,`,:kbd:`C-x C-f`
documenting/markup,512,:kbd,:kbd:`Control-x Control-f`
documenting/markup,512,`,:kbd:`Control-x Control-f`
documenting/markup,526,:mailheader,:mailheader:`Content-Type`
documenting/markup,526,`,:mailheader:`Content-Type`
documenting/markup,535,:manpage,:manpage:`ls(1)`
documenting/markup,535,`,:manpage:`ls(1)`
documenting/markup,551,:menuselection,:menuselection:`Start --> Programs`
documenting/markup,551,`,:menuselection:`Start --> Programs`
documenting/markup,566,`,``code``
documenting/markup,585,:file,:file:
documenting/markup,585,`,``code``
documenting/markup,615,:ref,:ref:`label-name`
documenting/markup,615,`,:ref:`label-name`
documenting/markup,619,:ref,"It refers to the section itself, see :ref:`my-reference-label`."
documenting/markup,619,`,"It refers to the section itself, see :ref:`my-reference-label`."
documenting/markup,628,:ref,:ref:
documenting/markup,630,:ref,:ref:`link text <reference-label>`
documenting/markup,630,`,:ref:`link text <reference-label>`
documenting/markup,651,.. note:,.. note::
documenting/markup,678,.. versionadded:,.. versionadded:: 3.1
documenting/markup,703,::,.. impl-detail::
documenting/markup,703,::,.. impl-detail:: This shortly mentions an implementation detail.
documenting/markup,723,.. seealso:,.. seealso::
documenting/markup,723,:mod,Module :mod:`zipfile`
documenting/markup,723,`,Module :mod:`zipfile`
documenting/markup,723,:mod,Documentation of the :mod:`zipfile` standard module.
documenting/markup,723,`,Documentation of the :mod:`zipfile` standard module.
documenting/markup,723,`,"`GNU tar manual, Basic Tar Format <http://link>`_"
documenting/markup,737,.. centered:,.. centered::
documenting/markup,782,.. toctree:,.. toctree::
documenting/markup,782,:maxdepth,:maxdepth: 2
documenting/markup,798,.. index:,.. index::
documenting/markup,828,.. index:,".. index:: BNF, grammar, syntax, notation"
documenting/markup,859,`,"unaryneg ::= ""-"" `integer`"
documenting/markup,864,.. productionlist:,.. productionlist::
documenting/markup,864,`,"try1_stmt: ""try"" "":"" `suite`"
documenting/markup,864,`,": (""except"" [`expression` ["","" `target`]] "":"" `suite`)+"
documenting/markup,864,`,": [""else"" "":"" `suite`]"
documenting/markup,864,`,": [""finally"" "":"" `suite`]"
documenting/markup,864,`,"try2_stmt: ""try"" "":"" `suite`"
documenting/markup,864,`,": ""finally"" "":"" `suite`"
...@@ -18,12 +18,12 @@ ...@@ -18,12 +18,12 @@
/*--start constants--*/ /*--start constants--*/
#define PY_MAJOR_VERSION 3 #define PY_MAJOR_VERSION 3
#define PY_MINOR_VERSION 2 #define PY_MINOR_VERSION 2
#define PY_MICRO_VERSION 0 #define PY_MICRO_VERSION 1
#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL #define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_BETA
#define PY_RELEASE_SERIAL 0 #define PY_RELEASE_SERIAL 1
/* Version as a string */ /* Version as a string */
#define PY_VERSION "3.2.1a0" #define PY_VERSION "3.2.1b1"
/*--end constants--*/ /*--end constants--*/
/* Subversion Revision number of this file (not of the repository). Empty /* Subversion Revision number of this file (not of the repository). Empty
......
...@@ -15,5 +15,5 @@ __revision__ = "$Id$" ...@@ -15,5 +15,5 @@ __revision__ = "$Id$"
# Updated automatically by the Python release process. # Updated automatically by the Python release process.
# #
#--start constants-- #--start constants--
__version__ = "3.2" __version__ = "3.2.1b1"
#--end constants-- #--end constants--
IDLE_VERSION = "3.2" IDLE_VERSION = "3.2.1b1"
# Autogenerated by Sphinx on Thu Apr 28 07:47:47 2011 # Autogenerated by Sphinx on Sun May 8 09:06:25 2011
topics = {'assert': '\nThe ``assert`` statement\n************************\n\nAssert statements are a convenient way to insert debugging assertions\ninto a program:\n\n assert_stmt ::= "assert" expression ["," expression]\n\nThe simple form, ``assert expression``, is equivalent to\n\n if __debug__:\n if not expression: raise AssertionError\n\nThe extended form, ``assert expression1, expression2``, is equivalent\nto\n\n if __debug__:\n if not expression1: raise AssertionError(expression2)\n\nThese equivalences assume that ``__debug__`` and ``AssertionError``\nrefer to the built-in variables with those names. In the current\nimplementation, the built-in variable ``__debug__`` is ``True`` under\nnormal circumstances, ``False`` when optimization is requested\n(command line option -O). The current code generator emits no code\nfor an assert statement when optimization is requested at compile\ntime. Note that it is unnecessary to include the source code for the\nexpression that failed in the error message; it will be displayed as\npart of the stack trace.\n\nAssignments to ``__debug__`` are illegal. The value for the built-in\nvariable is determined when the interpreter starts.\n', topics = {'assert': '\nThe ``assert`` statement\n************************\n\nAssert statements are a convenient way to insert debugging assertions\ninto a program:\n\n assert_stmt ::= "assert" expression ["," expression]\n\nThe simple form, ``assert expression``, is equivalent to\n\n if __debug__:\n if not expression: raise AssertionError\n\nThe extended form, ``assert expression1, expression2``, is equivalent\nto\n\n if __debug__:\n if not expression1: raise AssertionError(expression2)\n\nThese equivalences assume that ``__debug__`` and ``AssertionError``\nrefer to the built-in variables with those names. In the current\nimplementation, the built-in variable ``__debug__`` is ``True`` under\nnormal circumstances, ``False`` when optimization is requested\n(command line option -O). The current code generator emits no code\nfor an assert statement when optimization is requested at compile\ntime. Note that it is unnecessary to include the source code for the\nexpression that failed in the error message; it will be displayed as\npart of the stack trace.\n\nAssignments to ``__debug__`` are illegal. The value for the built-in\nvariable is determined when the interpreter starts.\n',
'assignment': '\nAssignment statements\n*********************\n\nAssignment statements are used to (re)bind names to values and to\nmodify attributes or items of mutable objects:\n\n assignment_stmt ::= (target_list "=")+ (expression_list | yield_expression)\n target_list ::= target ("," target)* [","]\n target ::= identifier\n | "(" target_list ")"\n | "[" target_list "]"\n | attributeref\n | subscription\n | slicing\n | "*" target\n\n(See section *Primaries* for the syntax definitions for the last three\nsymbols.)\n\nAn assignment statement evaluates the expression list (remember that\nthis can be a single expression or a comma-separated list, the latter\nyielding a tuple) and assigns the single resulting object to each of\nthe target lists, from left to right.\n\nAssignment is defined recursively depending on the form of the target\n(list). When a target is part of a mutable object (an attribute\nreference, subscription or slicing), the mutable object must\nultimately perform the assignment and decide about its validity, and\nmay raise an exception if the assignment is unacceptable. The rules\nobserved by various types and the exceptions raised are given with the\ndefinition of the object types (see section *The standard type\nhierarchy*).\n\nAssignment of an object to a target list, optionally enclosed in\nparentheses or square brackets, is recursively defined as follows.\n\n* If the target list is a single target: The object is assigned to\n that target.\n\n* If the target list is a comma-separated list of targets: The object\n must be an iterable with the same number of items as there are\n targets in the target list, and the items are assigned, from left to\n right, to the corresponding targets.\n\n * If the target list contains one target prefixed with an asterisk,\n called a "starred" target: The object must be a sequence with at\n least as many items as there are targets in the target list, minus\n one. The first items of the sequence are assigned, from left to\n right, to the targets before the starred target. The final items\n of the sequence are assigned to the targets after the starred\n target. A list of the remaining items in the sequence is then\n assigned to the starred target (the list can be empty).\n\n * Else: The object must be a sequence with the same number of items\n as there are targets in the target list, and the items are\n assigned, from left to right, to the corresponding targets.\n\nAssignment of an object to a single target is recursively defined as\nfollows.\n\n* If the target is an identifier (name):\n\n * If the name does not occur in a ``global`` or ``nonlocal``\n statement in the current code block: the name is bound to the\n object in the current local namespace.\n\n * Otherwise: the name is bound to the object in the global namespace\n or the outer namespace determined by ``nonlocal``, respectively.\n\n The name is rebound if it was already bound. This may cause the\n reference count for the object previously bound to the name to reach\n zero, causing the object to be deallocated and its destructor (if it\n has one) to be called.\n\n* If the target is a target list enclosed in parentheses or in square\n brackets: The object must be an iterable with the same number of\n items as there are targets in the target list, and its items are\n assigned, from left to right, to the corresponding targets.\n\n* If the target is an attribute reference: The primary expression in\n the reference is evaluated. It should yield an object with\n assignable attributes; if this is not the case, ``TypeError`` is\n raised. That object is then asked to assign the assigned object to\n the given attribute; if it cannot perform the assignment, it raises\n an exception (usually but not necessarily ``AttributeError``).\n\n Note: If the object is a class instance and the attribute reference\n occurs on both sides of the assignment operator, the RHS expression,\n ``a.x`` can access either an instance attribute or (if no instance\n attribute exists) a class attribute. The LHS target ``a.x`` is\n always set as an instance attribute, creating it if necessary.\n Thus, the two occurrences of ``a.x`` do not necessarily refer to the\n same attribute: if the RHS expression refers to a class attribute,\n the LHS creates a new instance attribute as the target of the\n assignment:\n\n class Cls:\n x = 3 # class variable\n inst = Cls()\n inst.x = inst.x + 1 # writes inst.x as 4 leaving Cls.x as 3\n\n This description does not necessarily apply to descriptor\n attributes, such as properties created with ``property()``.\n\n* If the target is a subscription: The primary expression in the\n reference is evaluated. It should yield either a mutable sequence\n object (such as a list) or a mapping object (such as a dictionary).\n Next, the subscript expression is evaluated.\n\n If the primary is a mutable sequence object (such as a list), the\n subscript must yield an integer. If it is negative, the sequence\'s\n length is added to it. The resulting value must be a nonnegative\n integer less than the sequence\'s length, and the sequence is asked\n to assign the assigned object to its item with that index. If the\n index is out of range, ``IndexError`` is raised (assignment to a\n subscripted sequence cannot add new items to a list).\n\n If the primary is a mapping object (such as a dictionary), the\n subscript must have a type compatible with the mapping\'s key type,\n and the mapping is then asked to create a key/datum pair which maps\n the subscript to the assigned object. This can either replace an\n existing key/value pair with the same key value, or insert a new\n key/value pair (if no key with the same value existed).\n\n For user-defined objects, the ``__setitem__()`` method is called\n with appropriate arguments.\n\n* If the target is a slicing: The primary expression in the reference\n is evaluated. It should yield a mutable sequence object (such as a\n list). The assigned object should be a sequence object of the same\n type. Next, the lower and upper bound expressions are evaluated,\n insofar they are present; defaults are zero and the sequence\'s\n length. The bounds should evaluate to integers. If either bound is\n negative, the sequence\'s length is added to it. The resulting\n bounds are clipped to lie between zero and the sequence\'s length,\n inclusive. Finally, the sequence object is asked to replace the\n slice with the items of the assigned sequence. The length of the\n slice may be different from the length of the assigned sequence,\n thus changing the length of the target sequence, if the object\n allows it.\n\n**CPython implementation detail:** In the current implementation, the\nsyntax for targets is taken to be the same as for expressions, and\ninvalid syntax is rejected during the code generation phase, causing\nless detailed error messages.\n\nWARNING: Although the definition of assignment implies that overlaps\nbetween the left-hand side and the right-hand side are \'safe\' (for\nexample ``a, b = b, a`` swaps two variables), overlaps *within* the\ncollection of assigned-to variables are not safe! For instance, the\nfollowing program prints ``[0, 2]``:\n\n x = [0, 1]\n i = 0\n i, x[i] = 1, 2\n print(x)\n\nSee also:\n\n **PEP 3132** - Extended Iterable Unpacking\n The specification for the ``*target`` feature.\n\n\nAugmented assignment statements\n===============================\n\nAugmented assignment is the combination, in a single statement, of a\nbinary operation and an assignment statement:\n\n augmented_assignment_stmt ::= augtarget augop (expression_list | yield_expression)\n augtarget ::= identifier | attributeref | subscription | slicing\n augop ::= "+=" | "-=" | "*=" | "/=" | "//=" | "%=" | "**="\n | ">>=" | "<<=" | "&=" | "^=" | "|="\n\n(See section *Primaries* for the syntax definitions for the last three\nsymbols.)\n\nAn augmented assignment evaluates the target (which, unlike normal\nassignment statements, cannot be an unpacking) and the expression\nlist, performs the binary operation specific to the type of assignment\non the two operands, and assigns the result to the original target.\nThe target is only evaluated once.\n\nAn augmented assignment expression like ``x += 1`` can be rewritten as\n``x = x + 1`` to achieve a similar, but not exactly equal effect. In\nthe augmented version, ``x`` is only evaluated once. Also, when\npossible, the actual operation is performed *in-place*, meaning that\nrather than creating a new object and assigning that to the target,\nthe old object is modified instead.\n\nWith the exception of assigning to tuples and multiple targets in a\nsingle statement, the assignment done by augmented assignment\nstatements is handled the same way as normal assignments. Similarly,\nwith the exception of the possible *in-place* behavior, the binary\noperation performed by augmented assignment is the same as the normal\nbinary operations.\n\nFor targets which are attribute references, the same *caveat about\nclass and instance attributes* applies as for regular assignments.\n', 'assignment': '\nAssignment statements\n*********************\n\nAssignment statements are used to (re)bind names to values and to\nmodify attributes or items of mutable objects:\n\n assignment_stmt ::= (target_list "=")+ (expression_list | yield_expression)\n target_list ::= target ("," target)* [","]\n target ::= identifier\n | "(" target_list ")"\n | "[" target_list "]"\n | attributeref\n | subscription\n | slicing\n | "*" target\n\n(See section *Primaries* for the syntax definitions for the last three\nsymbols.)\n\nAn assignment statement evaluates the expression list (remember that\nthis can be a single expression or a comma-separated list, the latter\nyielding a tuple) and assigns the single resulting object to each of\nthe target lists, from left to right.\n\nAssignment is defined recursively depending on the form of the target\n(list). When a target is part of a mutable object (an attribute\nreference, subscription or slicing), the mutable object must\nultimately perform the assignment and decide about its validity, and\nmay raise an exception if the assignment is unacceptable. The rules\nobserved by various types and the exceptions raised are given with the\ndefinition of the object types (see section *The standard type\nhierarchy*).\n\nAssignment of an object to a target list, optionally enclosed in\nparentheses or square brackets, is recursively defined as follows.\n\n* If the target list is a single target: The object is assigned to\n that target.\n\n* If the target list is a comma-separated list of targets: The object\n must be an iterable with the same number of items as there are\n targets in the target list, and the items are assigned, from left to\n right, to the corresponding targets.\n\n * If the target list contains one target prefixed with an asterisk,\n called a "starred" target: The object must be a sequence with at\n least as many items as there are targets in the target list, minus\n one. The first items of the sequence are assigned, from left to\n right, to the targets before the starred target. The final items\n of the sequence are assigned to the targets after the starred\n target. A list of the remaining items in the sequence is then\n assigned to the starred target (the list can be empty).\n\n * Else: The object must be a sequence with the same number of items\n as there are targets in the target list, and the items are\n assigned, from left to right, to the corresponding targets.\n\nAssignment of an object to a single target is recursively defined as\nfollows.\n\n* If the target is an identifier (name):\n\n * If the name does not occur in a ``global`` or ``nonlocal``\n statement in the current code block: the name is bound to the\n object in the current local namespace.\n\n * Otherwise: the name is bound to the object in the global namespace\n or the outer namespace determined by ``nonlocal``, respectively.\n\n The name is rebound if it was already bound. This may cause the\n reference count for the object previously bound to the name to reach\n zero, causing the object to be deallocated and its destructor (if it\n has one) to be called.\n\n* If the target is a target list enclosed in parentheses or in square\n brackets: The object must be an iterable with the same number of\n items as there are targets in the target list, and its items are\n assigned, from left to right, to the corresponding targets.\n\n* If the target is an attribute reference: The primary expression in\n the reference is evaluated. It should yield an object with\n assignable attributes; if this is not the case, ``TypeError`` is\n raised. That object is then asked to assign the assigned object to\n the given attribute; if it cannot perform the assignment, it raises\n an exception (usually but not necessarily ``AttributeError``).\n\n Note: If the object is a class instance and the attribute reference\n occurs on both sides of the assignment operator, the RHS expression,\n ``a.x`` can access either an instance attribute or (if no instance\n attribute exists) a class attribute. The LHS target ``a.x`` is\n always set as an instance attribute, creating it if necessary.\n Thus, the two occurrences of ``a.x`` do not necessarily refer to the\n same attribute: if the RHS expression refers to a class attribute,\n the LHS creates a new instance attribute as the target of the\n assignment:\n\n class Cls:\n x = 3 # class variable\n inst = Cls()\n inst.x = inst.x + 1 # writes inst.x as 4 leaving Cls.x as 3\n\n This description does not necessarily apply to descriptor\n attributes, such as properties created with ``property()``.\n\n* If the target is a subscription: The primary expression in the\n reference is evaluated. It should yield either a mutable sequence\n object (such as a list) or a mapping object (such as a dictionary).\n Next, the subscript expression is evaluated.\n\n If the primary is a mutable sequence object (such as a list), the\n subscript must yield an integer. If it is negative, the sequence\'s\n length is added to it. The resulting value must be a nonnegative\n integer less than the sequence\'s length, and the sequence is asked\n to assign the assigned object to its item with that index. If the\n index is out of range, ``IndexError`` is raised (assignment to a\n subscripted sequence cannot add new items to a list).\n\n If the primary is a mapping object (such as a dictionary), the\n subscript must have a type compatible with the mapping\'s key type,\n and the mapping is then asked to create a key/datum pair which maps\n the subscript to the assigned object. This can either replace an\n existing key/value pair with the same key value, or insert a new\n key/value pair (if no key with the same value existed).\n\n For user-defined objects, the ``__setitem__()`` method is called\n with appropriate arguments.\n\n* If the target is a slicing: The primary expression in the reference\n is evaluated. It should yield a mutable sequence object (such as a\n list). The assigned object should be a sequence object of the same\n type. Next, the lower and upper bound expressions are evaluated,\n insofar they are present; defaults are zero and the sequence\'s\n length. The bounds should evaluate to integers. If either bound is\n negative, the sequence\'s length is added to it. The resulting\n bounds are clipped to lie between zero and the sequence\'s length,\n inclusive. Finally, the sequence object is asked to replace the\n slice with the items of the assigned sequence. The length of the\n slice may be different from the length of the assigned sequence,\n thus changing the length of the target sequence, if the object\n allows it.\n\n**CPython implementation detail:** In the current implementation, the\nsyntax for targets is taken to be the same as for expressions, and\ninvalid syntax is rejected during the code generation phase, causing\nless detailed error messages.\n\nWARNING: Although the definition of assignment implies that overlaps\nbetween the left-hand side and the right-hand side are \'safe\' (for\nexample ``a, b = b, a`` swaps two variables), overlaps *within* the\ncollection of assigned-to variables are not safe! For instance, the\nfollowing program prints ``[0, 2]``:\n\n x = [0, 1]\n i = 0\n i, x[i] = 1, 2\n print(x)\n\nSee also:\n\n **PEP 3132** - Extended Iterable Unpacking\n The specification for the ``*target`` feature.\n\n\nAugmented assignment statements\n===============================\n\nAugmented assignment is the combination, in a single statement, of a\nbinary operation and an assignment statement:\n\n augmented_assignment_stmt ::= augtarget augop (expression_list | yield_expression)\n augtarget ::= identifier | attributeref | subscription | slicing\n augop ::= "+=" | "-=" | "*=" | "/=" | "//=" | "%=" | "**="\n | ">>=" | "<<=" | "&=" | "^=" | "|="\n\n(See section *Primaries* for the syntax definitions for the last three\nsymbols.)\n\nAn augmented assignment evaluates the target (which, unlike normal\nassignment statements, cannot be an unpacking) and the expression\nlist, performs the binary operation specific to the type of assignment\non the two operands, and assigns the result to the original target.\nThe target is only evaluated once.\n\nAn augmented assignment expression like ``x += 1`` can be rewritten as\n``x = x + 1`` to achieve a similar, but not exactly equal effect. In\nthe augmented version, ``x`` is only evaluated once. Also, when\npossible, the actual operation is performed *in-place*, meaning that\nrather than creating a new object and assigning that to the target,\nthe old object is modified instead.\n\nWith the exception of assigning to tuples and multiple targets in a\nsingle statement, the assignment done by augmented assignment\nstatements is handled the same way as normal assignments. Similarly,\nwith the exception of the possible *in-place* behavior, the binary\noperation performed by augmented assignment is the same as the normal\nbinary operations.\n\nFor targets which are attribute references, the same *caveat about\nclass and instance attributes* applies as for regular assignments.\n',
'atom-identifiers': '\nIdentifiers (Names)\n*******************\n\nAn identifier occurring as an atom is a name. See section\n*Identifiers and keywords* for lexical definition and section *Naming\nand binding* for documentation of naming and binding.\n\nWhen the name is bound to an object, evaluation of the atom yields\nthat object. When a name is not bound, an attempt to evaluate it\nraises a ``NameError`` exception.\n\n**Private name mangling:** When an identifier that textually occurs in\na class definition begins with two or more underscore characters and\ndoes not end in two or more underscores, it is considered a *private\nname* of that class. Private names are transformed to a longer form\nbefore code is generated for them. The transformation inserts the\nclass name in front of the name, with leading underscores removed, and\na single underscore inserted in front of the class name. For example,\nthe identifier ``__spam`` occurring in a class named ``Ham`` will be\ntransformed to ``_Ham__spam``. This transformation is independent of\nthe syntactical context in which the identifier is used. If the\ntransformed name is extremely long (longer than 255 characters),\nimplementation defined truncation may happen. If the class name\nconsists only of underscores, no transformation is done.\n', 'atom-identifiers': '\nIdentifiers (Names)\n*******************\n\nAn identifier occurring as an atom is a name. See section\n*Identifiers and keywords* for lexical definition and section *Naming\nand binding* for documentation of naming and binding.\n\nWhen the name is bound to an object, evaluation of the atom yields\nthat object. When a name is not bound, an attempt to evaluate it\nraises a ``NameError`` exception.\n\n**Private name mangling:** When an identifier that textually occurs in\na class definition begins with two or more underscore characters and\ndoes not end in two or more underscores, it is considered a *private\nname* of that class. Private names are transformed to a longer form\nbefore code is generated for them. The transformation inserts the\nclass name in front of the name, with leading underscores removed, and\na single underscore inserted in front of the class name. For example,\nthe identifier ``__spam`` occurring in a class named ``Ham`` will be\ntransformed to ``_Ham__spam``. This transformation is independent of\nthe syntactical context in which the identifier is used. If the\ntransformed name is extremely long (longer than 255 characters),\nimplementation defined truncation may happen. If the class name\nconsists only of underscores, no transformation is done.\n',
......
...@@ -2,10 +2,10 @@ ...@@ -2,10 +2,10 @@
Python News Python News
+++++++++++ +++++++++++
What's New in Python 3.2.1? What's New in Python 3.2.1 beta 1?
=========================== ==================================
*Release date: XX-XXX-20XX* *Release date: 08-May-2011*
Core and Builtins Core and Builtins
----------------- -----------------
...@@ -18,8 +18,8 @@ Core and Builtins ...@@ -18,8 +18,8 @@ Core and Builtins
clear the end-of-file indicator after CTRL+d. clear the end-of-file indicator after CTRL+d.
- Issue #1856: Avoid crashes and lockups when daemon threads run while the - Issue #1856: Avoid crashes and lockups when daemon threads run while the
interpreter is shutting down; instead, these threads are now killed when interpreter is shutting down; instead, these threads are now killed when they
they try to take the GIL. try to take the GIL.
- Issue #9756: When calling a method descriptor or a slot wrapper descriptor, - Issue #9756: When calling a method descriptor or a slot wrapper descriptor,
the check of the object type doesn't read the __class__ attribute anymore. the check of the object type doesn't read the __class__ attribute anymore.
...@@ -31,15 +31,15 @@ Core and Builtins ...@@ -31,15 +31,15 @@ Core and Builtins
the ISO-8859-15 codec. the ISO-8859-15 codec.
- Issue #10517: After fork(), reinitialize the TLS used by the PyGILState_* - Issue #10517: After fork(), reinitialize the TLS used by the PyGILState_*
APIs, to avoid a crash with the pthread implementation in RHEL 5. Patch APIs, to avoid a crash with the pthread implementation in RHEL 5. Patch by
by Charles-François Natali. Charles-François Natali.
- Issue #6780: fix starts/endswith error message to mention that tuples are - Issue #6780: fix starts/endswith error message to mention that tuples are
accepted too. accepted too.
- Issue #5057: fix a bug in the peepholer that led to non-portable pyc files - Issue #5057: fix a bug in the peepholer that led to non-portable pyc files
between narrow and wide builds while optimizing BINARY_SUBSCR on non-BMP between narrow and wide builds while optimizing BINARY_SUBSCR on non-BMP chars
chars (e.g. "\U00012345"[0]). (e.g. "\U00012345"[0]).
- Issue #11845: Fix typo in rangeobject.c that caused a crash in - Issue #11845: Fix typo in rangeobject.c that caused a crash in
compute_slice_indices. Patch by Daniel Urban. compute_slice_indices. Patch by Daniel Urban.
...@@ -50,12 +50,12 @@ Core and Builtins ...@@ -50,12 +50,12 @@ Core and Builtins
- Issue #11395: io.FileIO().write() clamps the data length to 32,767 bytes on - Issue #11395: io.FileIO().write() clamps the data length to 32,767 bytes on
Windows if the file is a TTY to workaround a Windows bug. The Windows console Windows if the file is a TTY to workaround a Windows bug. The Windows console
returns an error (12: not enough space error) on writing into stdout if returns an error (12: not enough space error) on writing into stdout if stdout
stdout mode is binary and the length is greater than 66,000 bytes (or less, mode is binary and the length is greater than 66,000 bytes (or less, depending
depending on heap usage). on heap usage).
- Issue #11320: fix bogus memory management in Modules/getpath.c, leading to - Issue #11320: fix bogus memory management in Modules/getpath.c, leading to a
a possible crash when calling Py_SetPath(). possible crash when calling Py_SetPath().
- Issue #11510: Fixed optimizer bug which turned "a,b={1,1}" into "a,b=(1,1)". - Issue #11510: Fixed optimizer bug which turned "a,b={1,1}" into "a,b=(1,1)".
...@@ -63,21 +63,21 @@ Core and Builtins ...@@ -63,21 +63,21 @@ Core and Builtins
3.2.0 where the stdout or stderr file descriptor being the same as the stdin 3.2.0 where the stdout or stderr file descriptor being the same as the stdin
file descriptor would raise an exception. webbrowser.open would fail. fixed. file descriptor would raise an exception. webbrowser.open would fail. fixed.
- Issue #11450: Don't truncate hg version info in Py_GetBuildInfo() when - Issue #11450: Don't truncate hg version info in Py_GetBuildInfo() when there
there are many tags (e.g. when using mq). Patch by Nadeem Vawda. are many tags (e.g. when using mq). Patch by Nadeem Vawda.
- Issue #11246: Fix PyUnicode_FromFormat("%V") to decode the byte string from - Issue #11246: Fix PyUnicode_FromFormat("%V") to decode the byte string from
UTF-8 (with replace error handler) instead of ISO-8859-1 (in strict mode). UTF-8 (with replace error handler) instead of ISO-8859-1 (in strict mode).
Patch written by Ray Allen. Patch written by Ray Allen.
- Issue #11286: Raise a ValueError from calling PyMemoryView_FromBuffer with - Issue #11286: Raise a ValueError from calling PyMemoryView_FromBuffer with a
a buffer struct having a NULL data pointer. buffer struct having a NULL data pointer.
- Issue #11272: On Windows, input() strips '\r' (and not only '\n'), and - Issue #11272: On Windows, input() strips '\r' (and not only '\n'), and
sys.stdin uses universal newline (replace '\r\n' by '\n'). sys.stdin uses universal newline (replace '\r\n' by '\n').
- issue #11828: startswith and endswith don't accept None as slice index. - issue #11828: startswith and endswith don't accept None as slice index. Patch
Patch by Torsten Becker. by Torsten Becker.
- Issue #10830: Fix PyUnicode_FromFormatV("%c") for non-BMP characters on - Issue #10830: Fix PyUnicode_FromFormatV("%c") for non-BMP characters on
narrow build. narrow build.
...@@ -112,8 +112,8 @@ Library ...@@ -112,8 +112,8 @@ Library
- Issue #11164: Stop trying to use _xmlplus in the xml module. - Issue #11164: Stop trying to use _xmlplus in the xml module.
- Issue #11927: SMTP_SSL now uses port 465 by default as documented. Patch - Issue #11927: SMTP_SSL now uses port 465 by default as documented. Patch by
by Kasun Herath. Kasun Herath.
- Issue #12002: ftplib's abort() method raises TypeError. - Issue #12002: ftplib's abort() method raises TypeError.
...@@ -124,13 +124,13 @@ Library ...@@ -124,13 +124,13 @@ Library
- ntpath.samefile failed to notice that "a.txt" and "A.TXT" refer to the same - ntpath.samefile failed to notice that "a.txt" and "A.TXT" refer to the same
file on Windows XP. As noticed in issue #10684. file on Windows XP. As noticed in issue #10684.
- Issue #12000: When a SSL certificate has a subjectAltName without any - Issue #12000: When a SSL certificate has a subjectAltName without any dNSName
dNSName entry, ssl.match_hostname() should use the subject's commonName. entry, ssl.match_hostname() should use the subject's commonName. Patch by
Patch by Nicolas Bareil. Nicolas Bareil.
- Issue #11647: objects created using contextlib.contextmanager now support - Issue #11647: objects created using contextlib.contextmanager now support more
more than one call to the function when used as a decorator. Initial patch than one call to the function when used as a decorator. Initial patch by Ysj
by Ysj Ray. Ray.
- logging: don't define QueueListener if Python has no thread support. - logging: don't define QueueListener if Python has no thread support.
...@@ -188,13 +188,14 @@ Library ...@@ -188,13 +188,14 @@ Library
difflib.unified_diff(). difflib.unified_diff().
- Issue #8428: Fix a race condition in multiprocessing.Pool when terminating - Issue #8428: Fix a race condition in multiprocessing.Pool when terminating
worker processes: new processes would be spawned while the pool is being worker processes: new processes would be spawned while the pool is being shut
shut down. Patch by Charles-François Natali. down. Patch by Charles-François Natali.
- Issue #7311: fix html.parser to accept non-ASCII attribute values. - Issue #7311: fix html.parser to accept non-ASCII attribute values.
- Issue #11605: email.parser.BytesFeedParser was incorrectly converting multipart - Issue #11605: email.parser.BytesFeedParser was incorrectly converting
subpararts with an 8bit CTE into unicode instead of preserving the bytes. multipart subpararts with an 8bit CTE into unicode instead of preserving the
bytes.
- Issue #10963: Ensure that subprocess.communicate() never raises EPIPE. - Issue #10963: Ensure that subprocess.communicate() never raises EPIPE.
...@@ -259,8 +260,8 @@ Library ...@@ -259,8 +260,8 @@ Library
relative to Python2 and the result is now the same as it was in Python2. relative to Python2 and the result is now the same as it was in Python2.
- Issue #9298: base64 bodies weren't being folded to line lengths less than 78, - Issue #9298: base64 bodies weren't being folded to line lengths less than 78,
which was a regression relative to Python2. Unlike Python2, the last line which was a regression relative to Python2. Unlike Python2, the last line of
of the folded body now ends with a carriage return. the folded body now ends with a carriage return.
- Issue #11560: shutil.unpack_archive now correctly handles the format - Issue #11560: shutil.unpack_archive now correctly handles the format
parameter. Patch by Evan Dandrea. parameter. Patch by Evan Dandrea.
...@@ -269,8 +270,8 @@ Library ...@@ -269,8 +270,8 @@ Library
execution. Patch by Andreas Stührk. execution. Patch by Andreas Stührk.
- Issue #11569: use absolute path to the sysctl command in multiprocessing to - Issue #11569: use absolute path to the sysctl command in multiprocessing to
ensure that it will be found regardless of the shell PATH. This ensures ensure that it will be found regardless of the shell PATH. This ensures that
that multiprocessing.cpu_count works on default installs of MacOSX. multiprocessing.cpu_count works on default installs of MacOSX.
- Issue #11501: disutils.archive_utils.make_zipfile no longer fails if zlib is - Issue #11501: disutils.archive_utils.make_zipfile no longer fails if zlib is
not installed. Instead, the zipfile.ZIP_STORED compression is used to create not installed. Instead, the zipfile.ZIP_STORED compression is used to create
...@@ -279,15 +280,15 @@ Library ...@@ -279,15 +280,15 @@ Library
- Issue #11554: Fixed support for Japanese codecs; previously the body output - Issue #11554: Fixed support for Japanese codecs; previously the body output
encoding was not done if euc-jp or shift-jis was specified as the charset. encoding was not done if euc-jp or shift-jis was specified as the charset.
- Issue #11500: Fixed a bug in the os x proxy bypass code for fully qualified - Issue #11500: Fixed a bug in the os x proxy bypass code for fully qualified IP
IP addresses in the proxy exception list. addresses in the proxy exception list.
- Issue #11491: dbm.error is no longer raised when dbm.open is called with - Issue #11491: dbm.error is no longer raised when dbm.open is called with the
the "n" as the flag argument and the file exists. The behavior matches "n" as the flag argument and the file exists. The behavior matches the
the documentation and general logic. documentation and general logic.
- Issue #11131: Fix sign of zero in decimal.Decimal plus and minus - Issue #11131: Fix sign of zero in decimal.Decimal plus and minus operations
operations when the rounding mode is ROUND_FLOOR. when the rounding mode is ROUND_FLOOR.
- Issue #5622: Fix curses.wrapper to raise correct exception if curses - Issue #5622: Fix curses.wrapper to raise correct exception if curses
initialization fails. initialization fails.
...@@ -296,12 +297,12 @@ Library ...@@ -296,12 +297,12 @@ Library
``mmap.PROT_READ|mmap.PROT_EXEC`` would segfault instead of raising a ``mmap.PROT_READ|mmap.PROT_EXEC`` would segfault instead of raising a
TypeError. Patch by Charles-François Natali. TypeError. Patch by Charles-François Natali.
- Issue #11306: mailbox in certain cases adapts to an inability to open - Issue #11306: mailbox in certain cases adapts to an inability to open certain
certain files in read-write mode. Previously it detected this by files in read-write mode. Previously it detected this by checking for EACCES,
checking for EACCES, now it also checks for EROFS. now it also checks for EROFS.
- Issue #11265: asyncore now correctly handles EPIPE, EBADF and EAGAIN errors - Issue #11265: asyncore now correctly handles EPIPE, EBADF and EAGAIN errors on
on accept(), send() and recv(). accept(), send() and recv().
- Issue #11326: Add the missing connect_ex() implementation for SSL sockets, - Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
and make it work for non-blocking connects. and make it work for non-blocking connects.
...@@ -346,14 +347,14 @@ Build ...@@ -346,14 +347,14 @@ Build
- Issue #11411: Fix 'make DESTDIR=' with a relative destination. - Issue #11411: Fix 'make DESTDIR=' with a relative destination.
- Issue #11268: Prevent Mac OS X Installer failure if Documentation - Issue #11268: Prevent Mac OS X Installer failure if Documentation package had
package had previously been installed. previously been installed.
IDLE IDLE
---- ----
- Issue #11718: IDLE's open module dialog couldn't find the __init__.py - Issue #11718: IDLE's open module dialog couldn't find the __init__.py file in
file in a package. a package.
Tools/Demos Tools/Demos
----------- -----------
...@@ -380,7 +381,8 @@ Tests ...@@ -380,7 +381,8 @@ Tests
- Issue #10914: Add a minimal embedding test to test_capi. - Issue #10914: Add a minimal embedding test to test_capi.
- Issue #11790: Fix sporadic failures in test_multiprocessing.WithProcessesTestCondition. - Issue #11790: Fix sporadic failures in
test_multiprocessing.WithProcessesTestCondition.
- Fix possible "file already exists" error when running the tests in parallel. - Fix possible "file already exists" error when running the tests in parallel.
......
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
%define name python %define name python
#--start constants-- #--start constants--
%define version 3.2 %define version 3.2.1b1
%define libvers 3.2 %define libvers 3.2
#--end constants-- #--end constants--
%define release 1pydotorg %define release 1pydotorg
......
This is Python version 3.2 This is Python version 3.2.1 beta 1
========================== ===================================
Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
Python Software Foundation. All rights reserved. Python Software Foundation. All rights reserved.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment