[Python-checkins] r42326 - in python/trunk: Include/abstract.h Lib/test/test_iterlen.py Lib/test/test_set.py Modules/collectionsmodule.c Modules/itertoolsmodule.c Objects/abstract.c Objects/dictobject.c Objects/enumobject.c Objects/iterobject.c Objects/listobject.c Objects/rangeobject.c Objects/setobject.c Objects/tupleobject.c Python/bltinmodule.c

armin.rigo python-checkins at python.org
Sat Feb 11 22:32:45 CET 2006


Author: armin.rigo
Date: Sat Feb 11 22:32:43 2006
New Revision: 42326

Modified:
   python/trunk/Include/abstract.h
   python/trunk/Lib/test/test_iterlen.py
   python/trunk/Lib/test/test_set.py
   python/trunk/Modules/collectionsmodule.c
   python/trunk/Modules/itertoolsmodule.c
   python/trunk/Objects/abstract.c
   python/trunk/Objects/dictobject.c
   python/trunk/Objects/enumobject.c
   python/trunk/Objects/iterobject.c
   python/trunk/Objects/listobject.c
   python/trunk/Objects/rangeobject.c
   python/trunk/Objects/setobject.c
   python/trunk/Objects/tupleobject.c
   python/trunk/Python/bltinmodule.c
Log:
Renamed _length_cue() to __length_hint__().  See:
http://mail.python.org/pipermail/python-dev/2006-February/060524.html


Modified: python/trunk/Include/abstract.h
==============================================================================
--- python/trunk/Include/abstract.h	(original)
+++ python/trunk/Include/abstract.h	Sat Feb 11 22:32:43 2006
@@ -422,20 +422,25 @@
      PyAPI_FUNC(int) PyObject_Length(PyObject *o);
 #define PyObject_Length PyObject_Size
 
-     PyAPI_FUNC(int) _PyObject_LengthCue(PyObject *o);
+     PyAPI_FUNC(int) _PyObject_LengthHint(PyObject *o);
 
        /*
          Return the size of object o.  If the object, o, provides
 	 both sequence and mapping protocols, the sequence size is
 	 returned. On error, -1 is returned.  If the object provides
-	 a _length_cue() method, its value is returned.  This is the 
+	 a __length_hint__() method, its value is returned.  This is an
+	 internal undocumented API provided for performance reasons;
+	 for compatibility, don't use it outside the core.  This is the
 	 equivalent to the Python expression: 
 		try:
 			return len(o)
 		except (AttributeError, TypeError):
-			if hasattr(o, '_length_cue'):
-				return o._length_cue()
-			raise
+			exc_type, exc_value, exc_tb = sys.exc_info()
+			try:
+				return o.__length_hint__()
+			except:
+				pass
+			raise exc_type, exc_value, exc_tb
        */
 
      PyAPI_FUNC(PyObject *) PyObject_GetItem(PyObject *o, PyObject *key);

Modified: python/trunk/Lib/test/test_iterlen.py
==============================================================================
--- python/trunk/Lib/test/test_iterlen.py	(original)
+++ python/trunk/Lib/test/test_iterlen.py	Sat Feb 11 22:32:43 2006
@@ -55,7 +55,9 @@
         return _len(obj)
     except TypeError:
         try:
-            return obj._length_cue()
+            # note: this is an internal undocumented API,
+            # don't rely on it in your own programs
+            return obj.__length_hint__()
         except AttributeError:
             raise TypeError
 

Modified: python/trunk/Lib/test/test_set.py
==============================================================================
--- python/trunk/Lib/test/test_set.py	(original)
+++ python/trunk/Lib/test/test_set.py	Sat Feb 11 22:32:43 2006
@@ -607,7 +607,9 @@
         for v in self.set:
             self.assert_(v in self.values)
         setiter = iter(self.set)
-        self.assertEqual(setiter._length_cue(), len(self.set))
+        # note: __length_hint__ is an internal undocumented API,
+        # don't rely on it in your own programs
+        self.assertEqual(setiter.__length_hint__(), len(self.set))
 
     def test_pickling(self):
         p = pickle.dumps(self.set)

Modified: python/trunk/Modules/collectionsmodule.c
==============================================================================
--- python/trunk/Modules/collectionsmodule.c	(original)
+++ python/trunk/Modules/collectionsmodule.c	Sat Feb 11 22:32:43 2006
@@ -941,10 +941,10 @@
 	return PyInt_FromLong(it->counter);
 }
 
-PyDoc_STRVAR(length_cue_doc, "Private method returning an estimate of len(list(it)).");
+PyDoc_STRVAR(length_hint_doc, "Private method returning an estimate of len(list(it)).");
 
 static PyMethodDef dequeiter_methods[] = {
-	{"_length_cue", (PyCFunction)dequeiter_len, METH_NOARGS, length_cue_doc},
+	{"__length_hint__", (PyCFunction)dequeiter_len, METH_NOARGS, length_hint_doc},
  	{NULL,		NULL}		/* sentinel */
 };
 

