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:
Benjamin Peterson 2008-07-02 16:11:42 +00:00
parent 464109a893
commit fea6a94b3b
7 changed files with 30 additions and 14 deletions

View File

@ -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)

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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 *

View File

@ -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;
} }

View File

@ -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)