diff options
author | Christian Heimes <christian@cheimes.de> | 2008-02-11 06:19:17 (GMT) |
---|---|---|
committer | Christian Heimes <christian@cheimes.de> | 2008-02-11 06:19:17 (GMT) |
commit | 3feef61742facb3cbf53f9df1cb89062452597f2 (patch) | |
tree | 766365e91d9f906fb8d7e5568708db1d385531ca /Doc | |
parent | ba99c5887286147925fb02141c274e5b4dc84f4e (diff) | |
download | cpython-3feef61742facb3cbf53f9df1cb89062452597f2.zip cpython-3feef61742facb3cbf53f9df1cb89062452597f2.tar.gz cpython-3feef61742facb3cbf53f9df1cb89062452597f2.tar.bz2 |
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60706,60708-60712,60714-60724 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r60701 | georg.brandl | 2008-02-09 22:36:15 +0100 (Sat, 09 Feb 2008) | 2 lines
Needs only 2.4 now.
........
r60702 | georg.brandl | 2008-02-09 22:38:54 +0100 (Sat, 09 Feb 2008) | 2 lines
Docs are rst now.
........
r60703 | georg.brandl | 2008-02-09 23:00:00 +0100 (Sat, 09 Feb 2008) | 2 lines
Fix link.
........
r60704 | georg.brandl | 2008-02-10 00:09:25 +0100 (Sun, 10 Feb 2008) | 2 lines
Fix for newest doctools.
........
r60709 | raymond.hettinger | 2008-02-10 08:21:09 +0100 (Sun, 10 Feb 2008) | 1 line
Clarify that decimal also supports fixed-point arithmetic.
........
r60710 | nick.coghlan | 2008-02-10 08:32:52 +0100 (Sun, 10 Feb 2008) | 1 line
Add missing NEWS entry for r60695
........
r60712 | mark.dickinson | 2008-02-10 15:58:38 +0100 (Sun, 10 Feb 2008) | 3 lines
Turn classmethods into staticmethods, and avoid calling the constructor
of subclasses of Rational. (See discussion in issue #1682.)
........
r60715 | mark.dickinson | 2008-02-10 16:19:58 +0100 (Sun, 10 Feb 2008) | 2 lines
Typos in decimal comment and documentation
........
r60716 | skip.montanaro | 2008-02-10 16:31:54 +0100 (Sun, 10 Feb 2008) | 2 lines
Get the saying right. ;-)
........
r60717 | skip.montanaro | 2008-02-10 16:32:16 +0100 (Sun, 10 Feb 2008) | 2 lines
whoops - revert
........
r60718 | mark.dickinson | 2008-02-10 20:23:36 +0100 (Sun, 10 Feb 2008) | 2 lines
Remove reference to Rational
........
r60719 | raymond.hettinger | 2008-02-10 21:35:16 +0100 (Sun, 10 Feb 2008) | 1 line
Complete an open todo on pickletools -- add a pickle optimizer.
........
r60721 | mark.dickinson | 2008-02-10 22:29:51 +0100 (Sun, 10 Feb 2008) | 3 lines
Rename rational.Rational to fractions.Fraction, to avoid name clash
with numbers.Rational. See issue #1682 for related discussion.
........
r60722 | christian.heimes | 2008-02-11 03:26:22 +0100 (Mon, 11 Feb 2008) | 1 line
The test requires the network resource
........
r60723 | mark.dickinson | 2008-02-11 04:11:55 +0100 (Mon, 11 Feb 2008) | 3 lines
Put an extra space into the repr of a Fraction:
Fraction(1, 2) instead of Fraction(1,2).
........
Diffstat (limited to 'Doc')
-rw-r--r-- | Doc/README.txt | 4 | ||||
-rw-r--r-- | Doc/conf.py | 22 | ||||
-rw-r--r-- | Doc/extending/windows.rst | 2 | ||||
-rw-r--r-- | Doc/library/decimal.rst | 22 | ||||
-rw-r--r-- | Doc/library/fractions.rst (renamed from Doc/library/rational.rst) | 38 | ||||
-rw-r--r-- | Doc/library/numbers.rst | 10 | ||||
-rw-r--r-- | Doc/library/pickletools.rst | 7 | ||||
-rw-r--r-- | Doc/whatsnew/2.6.rst | 22 |
8 files changed, 73 insertions, 54 deletions
diff --git a/Doc/README.txt b/Doc/README.txt index a93542f..202a1ce 100644 --- a/Doc/README.txt +++ b/Doc/README.txt @@ -14,7 +14,7 @@ those familiar with the previous docs written in LaTeX. Building the docs ================= -You need to install Python 2.5.1 or higher (but Python 3.0 is not supported yet); +You need to install Python 2.4 or higher (but Python 3.0 is not supported yet); the toolset used to build the docs are written in Python. The toolset used to build the documentation is called *Sphinx*, it is not included in this tree, but maintained separately in the Python Subversion repository. Also @@ -55,7 +55,7 @@ Available make targets are: * "latex", which builds LaTeX source files that can be run with "pdflatex" to produce PDF documents. - + * "linkcheck", which checks all external references to see whether they are broken, redirected or malformed, and outputs this information to stdout as well as a plain-text (.txt) file. diff --git a/Doc/conf.py b/Doc/conf.py index 273c76c..1c8dd71 100644 --- a/Doc/conf.py +++ b/Doc/conf.py @@ -38,17 +38,17 @@ today = '' today_fmt = '%B %d, %Y' # List of files that shouldn't be included in the build. -unused_files = [ - 'whatsnew/2.0.rst', - 'whatsnew/2.1.rst', - 'whatsnew/2.2.rst', - 'whatsnew/2.3.rst', - 'whatsnew/2.4.rst', - 'whatsnew/2.5.rst', - 'whatsnew/2.6.rst', - 'maclib/scrap.rst', - 'library/xmllib.rst', - 'library/xml.etree.rst', +unused_docs = [ + 'whatsnew/2.0', + 'whatsnew/2.1', + 'whatsnew/2.2', + 'whatsnew/2.3', + 'whatsnew/2.4', + 'whatsnew/2.5', + 'whatsnew/2.6', + 'maclib/scrap', + 'library/xmllib', + 'library/xml.etree', ] # Relative filename of the reference count data file. diff --git a/Doc/extending/windows.rst b/Doc/extending/windows.rst index a34ba2b..a0782a7 100644 --- a/Doc/extending/windows.rst +++ b/Doc/extending/windows.rst @@ -179,7 +179,7 @@ and add the following to the module initialization function:: MyObject_Type.ob_type = &PyType_Type; -Refer to section 3 of the `Python FAQ <http://www.python.org/doc/FAQ.html>`_ for +Refer to section 3 of the `Python FAQ <http://www.python.org/doc/faq>`_ for details on why you must do this. diff --git a/Doc/library/decimal.rst b/Doc/library/decimal.rst index f6b96b2..422436f 100644 --- a/Doc/library/decimal.rst +++ b/Doc/library/decimal.rst @@ -1,6 +1,6 @@ -:mod:`decimal` --- Decimal floating point arithmetic -==================================================== +:mod:`decimal` --- Decimal fixed point and floating point arithmetic +==================================================================== .. module:: decimal :synopsis: Implementation of the General Decimal Arithmetic Specification. @@ -16,6 +16,11 @@ The :mod:`decimal` module provides support for decimal floating point arithmetic. It offers several advantages over the :class:`float` datatype: +* Decimal "is based on a floating-point model which was designed with people + in mind, and necessarily has a paramount guiding principle -- computers must + provide an arithmetic that works in the same way as the arithmetic that + people learn at school." -- excerpt from the decimal arithmetic specification. + * Decimal numbers can be represented exactly. In contrast, numbers like :const:`1.1` do not have an exact representation in binary floating point. End users typically would not expect :const:`1.1` to display as @@ -25,7 +30,7 @@ arithmetic. It offers several advantages over the :class:`float` datatype: + 0.1 + 0.1 - 0.3`` is exactly equal to zero. In binary floating point, the result is :const:`5.5511151231257827e-017`. While near to zero, the differences prevent reliable equality testing and differences can accumulate. For this - reason, decimal would be preferred in accounting applications which have strict + reason, decimal is preferred in accounting applications which have strict equality invariants. * The decimal module incorporates a notion of significant places so that ``1.30 @@ -50,6 +55,13 @@ arithmetic. It offers several advantages over the :class:`float` datatype: standards. While the built-in float type exposes only a modest portion of its capabilities, the decimal module exposes all required parts of the standard. When needed, the programmer has full control over rounding and signal handling. + This includes an option to enforce exact arithmetic by using exceptions + to block any inexact operations. + +* The decimal module was designed to support "without prejudice, both exact + unrounded decimal arithmetic (sometimes called fixed-point arithmetic) + and rounded floating-point arithmetic." -- excerpt from the decimal + arithmetic specification. The module design is centered around three concepts: the decimal number, the context for arithmetic, and signals. @@ -832,7 +844,7 @@ described below. In addition, the module provides three pre-made contexts: :const:`ROUND_HALF_EVEN`. All flags are cleared. No traps are enabled (so that exceptions are not raised during computations). - Because the trapped are disabled, this context is useful for applications that + Because the traps are disabled, this context is useful for applications that prefer to have result value of :const:`NaN` or :const:`Infinity` instead of raising exceptions. This allows an application to complete a run in the presence of conditions that would otherwise halt the program. @@ -1245,7 +1257,7 @@ quiet or signaling :const:`NaN` always returns :const:`False` (even when doing :const:`True`. An attempt to compare two Decimals using any of the ``<``, ``<=``, ``>`` or ``>=`` operators will raise the :exc:`InvalidOperation` signal if either operand is a :const:`NaN`, and return :const:`False` if this signal is -trapped. Note that the General Decimal Arithmetic specification does not +not trapped. Note that the General Decimal Arithmetic specification does not specify the behavior of direct comparisons; these rules for comparisons involving a :const:`NaN` were taken from the IEEE 854 standard (see Table 3 in section 5.7). To ensure strict standards-compliance, use the :meth:`compare` diff --git a/Doc/library/rational.rst b/Doc/library/fractions.rst index 8ed702f..5f30caf 100644 --- a/Doc/library/rational.rst +++ b/Doc/library/fractions.rst @@ -1,28 +1,28 @@ -:mod:`rational` --- Rational numbers +:mod:`fractions` --- Rational numbers ==================================== -.. module:: rational +.. module:: fractions :synopsis: Rational numbers. .. moduleauthor:: Jeffrey Yasskin <jyasskin at gmail.com> .. sectionauthor:: Jeffrey Yasskin <jyasskin at gmail.com> .. versionadded:: 2.6 -The :mod:`rational` module defines an immutable, infinite-precision +The :mod:`fractions` module defines an immutable, infinite-precision Rational number class. -.. class:: Rational(numerator=0, denominator=1) - Rational(other_rational) - Rational(string) +.. class:: Fraction(numerator=0, denominator=1) + Fraction(other_fraction) + Fraction(string) The first version requires that *numerator* and *denominator* are instances of :class:`numbers.Integral` and returns a new - ``Rational`` representing ``numerator/denominator``. If + ``Fraction`` representing ``numerator/denominator``. If *denominator* is :const:`0`, raises a :exc:`ZeroDivisionError`. The - second version requires that *other_rational* is an instance of - :class:`numbers.Rational` and returns an instance of + second version requires that *other_fraction* is an instance of + :class:`numbers.Fraction` and returns an instance of :class:`Rational` with the same value. The third version expects a string of the form ``[-+]?[0-9]+(/[0-9]+)?``, optionally surrounded by spaces. @@ -31,39 +31,39 @@ Rational number class. :class:`numbers.Rational` and is immutable and hashable. -.. method:: Rational.from_float(flt) +.. method:: Fraction.from_float(flt) - This classmethod constructs a :class:`Rational` representing the + This classmethod constructs a :class:`Fraction` representing the exact value of *flt*, which must be a :class:`float`. Beware that - ``Rational.from_float(0.3)`` is not the same value as ``Rational(3, + ``Fraction.from_float(0.3)`` is not the same value as ``Rational(3, 10)`` -.. method:: Rational.from_decimal(dec) +.. method:: Fraction.from_decimal(dec) - This classmethod constructs a :class:`Rational` representing the + This classmethod constructs a :class:`Fraction` representing the exact value of *dec*, which must be a :class:`decimal.Decimal`. -.. method:: Rational.__floor__() +.. method:: Fraction.__floor__() Returns the greatest :class:`int` ``<= self``. Will be accessible through :func:`math.floor` in Py3k. -.. method:: Rational.__ceil__() +.. method:: Fraction.__ceil__() Returns the least :class:`int` ``>= self``. Will be accessible through :func:`math.ceil` in Py3k. -.. method:: Rational.__round__() - Rational.__round__(ndigits) +.. method:: Fraction.__round__() + Fraction.__round__(ndigits) The first version returns the nearest :class:`int` to ``self``, rounding half to even. The second version rounds ``self`` to the - nearest multiple of ``Rational(1, 10**ndigits)`` (logically, if + nearest multiple of ``Fraction(1, 10**ndigits)`` (logically, if ``ndigits`` is negative), again rounding half toward even. Will be accessible through :func:`round` in Py3k. diff --git a/Doc/library/numbers.rst b/Doc/library/numbers.rst index 1d543c8..d78595e 100644 --- a/Doc/library/numbers.rst +++ b/Doc/library/numbers.rst @@ -104,7 +104,7 @@ Notes for type implementors Implementors should be careful to make equal numbers equal and hash them to the same values. This may be subtle if there are two different -extensions of the real numbers. For example, :class:`rational.Rational` +extensions of the real numbers. For example, :class:`fractions.Fraction` implements :func:`hash` as follows:: def __hash__(self): @@ -199,11 +199,11 @@ in :class:`complex`, and both :meth:`__radd__` s land there, so ``a+b Because most of the operations on any given type will be very similar, it can be useful to define a helper function which generates the forward and reverse instances of any given operator. For example, -:class:`rational.Rational` uses:: +:class:`fractions.Fraction` uses:: def _operator_fallbacks(monomorphic_operator, fallback_operator): def forward(a, b): - if isinstance(b, (int, long, Rational)): + if isinstance(b, (int, long, Fraction)): return monomorphic_operator(a, b) elif isinstance(b, float): return fallback_operator(float(a), b) @@ -215,7 +215,7 @@ forward and reverse instances of any given operator. For example, forward.__doc__ = monomorphic_operator.__doc__ def reverse(b, a): - if isinstance(a, RationalAbc): + if isinstance(a, Rational): # Includes ints. return monomorphic_operator(a, b) elif isinstance(a, numbers.Real): @@ -231,7 +231,7 @@ forward and reverse instances of any given operator. For example, def _add(a, b): """a + b""" - return Rational(a.numerator * b.denominator + + return Fraction(a.numerator * b.denominator + b.numerator * a.denominator, a.denominator * b.denominator) diff --git a/Doc/library/pickletools.rst b/Doc/library/pickletools.rst index 3fc38ff..3dc06ac 100644 --- a/Doc/library/pickletools.rst +++ b/Doc/library/pickletools.rst @@ -33,3 +33,10 @@ probably won't find the :mod:`pickletools` module relevant. the opcode's argument; *pos* is the position at which this opcode is located. *pickle* can be a string or a file-like object. +.. function:: optimize(picklestring) + + Returns a new equivalent pickle string after eliminating unused ``PUT`` + opcodes. The optimized pickle is shorter, takes less transmission time, + requires less storage space, and unpickles more efficiently. + + .. versionadded:: 2.6 diff --git a/Doc/whatsnew/2.6.rst b/Doc/whatsnew/2.6.rst index cbc8b8f..d37c5ac 100644 --- a/Doc/whatsnew/2.6.rst +++ b/Doc/whatsnew/2.6.rst @@ -578,8 +578,8 @@ and comparisons. :class:`Rational` numbers derive from :class:`Real`, have :attr:`numerator` and :attr:`denominator` properties, and can be -converted to floats. Python 2.6 adds a simple rational-number class -in the :mod:`rational` module. +converted to floats. Python 2.6 adds a simple rational-number class, +:class:`Fraction`, in the :mod:`fractions` module. :class:`Integral` numbers derive from :class:`Rational`, and can be shifted left and right with ``<<`` and ``>>``, @@ -598,29 +598,29 @@ one, :func:`trunc`, that's been backported to Python 2.6. -The Rational Module +The Fraction Module -------------------------------------------------- To fill out the hierarchy of numeric types, a rational-number class -has been added as the :mod:`rational` module. Rational numbers are +has been added as the :mod:`fractions` module. Rational numbers are represented as a fraction; rational numbers can exactly represent numbers such as two-thirds that floating-point numbers can only approximate. -The :class:`Rational` constructor takes two :class:`Integral` values +The :class:`Fraction` constructor takes two :class:`Integral` values that will be the numerator and denominator of the resulting fraction. :: - >>> from rational import Rational - >>> a = Rational(2, 3) - >>> b = Rational(2, 5) + >>> from fractions import Fraction + >>> a = Fraction(2, 3) + >>> b = Fraction(2, 5) >>> float(a), float(b) (0.66666666666666663, 0.40000000000000002) >>> a+b - rational.Rational(16,15) + Fraction(16, 15) >>> a/b - rational.Rational(5,3) + Fraction(5, 3) -The :mod:`rational` module is based upon an implementation by Sjoerd +The :mod:`fractions` module is based upon an implementation by Sjoerd Mullender that was in Python's :file:`Demo/classes/` directory for a long time. This implementation was significantly updated by Jeffrey Yaskin. |