Fix miscellaneous typos (#4275)

diff --git a/Python/_warnings.c b/Python/_warnings.c
index a9f9641..aa80395 100644
--- a/Python/_warnings.c
+++ b/Python/_warnings.c
@@ -391,7 +391,7 @@
 
     /* If the source parameter is set, try to get the Python implementation.
        The Python implementation is able to log the traceback where the source
-       was allocated, whereas the C implementation doesnt. */
+       was allocated, whereas the C implementation doesn't. */
     show_fn = get_warnings_attr("_showwarnmsg", source != NULL);
     if (show_fn == NULL) {
         if (PyErr_Occurred())
diff --git a/Python/ast.c b/Python/ast.c
index a6cc0f7..79cef70 100644
--- a/Python/ast.c
+++ b/Python/ast.c
@@ -4287,7 +4287,7 @@
 
    `parent` is the enclosing node.
    `n` is the node which locations are going to be fixed relative to parent.
-   `expr_str` is the child node's string representation, incuding braces.
+   `expr_str` is the child node's string representation, including braces.
 */
 static void
 fstring_fix_node_location(const node *parent, node *n, char *expr_str)
diff --git a/Python/pytime.c b/Python/pytime.c
index 5a98d1d..0e94131 100644
--- a/Python/pytime.c
+++ b/Python/pytime.c
@@ -817,7 +817,7 @@
         }
 
         /* Check that timebase.numer and timebase.denom can be casted to
-           _PyTime_t. In pratice, timebase uses uint32_t, so casting cannot
+           _PyTime_t. In practice, timebase uses uint32_t, so casting cannot
            overflow. At the end, only make sure that the type is uint32_t
            (_PyTime_t is 64-bit long). */
         assert(sizeof(timebase.numer) < sizeof(_PyTime_t));