diff --git a/Doc/api/concrete.tex b/Doc/api/concrete.tex
index 5b0d9e3..7b84092 100644
--- a/Doc/api/concrete.tex
+++ b/Doc/api/concrete.tex
@@ -973,7 +973,7 @@
 \cdata{Py_FileSystemDefaultEncoding} as the encoding for file
 names. This variable should be treated as read-only: On some systems,
 it will be a pointer to a static string, on others, it will change at
-run-time, e.g. when the application invokes setlocale.
+run-time (such as when the application invokes setlocale).
 
 Error handling is set by errors which may also be set to \NULL{}
 meaning to use the default handling defined for the codec.  Default
@@ -1584,6 +1584,14 @@
   Return a new tuple object of size \var{len}, or \NULL{} on failure.
 \end{cfuncdesc}
 
+\begin{cfuncdesc}{PyObject*}{PyTuple_Pack}{int n, \moreargs}
+  Return a new tuple object of size \var{n}, or \NULL{} on failure.
+  The tuple values are initialized to the subsequent \var{n} C arguments
+  pointing to Python objects.  \samp{PyTuple_Pack(2, \var{a}, \var{b})}
+  is equivalent to \samp{Py_BuildValue("(OO)", \var{a}, \var{b})}.
+  \versionadded{2.4}			 
+\end{cfuncdesc}
+
 \begin{cfuncdesc}{int}{PyTuple_Size}{PyObject *p}
   Takes a pointer to a tuple object, and returns the size of that
   tuple.
diff --git a/Include/tupleobject.h b/Include/tupleobject.h
index 58bf896..f1839fe 100644
--- a/Include/tupleobject.h
+++ b/Include/tupleobject.h
@@ -35,6 +35,7 @@
 PyAPI_FUNC(int) PyTuple_SetItem(PyObject *, int, PyObject *);
 PyAPI_FUNC(PyObject *) PyTuple_GetSlice(PyObject *, int, int);
 PyAPI_FUNC(int) _PyTuple_Resize(PyObject **, int);
+PyAPI_FUNC(PyObject *) PyTuple_Pack(int, ...);
 
 /* Macro, trading safety for speed */
 #define PyTuple_GET_ITEM(op, i) (((PyTupleObject *)(op))->ob_item[i])
diff --git a/Misc/NEWS b/Misc/NEWS
index 0ee896d..eb57e68 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -140,6 +140,11 @@
 C API
 -----
 
+- Added a new function, PyTuple_Pack(n, ...) for constructing tuples from a
+  variable length argument list of Python objects without having to invoke
+  the more complex machinery of Py_BuildValue().  PyTuple_Pack(3, a, b, c)
+  is equivalent to Py_BuildValue("(OOO)", a, b, c).
+
 New platforms
 -------------
 
diff --git a/Objects/tupleobject.c b/Objects/tupleobject.c
index 282da3e..ef5cb85 100644
--- a/Objects/tupleobject.c
+++ b/Objects/tupleobject.c
@@ -130,6 +130,28 @@
 	return 0;
 }
 
+PyObject *
+PyTuple_Pack(int n, ...)
+{
+	int i;
+	PyObject *o;
+	PyObject *result;
+	va_list vargs;
+
+	va_start(vargs, n);
+	result = PyTuple_New(n);
+	if (result == NULL)
+		return NULL;
+	for (i = 0; i < n; i++) {
+		o = va_arg(vargs, PyObject *);
+		Py_INCREF(o);
+		PyTuple_SET_ITEM(result, i, o);
+	}
+	va_end(vargs);
+	return result;
+}
+
+
 /* Methods */
 
 static void
