mirror of
https://github.com/python/cpython.git
synced 2025-08-01 07:33:08 +00:00
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-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60735-60751 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r60735 | raymond.hettinger | 2008-02-11 23:53:01 +0100 (Mon, 11 Feb 2008) | 1 line Add notes on how decimal fits into the model. ........ r60737 | raymond.hettinger | 2008-02-12 00:34:56 +0100 (Tue, 12 Feb 2008) | 1 line Fix markup ........ r60738 | raymond.hettinger | 2008-02-12 00:38:00 +0100 (Tue, 12 Feb 2008) | 1 line Backport ABC docs ........ r60739 | raymond.hettinger | 2008-02-12 01:15:32 +0100 (Tue, 12 Feb 2008) | 1 line Restore fractions.rst to the document tree. ........ r60740 | raymond.hettinger | 2008-02-12 01:48:20 +0100 (Tue, 12 Feb 2008) | 1 line Fix typo in comments ........ r60741 | raymond.hettinger | 2008-02-12 02:18:03 +0100 (Tue, 12 Feb 2008) | 1 line Bring decimal a bit closer to the spec for Reals. ........ r60743 | martin.v.loewis | 2008-02-12 14:47:26 +0100 (Tue, 12 Feb 2008) | 2 lines Patch #1736: Fix file name handling of _msi.FCICreate. ........ r60745 | kurt.kaiser | 2008-02-12 16:45:50 +0100 (Tue, 12 Feb 2008) | 2 lines what??! Correct r60225. ........ r60747 | martin.v.loewis | 2008-02-12 19:47:34 +0100 (Tue, 12 Feb 2008) | 4 lines Patch #1966: Break infinite loop in httplib when the servers implements the chunked encoding incorrectly. Will backport to 2.5. ........ r60749 | raymond.hettinger | 2008-02-12 20:05:36 +0100 (Tue, 12 Feb 2008) | 1 line dict.copy() rises from the ashes. Revert r60687. ........
This commit is contained in:
parent
4718bf8941
commit
0bd4e11887
8 changed files with 65 additions and 14 deletions
|
@ -12,10 +12,18 @@ This module implements high-performance container datatypes. Currently,
|
||||||
there are two datatypes, :class:`deque` and :class:`defaultdict`, and
|
there are two datatypes, :class:`deque` and :class:`defaultdict`, and
|
||||||
one datatype factory function, :func:`namedtuple`.
|
one datatype factory function, :func:`namedtuple`.
|
||||||
|
|
||||||
|
Besides the containers provided here, the optional :mod:`bsddb`
|
||||||
|
module offers the ability to create in-memory or file based ordered
|
||||||
|
dictionaries with string keys using the :meth:`bsddb.btopen` method.
|
||||||
|
|
||||||
|
In addition to containers, the collections module provides some ABCs
|
||||||
|
(abstract base classes) that can be used to test whether a class
|
||||||
|
provides a particular interface, for example, is it hashable or
|
||||||
|
a mapping.
|
||||||
|
|
||||||
The specialized containers provided in this module provide alternatives
|
The specialized containers provided in this module provide alternatives
|
||||||
to Python's general purpose built-in containers, :class:`dict`,
|
to Python's general purpose built-in containers, :class:`dict`,
|
||||||
:class:`list`, :class:`set`, and :class:`tuple`.
|
:class:`list`, :class:`set`, and :class:`tuple`.
|
||||||
|
|
||||||
Besides the containers provided here, the optional :mod:`bsddb`
|
Besides the containers provided here, the optional :mod:`bsddb`
|
||||||
module offers the ability to create in-memory or file based ordered
|
module offers the ability to create in-memory or file based ordered
|
||||||
dictionaries with string keys using the :meth:`bsddb.btopen` method.
|
dictionaries with string keys using the :meth:`bsddb.btopen` method.
|
||||||
|
@ -128,7 +136,6 @@ Notes on using :class:`Set` and :class:`MutableSet` as a mixin:
|
||||||
(For more about ABCs, see the :mod:`abc` module and :pep:`3119`.)
|
(For more about ABCs, see the :mod:`abc` module and :pep:`3119`.)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.. _deque-objects:
|
.. _deque-objects:
|
||||||
|
|
||||||
:class:`deque` objects
|
:class:`deque` objects
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
:mod:`fractions` --- Rational numbers
|
:mod:`fractions` --- Rational numbers
|
||||||
====================================
|
=====================================
|
||||||
|
|
||||||
.. module:: fractions
|
.. module:: fractions
|
||||||
:synopsis: Rational numbers.
|
:synopsis: Rational numbers.
|
||||||
|
|
|
@ -1518,6 +1518,20 @@ class Decimal(_numbers.Real, _numbers.Inexact):
|
||||||
|
|
||||||
__trunc__ = __int__
|
__trunc__ = __int__
|
||||||
|
|
||||||
|
@property
|
||||||
|
def real(self):
|
||||||
|
return self
|
||||||
|
|
||||||
|
@property
|
||||||
|
def imag(self):
|
||||||
|
return Decimal(0)
|
||||||
|
|
||||||
|
def conjugate(self):
|
||||||
|
return self
|
||||||
|
|
||||||
|
def __complex__(self):
|
||||||
|
return complex(float(self))
|
||||||
|
|
||||||
def _fix_nan(self, context):
|
def _fix_nan(self, context):
|
||||||
"""Decapitate the payload of a NaN to fit the context"""
|
"""Decapitate the payload of a NaN to fit the context"""
|
||||||
payload = self._int
|
payload = self._int
|
||||||
|
|
|
@ -596,6 +596,10 @@ class HTTPResponse:
|
||||||
### note: we shouldn't have any trailers!
|
### note: we shouldn't have any trailers!
|
||||||
while True:
|
while True:
|
||||||
line = self.fp.readline()
|
line = self.fp.readline()
|
||||||
|
if not line:
|
||||||
|
# a vanishingly small number of sites EOF without
|
||||||
|
# sending the trailer
|
||||||
|
break
|
||||||
if line == b"\r\n":
|
if line == b"\r\n":
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|
|
@ -143,7 +143,7 @@ class IdleUserConfParser(IdleConfParser):
|
||||||
try:
|
try:
|
||||||
cfgFile = open(fname, 'w')
|
cfgFile = open(fname, 'w')
|
||||||
except IOError:
|
except IOError:
|
||||||
fname.unlink()
|
os.unlink(fname)
|
||||||
cfgFile = open(fname, 'w')
|
cfgFile = open(fname, 'w')
|
||||||
self.write(cfgFile)
|
self.write(cfgFile)
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -46,6 +46,32 @@ Inexact.register(float)
|
||||||
# Inexact.register(decimal.Decimal)
|
# Inexact.register(decimal.Decimal)
|
||||||
|
|
||||||
|
|
||||||
|
## Notes on Decimal and it how relates to the numeric tower
|
||||||
|
## --------------------------------------------------------
|
||||||
|
## Decimal is Real except that it does not support rich comparisons.
|
||||||
|
##
|
||||||
|
## Decimal has some of the characteristics of Integrals. It provides
|
||||||
|
## logical operations but not as operators. The logical operations only apply
|
||||||
|
## to a subset of decimals (those that are non-negative, have a zero exponent,
|
||||||
|
## and have digits that are only 0 or 1). It does provide __long__() and
|
||||||
|
## a three argument form of __pow__ that includes exactness guarantees.
|
||||||
|
## It does not provide an __index__() method.
|
||||||
|
##
|
||||||
|
## Depending on context, decimal operations may be exact or inexact.
|
||||||
|
##
|
||||||
|
## When decimal is run in a context with small precision and automatic rounding,
|
||||||
|
## it is Inexact. See the "Floating point notes" section of the decimal docs
|
||||||
|
## for an example of losing the associative and distributive properties of
|
||||||
|
## addition.
|
||||||
|
##
|
||||||
|
## When decimal is used for high precision integer arithmetic, it is Exact.
|
||||||
|
## When the decimal used as fixed-point, it is Exact.
|
||||||
|
## When it is run with sufficient precision, it is Exact.
|
||||||
|
## When the decimal.Inexact trap is set, decimal operations are Exact.
|
||||||
|
## For an example, see the float_to_decimal() recipe in the "Decimal FAQ"
|
||||||
|
## section of the docs -- it shows an how traps are used in conjunction
|
||||||
|
## with variable precision to reliably achieve exact results.
|
||||||
|
|
||||||
class Complex(Number):
|
class Complex(Number):
|
||||||
"""Complex defines the operations that work on the builtin complex type.
|
"""Complex defines the operations that work on the builtin complex type.
|
||||||
|
|
||||||
|
|
|
@ -1127,7 +1127,7 @@ defdict_copy(defdictobject *dd)
|
||||||
{
|
{
|
||||||
/* This calls the object's class. That only works for subclasses
|
/* This calls the object's class. That only works for subclasses
|
||||||
whose class constructor has the same signature. Subclasses that
|
whose class constructor has the same signature. Subclasses that
|
||||||
define a different constructor signature must override __copy__().
|
define a different constructor signature must override copy().
|
||||||
*/
|
*/
|
||||||
return PyObject_CallFunctionObjArgs((PyObject*)Py_TYPE(dd),
|
return PyObject_CallFunctionObjArgs((PyObject*)Py_TYPE(dd),
|
||||||
dd->default_factory, dd, NULL);
|
dd->default_factory, dd, NULL);
|
||||||
|
|
18
PC/_msi.c
18
PC/_msi.c
|
@ -180,12 +180,12 @@ static FNFCIGETOPENINFO(cb_getopeninfo)
|
||||||
|
|
||||||
static PyObject* fcicreate(PyObject* obj, PyObject* args)
|
static PyObject* fcicreate(PyObject* obj, PyObject* args)
|
||||||
{
|
{
|
||||||
char *cabname;
|
char *cabname, *p;
|
||||||
PyObject *files;
|
PyObject *files;
|
||||||
CCAB ccab;
|
CCAB ccab;
|
||||||
HFCI hfci;
|
HFCI hfci;
|
||||||
ERF erf;
|
ERF erf;
|
||||||
int i;
|
Py_ssize_t i;
|
||||||
|
|
||||||
|
|
||||||
if (!PyArg_ParseTuple(args, "sO:FCICreate", &cabname, &files))
|
if (!PyArg_ParseTuple(args, "sO:FCICreate", &cabname, &files))
|
||||||
|
@ -208,22 +208,22 @@ static PyObject* fcicreate(PyObject* obj, PyObject* args)
|
||||||
ccab.setID = 0;
|
ccab.setID = 0;
|
||||||
ccab.szDisk[0] = '\0';
|
ccab.szDisk[0] = '\0';
|
||||||
|
|
||||||
for (i=0; cabname[i]; i++)
|
for (i = 0, p = cabname; *p; p = CharNext(p))
|
||||||
if (cabname[i] == '\\' || cabname[i] == '/')
|
if (*p == '\\' || *p == '/')
|
||||||
break;
|
i = p - cabname + 1;
|
||||||
|
|
||||||
if (i > sizeof(ccab.szCabPath) ||
|
if (i >= sizeof(ccab.szCabPath) ||
|
||||||
strlen(cabname+i) > sizeof(ccab.szCab)) {
|
strlen(cabname+i) >= sizeof(ccab.szCab)) {
|
||||||
PyErr_SetString(PyExc_ValueError, "path name too long");
|
PyErr_SetString(PyExc_ValueError, "path name too long");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cabname[i]) {
|
if (i > 0) {
|
||||||
memcpy(ccab.szCabPath, cabname, i);
|
memcpy(ccab.szCabPath, cabname, i);
|
||||||
ccab.szCabPath[i] = '\0';
|
ccab.szCabPath[i] = '\0';
|
||||||
strcpy(ccab.szCab, cabname+i);
|
strcpy(ccab.szCab, cabname+i);
|
||||||
} else {
|
} else {
|
||||||
strcpy(ccab.szCabPath, ".");
|
strcpy(ccab.szCabPath, ".\\");
|
||||||
strcpy(ccab.szCab, cabname);
|
strcpy(ccab.szCab, cabname);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue