Expose dict_contains() and PyDict_Contains() with is about 10% faster
than PySequence_Contains() and more clearly applicable to dicts.
Apply the new function in setobject.c where __contains__ checking is
ubiquitous.
diff --git a/Doc/api/concrete.tex b/Doc/api/concrete.tex
index bf8d438..67852db 100644
--- a/Doc/api/concrete.tex
+++ b/Doc/api/concrete.tex
@@ -1808,6 +1808,14 @@
Empties an existing dictionary of all key-value pairs.
\end{cfuncdesc}
+\begin{cfuncdesc}{int}{PyDict_Contains}{PyObject *p, PyObject *key}
+ Determine if dictionary \var{p} contains \var{key}. If an item
+ in \var{p} is matches \var{key}, return \code{1}, otherwise return
+ \code{0}. On error, return \code{-1}. This is equivalent to the
+ Python expression \samp{\var{key} in \var{p}}.
+ \versionadded{2.4}
+\end{cfuncdesc}
+
\begin{cfuncdesc}{PyObject*}{PyDict_Copy}{PyObject *p}
Returns a new dictionary that contains the same key-value pairs as
\var{p}.