diff --git a/Python/_warnings.c b/Python/_warnings.c
index 588fabb..67f4c6b 100644
--- a/Python/_warnings.c
+++ b/Python/_warnings.c
@@ -1,5 +1,6 @@
 #include "Python.h"
 #include "frameobject.h"
+#include "clinic/_warnings.c.h"
 
 #define MODULE_NAME "_warnings"
 
@@ -485,6 +486,10 @@
     if (lineno_obj == NULL)
         goto cleanup;
 
+    if (source == Py_None) {
+        source = NULL;
+    }
+
     /* Create key. */
     key = PyTuple_Pack(3, text, category, lineno_obj);
     if (key == NULL)
@@ -805,22 +810,26 @@
     return res;
 }
 
+/*[clinic input]
+warn as warnings_warn
+
+    message: object
+    category: object = None
+    stacklevel: Py_ssize_t = 1
+    source: object = None
+
+Issue a warning, or maybe ignore it or raise an exception.
+[clinic start generated code]*/
+
 static PyObject *
-warnings_warn(PyObject *self, PyObject *args, PyObject *kwds)
+warnings_warn_impl(PyObject *module, PyObject *message, PyObject *category,
+                   Py_ssize_t stacklevel, PyObject *source)
+/*[clinic end generated code: output=31ed5ab7d8d760b2 input=bfdf5cf99f6c4edd]*/
 {
-    static char *kw_list[] = {"message", "category", "stacklevel",
-                              "source", NULL};
-    PyObject *message, *category = NULL, *source = NULL;
-    Py_ssize_t stack_level = 1;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|OnO:warn", kw_list,
-                                     &message, &category, &stack_level, &source))
-        return NULL;
-
     category = get_category(message, category);
     if (category == NULL)
         return NULL;
-    return do_warn(message, category, stack_level, source);
+    return do_warn(message, category, stacklevel, source);
 }
 
 static PyObject *
@@ -1098,15 +1107,11 @@
 }
 
 
-PyDoc_STRVAR(warn_doc,
-"Issue a warning, or maybe ignore it or raise an exception.");
-
 PyDoc_STRVAR(warn_explicit_doc,
 "Low-level inferface to warnings functionality.");
 
 static PyMethodDef warnings_functions[] = {
-    {"warn", (PyCFunction)warnings_warn, METH_VARARGS | METH_KEYWORDS,
-        warn_doc},
+    WARNINGS_WARN_METHODDEF
     {"warn_explicit", (PyCFunction)warnings_warn_explicit,
         METH_VARARGS | METH_KEYWORDS, warn_explicit_doc},
     {"_filters_mutated", (PyCFunction)warnings_filters_mutated, METH_NOARGS,
diff --git a/Python/clinic/_warnings.c.h b/Python/clinic/_warnings.c.h
new file mode 100644
index 0000000..db2245c
--- /dev/null
+++ b/Python/clinic/_warnings.c.h
@@ -0,0 +1,38 @@
+/*[clinic input]
+preserve
+[clinic start generated code]*/
+
+PyDoc_STRVAR(warnings_warn__doc__,
+"warn($module, /, message, category=None, stacklevel=1, source=None)\n"
+"--\n"
+"\n"
+"Issue a warning, or maybe ignore it or raise an exception.");
+
+#define WARNINGS_WARN_METHODDEF    \
+    {"warn", (PyCFunction)warnings_warn, METH_FASTCALL, warnings_warn__doc__},
+
+static PyObject *
+warnings_warn_impl(PyObject *module, PyObject *message, PyObject *category,
+                   Py_ssize_t stacklevel, PyObject *source);
+
+static PyObject *
+warnings_warn(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
+{
+    PyObject *return_value = NULL;
+    static const char * const _keywords[] = {"message", "category", "stacklevel", "source", NULL};
+    static _PyArg_Parser _parser = {"O|OnO:warn", _keywords, 0};
+    PyObject *message;
+    PyObject *category = Py_None;
+    Py_ssize_t stacklevel = 1;
+    PyObject *source = Py_None;
+
+    if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
+        &message, &category, &stacklevel, &source)) {
+        goto exit;
+    }
+    return_value = warnings_warn_impl(module, message, category, stacklevel, source);
+
+exit:
+    return return_value;
+}
+/*[clinic end generated code: output=b3c5297c2c55778c input=a9049054013a1b77]*/
