Merged revisions 64365,64370,64406,64408-64409,64412,64416-64417,64420-64421,64425-64428 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r64365 | raymond.hettinger | 2008-06-17 19:56:57 -0500 (Tue, 17 Jun 2008) | 1 line Fix double decref. ........ r64370 | mark.dickinson | 2008-06-18 04:20:17 -0500 (Wed, 18 Jun 2008) | 2 lines Typo fix ........ r64406 | andrew.kuchling | 2008-06-19 09:02:30 -0500 (Thu, 19 Jun 2008) | 1 line Only include update_lines_cols() function when it's actually going to be used ........ r64408 | amaury.forgeotdarc | 2008-06-19 14:57:39 -0500 (Thu, 19 Jun 2008) | 2 lines test_macos can be skipped on non-mac platforms. ........ r64409 | andrew.kuchling | 2008-06-19 15:33:31 -0500 (Thu, 19 Jun 2008) | 1 line Put threading in front of thread ........ r64412 | amaury.forgeotdarc | 2008-06-19 16:17:12 -0500 (Thu, 19 Jun 2008) | 3 lines In test_site, correctly escape backslashes in path names. This allows the test to pass when the username begins with a lowercase 't'... ........ r64416 | vinay.sajip | 2008-06-19 17:40:17 -0500 (Thu, 19 Jun 2008) | 2 lines Bug #3136: fileConfig()'s disabling of old loggers is now conditional via an optional disable_existing_loggers parameter, but the default value is such that the old behaviour is preserved. Thanks to Leandro Lucarella for the patch. ........ r64417 | vinay.sajip | 2008-06-19 17:41:08 -0500 (Thu, 19 Jun 2008) | 1 line Updated with fix for #3136. ........ r64420 | andrew.kuchling | 2008-06-19 21:05:57 -0500 (Thu, 19 Jun 2008) | 1 line Various items ........ r64421 | andrew.kuchling | 2008-06-19 21:11:42 -0500 (Thu, 19 Jun 2008) | 1 line Fix comment typos ........ r64425 | andrew.kuchling | 2008-06-20 06:39:54 -0500 (Fri, 20 Jun 2008) | 1 line Various items ........ r64426 | mark.dickinson | 2008-06-20 09:53:43 -0500 (Fri, 20 Jun 2008) | 4 lines Issue #3004: Minor fix to slice.indices(). slice(-10).indices(9) now returns (0, 0, 1) instead of (0, -1, 1), and slice(None, 10, -1).indices(10) returns (9, 9, -1) instead of (9, 10, -1). ........ r64427 | mark.dickinson | 2008-06-20 10:17:41 -0500 (Fri, 20 Jun 2008) | 2 lines Fix outdated count of the number of new math module functions. ........ r64428 | mark.dickinson | 2008-06-20 10:26:19 -0500 (Fri, 20 Jun 2008) | 2 lines Fix another typo in math_sum comment ........
This commit is contained in:
parent
464109a893
commit
fea6a94b3b
|
@ -43,7 +43,7 @@ Number-theoretic and representation functions:
|
||||||
|
|
||||||
.. function:: factorial(x)
|
.. function:: factorial(x)
|
||||||
|
|
||||||
Return *x* factorial. Raises :exc:`ValueError` if *x* is not intergral or
|
Return *x* factorial. Raises :exc:`ValueError` if *x* is not integral or
|
||||||
is negative.
|
is negative.
|
||||||
|
|
||||||
.. function:: floor(x)
|
.. function:: floor(x)
|
||||||
|
|
|
@ -49,7 +49,7 @@ else:
|
||||||
# _listener holds the server object doing the listening
|
# _listener holds the server object doing the listening
|
||||||
_listener = None
|
_listener = None
|
||||||
|
|
||||||
def fileConfig(fname, defaults=None):
|
def fileConfig(fname, defaults=None, disable_existing_loggers=1):
|
||||||
"""
|
"""
|
||||||
Read the logging configuration from a ConfigParser-format file.
|
Read the logging configuration from a ConfigParser-format file.
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ def fileConfig(fname, defaults=None):
|
||||||
del logging._handlerList[:]
|
del logging._handlerList[:]
|
||||||
# Handlers add themselves to logging._handlers
|
# Handlers add themselves to logging._handlers
|
||||||
handlers = _install_handlers(cp, formatters)
|
handlers = _install_handlers(cp, formatters)
|
||||||
_install_loggers(cp, handlers)
|
_install_loggers(cp, handlers, disable_existing_loggers)
|
||||||
finally:
|
finally:
|
||||||
logging._releaseLock()
|
logging._releaseLock()
|
||||||
|
|
||||||
|
@ -167,7 +167,7 @@ def _install_handlers(cp, formatters):
|
||||||
return handlers
|
return handlers
|
||||||
|
|
||||||
|
|
||||||
def _install_loggers(cp, handlers):
|
def _install_loggers(cp, handlers, disable_existing_loggers):
|
||||||
"""Create and install loggers"""
|
"""Create and install loggers"""
|
||||||
|
|
||||||
# configure the root first
|
# configure the root first
|
||||||
|
@ -252,7 +252,7 @@ def _install_loggers(cp, handlers):
|
||||||
logger.level = logging.NOTSET
|
logger.level = logging.NOTSET
|
||||||
logger.handlers = []
|
logger.handlers = []
|
||||||
logger.propagate = 1
|
logger.propagate = 1
|
||||||
else:
|
elif disable_existing_loggers:
|
||||||
logger.disabled = 1
|
logger.disabled = 1
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -101,17 +101,17 @@ class HelperFunctionsTests(unittest.TestCase):
|
||||||
self.assert_(usersite in sys.path)
|
self.assert_(usersite in sys.path)
|
||||||
|
|
||||||
rc = subprocess.call([sys.executable, '-c',
|
rc = subprocess.call([sys.executable, '-c',
|
||||||
'import sys; sys.exit("%s" in sys.path)' % usersite])
|
'import sys; sys.exit(%r in sys.path)' % usersite])
|
||||||
self.assertEqual(rc, 1)
|
self.assertEqual(rc, 1)
|
||||||
|
|
||||||
rc = subprocess.call([sys.executable, '-s', '-c',
|
rc = subprocess.call([sys.executable, '-s', '-c',
|
||||||
'import sys; sys.exit("%s" in sys.path)' % usersite])
|
'import sys; sys.exit(%r in sys.path)' % usersite])
|
||||||
self.assertEqual(rc, 0)
|
self.assertEqual(rc, 0)
|
||||||
|
|
||||||
env = os.environ.copy()
|
env = os.environ.copy()
|
||||||
env["PYTHONNOUSERSITE"] = "1"
|
env["PYTHONNOUSERSITE"] = "1"
|
||||||
rc = subprocess.call([sys.executable, '-c',
|
rc = subprocess.call([sys.executable, '-c',
|
||||||
'import sys; sys.exit("%s" in sys.path)' % usersite],
|
'import sys; sys.exit(%r in sys.path)' % usersite],
|
||||||
env=env)
|
env=env)
|
||||||
self.assertEqual(rc, 0)
|
self.assertEqual(rc, 0)
|
||||||
|
|
||||||
|
|
|
@ -82,6 +82,20 @@ class SliceTest(unittest.TestCase):
|
||||||
self.assertEqual(slice(None, None, -1).indices(10), (9, -1, -1))
|
self.assertEqual(slice(None, None, -1).indices(10), (9, -1, -1))
|
||||||
self.assertEqual(slice(None, None, -2).indices(10), (9, -1, -2))
|
self.assertEqual(slice(None, None, -2).indices(10), (9, -1, -2))
|
||||||
self.assertEqual(slice(3, None, -2).indices(10), (3, -1, -2))
|
self.assertEqual(slice(3, None, -2).indices(10), (3, -1, -2))
|
||||||
|
# issue 3004 tests
|
||||||
|
self.assertEqual(slice(None, -9).indices(10), (0, 1, 1))
|
||||||
|
self.assertEqual(slice(None, -10).indices(10), (0, 0, 1))
|
||||||
|
self.assertEqual(slice(None, -11).indices(10), (0, 0, 1))
|
||||||
|
self.assertEqual(slice(None, -10, -1).indices(10), (9, 0, -1))
|
||||||
|
self.assertEqual(slice(None, -11, -1).indices(10), (9, -1, -1))
|
||||||
|
self.assertEqual(slice(None, -12, -1).indices(10), (9, -1, -1))
|
||||||
|
self.assertEqual(slice(None, 9).indices(10), (0, 9, 1))
|
||||||
|
self.assertEqual(slice(None, 10).indices(10), (0, 10, 1))
|
||||||
|
self.assertEqual(slice(None, 11).indices(10), (0, 10, 1))
|
||||||
|
self.assertEqual(slice(None, 8, -1).indices(10), (9, 8, -1))
|
||||||
|
self.assertEqual(slice(None, 9, -1).indices(10), (9, 9, -1))
|
||||||
|
self.assertEqual(slice(None, 10, -1).indices(10), (9, 9, -1))
|
||||||
|
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
slice(-100, 100 ).indices(10),
|
slice(-100, 100 ).indices(10),
|
||||||
slice(None).indices(10)
|
slice(None).indices(10)
|
||||||
|
|
|
@ -2380,6 +2380,7 @@ PyCurses_QiFlush(PyObject *self, PyObject *args)
|
||||||
|
|
||||||
/* Internal helper used for updating curses.LINES, curses.COLS, _curses.LINES
|
/* Internal helper used for updating curses.LINES, curses.COLS, _curses.LINES
|
||||||
* and _curses.COLS */
|
* and _curses.COLS */
|
||||||
|
#if defined(HAVE_CURSES_RESIZETERM) || defined(HAVE_CURSES_RESIZE_TERM)
|
||||||
static int
|
static int
|
||||||
update_lines_cols(void)
|
update_lines_cols(void)
|
||||||
{
|
{
|
||||||
|
@ -2424,6 +2425,7 @@ update_lines_cols(void)
|
||||||
Py_DECREF(m);
|
Py_DECREF(m);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_CURSES_RESIZETERM
|
#ifdef HAVE_CURSES_RESIZETERM
|
||||||
static PyObject *
|
static PyObject *
|
||||||
|
|
|
@ -382,11 +382,11 @@ FUNC1(tanh, tanh, 0,
|
||||||
sum([1e+308, 1e+308, 1e-308]) raises an OverflowError due to the
|
sum([1e+308, 1e+308, 1e-308]) raises an OverflowError due to the
|
||||||
overflow of the first partial sum.
|
overflow of the first partial sum.
|
||||||
|
|
||||||
Note 3: The itermediate values lo, yr, and hi are declared volatile so
|
Note 3: The intermediate values lo, yr, and hi are declared volatile so
|
||||||
aggressive compilers won't algebraicly reduce lo to always be exactly 0.0.
|
aggressive compilers won't algebraically reduce lo to always be exactly 0.0.
|
||||||
Also, the volatile declaration forces the values to be stored in memory as
|
Also, the volatile declaration forces the values to be stored in memory as
|
||||||
regular doubles instead of extended long precision (80-bit) values. This
|
regular doubles instead of extended long precision (80-bit) values. This
|
||||||
prevents double rounding because any addition or substraction of two doubles
|
prevents double rounding because any addition or subtraction of two doubles
|
||||||
can be resolved exactly into double-sized hi and lo values. As long as the
|
can be resolved exactly into double-sized hi and lo values. As long as the
|
||||||
hi value gets forced into a double before yr and lo are computed, the extra
|
hi value gets forced into a double before yr and lo are computed, the extra
|
||||||
bits in downstream extended precision operations (x87 for example) will be
|
bits in downstream extended precision operations (x87 for example) will be
|
||||||
|
@ -614,7 +614,6 @@ math_factorial(PyObject *self, PyObject *arg)
|
||||||
|
|
||||||
error:
|
error:
|
||||||
Py_DECREF(result);
|
Py_DECREF(result);
|
||||||
Py_XDECREF(iobj);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -169,8 +169,9 @@ PySlice_GetIndicesEx(PySliceObject *r, Py_ssize_t length,
|
||||||
else {
|
else {
|
||||||
if (!_PyEval_SliceIndex(r->stop, stop)) return -1;
|
if (!_PyEval_SliceIndex(r->stop, stop)) return -1;
|
||||||
if (*stop < 0) *stop += length;
|
if (*stop < 0) *stop += length;
|
||||||
if (*stop < 0) *stop = -1;
|
if (*stop < 0) *stop = (*step < 0) ? -1 : 0;
|
||||||
if (*stop > length) *stop = length;
|
if (*stop >= length)
|
||||||
|
*stop = (*step < 0) ? length - 1 : length;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((*step < 0 && *stop >= *start)
|
if ((*step < 0 && *stop >= *start)
|
||||||
|
|
Loading…
Reference in New Issue