bpo-29793: Convert some builtin types constructors to Argument Clinic. (#615)

diff --git a/Objects/clinic/complexobject.c.h b/Objects/clinic/complexobject.c.h
new file mode 100644
index 0000000..b0b4c0e
--- /dev/null
+++ b/Objects/clinic/complexobject.c.h
@@ -0,0 +1,34 @@
+/*[clinic input]
+preserve
+[clinic start generated code]*/
+
+PyDoc_STRVAR(complex_new__doc__,
+"complex(real=0, imag=0)\n"
+"--\n"
+"\n"
+"Create a complex number from a real part and an optional imaginary part.\n"
+"\n"
+"This is equivalent to (real + imag*1j) where imag defaults to 0.");
+
+static PyObject *
+complex_new_impl(PyTypeObject *type, PyObject *r, PyObject *i);
+
+static PyObject *
+complex_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
+{
+    PyObject *return_value = NULL;
+    static const char * const _keywords[] = {"real", "imag", NULL};
+    static _PyArg_Parser _parser = {"|OO:complex", _keywords, 0};
+    PyObject *r = Py_False;
+    PyObject *i = NULL;
+
+    if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
+        &r, &i)) {
+        goto exit;
+    }
+    return_value = complex_new_impl(type, r, i);
+
+exit:
+    return return_value;
+}
+/*[clinic end generated code: output=74035493480ab5e5 input=a9049054013a1b77]*/