Modified: python/trunk/Modules/itertoolsmodule.c
==============================================================================
--- python/trunk/Modules/itertoolsmodule.c	(original)
+++ python/trunk/Modules/itertoolsmodule.c	Sat Feb 11 22:32:43 2006
@@ -2346,10 +2346,10 @@
         return PyInt_FromLong(ro->cnt);
 }
 
-PyDoc_STRVAR(length_cue_doc, "Private method returning an estimate of len(list(it)).");
+PyDoc_STRVAR(length_hint_doc, "Private method returning an estimate of len(list(it)).");
 
 static PyMethodDef repeat_methods[] = {
-	{"_length_cue", (PyCFunction)repeat_len, METH_NOARGS, length_cue_doc},
+	{"__length_hint__", (PyCFunction)repeat_len, METH_NOARGS, length_hint_doc},
  	{NULL,		NULL}		/* sentinel */
 };
 

Modified: python/trunk/Objects/abstract.c
==============================================================================
--- python/trunk/Objects/abstract.c	(original)
+++ python/trunk/Objects/abstract.c	Sat Feb 11 22:32:43 2006
@@ -82,7 +82,7 @@
 #define PyObject_Length PyObject_Size
 
 int
-_PyObject_LengthCue(PyObject *o)
+_PyObject_LengthHint(PyObject *o)
 {
 	int rv = PyObject_Size(o);
 	if (rv != -1)
@@ -92,7 +92,7 @@
 		PyObject *err_type, *err_value, *err_tb, *ro;
 
 		PyErr_Fetch(&err_type, &err_value, &err_tb);
-		ro = PyObject_CallMethod(o, "_length_cue", NULL);
+		ro = PyObject_CallMethod(o, "__length_hint__", NULL);
 		if (ro != NULL) {
 			rv = (int)PyInt_AsLong(ro);
 			Py_DECREF(ro);
@@ -1463,7 +1463,7 @@
 		return NULL;
 
 	/* Guess result size and allocate space. */
-	n = _PyObject_LengthCue(v);
+	n = _PyObject_LengthHint(v);
 	if (n < 0) {
 		if (!PyErr_ExceptionMatches(PyExc_TypeError)  &&
 		    !PyErr_ExceptionMatches(PyExc_AttributeError)) {

Modified: python/trunk/Objects/dictobject.c
==============================================================================
--- python/trunk/Objects/dictobject.c	(original)
+++ python/trunk/Objects/dictobject.c	Sat Feb 11 22:32:43 2006
@@ -2063,10 +2063,10 @@
 	return PyInt_FromLong(len);
 }
 
-PyDoc_STRVAR(length_cue_doc, "Private method returning an estimate of len(list(it)).");
+PyDoc_STRVAR(length_hint_doc, "Private method returning an estimate of len(list(it)).");
 
 static PyMethodDef dictiter_methods[] = {
-	{"_length_cue", (PyCFunction)dictiter_len, METH_NOARGS, length_cue_doc},
+	{"__length_hint__", (PyCFunction)dictiter_len, METH_NOARGS, length_hint_doc},
  	{NULL,		NULL}		/* sentinel */
 };
 

Modified: python/trunk/Objects/enumobject.c
==============================================================================
--- python/trunk/Objects/enumobject.c	(original)
+++ python/trunk/Objects/enumobject.c	Sat Feb 11 22:32:43 2006
@@ -252,10 +252,10 @@
 	return PyInt_FromLong((seqsize < position)  ?  0  :  position);
 }
 
-PyDoc_STRVAR(length_cue_doc, "Private method returning an estimate of len(list(it)).");
+PyDoc_STRVAR(length_hint_doc, "Private method returning an estimate of len(list(it)).");
 
 static PyMethodDef reversediter_methods[] = {
-	{"_length_cue", (PyCFunction)reversed_len, METH_NOARGS, length_cue_doc},
+	{"__length_hint__", (PyCFunction)reversed_len, METH_NOARGS, length_hint_doc},
  	{NULL,		NULL}		/* sentinel */
 };
 

Modified: python/trunk/Objects/iterobject.c
==============================================================================
--- python/trunk/Objects/iterobject.c	(original)
+++ python/trunk/Objects/iterobject.c	Sat Feb 11 22:32:43 2006
@@ -87,10 +87,10 @@
 	return PyInt_FromLong(0);
 }
 
-PyDoc_STRVAR(length_cue_doc, "Private method returning an estimate of len(list(it)).");
+PyDoc_STRVAR(length_hint_doc, "Private method returning an estimate of len(list(it)).");
 
 static PyMethodDef seqiter_methods[] = {
-	{"_length_cue", (PyCFunction)iter_len, METH_NOARGS, length_cue_doc},
+	{"__length_hint__", (PyCFunction)iter_len, METH_NOARGS, length_hint_doc},
  	{NULL,		NULL}		/* sentinel */
 };
 

Modified: python/trunk/Objects/listobject.c
==============================================================================
--- python/trunk/Objects/listobject.c	(original)
+++ python/trunk/Objects/listobject.c	Sat Feb 11 22:32:43 2006
@@ -775,7 +775,7 @@
 	iternext = *it->ob_type->tp_iternext;
 
 	/* Guess a result list size. */
-	n = _PyObject_LengthCue(b);
+	n = _PyObject_LengthHint(b);
 	if (n < 0) {
 		if (!PyErr_ExceptionMatches(PyExc_TypeError)  &&
 		    !PyErr_ExceptionMatches(PyExc_AttributeError)) {
@@ -2776,10 +2776,10 @@
 	return PyInt_FromLong(0);
 }
 
-PyDoc_STRVAR(length_cue_doc, "Private method returning an estimate of len(list(it)).");
+PyDoc_STRVAR(length_hint_doc, "Private method returning an estimate of len(list(it)).");
 
 static PyMethodDef listiter_methods[] = {
-	{"_length_cue", (PyCFunction)listiter_len, METH_NOARGS, length_cue_doc},
+	{"__length_hint__", (PyCFunction)listiter_len, METH_NOARGS, length_hint_doc},
  	{NULL,		NULL}		/* sentinel */
 };
 

Modified: python/trunk/Objects/rangeobject.c
==============================================================================
--- python/trunk/Objects/rangeobject.c	(original)
+++ python/trunk/Objects/rangeobject.c	Sat Feb 11 22:32:43 2006
@@ -268,10 +268,10 @@
 	return PyInt_FromLong(r->len - r->index);
 }
 
-PyDoc_STRVAR(length_cue_doc, "Private method returning an estimate of len(list(it)).");
+PyDoc_STRVAR(length_hint_doc, "Private method returning an estimate of len(list(it)).");
 
 static PyMethodDef rangeiter_methods[] = {
-	{"_length_cue", (PyCFunction)rangeiter_len, METH_NOARGS, length_cue_doc},
+	{"__length_hint__", (PyCFunction)rangeiter_len, METH_NOARGS, length_hint_doc},
  	{NULL,		NULL}		/* sentinel */
 };
 

Modified: python/trunk/Objects/setobject.c
==============================================================================
--- python/trunk/Objects/setobject.c	(original)
+++ python/trunk/Objects/setobject.c	Sat Feb 11 22:32:43 2006
@@ -758,10 +758,10 @@
 	return PyInt_FromLong(len);
 }
 
