mirror of
https://github.com/python/cpython.git
synced 2024-11-25 02:44:06 +08:00
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)
|
||||
|
||||
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.
|
||||
|
||||
.. function:: floor(x)
|
||||
|
@ -49,7 +49,7 @@ else:
|
||||
# _listener holds the server object doing the listening
|
||||
_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.
|
||||
|
||||
@ -79,7 +79,7 @@ def fileConfig(fname, defaults=None):
|
||||
del logging._handlerList[:]
|
||||
# Handlers add themselves to logging._handlers
|
||||
handlers = _install_handlers(cp, formatters)
|
||||
_install_loggers(cp, handlers)
|
||||
_install_loggers(cp, handlers, disable_existing_loggers)
|
||||
finally:
|
||||
logging._releaseLock()
|
||||
|
||||
@ -167,7 +167,7 @@ def _install_handlers(cp, formatters):
|
||||
return handlers
|
||||
|
||||
|
||||
def _install_loggers(cp, handlers):
|
||||
def _install_loggers(cp, handlers, disable_existing_loggers):
|
||||
"""Create and install loggers"""
|
||||
|
||||
# configure the root first
|
||||
@ -252,7 +252,7 @@ def _install_loggers(cp, handlers):
|
||||
logger.level = logging.NOTSET
|
||||
logger.handlers = []
|
||||
logger.propagate = 1
|
||||
else:
|
||||
elif disable_existing_loggers:
|
||||
logger.disabled = 1
|
||||
|
||||
|
||||
|
@ -101,17 +101,17 @@ class HelperFunctionsTests(unittest.TestCase):
|
||||
self.assert_(usersite in sys.path)
|
||||
|
||||
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)
|
||||
|
||||
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)
|
||||
|
||||
env = os.environ.copy()
|
||||
env["PYTHONNOUSERSITE"] = "1"
|
||||
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)
|
||||
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, -2).indices(10), (9, -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(
|
||||
slice(-100, 100 ).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
|
||||
* and _curses.COLS */
|
||||
#if defined(HAVE_CURSES_RESIZETERM) || defined(HAVE_CURSES_RESIZE_TERM)
|
||||
static int
|
||||
update_lines_cols(void)
|
||||
{
|
||||
@ -2424,6 +2425,7 @@ update_lines_cols(void)
|
||||
Py_DECREF(m);
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CURSES_RESIZETERM
|
||||
static PyObject *
|
||||
|
@ -382,11 +382,11 @@ FUNC1(tanh, tanh, 0,
|
||||
sum([1e+308, 1e+308, 1e-308]) raises an OverflowError due to the
|
||||
overflow of the first partial sum.
|
||||
|
||||
Note 3: The itermediate values lo, yr, and hi are declared volatile so
|
||||
aggressive compilers won't algebraicly reduce lo to always be exactly 0.0.
|
||||
Note 3: The intermediate values lo, yr, and hi are declared volatile so
|
||||
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
|
||||
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
|
||||
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
|
||||
@ -614,7 +614,6 @@ math_factorial(PyObject *self, PyObject *arg)
|
||||
|
||||
error:
|
||||
Py_DECREF(result);
|
||||
Py_XDECREF(iobj);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -169,8 +169,9 @@ PySlice_GetIndicesEx(PySliceObject *r, Py_ssize_t length,
|
||||
else {
|
||||
if (!_PyEval_SliceIndex(r->stop, stop)) return -1;
|
||||
if (*stop < 0) *stop += length;
|
||||
if (*stop < 0) *stop = -1;
|
||||
if (*stop > length) *stop = length;
|
||||
if (*stop < 0) *stop = (*step < 0) ? -1 : 0;
|
||||
if (*stop >= length)
|
||||
*stop = (*step < 0) ? length - 1 : length;
|
||||
}
|
||||
|
||||
if ((*step < 0 && *stop >= *start)
|
||||
|
Loading…
Reference in New Issue
Block a user