Python 3.9.21
diff --git a/Include/patchlevel.h b/Include/patchlevel.h
index ed73af9..3fe9d1b 100644
--- a/Include/patchlevel.h
+++ b/Include/patchlevel.h
@@ -18,12 +18,12 @@
/*--start constants--*/
#define PY_MAJOR_VERSION 3
#define PY_MINOR_VERSION 9
-#define PY_MICRO_VERSION 20
+#define PY_MICRO_VERSION 21
#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL
#define PY_RELEASE_SERIAL 0
/* Version as a string */
-#define PY_VERSION "3.9.20+"
+#define PY_VERSION "3.9.21"
/*--end constants--*/
/* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2.
diff --git a/Misc/NEWS.d/3.9.21.rst b/Misc/NEWS.d/3.9.21.rst
new file mode 100644
index 0000000..d62f783
--- /dev/null
+++ b/Misc/NEWS.d/3.9.21.rst
@@ -0,0 +1,83 @@
+.. date: 2024-10-07-14-13-38
+.. gh-issue: 125041
+.. nonce: PKLWDf
+.. release date: 2024-12-03
+.. section: Tests
+
+Re-enable skipped tests for :mod:`zlib` on the s390x architecture: only skip
+checks of the compressed bytes, which can be different between zlib's
+software implementation and the hardware-accelerated implementation.
+
+..
+
+.. date: 2023-09-14-22-58-47
+.. gh-issue: 109396
+.. nonce: J1a4jR
+.. section: Tests
+
+Fix ``test_socket.test_hmac_sha1()`` in FIPS mode. Use a longer key: FIPS
+mode requires at least of at least 112 bits. The previous key was only 32
+bits. Patch by Victor Stinner.
+
+..
+
+.. date: 2022-12-23-13-29-55
+.. gh-issue: 100454
+.. nonce: 3no0cW
+.. section: Tests
+
+Fix SSL tests CI for OpenSSL 3.1+
+
+..
+
+.. date: 2024-11-13-11-09-12
+.. gh-issue: 126623
+.. nonce: TO7NnR
+.. section: Security
+
+Upgrade libexpat to 2.6.4
+
+..
+
+.. date: 2024-08-07-10-42-13
+.. gh-issue: 122792
+.. nonce: oiTMo9
+.. section: Security
+
+Changed IPv4-mapped ``ipaddress.IPv6Address`` to consistently use the mapped
+IPv4 address value for deciding properties. Properties which have their
+behavior fixed are ``is_multicast``, ``is_reserved``, ``is_link_local``,
+``is_global``, and ``is_unspecified``.
+
+..
+
+.. date: 2024-09-28-02-03-04
+.. gh-issue: 124651
+.. nonce: bLBGtH
+.. section: Library
+
+Properly quote template strings in :mod:`venv` activation scripts.
+
+..
+
+.. date: 2023-04-26-09-54-25
+.. gh-issue: 103848
+.. nonce: aDSnpR
+.. section: Library
+
+Add checks to ensure that ``[`` bracketed ``]`` hosts found by
+:func:`urllib.parse.urlsplit` are of IPv6 or IPvFuture format.
+
+..
+
+.. date: 2022-08-12-01-12-52
+.. gh-issue: 95588
+.. nonce: PA0FI7
+.. section: Documentation
+
+Clarified the conflicting advice given in the :mod:`ast` documentation about
+:func:`ast.literal_eval` being "safe" for use on untrusted input while at
+the same time warning that it can crash the process. The latter statement is
+true and is deemed unfixable without a large amount of work unsuitable for a
+bugfix. So we keep the warning and no longer claim that ``literal_eval`` is
+safe.
diff --git a/Misc/NEWS.d/next/Documentation/2022-08-12-01-12-52.gh-issue-95588.PA0FI7.rst b/Misc/NEWS.d/next/Documentation/2022-08-12-01-12-52.gh-issue-95588.PA0FI7.rst
deleted file mode 100644
index c070bbc..0000000
--- a/Misc/NEWS.d/next/Documentation/2022-08-12-01-12-52.gh-issue-95588.PA0FI7.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-Clarified the conflicting advice given in the :mod:`ast` documentation about
-:func:`ast.literal_eval` being "safe" for use on untrusted input while at
-the same time warning that it can crash the process. The latter statement is
-true and is deemed unfixable without a large amount of work unsuitable for a
-bugfix. So we keep the warning and no longer claim that ``literal_eval`` is
-safe.
diff --git a/Misc/NEWS.d/next/Library/2023-04-26-09-54-25.gh-issue-103848.aDSnpR.rst b/Misc/NEWS.d/next/Library/2023-04-26-09-54-25.gh-issue-103848.aDSnpR.rst
deleted file mode 100644
index 81e5904..0000000
--- a/Misc/NEWS.d/next/Library/2023-04-26-09-54-25.gh-issue-103848.aDSnpR.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-Add checks to ensure that ``[`` bracketed ``]`` hosts found by
-:func:`urllib.parse.urlsplit` are of IPv6 or IPvFuture format.
diff --git a/Misc/NEWS.d/next/Library/2024-09-28-02-03-04.gh-issue-124651.bLBGtH.rst b/Misc/NEWS.d/next/Library/2024-09-28-02-03-04.gh-issue-124651.bLBGtH.rst
deleted file mode 100644
index 17fc917..0000000
--- a/Misc/NEWS.d/next/Library/2024-09-28-02-03-04.gh-issue-124651.bLBGtH.rst
+++ /dev/null
@@ -1 +0,0 @@
-Properly quote template strings in :mod:`venv` activation scripts.
diff --git a/Misc/NEWS.d/next/Security/2024-08-07-10-42-13.gh-issue-122792.oiTMo9.rst b/Misc/NEWS.d/next/Security/2024-08-07-10-42-13.gh-issue-122792.oiTMo9.rst
deleted file mode 100644
index 18e293b..0000000
--- a/Misc/NEWS.d/next/Security/2024-08-07-10-42-13.gh-issue-122792.oiTMo9.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-Changed IPv4-mapped ``ipaddress.IPv6Address`` to consistently use the mapped IPv4
-address value for deciding properties. Properties which have their behavior fixed
-are ``is_multicast``, ``is_reserved``, ``is_link_local``, ``is_global``, and ``is_unspecified``.
diff --git a/Misc/NEWS.d/next/Security/2024-11-13-11-09-12.gh-issue-126623.TO7NnR.rst b/Misc/NEWS.d/next/Security/2024-11-13-11-09-12.gh-issue-126623.TO7NnR.rst
deleted file mode 100644
index f09a158..0000000
--- a/Misc/NEWS.d/next/Security/2024-11-13-11-09-12.gh-issue-126623.TO7NnR.rst
+++ /dev/null
@@ -1 +0,0 @@
-Upgrade libexpat to 2.6.4
diff --git a/Misc/NEWS.d/next/Tests/2022-12-23-13-29-55.gh-issue-100454.3no0cW.rst b/Misc/NEWS.d/next/Tests/2022-12-23-13-29-55.gh-issue-100454.3no0cW.rst
deleted file mode 100644
index 3d5fdc8..0000000
--- a/Misc/NEWS.d/next/Tests/2022-12-23-13-29-55.gh-issue-100454.3no0cW.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fix SSL tests CI for OpenSSL 3.1+
diff --git a/Misc/NEWS.d/next/Tests/2023-09-14-22-58-47.gh-issue-109396.J1a4jR.rst b/Misc/NEWS.d/next/Tests/2023-09-14-22-58-47.gh-issue-109396.J1a4jR.rst
deleted file mode 100644
index 71150ec..0000000
--- a/Misc/NEWS.d/next/Tests/2023-09-14-22-58-47.gh-issue-109396.J1a4jR.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-Fix ``test_socket.test_hmac_sha1()`` in FIPS mode. Use a longer key: FIPS
-mode requires at least of at least 112 bits. The previous key was only 32
-bits. Patch by Victor Stinner.
diff --git a/Misc/NEWS.d/next/Tests/2024-10-07-14-13-38.gh-issue-125041.PKLWDf.rst b/Misc/NEWS.d/next/Tests/2024-10-07-14-13-38.gh-issue-125041.PKLWDf.rst
deleted file mode 100644
index c7181eb..0000000
--- a/Misc/NEWS.d/next/Tests/2024-10-07-14-13-38.gh-issue-125041.PKLWDf.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-Re-enable skipped tests for :mod:`zlib` on the s390x architecture: only skip
-checks of the compressed bytes, which can be different between zlib's
-software implementation and the hardware-accelerated implementation.
diff --git a/README.rst b/README.rst
index abe3363..8a8ec2c 100644
--- a/README.rst
+++ b/README.rst
@@ -1,4 +1,4 @@
-This is Python version 3.9.20
+This is Python version 3.9.21
=============================
.. image:: https://travis-ci.org/python/cpython.svg?branch=3.9