-PyDoc_STRVAR(length_cue_doc, "Private method returning an estimate of len(list(it)).");
+PyDoc_STRVAR(length_hint_doc, "Private method returning an estimate of len(list(it)).");
 
 static PyMethodDef setiter_methods[] = {
-	{"_length_cue", (PyCFunction)setiter_len, METH_NOARGS, length_cue_doc},
+	{"__length_hint__", (PyCFunction)setiter_len, METH_NOARGS, length_hint_doc},
  	{NULL,		NULL}		/* sentinel */
 };
 

Modified: python/trunk/Objects/tupleobject.c
==============================================================================
--- python/trunk/Objects/tupleobject.c	(original)
+++ python/trunk/Objects/tupleobject.c	Sat Feb 11 22:32:43 2006
@@ -860,10 +860,10 @@
 	return PyInt_FromLong(len);
 }
 
-PyDoc_STRVAR(length_cue_doc, "Private method returning an estimate of len(list(it)).");
+PyDoc_STRVAR(length_hint_doc, "Private method returning an estimate of len(list(it)).");
 
 static PyMethodDef tupleiter_methods[] = {
-	{"_length_cue", (PyCFunction)tupleiter_len, METH_NOARGS, length_cue_doc},
+	{"__length_hint__", (PyCFunction)tupleiter_len, METH_NOARGS, length_hint_doc},
  	{NULL,		NULL}		/* sentinel */
 };
 

Modified: python/trunk/Python/bltinmodule.c
==============================================================================
--- python/trunk/Python/bltinmodule.c	(original)
+++ python/trunk/Python/bltinmodule.c	Sat Feb 11 22:32:43 2006
@@ -220,7 +220,7 @@
 		goto Fail_arg;
 
 	/* Guess a result list size. */
-	len = _PyObject_LengthCue(seq);
+	len = _PyObject_LengthHint(seq);
 	if (len < 0) {
 		if (!PyErr_ExceptionMatches(PyExc_TypeError)  &&
 		    !PyErr_ExceptionMatches(PyExc_AttributeError)) {
@@ -875,7 +875,7 @@
 		}
 
 		/* Update len. */
-		curlen = _PyObject_LengthCue(curseq);
+		curlen = _PyObject_LengthHint(curseq);
 		if (curlen < 0) {
 			if (!PyErr_ExceptionMatches(PyExc_TypeError)  &&
 			    !PyErr_ExceptionMatches(PyExc_AttributeError)) {
@@ -2111,7 +2111,7 @@
 	len = -1;	/* unknown */
 	for (i = 0; i < itemsize; ++i) {
 		PyObject *item = PyTuple_GET_ITEM(args, i);
-		int thislen = _PyObject_LengthCue(item);
+		int thislen = _PyObject_LengthHint(item);
 		if (thislen < 0) {
 			if (!PyErr_ExceptionMatches(PyExc_TypeError)  &&
 			    !PyErr_ExceptionMatches(PyExc_AttributeError)) {


More information about the Python-checkins mailing list