chore: cherry-pick 2.3.2 changelog prep (#4090)

Summary:
- doc: changelog entries for 2.3.2
- chore: fix version numbers

Work towards #4088
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6408cc7..54de7cc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -29,6 +29,21 @@
 directory, or view the [latest generated
 changelog](https://rules-python.readthedocs.io/en/latest/changelog.html).
 
+{#v2-3-2}
+## [2.3.2] - 2026-08-22
+
+[2.3.2]: https://github.com/bazel-contrib/rules_python/releases/tag/2.3.2
+
+{#v2-3-2-fixed}
+### Fixed
+* (pypi) Fixed analysis failures in {obj}`pip.parse` for source-less wheels with
+  dependencies. ([#4053](https://github.com/bazel-contrib/rules_python/issues/4053))
+* (pypi) Fixed the handling of optional args for the {obj}`pip_archive` and {obj}`whl_archive`
+  repository rules within the {obj}`whl_library`. From now on we are dropping unsupported args.
+* (pypi) Fixed {obj}`pip.parse` repository names for Git sources in `uv.lock`
+  files by excluding URL query and fragment components
+  ([#4084](https://github.com/bazel-contrib/rules_python/issues/4084)).
+
 {#v2-3-1}
 ## [2.3.1] - 2026-08-14
 
@@ -2608,4 +2623,4 @@
 * (pip) Create all_data_requirements alias
 * Expose Python C headers through the toolchain.
 
-[0.24.0]: https://github.com/bazel-contrib/rules_python/releases/tag/0.24.0
\ No newline at end of file
+[0.24.0]: https://github.com/bazel-contrib/rules_python/releases/tag/0.24.0
diff --git a/news/4054.fixed.md b/news/4054.fixed.md
deleted file mode 100644
index e4b259b..0000000
--- a/news/4054.fixed.md
+++ /dev/null
@@ -1,3 +0,0 @@
-(pypi) Fixed analysis failures in {obj}`pip.parse` for source-less wheels with
-dependencies.
-([#4053](https://github.com/bazel-contrib/rules_python/issues/4053))
diff --git a/news/4077.fixed.md b/news/4077.fixed.md
deleted file mode 100644
index 5f96091..0000000
--- a/news/4077.fixed.md
+++ /dev/null
@@ -1,2 +0,0 @@
-(pypi) Fixed the handling of optional args for the {obj}`pip_archive` and {obj}`whl_archive`
-repository rules within the {obj}`whl_library`. From now on we are dropping unsupported args.
diff --git a/news/4084.fixed.md b/news/4084.fixed.md
deleted file mode 100644
index 6e19ca3..0000000
--- a/news/4084.fixed.md
+++ /dev/null
@@ -1,3 +0,0 @@
-(pypi) Fixed {obj}`pip.parse` repository names for Git sources in `uv.lock`
-files by excluding URL query and fragment components
-([#4084](https://github.com/bazel-contrib/rules_python/issues/4084)).
diff --git a/python/private/py_library.bzl b/python/private/py_library.bzl
index db56f24..3118d3c 100644
--- a/python/private/py_library.bzl
+++ b/python/private/py_library.bzl
@@ -330,7 +330,7 @@
     srcs_attr.set_allow_files(True)
     srcs_attr.set_doc(srcs_attr.doc() + """
 
-:::{versionchanged} VERSION_NEXT_FEATURE
+:::{versionchanged} 2.3.2
 As an exception, empty targets in `srcs` that provide {obj}`PyInfo` are
 allowed. Ordinary library dependencies should remain in `deps`.
 :::