mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00: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
					
				
					 7 changed files with 30 additions and 14 deletions
				
			
		| 
						 | 
					@ -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 @@
 | 
				
			||||||
#   _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 @@ def test_s_option(self):
 | 
				
			||||||
        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 @@ def test_indices(self):
 | 
				
			||||||
        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…
	
	Add table
		Add a link
		
	
		Reference in a new issue