You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by gi...@apache.org on 2023/06/05 22:17:28 UTC

[beam] branch asf-site updated: Publishing website 2023/06/05 22:17:22 at commit d4788bc

This is an automated email from the ASF dual-hosted git repository.

git-site-role pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/beam.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new a77b72d5270 Publishing website 2023/06/05 22:17:22 at commit d4788bc
a77b72d5270 is described below

commit a77b72d5270edfe29c219ee9481288693c1a9127
Author: jenkins <bu...@apache.org>
AuthorDate: Mon Jun 5 22:17:22 2023 +0000

    Publishing website 2023/06/05 22:17:22 at commit d4788bc
---
 .../generated-content/blog/beam-2.47.0/index.html  |   2 +-
 .../generated-content/blog/beam-2.48.0/index.html  |   2 +-
 website/generated-content/blog/index.html          |   4 +-
 website/generated-content/blog/index.xml           |   5 +-
 .../generated-content/categories/blog/index.xml    |   5 +-
 .../generated-content/categories/release/index.xml |   5 +-
 website/generated-content/contribute/index.xml     |   3 +
 .../contribute/release-guide/index.html            |   4 +-
 website/generated-content/documentation/index.xml  |  48 +++---
 .../python/aggregation/combineperkey/index.html    |   2 +-
 .../python/aggregation/combinevalues/index.html    |  10 +-
 .../transforms/python/aggregation/count/index.html |   6 +-
 .../python/aggregation/groupby/index.html          | 175 +++++++++++----------
 .../python/aggregation/latest/index.html           |   4 +-
 .../transforms/python/aggregation/max/index.html   |   4 +-
 .../transforms/python/aggregation/mean/index.html  |   4 +-
 .../transforms/python/aggregation/min/index.html   |   4 +-
 .../python/aggregation/sample/index.html           |   4 +-
 .../transforms/python/aggregation/sum/index.html   |   4 +-
 .../transforms/python/aggregation/top/index.html   |  12 +-
 .../python/elementwise/filter/index.html           |  12 +-
 .../python/elementwise/flatmap/index.html          |  18 +--
 .../transforms/python/elementwise/map/index.html   |  16 +-
 .../transforms/python/elementwise/pardo/index.html |   6 +-
 .../python/elementwise/partition/index.html        |   6 +-
 .../transforms/python/elementwise/regex/index.html |  18 +--
 .../elementwise/runinference-sklearn/index.html    |   4 +-
 .../python/elementwise/tostring/index.html         |   6 +-
 .../python/elementwise/withtimestamps/index.html   |   6 +-
 website/generated-content/feed.xml                 |   5 +-
 website/generated-content/get-started/index.xml    |  86 +---------
 .../get-started/try-beam-playground/index.html     |  50 +-----
 website/generated-content/sitemap.xml              |   2 +-
 33 files changed, 205 insertions(+), 337 deletions(-)

diff --git a/website/generated-content/blog/beam-2.47.0/index.html b/website/generated-content/blog/beam-2.47.0/index.html
index 4ce9ac24e36..976e5791d69 100644
--- a/website/generated-content/blog/beam-2.47.0/index.html
+++ b/website/generated-content/blog/beam-2.47.0/index.html
@@ -23,7 +23,7 @@ function blockScroll(){$("body").toggleClass("fixedPosition");}
 function openMenu(){addPlaceholder();blockScroll();}</script><div class="body__contained center no__padding content-up"><article class=post itemscope itemtype=http://schema.org/BlogPosting><div class=post-content><div class=post-info><p>blog & release
        </p><p>2023/05/10</p></div><header class=post-header><h2 itemprop="name headline">Apache Beam 2.47.0</h1><div class=post-info><span>Jack R. McCluskey [<a href=https://twitter.com/jrmccluskey>@jrmccluskey</a>]</span></div></header><div class="arrow-list header-top-margin" itemprop=articleBody><p>We are happy to present the new 2.47.0 release of Beam.
 This release includes both improvements and new functionality.
-See the <a href=/get-started/downloads/%7B$DOWNLOAD_ANCHOR%7D>download page</a> for this release.</p><p>For more information on changes in 2.47.0, check out the <a href=https://github.com/apache/beam/milestone/10>detailed release notes</a>.</p><h2 id=highlights>Highlights</h2><ul><li>Apache Beam adds Python 3.11 support (<a href=https://github.com/apache/beam/issues/23848>#23848</a>).</li></ul><h2 id=ios>I/Os</h2><ul><li>BigQuery Storage Write API is now available in Python SDK via cross [...]
+See the <a href=/get-started/downloads/#2470-2023-05-10>download page</a> for this release.</p><p>For more information on changes in 2.47.0, check out the <a href=https://github.com/apache/beam/milestone/10>detailed release notes</a>.</p><h2 id=highlights>Highlights</h2><ul><li>Apache Beam adds Python 3.11 support (<a href=https://github.com/apache/beam/issues/23848>#23848</a>).</li></ul><h2 id=ios>I/Os</h2><ul><li>BigQuery Storage Write API is now available in Python SDK via cross-langu [...]
 (Note that when doing multiple operations, it may be more efficient to explicitly chain the operations
 like <code>df | (Transform1 | Transform2 | ...)</code> to avoid excessive conversions.)</li><li>The Go SDK adds new transforms periodic.Impulse and periodic.Sequence that extends support
 for slowly updating side input patterns. (<a href=https://github.com/apache/beam/issues/23106>#23106</a>)</li><li>Several Google client libraries in Python SDK dependency chain were updated to latest available major versions. (<a href=https://github.com/apache/beam/pull/24599>#24599</a>)</li></ul><h2 id=breaking-changes>Breaking Changes</h2><ul><li>If a main session fails to load, the pipeline will now fail at worker startup. (<a href=https://github.com/apache/beam/issues/25401>#25401</a [...]
diff --git a/website/generated-content/blog/beam-2.48.0/index.html b/website/generated-content/blog/beam-2.48.0/index.html
index b2831d61c3e..e70b4fbdc87 100644
--- a/website/generated-content/blog/beam-2.48.0/index.html
+++ b/website/generated-content/blog/beam-2.48.0/index.html
@@ -23,7 +23,7 @@ function blockScroll(){$("body").toggleClass("fixedPosition");}
 function openMenu(){addPlaceholder();blockScroll();}</script><div class="body__contained center no__padding content-up"><article class=post itemscope itemtype=http://schema.org/BlogPosting><div class=post-content><div class=post-info><p>blog & release
        </p><p>2023/05/31</p></div><header class=post-header><h2 itemprop="name headline">Apache Beam 2.48.0</h1><div class=post-info><span>Ritesh Ghorse</span></div></header><div class="arrow-list header-top-margin" itemprop=articleBody><p>We are happy to present the new 2.48.0 release of Beam.
 This release includes both improvements and new functionality.
-See the <a href=/get-started/downloads/%7B$DOWNLOAD_ANCHOR%7D>download page</a> for this release.</p><p>&lt;{!&ndash;more&ndash;></p><p>For more information on changes in 2.48.0, check out the <a href=https://github.com/apache/beam/milestone/12>detailed release notes</a>.</p><h2 id=highlights>Highlights</h2><ul><li>&ldquo;Experimental&rdquo; annotation cleanup: the annotation and concept have been removed from Beam to avoid
+See the <a href=/get-started/downloads/#2480-2023-05-31>download page</a> for this release.</p><p>For more information on changes in 2.48.0, check out the <a href=https://github.com/apache/beam/milestone/12>detailed release notes</a>.</p><h2 id=highlights>Highlights</h2><ul><li>&ldquo;Experimental&rdquo; annotation cleanup: the annotation and concept have been removed from Beam to avoid
 the misperception of code as &ldquo;not ready&rdquo;. Any proposed breaking changes will be subject to
 case-by-case pro/con decision making (and generally avoided) rather than using the &ldquo;Experimental&rdquo;
 to allow them.</li></ul><h2 id=ios>I/Os</h2><ul><li>Added rename for GCS and copy for local filesystem (Go) (<a href=https://github.com/apache/beam/issues/26064>#25779</a>).</li><li>Added support for enhanced fan-out in KinesisIO.Read (Java) (<a href=https://github.com/apache/beam/issues/19967>#19967</a>).<ul><li>This change is not compatible with Flink savepoints created by Beam 2.46.0 applications which had KinesisIO sources.</li></ul></li><li>Added textio.ReadWithFilename transform (G [...]
diff --git a/website/generated-content/blog/index.html b/website/generated-content/blog/index.html
index 52ad93bde0d..d6a196daff0 100644
--- a/website/generated-content/blog/index.html
+++ b/website/generated-content/blog/index.html
@@ -44,9 +44,7 @@ capability</button>
 sdk</button>
 <button xx class=category-button id=category-website onclick=applyFilter(this)>
 website</button></div><div class=posts-list><a class="post-card tf-filter-item" href=/blog/beam-2.48.0/ data-categories="blog release"><div class="post-info post-category"><p>blog & release
-                   </p><p>2023/05/31</p></div><p class=post-title>Apache Beam 2.48.0</p><p class=post-info>Ritesh Ghorse</p><div class=post-summary>We are happy to present the new 2.48.0 release of Beam. This release includes both improvements and new functionality. See the download page for this release.
-&amp;lt;{!&amp;ndash;more&amp;ndash;&amp;gt;
-For more information on changes in 2.</div></a><a class="post-card tf-filter-item" href=/blog/beam-2.47.0/ data-categories="blog release"><div class="post-info post-category"><p>blog & release
+                   </p><p>2023/05/31</p></div><p class=post-title>Apache Beam 2.48.0</p><p class=post-info>Ritesh Ghorse</p><div class=post-summary>We are happy to present the new 2.48.0 release of Beam. This release includes both improvements and new functionality. See the download page for this release.</div></a><a class="post-card tf-filter-item" href=/blog/beam-2.47.0/ data-categories="blog release"><div class="post-info post-category"><p>blog & release
                    </p><p>2023/05/10</p></div><p class=post-title>Apache Beam 2.47.0</p><p class=post-info>Jack R. McCluskey</p><div class=post-summary>We are happy to present the new 2.47.0 release of Beam. This release includes both improvements and new functionality. See the download page for this release.</div></a><a class="post-card tf-filter-item" href=/blog/beam-2.46.0/ data-categories="blog release"><div class="post-info post-category"><p>blog & release
                    </p><p>2023/03/10</p></div><p class=post-title>Apache Beam 2.46.0</p><p class=post-info>Danny McCormick</p><div class=post-summary>We are happy to present the new 2.46.0 release of Beam. This release includes both improvements and new functionality. See the download page for this release.</div></a><a class="post-card tf-filter-item" href=/blog/beam-2.45.0/ data-categories="blog release"><div class="post-info post-category"><p>blog & release
                    </p><p>2023/02/15</p></div><p class=post-title>Apache Beam 2.45.0</p><p class=post-info>John Casey</p><div class=post-summary>We are happy to present the new 2.45.0 release of Beam. This release includes both improvements and new functionality. See the download page for this release.</div></a><a class="post-card tf-filter-item" href=/blog/beam-2.44.0/ data-categories="blog release"><div class="post-info post-category"><p>blog & release
diff --git a/website/generated-content/blog/index.xml b/website/generated-content/blog/index.xml
index 4872d81ef8b..264f8fa9689 100644
--- a/website/generated-content/blog/index.xml
+++ b/website/generated-content/blog/index.xml
@@ -12,8 +12,7 @@ limitations under the License.
 -->
 &lt;p>We are happy to present the new 2.48.0 release of Beam.
 This release includes both improvements and new functionality.
-See the &lt;a href="/get-started/downloads/%7B$DOWNLOAD_ANCHOR%7D">download page&lt;/a> for this release.&lt;/p>
-&lt;p>&amp;lt;{!&amp;ndash;more&amp;ndash;&amp;gt;&lt;/p>
+See the &lt;a href="/get-started/downloads/#2480-2023-05-31">download page&lt;/a> for this release.&lt;/p>
 &lt;p>For more information on changes in 2.48.0, check out the &lt;a href="https://github.com/apache/beam/milestone/12">detailed release notes&lt;/a>.&lt;/p>
 &lt;h2 id="highlights">Highlights&lt;/h2>
 &lt;ul>
@@ -133,7 +132,7 @@ limitations under the License.
 -->
 &lt;p>We are happy to present the new 2.47.0 release of Beam.
 This release includes both improvements and new functionality.
-See the &lt;a href="/get-started/downloads/%7B$DOWNLOAD_ANCHOR%7D">download page&lt;/a> for this release.&lt;/p>
+See the &lt;a href="/get-started/downloads/#2470-2023-05-10">download page&lt;/a> for this release.&lt;/p>
 &lt;p>For more information on changes in 2.47.0, check out the &lt;a href="https://github.com/apache/beam/milestone/10">detailed release notes&lt;/a>.&lt;/p>
 &lt;h2 id="highlights">Highlights&lt;/h2>
 &lt;ul>
diff --git a/website/generated-content/categories/blog/index.xml b/website/generated-content/categories/blog/index.xml
index 26ef23c1b90..f34e51abceb 100644
--- a/website/generated-content/categories/blog/index.xml
+++ b/website/generated-content/categories/blog/index.xml
@@ -12,8 +12,7 @@ limitations under the License.
 -->
 &lt;p>We are happy to present the new 2.48.0 release of Beam.
 This release includes both improvements and new functionality.
-See the &lt;a href="/get-started/downloads/%7B$DOWNLOAD_ANCHOR%7D">download page&lt;/a> for this release.&lt;/p>
-&lt;p>&amp;lt;{!&amp;ndash;more&amp;ndash;&amp;gt;&lt;/p>
+See the &lt;a href="/get-started/downloads/#2480-2023-05-31">download page&lt;/a> for this release.&lt;/p>
 &lt;p>For more information on changes in 2.48.0, check out the &lt;a href="https://github.com/apache/beam/milestone/12">detailed release notes&lt;/a>.&lt;/p>
 &lt;h2 id="highlights">Highlights&lt;/h2>
 &lt;ul>
@@ -133,7 +132,7 @@ limitations under the License.
 -->
 &lt;p>We are happy to present the new 2.47.0 release of Beam.
 This release includes both improvements and new functionality.
-See the &lt;a href="/get-started/downloads/%7B$DOWNLOAD_ANCHOR%7D">download page&lt;/a> for this release.&lt;/p>
+See the &lt;a href="/get-started/downloads/#2470-2023-05-10">download page&lt;/a> for this release.&lt;/p>
 &lt;p>For more information on changes in 2.47.0, check out the &lt;a href="https://github.com/apache/beam/milestone/10">detailed release notes&lt;/a>.&lt;/p>
 &lt;h2 id="highlights">Highlights&lt;/h2>
 &lt;ul>
diff --git a/website/generated-content/categories/release/index.xml b/website/generated-content/categories/release/index.xml
index cf1a28d8088..92545c762fb 100644
--- a/website/generated-content/categories/release/index.xml
+++ b/website/generated-content/categories/release/index.xml
@@ -12,8 +12,7 @@ limitations under the License.
 -->
 &lt;p>We are happy to present the new 2.48.0 release of Beam.
 This release includes both improvements and new functionality.
-See the &lt;a href="/get-started/downloads/%7B$DOWNLOAD_ANCHOR%7D">download page&lt;/a> for this release.&lt;/p>
-&lt;p>&amp;lt;{!&amp;ndash;more&amp;ndash;&amp;gt;&lt;/p>
+See the &lt;a href="/get-started/downloads/#2480-2023-05-31">download page&lt;/a> for this release.&lt;/p>
 &lt;p>For more information on changes in 2.48.0, check out the &lt;a href="https://github.com/apache/beam/milestone/12">detailed release notes&lt;/a>.&lt;/p>
 &lt;h2 id="highlights">Highlights&lt;/h2>
 &lt;ul>
@@ -133,7 +132,7 @@ limitations under the License.
 -->
 &lt;p>We are happy to present the new 2.47.0 release of Beam.
 This release includes both improvements and new functionality.
-See the &lt;a href="/get-started/downloads/%7B$DOWNLOAD_ANCHOR%7D">download page&lt;/a> for this release.&lt;/p>
+See the &lt;a href="/get-started/downloads/#2470-2023-05-10">download page&lt;/a> for this release.&lt;/p>
 &lt;p>For more information on changes in 2.47.0, check out the &lt;a href="https://github.com/apache/beam/milestone/10">detailed release notes&lt;/a>.&lt;/p>
 &lt;h2 id="highlights">Highlights&lt;/h2>
 &lt;ul>
diff --git a/website/generated-content/contribute/index.xml b/website/generated-content/contribute/index.xml
index 48e7e34e1bf..de94c37e9bb 100644
--- a/website/generated-content/contribute/index.xml
+++ b/website/generated-content/contribute/index.xml
@@ -732,6 +732,7 @@ limitations under the License.
 &lt;li>&lt;a href="#checklist-to-declare-the-process-completed">Checklist to declare the process completed&lt;/a>&lt;/li>
 &lt;/ul>
 &lt;/li>
+&lt;li>&lt;a href="#13-update-beam-playground">13. Update Beam Playground&lt;/a>&lt;/li>
 &lt;li>&lt;a href="#improve-the-process">Improve the process&lt;/a>&lt;/li>
 &lt;/ul>
 &lt;/nav>
@@ -1883,6 +1884,8 @@ Ask other contributors to do the same.&lt;/p>
 &lt;li>Update Wikipedia Apache Beam article.&lt;/li>
 &lt;/ol>
 &lt;hr>
+&lt;h2 id="13-update-beam-playground">13. Update Beam Playground&lt;/h2>
+&lt;p>After new Beam Release is published Beam Playgorund can be updated according to &lt;a href="https://github.com/apache/beam/blob/master/playground/TASKS.md#referenced-beam-sdk-update">Playground Readme&lt;/a> and &lt;a href="https://github.com/apache/beam/blob/master/playground/terraform/README.md">Playground deployment guide&lt;/a>.&lt;/p>
 &lt;h2 id="improve-the-process">Improve the process&lt;/h2>
 &lt;p>It is important that we improve the release processes over time.
 Once you’ve finished the release, please take a step back and look what areas of this process and be improved. Perhaps some part of the process can be simplified.
diff --git a/website/generated-content/contribute/release-guide/index.html b/website/generated-content/contribute/release-guide/index.html
index 907c33f7c47..1fc143d5485 100644
--- a/website/generated-content/contribute/release-guide/index.html
+++ b/website/generated-content/contribute/release-guide/index.html
@@ -20,7 +20,7 @@
 function addPlaceholder(){$('input:text').attr('placeholder',"What are you looking for?");}
 function endSearch(){var search=document.querySelector(".searchBar");search.classList.add("disappear");var icons=document.querySelector("#iconsBar");icons.classList.remove("disappear");}
 function blockScroll(){$("body").toggleClass("fixedPosition");}
-function openMenu(){addPlaceholder();blockScroll();}</script><div class="clearfix container-main-content"><div class="section-nav closed" data-offset-top=90 data-offset-bottom=500><span class="section-nav-back glyphicon glyphicon-menu-left"></span><nav><ul class=section-nav-list data-section-nav><li><span class=section-nav-list-main-title>Contribute</span></li><li><a href=/contribute/get-started-contributing>Code contribution guide</a></li><li><a href=/contribute/get-help/>Get help</a></ [...]
+function openMenu(){addPlaceholder();blockScroll();}</script><div class="clearfix container-main-content"><div class="section-nav closed" data-offset-top=90 data-offset-bottom=500><span class="section-nav-back glyphicon glyphicon-menu-left"></span><nav><ul class=section-nav-list data-section-nav><li><span class=section-nav-list-main-title>Contribute</span></li><li><a href=/contribute/get-started-contributing>Code contribution guide</a></li><li><a href=/contribute/get-help/>Get help</a></ [...]
 A release is one or more packages of the project artifact(s) that are approved for general public distribution and use.
 They may come with various degrees of caveat regarding their perceived quality and potential for change, such as “alpha”, “beta”, “incubating”, “stable”, etc.</p><p>The Beam community treats releases with great importance.
 They are a public face of the project and most users interact with the project only through the releases. Releases are signed off by the entire Beam community in a public vote.</p><p>Each release is executed by a <em>Release Manager</em>, who is selected among the Beam committers.
@@ -440,7 +440,7 @@ release blog post as the body of the release notes, set this version as the late
 Ping <a href=mailto:dev@beam.apache.org>dev@</a> for assistance if you need it.</p><h4 id=deploy-source-release-to-distapacheorg>Deploy source release to dist.apache.org</h4><p>Copy the source release from the <code>dev</code> repository to the <code>release</code> repository at <code>dist.apache.org</code> using Subversion.</p><p>Make sure the last release&rsquo;s artifacts have been copied from <code>dist.apache.org</code> to <code>archive.apache.org</code>.
 This should happen automatically: <a href=https://lists.apache.org/thread.html/39c26c57c5125a7ca06c3c9315b4917b86cd0e4567b7174f4bc4d63b%40%3Cdev.beam.apache.org%3E>dev@ thread</a> with context.</p><h4 id=recordkeeping-with-asf>Recordkeeping with ASF</h4><p>Use <a href=https://reporter.apache.org/addrelease.html?beam>reporter.apache.org</a> to seed the information about the release into future project reports.</p><h3 id=checklist-to-proceed-to-the-next-step-3>Checklist to proceed to the n [...]
 <strong>NOTE</strong>: This can only be done from <code>@apache.org</code> email address. This email has to be in plain text (no HTML tags).</p><h3 id=social-media>Social media</h3><p>Tweet, post on Facebook, LinkedIn, and other platforms.
-Ask other contributors to do the same.</p><p>Also, update <a href=https://en.wikipedia.org/wiki/Apache_Beam>the Wikipedia article on Apache Beam</a>.</p><h3 id=checklist-to-declare-the-process-completed>Checklist to declare the process completed</h3><ol><li>Release announced on the user@ mailing list.</li><li>Blog post published, if applicable.</li><li>Release recorded in reporter.apache.org.</li><li>Release announced on social media.</li><li>Completion declared on the dev@ mailing list. [...]
+Ask other contributors to do the same.</p><p>Also, update <a href=https://en.wikipedia.org/wiki/Apache_Beam>the Wikipedia article on Apache Beam</a>.</p><h3 id=checklist-to-declare-the-process-completed>Checklist to declare the process completed</h3><ol><li>Release announced on the user@ mailing list.</li><li>Blog post published, if applicable.</li><li>Release recorded in reporter.apache.org.</li><li>Release announced on social media.</li><li>Completion declared on the dev@ mailing list. [...]
 Once you’ve finished the release, please take a step back and look what areas of this process and be improved. Perhaps some part of the process can be simplified.
 Perhaps parts of this guide can be clarified.</p><p>If we have specific ideas, please start a discussion on the dev@ mailing list and/or propose a pull request to update this guide.
 Thanks!</p><div class=feedback><p class=update>Last updated on 2023/06/05</p><h3>Have you found everything you were looking for?</h3><p class=description>Was it all useful and clear? Is there anything that you would like to change? Let us know!</p><button class=load-button><a href="mailto:dev@beam.apache.org?subject=Beam Website Feedback">SEND FEEDBACK</a></button></div></div></div><footer class=footer><div class=footer__contained><div class=footer__cols><div class="footer__cols__col foo [...]
diff --git a/website/generated-content/documentation/index.xml b/website/generated-content/documentation/index.xml
index 01a04f5f43a..42c4e4f361c 100644
--- a/website/generated-content/documentation/index.xml
+++ b/website/generated-content/documentation/index.xml
@@ -15944,7 +15944,7 @@ It allows to do additional calculations before extracting a result.&lt;/p>
 &lt;/ul>
 &lt;div class='language-py snippet'>
 &lt;div class="notebook-skip code-snippet">
-&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/combineperkey.py">
+&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/combineperkey_combinefn.py">
 &lt;img src="/images/code-icon.svg"/>
 &lt;/a>
 &lt;a class="copy" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Copy to clipboard">
@@ -16070,7 +16070,7 @@ Then, we apply &lt;code>CombineValues&lt;/code> in multiple ways to combine the
 which takes an &lt;code>iterable&lt;/code> of numbers and adds them together.&lt;/p>
 &lt;div class='language-py snippet'>
 &lt;div class="notebook-skip code-snippet">
-&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/combinevalues.py">
+&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/combinevalues_simple.py">
 &lt;img src="/images/code-icon.svg"/>
 &lt;/a>
 &lt;a class="copy" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Copy to clipboard">
@@ -16106,7 +16106,7 @@ which takes an &lt;code>iterable&lt;/code> of numbers and adds them together.&lt
 &lt;p>We define a function &lt;code>saturated_sum&lt;/code> which takes an &lt;code>iterable&lt;/code> of numbers and adds them together, up to a predefined maximum number.&lt;/p>
 &lt;div class='language-py snippet'>
 &lt;div class="notebook-skip code-snippet">
-&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/combinevalues.py">
+&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/combinevalues_function.py">
 &lt;img src="/images/code-icon.svg"/>
 &lt;/a>
 &lt;a class="copy" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Copy to clipboard">
@@ -16143,7 +16143,7 @@ which takes an &lt;code>iterable&lt;/code> of numbers and adds them together.&lt
 &lt;p>We can also use lambda functions to simplify &lt;strong>Example 2&lt;/strong>.&lt;/p>
 &lt;div class='language-py snippet'>
 &lt;div class="notebook-skip code-snippet">
-&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/combinevalues.py">
+&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/combinevalues_lambda.py">
 &lt;img src="/images/code-icon.svg"/>
 &lt;/a>
 &lt;a class="copy" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Copy to clipboard">
@@ -16180,7 +16180,7 @@ They are passed as additional positional arguments or keyword arguments to the f
 &lt;p>In this example, the lambda function takes &lt;code>values&lt;/code> and &lt;code>max_value&lt;/code> as arguments.&lt;/p>
 &lt;div class='language-py snippet'>
 &lt;div class="notebook-skip code-snippet">
-&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/combinevalues.py">
+&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/combinevalues_multiple_arguments.py">
 &lt;img src="/images/code-icon.svg"/>
 &lt;/a>
 &lt;a class="copy" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Copy to clipboard">
@@ -16235,7 +16235,7 @@ It allows to do additional calculations before extracting a result.&lt;/p>
 &lt;/ul>
 &lt;div class='language-py snippet'>
 &lt;div class="notebook-skip code-snippet">
-&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/combinevalues.py">
+&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/combinevalues_combinefn.py">
 &lt;img src="/images/code-icon.svg"/>
 &lt;/a>
 &lt;a class="copy" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Copy to clipboard">
@@ -16724,7 +16724,7 @@ Then, we apply &lt;code>Count&lt;/code> to get the total number of elements in d
 &lt;p>We use &lt;code>Count.Globally()&lt;/code> to count &lt;em>all&lt;/em> elements in a &lt;code>PCollection&lt;/code>, even if there are duplicate elements.&lt;/p>
 &lt;div class='language-py snippet'>
 &lt;div class="notebook-skip code-snippet">
-&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/count.py">
+&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/count_globally.py">
 &lt;img src="/images/code-icon.svg"/>
 &lt;/a>
 &lt;a class="copy" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Copy to clipboard">
@@ -16753,7 +16753,7 @@ Then, we apply &lt;code>Count&lt;/code> to get the total number of elements in d
 &lt;p>We use &lt;code>Count.PerKey()&lt;/code> to count the elements for each unique key in a &lt;code>PCollection&lt;/code> of key-values.&lt;/p>
 &lt;div class='language-py snippet'>
 &lt;div class="notebook-skip code-snippet">
-&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/count.py">
+&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/count_per_key.py">
 &lt;img src="/images/code-icon.svg"/>
 &lt;/a>
 &lt;a class="copy" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Copy to clipboard">
@@ -16795,7 +16795,7 @@ Then, we apply &lt;code>Count&lt;/code> to get the total number of elements in d
 &lt;p>We use &lt;code>Count.PerElement()&lt;/code> to count the only the unique elements in a &lt;code>PCollection&lt;/code>.&lt;/p>
 &lt;div class='language-py snippet'>
 &lt;div class="notebook-skip code-snippet">
-&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/count.py">
+&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/count_per_element.py">
 &lt;img src="/images/code-icon.svg"/>
 &lt;/a>
 &lt;a class="copy" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Copy to clipboard">
@@ -18095,7 +18095,7 @@ Then, we apply &lt;code>Filter&lt;/code> in multiple ways to filter out produce
 &lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Run code" href="https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/filter-py.ipynb">
 &lt;img src="/images/run-icon.svg"/>
 &lt;/a>
-&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/filter.py">
+&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/filter_function.py">
 &lt;img src="/images/code-icon.svg"/>
 &lt;/a>
 &lt;a class="copy" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Copy to clipboard">
@@ -18146,7 +18146,7 @@ Then, we apply &lt;code>Filter&lt;/code> in multiple ways to filter out produce
 &lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Run code" href="https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/filter-py.ipynb">
 &lt;img src="/images/run-icon.svg"/>
 &lt;/a>
-&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/filter.py">
+&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/filter_lambda.py">
 &lt;img src="/images/code-icon.svg"/>
 &lt;/a>
 &lt;a class="copy" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Copy to clipboard">
@@ -18198,7 +18198,7 @@ They are passed as additional positional arguments or keyword arguments to the f
 &lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Run code" href="https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/filter-py.ipynb">
 &lt;img src="/images/run-icon.svg"/>
 &lt;/a>
-&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/filter.py">
+&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/filter_multiple_arguments.py">
 &lt;img src="/images/code-icon.svg"/>
 &lt;/a>
 &lt;a class="copy" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Copy to clipboard">
@@ -18252,7 +18252,7 @@ We then use that value to filter out perennials.&lt;/p>
 &lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Run code" href="https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/filter-py.ipynb">
 &lt;img src="/images/run-icon.svg"/>
 &lt;/a>
-&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/filter.py">
+&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/filter_side_inputs_singleton.py">
 &lt;img src="/images/code-icon.svg"/>
 &lt;/a>
 &lt;a class="copy" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Copy to clipboard">
@@ -18308,7 +18308,7 @@ so it is possible to iterate over large &lt;code>PCollection&lt;/code>s that won
 &lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Run code" href="https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/filter-py.ipynb">
 &lt;img src="/images/run-icon.svg"/>
 &lt;/a>
-&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/filter.py">
+&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/filter_side_inputs_iter.py">
 &lt;img src="/images/code-icon.svg"/>
 &lt;/a>
 &lt;a class="copy" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Copy to clipboard">
@@ -18374,7 +18374,7 @@ If the &lt;code>PCollection&lt;/code> won&amp;rsquo;t fit into memory, use &lt;c
 &lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Run code" href="https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/filter-py.ipynb">
 &lt;img src="/images/run-icon.svg"/>
 &lt;/a>
-&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/filter.py">
+&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/filter_side_inputs_dict.py">
 &lt;img src="/images/code-icon.svg"/>
 &lt;/a>
 &lt;a class="copy" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Copy to clipboard">
@@ -18496,7 +18496,7 @@ This pipeline splits the input element using whitespaces, creating a list of zer
 &lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Run code" href="https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/flatmap-py.ipynb">
 &lt;img src="/images/run-icon.svg"/>
 &lt;/a>
-&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap.py">
+&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap_simple.py">
 &lt;img src="/images/code-icon.svg"/>
 &lt;/a>
 &lt;a class="copy" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Copy to clipboard">
@@ -18534,7 +18534,7 @@ This pipeline splits the input element using whitespaces, creating a list of zer
 &lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Run code" href="https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/flatmap-py.ipynb">
 &lt;img src="/images/run-icon.svg"/>
 &lt;/a>
-&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap.py">
+&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap_function.py">
 &lt;img src="/images/code-icon.svg"/>
 &lt;/a>
 &lt;a class="copy" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Copy to clipboard">
@@ -18576,7 +18576,7 @@ We use a lambda function that returns the same input element it received.&lt;/p>
 &lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Run code" href="https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/flatmap-py.ipynb">
 &lt;img src="/images/run-icon.svg"/>
 &lt;/a>
-&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap.py">
+&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap_lambda.py">
 &lt;img src="/images/code-icon.svg"/>
 &lt;/a>
 &lt;a class="copy" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Copy to clipboard">
@@ -18616,7 +18616,7 @@ Each yielded result in the generator is an element in the resulting &lt;code>PCo
 &lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Run code" href="https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/flatmap-py.ipynb">
 &lt;img src="/images/run-icon.svg"/>
 &lt;/a>
-&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap.py">
+&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap_generator.py">
 &lt;img src="/images/code-icon.svg"/>
 &lt;/a>
 &lt;a class="copy" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Copy to clipboard">
@@ -18658,7 +18658,7 @@ you can use &lt;code>FlatMapTuple&lt;/code> to unpack them into different functi
 &lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Run code" href="https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/flatmap-py.ipynb">
 &lt;img src="/images/run-icon.svg"/>
 &lt;/a>
-&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap.py">
+&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap_tuple.py">
 &lt;img src="/images/code-icon.svg"/>
 &lt;/a>
 &lt;a class="copy" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Copy to clipboard">
@@ -18705,7 +18705,7 @@ They are passed as additional positional arguments or keyword arguments to the f
 &lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Run code" href="https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/flatmap-py.ipynb">
 &lt;img src="/images/run-icon.svg"/>
 &lt;/a>
-&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap.py">
+&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap_multiple_arguments.py">
 &lt;img src="/images/code-icon.svg"/>
 &lt;/a>
 &lt;a class="copy" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Copy to clipboard">
@@ -18748,7 +18748,7 @@ We then use that value as the delimiter for the &lt;code>str.split&lt;/code> met
 &lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Run code" href="https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/flatmap-py.ipynb">
 &lt;img src="/images/run-icon.svg"/>
 &lt;/a>
-&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap.py">
+&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap_side_inputs_singleton.py">
 &lt;img src="/images/code-icon.svg"/>
 &lt;/a>
 &lt;a class="copy" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Copy to clipboard">
@@ -18793,7 +18793,7 @@ so it is possible to iterate over large &lt;code>PCollection&lt;/code>s that won
 &lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Run code" href="https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/flatmap-py.ipynb">
 &lt;img src="/images/run-icon.svg"/>
 &lt;/a>
-&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap.py">
+&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap_side_inputs_iter.py">
 &lt;img src="/images/code-icon.svg"/>
 &lt;/a>
 &lt;a class="copy" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Copy to clipboard">
@@ -18862,7 +18862,7 @@ If the &lt;code>PCollection&lt;/code> won&amp;rsquo;t fit into memory, use &lt;c
 &lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Run code" href="https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/flatmap-py.ipynb">
 &lt;img src="/images/run-icon.svg"/>
 &lt;/a>
-&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap.py">
+&lt;a target="_blank" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="View source code" href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap_side_inputs_dict.py">
 &lt;img src="/images/code-icon.svg"/>
 &lt;/a>
 &lt;a class="copy" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Copy to clipboard">
diff --git a/website/generated-content/documentation/transforms/python/aggregation/combineperkey/index.html b/website/generated-content/documentation/transforms/python/aggregation/combineperkey/index.html
index 3f9b7e98fba..c9504b1d941 100644
--- a/website/generated-content/documentation/transforms/python/aggregation/combineperkey/index.html
+++ b/website/generated-content/documentation/transforms/python/aggregation/combineperkey/index.html
@@ -101,7 +101,7 @@ For example, an empty accumulator for a sum would be <code>0</code>, while an em
 Called <em>once per element</em>.
 Takes an accumulator and an input element, combines them and returns the updated accumulator.</p></li><li><p><a href=https://beam.apache.org/releases/pydoc/current/apache_beam.transforms.core.html#apache_beam.transforms.core.CombineFn.merge_accumulators><code>CombineFn.merge_accumulators()</code></a>:
 Multiple accumulators could be processed in parallel, so this function helps merging them into a single accumulator.</p></li><li><p><a href=https://beam.apache.org/releases/pydoc/current/apache_beam.transforms.core.html#apache_beam.transforms.core.CombineFn.extract_output><code>CombineFn.extract_output()</code></a>:
-It allows to do additional calculations before extracting a result.</p></li></ul><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/combineperkey.py><img src=/images/code-icon.svg></a>
+It allows to do additional calculations before extracting a result.</p></li></ul><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/combineperkey_combinefn.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>class</span> <span class=nc>AverageFn</span><span class=p>(</span><span class=n>beam</span><span class=o>.</span><span class=n>CombineFn</span><span class=p>):</span>
diff --git a/website/generated-content/documentation/transforms/python/aggregation/combinevalues/index.html b/website/generated-content/documentation/transforms/python/aggregation/combinevalues/index.html
index 1c3821931c2..681716bb9bf 100644
--- a/website/generated-content/documentation/transforms/python/aggregation/combinevalues/index.html
+++ b/website/generated-content/documentation/transforms/python/aggregation/combinevalues/index.html
@@ -25,7 +25,7 @@ Pydoc</a></td></table><p><br><br><br></p><p>Combines an iterable of values in a
 Then, we apply <code>CombineValues</code> in multiple ways to combine the keyed values in the <code>PCollection</code>.</p><p><code>CombineValues</code> accepts a function that takes an <code>iterable</code> of elements as an input, and combines them to return a single element.
 <code>CombineValues</code> expects a keyed <code>PCollection</code> of elements, where the value is an iterable of elements to be combined.</p><h3 id=example-1-combining-with-a-predefined-function>Example 1: Combining with a predefined function</h3><p>We use the function
 <a href=https://docs.python.org/3/library/functions.html#sum><code>sum</code></a>
-which takes an <code>iterable</code> of numbers and adds them together.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/combinevalues.py><img src=/images/code-icon.svg></a>
+which takes an <code>iterable</code> of numbers and adds them together.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/combinevalues_simple.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -40,7 +40,7 @@ which takes an <code>iterable</code> of numbers and adds them together.</p><div
       <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>(&#39;🥕&#39;, 5)
 (&#39;🍆&#39;, 1)
 (&#39;🍅&#39;, 12)</code></pre></div></div><h3 id=example-2-combining-with-a-function>Example 2: Combining with a function</h3><p>We want the sum to be bounded up to a maximum value, so we use
-<a href=https://en.wikipedia.org/wiki/Saturation_arithmetic>saturated arithmetic</a>.</p><p>We define a function <code>saturated_sum</code> which takes an <code>iterable</code> of numbers and adds them together, up to a predefined maximum number.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_ [...]
+<a href=https://en.wikipedia.org/wiki/Saturation_arithmetic>saturated arithmetic</a>.</p><p>We define a function <code>saturated_sum</code> which takes an <code>iterable</code> of numbers and adds them together, up to a predefined maximum number.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_ [...]
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>def</span> <span class=nf>saturated_sum</span><span class=p>(</span><span class=n>values</span><span class=p>):</span>
@@ -58,7 +58,7 @@ which takes an <code>iterable</code> of numbers and adds them together.</p><div
       <span class=o>|</span> <span class=s1>&#39;Saturated sum&#39;</span> <span class=o>&gt;&gt;</span> <span class=n>beam</span><span class=o>.</span><span class=n>CombineValues</span><span class=p>(</span><span class=n>saturated_sum</span><span class=p>)</span>
       <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>(&#39;🥕&#39;, 5)
 (&#39;🍆&#39;, 1)
-(&#39;🍅&#39;, 8)</code></pre></div></div><h3 id=example-3-combining-with-a-lambda-function>Example 3: Combining with a lambda function</h3><p>We can also use lambda functions to simplify <strong>Example 2</strong>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transform [...]
+(&#39;🍅&#39;, 8)</code></pre></div></div><h3 id=example-3-combining-with-a-lambda-function>Example 3: Combining with a lambda function</h3><p>We can also use lambda functions to simplify <strong>Example 2</strong>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transform [...]
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -74,7 +74,7 @@ which takes an <code>iterable</code> of numbers and adds them together.</p><div
       <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>(&#39;🥕&#39;, 5)
 (&#39;🍆&#39;, 1)
 (&#39;🍅&#39;, 8)</code></pre></div></div><h3 id=example-4-combining-with-multiple-arguments>Example 4: Combining with multiple arguments</h3><p>You can pass functions with multiple arguments to <code>CombineValues</code>.
-They are passed as additional positional arguments or keyword arguments to the function.</p><p>In this example, the lambda function takes <code>values</code> and <code>max_value</code> as arguments.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/co [...]
+They are passed as additional positional arguments or keyword arguments to the function.</p><p>In this example, the lambda function takes <code>values</code> and <code>max_value</code> as arguments.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/co [...]
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -95,7 +95,7 @@ For example, an empty accumulator for a sum would be <code>0</code>, while an em
 Called <em>once per element</em>.
 Takes an accumulator and an input element, combines them and returns the updated accumulator.</p></li><li><p><a href=https://beam.apache.org/releases/pydoc/current/apache_beam.transforms.core.html#apache_beam.transforms.core.CombineFn.merge_accumulators><code>CombineFn.merge_accumulators()</code></a>:
 Multiple accumulators could be processed in parallel, so this function helps merging them into a single accumulator.</p></li><li><p><a href=https://beam.apache.org/releases/pydoc/current/apache_beam.transforms.core.html#apache_beam.transforms.core.CombineFn.extract_output><code>CombineFn.extract_output()</code></a>:
-It allows to do additional calculations before extracting a result.</p></li></ul><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/combinevalues.py><img src=/images/code-icon.svg></a>
+It allows to do additional calculations before extracting a result.</p></li></ul><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/combinevalues_combinefn.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>class</span> <span class=nc>AverageFn</span><span class=p>(</span><span class=n>beam</span><span class=o>.</span><span class=n>CombineFn</span><span class=p>):</span>
diff --git a/website/generated-content/documentation/transforms/python/aggregation/count/index.html b/website/generated-content/documentation/transforms/python/aggregation/count/index.html
index 4588169022d..d4ab7c210ed 100644
--- a/website/generated-content/documentation/transforms/python/aggregation/count/index.html
+++ b/website/generated-content/documentation/transforms/python/aggregation/count/index.html
@@ -22,7 +22,7 @@ function endSearch(){var search=document.querySelector(".searchBar");search.clas
 function blockScroll(){$("body").toggleClass("fixedPosition");}
 function openMenu(){addPlaceholder();blockScroll();}</script><div class="clearfix container-main-content"><div class="section-nav closed" data-offset-top=90 data-offset-bottom=500><span class="section-nav-back glyphicon glyphicon-menu-left"></span><nav><ul class=section-nav-list data-section-nav><li><span class=section-nav-list-main-title>Documentation</span></li><li><a href=/documentation>Using the Documentation</a></li><li class=section-nav-item--collapsible><span class=section-nav-lis [...]
 Pydoc</a></td></table><p><br><br><br></p><p>Counts the number of elements within each aggregation.</p><h2 id=examples>Examples</h2><p>In the following example, we create a pipeline with two <code>PCollection</code>s of produce.
-Then, we apply <code>Count</code> to get the total number of elements in different ways.</p><h3 id=example-1-counting-all-elements-in-a-pcollection>Example 1: Counting all elements in a PCollection</h3><p>We use <code>Count.Globally()</code> to count <em>all</em> elements in a <code>PCollection</code>, even if there are duplicate elements.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bott [...]
+Then, we apply <code>Count</code> to get the total number of elements in different ways.</p><h3 id=example-1-counting-all-elements-in-a-pcollection>Example 1: Counting all elements in a PCollection</h3><p>We use <code>Count.Globally()</code> to count <em>all</em> elements in a <code>PCollection</code>, even if there are duplicate elements.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bott [...]
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -31,7 +31,7 @@ Then, we apply <code>Count</code> to get the total number of elements in differe
       <span class=o>|</span> <span class=s1>&#39;Create plants&#39;</span> <span class=o>&gt;&gt;</span> <span class=n>beam</span><span class=o>.</span><span class=n>Create</span><span class=p>(</span>
           <span class=p>[</span><span class=s1>&#39;🍓&#39;</span><span class=p>,</span> <span class=s1>&#39;🥕&#39;</span><span class=p>,</span> <span class=s1>&#39;🥕&#39;</span><span class=p>,</span> <span class=s1>&#39;🥕&#39;</span><span class=p>,</span> <span class=s1>&#39;🍆&#39;</span><span class=p>,</span> <span class=s1>&#39;🍆&#39;</span><span class=p>,</span> <span class=s1>&#39;🍅&#39;</span><span class=p>,</span> <span class=s1>&#39;🍅&#39;</span><span class=p>,</span> <span class= [...]
       <span class=o>|</span> <span class=s1>&#39;Count all elements&#39;</span> <span class=o>&gt;&gt;</span> <span class=n>beam</span><span class=o>.</span><span class=n>combiners</span><span class=o>.</span><span class=n>Count</span><span class=o>.</span><span class=n>Globally</span><span class=p>()</span>
-      <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>10</code></pre></div></div><h3 id= [...]
+      <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>10</code></pre></div></div><h3 id= [...]
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -53,7 +53,7 @@ Then, we apply <code>Count</code> to get the total number of elements in differe
       <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>(&#39;spring&#39;, 4)
 (&#39;summer&#39;, 3)
 (&#39;fall&#39;, 2)
-(&#39;winter&#39;, 1)</code></pre></div></div><h3 id=example-3-counting-all-unique-elements>Example 3: Counting all unique elements</h3><p>We use <code>Count.PerElement()</code> to count the only the unique elements in a <code>PCollection</code>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_ [...]
+(&#39;winter&#39;, 1)</code></pre></div></div><h3 id=example-3-counting-all-unique-elements>Example 3: Counting all unique elements</h3><p>We use <code>Count.PerElement()</code> to count the only the unique elements in a <code>PCollection</code>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_ [...]
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
diff --git a/website/generated-content/documentation/transforms/python/aggregation/groupby/index.html b/website/generated-content/documentation/transforms/python/aggregation/groupby/index.html
index ca79ac4c4b7..1969004a2ee 100644
--- a/website/generated-content/documentation/transforms/python/aggregation/groupby/index.html
+++ b/website/generated-content/documentation/transforms/python/aggregation/groupby/index.html
@@ -22,37 +22,38 @@ function endSearch(){var search=document.querySelector(".searchBar");search.clas
 function blockScroll(){$("body").toggleClass("fixedPosition");}
 function openMenu(){addPlaceholder();blockScroll();}</script><div class="clearfix container-main-content"><div class="section-nav closed" data-offset-top=90 data-offset-bottom=500><span class="section-nav-back glyphicon glyphicon-menu-left"></span><nav><ul class=section-nav-list data-section-nav><li><span class=section-nav-list-main-title>Documentation</span></li><li><a href=/documentation>Using the Documentation</a></li><li class=section-nav-item--collapsible><span class=section-nav-lis [...]
 Pydoc</a></td></table><p><br><br><br></p><p>Takes a collection of elements and produces a collection grouped,
-by properties of those elements.</p><p>Unlike <code>GroupByKey</code>, the key is dynamically created from the elements themselves.</p><h2 id=grouping-examples>Grouping Examples</h2><p>In the following example, we create a pipeline with a <code>PCollection</code> of fruits.</p><p>We use <code>GroupBy</code> to group all fruits by the first letter of their name.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip  [...]
-<a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>p</span><span class=p>:</span>
-  <span class=n>grouped</span> <span class=o>=</span> <span class=p>(</span>
-      <span class=n>p</span>
-      <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Create</span><span class=p>(</span>
-          <span class=p>[</span><span class=s1>&#39;strawberry&#39;</span><span class=p>,</span> <span class=s1>&#39;raspberry&#39;</span><span class=p>,</span> <span class=s1>&#39;blueberry&#39;</span><span class=p>,</span> <span class=s1>&#39;blackberry&#39;</span><span class=p>,</span> <span class=s1>&#39;banana&#39;</span><span class=p>])</span>
-      <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>GroupBy</span><span class=p>(</span><span class=k>lambda</span> <span class=n>s</span><span class=p>:</span> <span class=n>s</span><span class=p>[</span><span class=mi>0</span><span class=p>]))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-plac [...]
+by properties of those elements.</p><p>Unlike <code>GroupByKey</code>, the key is dynamically created from the elements themselves.</p><h2 id=grouping-examples>Grouping Examples</h2><p>In the following example, we create a pipeline with a <code>PCollection</code> of fruits.</p><p>We use <code>GroupBy</code> to group all fruits by the first letter of their name.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip  [...]
+<a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=n>grouped</span> <span class=o>=</span> <span class=p>(</span>
+    <span class=n>p</span>
+    <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Create</span><span class=p>(</span>
+        <span class=p>[</span><span class=s1>&#39;strawberry&#39;</span><span class=p>,</span> <span class=s1>&#39;raspberry&#39;</span><span class=p>,</span> <span class=s1>&#39;blueberry&#39;</span><span class=p>,</span> <span class=s1>&#39;blackberry&#39;</span><span class=p>,</span> <span class=s1>&#39;banana&#39;</span><span class=p>])</span>
+    <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>GroupBy</span><span class=p>(</span><span class=k>lambda</span> <span class=n>s</span><span class=p>:</span> <span class=n>s</span><span class=p>[</span><span class=mi>0</span><span class=p>])</span>
+    <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>(&#39;s&#39;, [&#39;strawberry&#39;]),
 (&#39;r&#39;, [&#39;raspberry&#39;]),
-(&#39;b&#39;, [&#39;banana&#39;, &#39;blackberry&#39;, &#39;blueberry&#39;]),</code></pre></div></div><p>We can group by a composite key consisting of multiple properties if desired.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/groupby_test.py><i [...]
-<a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>p</span><span class=p>:</span>
-  <span class=n>grouped</span> <span class=o>=</span> <span class=p>(</span>
-      <span class=n>p</span>
-      <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Create</span><span class=p>(</span>
-          <span class=p>[</span><span class=s1>&#39;strawberry&#39;</span><span class=p>,</span> <span class=s1>&#39;raspberry&#39;</span><span class=p>,</span> <span class=s1>&#39;blueberry&#39;</span><span class=p>,</span> <span class=s1>&#39;blackberry&#39;</span><span class=p>,</span> <span class=s1>&#39;banana&#39;</span><span class=p>])</span>
-      <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>GroupBy</span><span class=p>(</span>
-          <span class=n>letter</span><span class=o>=</span><span class=k>lambda</span> <span class=n>s</span><span class=p>:</span> <span class=n>s</span><span class=p>[</span><span class=mi>0</span><span class=p>],</span> <span class=n>is_berry</span><span class=o>=</span><span class=k>lambda</span> <span class=n>s</span><span class=p>:</span> <span class=s1>&#39;berry&#39;</span> <span class=ow>in</span> <span class=n>s</span><span class=p>))</span></code></pre></div></div></div><p>The [...]
+(&#39;b&#39;, [&#39;banana&#39;, &#39;blackberry&#39;, &#39;blueberry&#39;]),</code></pre></div></div><p>We can group by a composite key consisting of multiple properties if desired.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/groupby_two_exprs. [...]
+<a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=n>grouped</span> <span class=o>=</span> <span class=p>(</span>
+    <span class=n>p</span>
+    <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Create</span><span class=p>(</span>
+        <span class=p>[</span><span class=s1>&#39;strawberry&#39;</span><span class=p>,</span> <span class=s1>&#39;raspberry&#39;</span><span class=p>,</span> <span class=s1>&#39;blueberry&#39;</span><span class=p>,</span> <span class=s1>&#39;blackberry&#39;</span><span class=p>,</span> <span class=s1>&#39;banana&#39;</span><span class=p>])</span>
+    <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>GroupBy</span><span class=p>(</span><span class=n>letter</span><span class=o>=</span><span class=k>lambda</span> <span class=n>s</span><span class=p>:</span> <span class=n>s</span><span class=p>[</span><span class=mi>0</span><span class=p>],</span> <span class=n>is_berry</span><span class=o>=</span><span class=k>lambda</span> <span class=n>s</span><span class=p>:</span> <span class=s1>&#39;berry&#39;< [...]
+    <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p>The resulting key is a named tuple with the two requested attributes, and the
 values are grouped accordingly.</p><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>(NamedTuple(letter=&#39;s&#39;, is_berry=True), [&#39;strawberry&#39;]),
 (NamedTuple(letter=&#39;r&#39;, is_berry=True), [&#39;raspberry&#39;]),
 (NamedTuple(letter=&#39;b&#39;, is_berry=True), [&#39;blackberry&#39;, &#39;blueberry&#39;]),
 (NamedTuple(letter=&#39;b&#39;, is_berry=False), [&#39;banana&#39;]),</code></pre></div></div><p>In the case that the property one wishes to group by is an attribute, a string
 may be passed to <code>GroupBy</code> in the place of a callable expression. For example,
 suppose I have the following data</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=n>GROCERY_LIST</span> <span class=o>=</span> <span class=p>[</span>
-    <span class=n>beam</span><span class=o>.</span><span class=n>Row</span><span class=p>(</span><span class=n>recipe</span><span class=o>=</span><span class=s1>&#39;pie&#39;</span><span class=p>,</span> <span class=n>fruit</span><span class=o>=</span><span class=s1>&#39;strawberry&#39;</span><span class=p>,</span> <span class=n>quantity</span><span class=o>=</span><span class=mi>3</span><span class=p>,</span> <span class=n>unit_price</span><span class=o>=</span><span class=mf>1.50</span [...]
     <span class=n>beam</span><span class=o>.</span><span class=n>Row</span><span class=p>(</span><span class=n>recipe</span><span class=o>=</span><span class=s1>&#39;pie&#39;</span><span class=p>,</span> <span class=n>fruit</span><span class=o>=</span><span class=s1>&#39;raspberry&#39;</span><span class=p>,</span> <span class=n>quantity</span><span class=o>=</span><span class=mi>1</span><span class=p>,</span> <span class=n>unit_price</span><span class=o>=</span><span class=mf>3.50</span> [...]
     <span class=n>beam</span><span class=o>.</span><span class=n>Row</span><span class=p>(</span><span class=n>recipe</span><span class=o>=</span><span class=s1>&#39;pie&#39;</span><span class=p>,</span> <span class=n>fruit</span><span class=o>=</span><span class=s1>&#39;blackberry&#39;</span><span class=p>,</span> <span class=n>quantity</span><span class=o>=</span><span class=mi>1</span><span class=p>,</span> <span class=n>unit_price</span><span class=o>=</span><span class=mf>4.00</span [...]
     <span class=n>beam</span><span class=o>.</span><span class=n>Row</span><span class=p>(</span><span class=n>recipe</span><span class=o>=</span><span class=s1>&#39;pie&#39;</span><span class=p>,</span> <span class=n>fruit</span><span class=o>=</span><span class=s1>&#39;blueberry&#39;</span><span class=p>,</span> <span class=n>quantity</span><span class=o>=</span><span class=mi>1</span><span class=p>,</span> <span class=n>unit_price</span><span class=o>=</span><span class=mf>2.00</span> [...]
     <span class=n>beam</span><span class=o>.</span><span class=n>Row</span><span class=p>(</span><span class=n>recipe</span><span class=o>=</span><span class=s1>&#39;muffin&#39;</span><span class=p>,</span> <span class=n>fruit</span><span class=o>=</span><span class=s1>&#39;blueberry&#39;</span><span class=p>,</span> <span class=n>quantity</span><span class=o>=</span><span class=mi>2</span><span class=p>,</span> <span class=n>unit_price</span><span class=o>=</span><span class=mf>2.00</sp [...]
     <span class=n>beam</span><span class=o>.</span><span class=n>Row</span><span class=p>(</span><span class=n>recipe</span><span class=o>=</span><span class=s1>&#39;muffin&#39;</span><span class=p>,</span> <span class=n>fruit</span><span class=o>=</span><span class=s1>&#39;banana&#39;</span><span class=p>,</span> <span class=n>quantity</span><span class=o>=</span><span class=mi>3</span><span class=p>,</span> <span class=n>unit_price</span><span class=o>=</span><span class=mf>1.00</span> [...]
-<span class=p>]</span></code></pre></div></div></div><p>We can then do</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/groupby_test.py><img src=/images/code-icon.svg></a>
-<a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>p</span><span class=p>:</span>
-  <span class=n>grouped</span> <span class=o>=</span> <span class=n>p</span> <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Create</span><span class=p>(</span><span class=n>GROCERY_LIST</span><span class=p>)</span> <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>GroupBy</span><span class=p>(</span><span class=s1>&#39;recipe&#39;</span><span class=p>)</span></code></pre></div></div></div><p class=notebook-skip>Output [...]
+<span class=p>]</span></code></pre></div></div></div><p>We can then do</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/groupby_attr.py><img src=/images/code-icon.svg></a>
+<a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=n>grouped</span> <span class=o>=</span> <span class=p>(</span>
+    <span class=n>p</span>
+    <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Create</span><span class=p>(</span><span class=n>GROCERY_LIST</span><span class=p>)</span>
+    <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>GroupBy</span><span class=p>(</span><span class=s1>&#39;recipe&#39;</span><span class=p>)</span>
+    <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>(
     &#39;pie&#39;,
     [
         beam.Row(
@@ -89,87 +90,87 @@ suppose I have the following data</p><div class="language-py snippet"><div class
             fruit=&#39;banana&#39;,
             quantity=3,
             unit_price=1.00),
-    ]),</code></pre></div></div><p>It is possible to mix and match attributes and expressions, for example</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/groupby_test.py><img src=/images/code-icon.svg></a>
-<a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>p</span><span class=p>:</span>
-  <span class=n>grouped</span> <span class=o>=</span> <span class=p>(</span>
-      <span class=n>p</span> <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Create</span><span class=p>(</span><span class=n>GROCERY_LIST</span><span class=p>)</span>
-      <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>GroupBy</span><span class=p>(</span><span class=s1>&#39;recipe&#39;</span><span class=p>,</span> <span class=n>is_berry</span><span class=o>=</span><span class=k>lambda</span> <span class=n>x</span><span class=p>:</span> <span class=s1>&#39;berry&#39;</span> <span class=ow>in</span> <span class=n>x</span><span class=o>.</span><span class=n>fruit</span><span class=p>))</span></code></pre></div></div> [...]
-    NamedTuple(recipe=&#39;pie&#39;, is_berry=True),
-    [
-        beam.Row(
-            recipe=&#39;pie&#39;,
-            fruit=&#39;strawberry&#39;,
-            quantity=3,
-            unit_price=1.50),
-        beam.Row(
-            recipe=&#39;pie&#39;,
-            fruit=&#39;raspberry&#39;,
-            quantity=1,
-            unit_price=3.50),
-        beam.Row(
-            recipe=&#39;pie&#39;,
-            fruit=&#39;blackberry&#39;,
-            quantity=1,
-            unit_price=4.00),
-        beam.Row(
-            recipe=&#39;pie&#39;,
-            fruit=&#39;blueberry&#39;,
-            quantity=1,
-            unit_price=2.00),
-    ]),
+    ]),</code></pre></div></div><p>It is possible to mix and match attributes and expressions, for example</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/groupby_attr_expr.py><img src=/images/code-icon.svg></a>
+<a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=n>grouped</span> <span class=o>=</span> <span class=p>(</span>
+    <span class=n>p</span>
+    <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Create</span><span class=p>(</span><span class=n>GROCERY_LIST</span><span class=p>)</span>
+    <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>GroupBy</span><span class=p>(</span><span class=s1>&#39;recipe&#39;</span><span class=p>,</span> <span class=n>is_berry</span><span class=o>=</span><span class=k>lambda</span> <span class=n>x</span><span class=p>:</span> <span class=s1>&#39;berry&#39;</span> <span class=ow>in</span> <span class=n>x</span><span class=o>.</span><span class=n>fruit</span><span class=p>)</span>
+    <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>(
+  NamedTuple(recipe=&#39;pie&#39;, is_berry=True),
+  [
+    beam.Row(
+      recipe=&#39;pie&#39;,
+      fruit=&#39;strawberry&#39;,
+      quantity=3,
+      unit_price=1.50),
+    beam.Row(
+      recipe=&#39;pie&#39;,
+      fruit=&#39;raspberry&#39;,
+      quantity=1,
+      unit_price=3.50),
+    beam.Row(
+      recipe=&#39;pie&#39;,
+      fruit=&#39;blackberry&#39;,
+      quantity=1,
+      unit_price=4.00),
+    beam.Row(
+      recipe=&#39;pie&#39;,
+      fruit=&#39;blueberry&#39;,
+      quantity=1,
+      unit_price=2.00),
+  ]),
 (
-    NamedTuple(recipe=&#39;muffin&#39;, is_berry=True),
-    [
-        beam.Row(
-            recipe=&#39;muffin&#39;,
-            fruit=&#39;blueberry&#39;,
-            quantity=2,
-            unit_price=2.00),
-    ]),
+  NamedTuple(recipe=&#39;muffin&#39;, is_berry=True),
+  [
+    beam.Row(
+      recipe=&#39;muffin&#39;,
+      fruit=&#39;blueberry&#39;,
+      quantity=2,
+      unit_price=2.00),
+  ]),
 (
-    NamedTuple(recipe=&#39;muffin&#39;, is_berry=False),
-    [
-        beam.Row(
-            recipe=&#39;muffin&#39;,
-            fruit=&#39;banana&#39;,
-            quantity=3,
-            unit_price=1.00),
-    ]),</code></pre></div></div><h2 id=aggregation>Aggregation</h2><p>Grouping is often used in conjunction with aggregation, and the
+  NamedTuple(recipe=&#39;muffin&#39;, is_berry=False),
+  [
+    beam.Row(
+      recipe=&#39;muffin&#39;,
+      fruit=&#39;banana&#39;,
+      quantity=3,
+      unit_price=1.00),
+  ]),</code></pre></div></div><h2 id=aggregation>Aggregation</h2><p>Grouping is often used in conjunction with aggregation, and the
 <code>aggregate_field</code> method of the <code>GroupBy</code> transform can be used to accomplish
 this easily.
 This method takes three parameters: the field (or expression) which to
 aggregate, the <code>CombineFn</code> (or associative <code>callable</code>) with which to aggregate
 by, and finally a field name in which to store the result.
 For example, suppose one wanted to compute the amount of each fruit to buy.
-One could write</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/groupby_test.py><img src=/images/code-icon.svg></a>
-<a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>p</span><span class=p>:</span>
-  <span class=n>grouped</span> <span class=o>=</span> <span class=p>(</span>
-      <span class=n>p</span>
-      <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Create</span><span class=p>(</span><span class=n>GROCERY_LIST</span><span class=p>)</span>
-      <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>GroupBy</span><span class=p>(</span><span class=s1>&#39;fruit&#39;</span><span class=p>)</span><span class=o>.</span><span class=n>aggregate_field</span><span class=p>(</span>
-          <span class=s1>&#39;quantity&#39;</span><span class=p>,</span> <span class=nb>sum</span><span class=p>,</span> <span class=s1>&#39;total_quantity&#39;</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>NamedTuple(frui [...]
+One could write</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/groupby_simple_aggregate.py><img src=/images/code-icon.svg></a>
+<a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=n>grouped</span> <span class=o>=</span> <span class=p>(</span>
+    <span class=n>p</span>
+    <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Create</span><span class=p>(</span><span class=n>GROCERY_LIST</span><span class=p>)</span>
+    <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>GroupBy</span><span class=p>(</span><span class=s1>&#39;fruit&#39;</span><span class=p>)</span><span class=o>.</span><span class=n>aggregate_field</span><span class=p>(</span>
+        <span class=s1>&#39;quantity&#39;</span><span class=p>,</span> <span class=nb>sum</span><span class=p>,</span> <span class=s1>&#39;total_quantity&#39;</span><span class=p>)</span>
+    <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>NamedTuple(fruit=&#39;strawberry&#39 [...]
 NamedTuple(fruit=&#39;raspberry&#39;, total_quantity=1),
 NamedTuple(fruit=&#39;blackberry&#39;, total_quantity=1),
 NamedTuple(fruit=&#39;blueberry&#39;, total_quantity=3),
 NamedTuple(fruit=&#39;banana&#39;, total_quantity=3),</code></pre></div></div><p>Similar to the parameters in <code>GroupBy</code>, one can also aggregate multiple fields
-and by expressions.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/groupby_test.py><img src=/images/code-icon.svg></a>
-<a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>p</span><span class=p>:</span>
-  <span class=n>grouped</span> <span class=o>=</span> <span class=p>(</span>
-      <span class=n>p</span>
-      <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Create</span><span class=p>(</span><span class=n>GROCERY_LIST</span><span class=p>)</span>
-      <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>GroupBy</span><span class=p>(</span><span class=s1>&#39;recipe&#39;</span><span class=p>)</span><span class=o>.</span><span class=n>aggregate_field</span><span class=p>(</span>
-          <span class=s1>&#39;quantity&#39;</span><span class=p>,</span> <span class=nb>sum</span><span class=p>,</span> <span class=s1>&#39;total_quantity&#39;</span><span class=p>)</span><span class=o>.</span><span class=n>aggregate_field</span><span class=p>(</span>
-              <span class=k>lambda</span> <span class=n>x</span><span class=p>:</span> <span class=n>x</span><span class=o>.</span><span class=n>quantity</span> <span class=o>*</span> <span class=n>x</span><span class=o>.</span><span class=n>unit_price</span><span class=p>,</span> <span class=nb>sum</span><span class=p>,</span> <span class=s1>&#39;price&#39;</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebo [...]
+and by expressions.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/groupby_expr_aggregate.py><img src=/images/code-icon.svg></a>
+<a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=n>grouped</span> <span class=o>=</span> <span class=p>(</span>
+    <span class=n>p</span>
+    <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Create</span><span class=p>(</span><span class=n>GROCERY_LIST</span><span class=p>)</span>
+    <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>GroupBy</span><span class=p>(</span><span class=s1>&#39;recipe&#39;</span><span class=p>)</span><span class=o>.</span><span class=n>aggregate_field</span><span class=p>(</span>
+        <span class=s1>&#39;quantity&#39;</span><span class=p>,</span> <span class=nb>sum</span><span class=p>,</span> <span class=s1>&#39;total_quantity&#39;</span><span class=p>)</span><span class=o>.</span><span class=n>aggregate_field</span><span class=p>(</span>
+            <span class=k>lambda</span> <span class=n>x</span><span class=p>:</span> <span class=n>x</span><span class=o>.</span><span class=n>quantity</span> <span class=o>*</span> <span class=n>x</span><span class=o>.</span><span class=n>unit_price</span><span class=p>,</span> <span class=nb>sum</span><span class=p>,</span> <span class=s1>&#39;price&#39;</span><span class=p>)</span>
+    <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>NamedTuple(recipe=&#39;pie&#39;, tot [...]
 NamedTuple(recipe=&#39;muffin&#39;, total_quantity=5, price=7.00),</code></pre></div></div><p>One can, of course, aggregate the same field multiple times as well.
-This example also illustrates a global grouping, as the grouping key is empty.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/groupby_test.py><img src=/images/code-icon.svg></a>
-<a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>p</span><span class=p>:</span>
-  <span class=n>grouped</span> <span class=o>=</span> <span class=p>(</span>
-      <span class=n>p</span>
-      <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Create</span><span class=p>(</span><span class=n>GROCERY_LIST</span><span class=p>)</span>
-      <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>GroupBy</span><span class=p>()</span><span class=o>.</span><span class=n>aggregate_field</span><span class=p>(</span>
-          <span class=s1>&#39;unit_price&#39;</span><span class=p>,</span> <span class=nb>min</span><span class=p>,</span> <span class=s1>&#39;min_price&#39;</span><span class=p>)</span><span class=o>.</span><span class=n>aggregate_field</span><span class=p>(</span>
-              <span class=s1>&#39;unit_price&#39;</span><span class=p>,</span> <span class=n>MeanCombineFn</span><span class=p>(),</span> <span class=s1>&#39;mean_price&#39;</span><span class=p>)</span><span class=o>.</span><span class=n>aggregate_field</span><span class=p>(</span>
-                  <span class=s1>&#39;unit_price&#39;</span><span class=p>,</span> <span class=nb>max</span><span class=p>,</span> <span class=s1>&#39;max_price&#39;</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>NamedTuple [...]
+This example also illustrates a global grouping, as the grouping key is empty.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/groupby_global_aggregate.py><img src=/images/code-icon.svg></a>
+<a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=n>grouped</span> <span class=o>=</span> <span class=p>(</span>
+    <span class=n>p</span>
+    <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Create</span><span class=p>(</span><span class=n>GROCERY_LIST</span><span class=p>)</span>
+    <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>GroupBy</span><span class=p>()</span><span class=o>.</span><span class=n>aggregate_field</span><span class=p>(</span>
+        <span class=s1>&#39;unit_price&#39;</span><span class=p>,</span> <span class=nb>min</span><span class=p>,</span> <span class=s1>&#39;min_price&#39;</span><span class=p>)</span><span class=o>.</span><span class=n>aggregate_field</span><span class=p>(</span>
+            <span class=s1>&#39;unit_price&#39;</span><span class=p>,</span> <span class=n>MeanCombineFn</span><span class=p>(),</span> <span class=s1>&#39;mean_price&#39;</span><span class=p>)</span><span class=o>.</span><span class=n>aggregate_field</span><span class=p>(</span>
+                <span class=s1>&#39;unit_price&#39;</span><span class=p>,</span> <span class=nb>max</span><span class=p>,</span> <span class=s1>&#39;max_price&#39;</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>NamedTuple(m [...]
 Pydoc</a></td></table><p><br><br><br></p><div class=feedback><p class=update>Last updated on 2023/06/05</p><h3>Have you found everything you were looking for?</h3><p class=description>Was it all useful and clear? Is there anything that you would like to change? Let us know!</p><button class=load-button><a href="mailto:dev@beam.apache.org?subject=Beam Website Feedback">SEND FEEDBACK</a></button></div></div></div><footer class=footer><div class=footer__contained><div class=footer__cols><di [...]
 <a href=https://www.apache.org>The Apache Software Foundation</a>
 | <a href=/privacy_policy>Privacy Policy</a>
diff --git a/website/generated-content/documentation/transforms/python/aggregation/latest/index.html b/website/generated-content/documentation/transforms/python/aggregation/latest/index.html
index 5a406baf48f..421f62f81c0 100644
--- a/website/generated-content/documentation/transforms/python/aggregation/latest/index.html
+++ b/website/generated-content/documentation/transforms/python/aggregation/latest/index.html
@@ -21,7 +21,7 @@ function addPlaceholder(){$('input:text').attr('placeholder',"What are you looki
 function endSearch(){var search=document.querySelector(".searchBar");search.classList.add("disappear");var icons=document.querySelector("#iconsBar");icons.classList.remove("disappear");}
 function blockScroll(){$("body").toggleClass("fixedPosition");}
 function openMenu(){addPlaceholder();blockScroll();}</script><div class="clearfix container-main-content"><div class="section-nav closed" data-offset-top=90 data-offset-bottom=500><span class="section-nav-back glyphicon glyphicon-menu-left"></span><nav><ul class=section-nav-list data-section-nav><li><span class=section-nav-list-main-title>Documentation</span></li><li><a href=/documentation>Using the Documentation</a></li><li class=section-nav-item--collapsible><span class=section-nav-lis [...]
-Pydoc</a></td></table><p><br><br><br></p><p>Gets the element with the latest timestamp.</p><h2 id=examples>Examples</h2><p>In the following examples, we create a pipeline with a <code>PCollection</code> of produce with a timestamp for their harvest date.</p><p>We use <code>Latest</code> to get the element with the latest timestamp from the <code>PCollection</code>.</p><h3 id=example-1-latest-element-globally>Example 1: Latest element globally</h3><p>We use <code>Latest.Globally()</code>  [...]
+Pydoc</a></td></table><p><br><br><br></p><p>Gets the element with the latest timestamp.</p><h2 id=examples>Examples</h2><p>In the following examples, we create a pipeline with a <code>PCollection</code> of produce with a timestamp for their harvest date.</p><p>We use <code>Latest</code> to get the element with the latest timestamp from the <code>PCollection</code>.</p><h3 id=example-1-latest-element-globally>Example 1: Latest element globally</h3><p>We use <code>Latest.Globally()</code>  [...]
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 <span class=kn>import</span> <span class=nn>time</span>
 
@@ -52,7 +52,7 @@ Pydoc</a></td></table><p><br><br><br></p><p>Gets the element with the latest tim
           <span class=k>lambda</span> <span class=n>crop</span><span class=p>:</span> <span class=n>beam</span><span class=o>.</span><span class=n>window</span><span class=o>.</span><span class=n>TimestampedValue</span><span class=p>(</span>
               <span class=n>crop</span><span class=p>[</span><span class=s1>&#39;item&#39;</span><span class=p>],</span> <span class=n>to_unix_time</span><span class=p>(</span><span class=n>crop</span><span class=p>[</span><span class=s1>&#39;harvest&#39;</span><span class=p>])))</span>
       <span class=o>|</span> <span class=s1>&#39;Get latest element&#39;</span> <span class=o>&gt;&gt;</span> <span class=n>beam</span><span class=o>.</span><span class=n>combiners</span><span class=o>.</span><span class=n>Latest</span><span class=o>.</span><span class=n>Globally</span><span class=p>()</span>
-      <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>🍆</code></pre></div></div><h3 id=e [...]
+      <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>🍆</code></pre></div></div><h3 id=e [...]
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 <span class=kn>import</span> <span class=nn>time</span>
 
diff --git a/website/generated-content/documentation/transforms/python/aggregation/max/index.html b/website/generated-content/documentation/transforms/python/aggregation/max/index.html
index d7ba6b1a30c..09f955f8241 100644
--- a/website/generated-content/documentation/transforms/python/aggregation/max/index.html
+++ b/website/generated-content/documentation/transforms/python/aggregation/max/index.html
@@ -22,7 +22,7 @@ function endSearch(){var search=document.querySelector(".searchBar");search.clas
 function blockScroll(){$("body").toggleClass("fixedPosition");}
 function openMenu(){addPlaceholder();blockScroll();}</script><div class="clearfix container-main-content"><div class="section-nav closed" data-offset-top=90 data-offset-bottom=500><span class="section-nav-back glyphicon glyphicon-menu-left"></span><nav><ul class=section-nav-list data-section-nav><li><span class=section-nav-list-main-title>Documentation</span></li><li><a href=/documentation>Using the Documentation</a></li><li class=section-nav-item--collapsible><span class=section-nav-lis [...]
 Pydoc</a></td></table><p><br><br><br></p><p>Gets the element with the maximum value within each aggregation.</p><h2 id=examples>Examples</h2><p>In the following example, we create a pipeline with a <code>PCollection</code>.
-Then, we get the element with the maximum value in different ways.</p><h3 id=example-1-maximum-element-in-a-pcollection>Example 1: Maximum element in a PCollection</h3><p>We use <code>Combine.Globally()</code> to get the maximum element from the <em>entire</em> <code>PCollection</code>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/ap [...]
+Then, we get the element with the maximum value in different ways.</p><h3 id=example-1-maximum-element-in-a-pcollection>Example 1: Maximum element in a PCollection</h3><p>We use <code>Combine.Globally()</code> to get the maximum element from the <em>entire</em> <code>PCollection</code>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/ap [...]
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -31,7 +31,7 @@ Then, we get the element with the maximum value in different ways.</p><h3 id=exa
       <span class=o>|</span> <span class=s1>&#39;Create numbers&#39;</span> <span class=o>&gt;&gt;</span> <span class=n>beam</span><span class=o>.</span><span class=n>Create</span><span class=p>([</span><span class=mi>3</span><span class=p>,</span> <span class=mi>4</span><span class=p>,</span> <span class=mi>1</span><span class=p>,</span> <span class=mi>2</span><span class=p>])</span>
       <span class=o>|</span> <span class=s1>&#39;Get max value&#39;</span> <span class=o>&gt;&gt;</span>
       <span class=n>beam</span><span class=o>.</span><span class=n>CombineGlobally</span><span class=p>(</span><span class=k>lambda</span> <span class=n>elements</span><span class=p>:</span> <span class=nb>max</span><span class=p>(</span><span class=n>elements</span> <span class=ow>or</span> <span class=p>[</span><span class=bp>None</span><span class=p>]))</span>
-      <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>4</code></pre></div></div><h3 id=e [...]
+      <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>4</code></pre></div></div><h3 id=e [...]
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
diff --git a/website/generated-content/documentation/transforms/python/aggregation/mean/index.html b/website/generated-content/documentation/transforms/python/aggregation/mean/index.html
index 52e6b873d9b..97909ce1bca 100644
--- a/website/generated-content/documentation/transforms/python/aggregation/mean/index.html
+++ b/website/generated-content/documentation/transforms/python/aggregation/mean/index.html
@@ -24,7 +24,7 @@ function openMenu(){addPlaceholder();blockScroll();}</script><div class="clearfi
 Pydoc</a></td></table><p><br><br><br></p><p>Transforms for computing the arithmetic mean of the elements in a collection,
 or the mean of the values associated with each key in a collection of
 key-value pairs.</p><h2 id=examples>Examples</h2><p>In the following example, we create a pipeline with a <code>PCollection</code>.
-Then, we get the element with the average value in different ways.</p><h3 id=example-1-mean-of-element-in-a-pcollection>Example 1: Mean of element in a PCollection</h3><p>We use <code>Mean.Globally()</code> to get the average of the elements from the <em>entire</em> <code>PCollection</code>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.c [...]
+Then, we get the element with the average value in different ways.</p><h3 id=example-1-mean-of-element-in-a-pcollection>Example 1: Mean of element in a PCollection</h3><p>We use <code>Mean.Globally()</code> to get the average of the elements from the <em>entire</em> <code>PCollection</code>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.c [...]
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -32,7 +32,7 @@ Then, we get the element with the average value in different ways.</p><h3 id=exa
       <span class=n>pipeline</span>
       <span class=o>|</span> <span class=s1>&#39;Create numbers&#39;</span> <span class=o>&gt;&gt;</span> <span class=n>beam</span><span class=o>.</span><span class=n>Create</span><span class=p>([</span><span class=mi>3</span><span class=p>,</span> <span class=mi>4</span><span class=p>,</span> <span class=mi>1</span><span class=p>,</span> <span class=mi>2</span><span class=p>])</span>
       <span class=o>|</span> <span class=s1>&#39;Get mean value&#39;</span> <span class=o>&gt;&gt;</span> <span class=n>beam</span><span class=o>.</span><span class=n>combiners</span><span class=o>.</span><span class=n>Mean</span><span class=o>.</span><span class=n>Globally</span><span class=p>()</span>
-      <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>2.5</code></pre></div></div><h3 id [...]
+      <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>2.5</code></pre></div></div><h3 id [...]
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
diff --git a/website/generated-content/documentation/transforms/python/aggregation/min/index.html b/website/generated-content/documentation/transforms/python/aggregation/min/index.html
index 9700d4d9f4c..5d94df38b20 100644
--- a/website/generated-content/documentation/transforms/python/aggregation/min/index.html
+++ b/website/generated-content/documentation/transforms/python/aggregation/min/index.html
@@ -22,7 +22,7 @@ function endSearch(){var search=document.querySelector(".searchBar");search.clas
 function blockScroll(){$("body").toggleClass("fixedPosition");}
 function openMenu(){addPlaceholder();blockScroll();}</script><div class="clearfix container-main-content"><div class="section-nav closed" data-offset-top=90 data-offset-bottom=500><span class="section-nav-back glyphicon glyphicon-menu-left"></span><nav><ul class=section-nav-list data-section-nav><li><span class=section-nav-list-main-title>Documentation</span></li><li><a href=/documentation>Using the Documentation</a></li><li class=section-nav-item--collapsible><span class=section-nav-lis [...]
 Pydoc</a></td></table><p><br><br><br></p><p>Gets the element with the minimum value within each aggregation.</p><h2 id=examples>Examples</h2><p>In the following example, we create a pipeline with a <code>PCollection</code>.
-Then, we get the element with the minimum value in different ways.</p><h3 id=example-1-minimum-element-in-a-pcollection>Example 1: Minimum element in a PCollection</h3><p>We use <code>Combine.Globally()</code> to get the minimum element from the <em>entire</em> <code>PCollection</code>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/ap [...]
+Then, we get the element with the minimum value in different ways.</p><h3 id=example-1-minimum-element-in-a-pcollection>Example 1: Minimum element in a PCollection</h3><p>We use <code>Combine.Globally()</code> to get the minimum element from the <em>entire</em> <code>PCollection</code>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/ap [...]
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -31,7 +31,7 @@ Then, we get the element with the minimum value in different ways.</p><h3 id=exa
       <span class=o>|</span> <span class=s1>&#39;Create numbers&#39;</span> <span class=o>&gt;&gt;</span> <span class=n>beam</span><span class=o>.</span><span class=n>Create</span><span class=p>([</span><span class=mi>3</span><span class=p>,</span> <span class=mi>4</span><span class=p>,</span> <span class=mi>1</span><span class=p>,</span> <span class=mi>2</span><span class=p>])</span>
       <span class=o>|</span> <span class=s1>&#39;Get min value&#39;</span> <span class=o>&gt;&gt;</span>
       <span class=n>beam</span><span class=o>.</span><span class=n>CombineGlobally</span><span class=p>(</span><span class=k>lambda</span> <span class=n>elements</span><span class=p>:</span> <span class=nb>min</span><span class=p>(</span><span class=n>elements</span> <span class=ow>or</span> <span class=p>[</span><span class=o>-</span><span class=mi>1</span><span class=p>]))</span>
-      <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>1</code></pre></div></div><h3 id=e [...]
+      <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>1</code></pre></div></div><h3 id=e [...]
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
diff --git a/website/generated-content/documentation/transforms/python/aggregation/sample/index.html b/website/generated-content/documentation/transforms/python/aggregation/sample/index.html
index 195c58e8cf5..f473bce0035 100644
--- a/website/generated-content/documentation/transforms/python/aggregation/sample/index.html
+++ b/website/generated-content/documentation/transforms/python/aggregation/sample/index.html
@@ -24,7 +24,7 @@ function openMenu(){addPlaceholder();blockScroll();}</script><div class="clearfi
 Pydoc</a></td></table><p><br><br><br></p><p>Transforms for taking samples of the elements in a collection, or
 samples of the values associated with each key in a collection of
 key-value pairs.</p><h2 id=examples>Examples</h2><p>In the following example, we create a pipeline with a <code>PCollection</code>.
-Then, we get a random sample of elements in different ways.</p><h3 id=example-1-sample-elements-from-a-pcollection>Example 1: Sample elements from a PCollection</h3><p>We use <code>Sample.FixedSizeGlobally()</code> to get a fixed-size random sample of elements from the <em>entire</em> <code>PCollection</code>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" hr [...]
+Then, we get a random sample of elements in different ways.</p><h3 id=example-1-sample-elements-from-a-pcollection>Example 1: Sample elements from a PCollection</h3><p>We use <code>Sample.FixedSizeGlobally()</code> to get a fixed-size random sample of elements from the <em>entire</em> <code>PCollection</code>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" hr [...]
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -38,7 +38,7 @@ Then, we get a random sample of elements in different ways.</p><h3 id=example-1-
           <span class=s1>&#39;🥔 Potato&#39;</span><span class=p>,</span>
       <span class=p>])</span>
       <span class=o>|</span> <span class=s1>&#39;Sample N elements&#39;</span> <span class=o>&gt;&gt;</span> <span class=n>beam</span><span class=o>.</span><span class=n>combiners</span><span class=o>.</span><span class=n>Sample</span><span class=o>.</span><span class=n>FixedSizeGlobally</span><span class=p>(</span><span class=mi>3</span><span class=p>)</span>
-      <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>[&#39;🥕 Carrot&#39;, &#39;🍆 Eggpla [...]
+      <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>[&#39;🥕 Carrot&#39;, &#39;🍆 Eggpla [...]
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
diff --git a/website/generated-content/documentation/transforms/python/aggregation/sum/index.html b/website/generated-content/documentation/transforms/python/aggregation/sum/index.html
index 0628232cdc6..d1af156a973 100644
--- a/website/generated-content/documentation/transforms/python/aggregation/sum/index.html
+++ b/website/generated-content/documentation/transforms/python/aggregation/sum/index.html
@@ -22,7 +22,7 @@ function endSearch(){var search=document.querySelector(".searchBar");search.clas
 function blockScroll(){$("body").toggleClass("fixedPosition");}
 function openMenu(){addPlaceholder();blockScroll();}</script><div class="clearfix container-main-content"><div class="section-nav closed" data-offset-top=90 data-offset-bottom=500><span class="section-nav-back glyphicon glyphicon-menu-left"></span><nav><ul class=section-nav-list data-section-nav><li><span class=section-nav-list-main-title>Documentation</span></li><li><a href=/documentation>Using the Documentation</a></li><li class=section-nav-item--collapsible><span class=section-nav-lis [...]
 Pydoc</a></td></table><p><br><br><br></p><p>Sums all the elements within each aggregation.</p><h2 id=examples>Examples</h2><p>In the following example, we create a pipeline with a <code>PCollection</code>.
-Then, we get the sum of all the element values in different ways.</p><h3 id=example-1-sum-of-the-elements-in-a-pcollection>Example 1: Sum of the elements in a PCollection</h3><p>We use <code>Combine.Globally()</code> to get sum of all the element values from the <em>entire</em> <code>PCollection</code>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=http [...]
+Then, we get the sum of all the element values in different ways.</p><h3 id=example-1-sum-of-the-elements-in-a-pcollection>Example 1: Sum of the elements in a PCollection</h3><p>We use <code>Combine.Globally()</code> to get sum of all the element values from the <em>entire</em> <code>PCollection</code>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=http [...]
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -30,7 +30,7 @@ Then, we get the sum of all the element values in different ways.</p><h3 id=exam
       <span class=n>pipeline</span>
       <span class=o>|</span> <span class=s1>&#39;Create numbers&#39;</span> <span class=o>&gt;&gt;</span> <span class=n>beam</span><span class=o>.</span><span class=n>Create</span><span class=p>([</span><span class=mi>3</span><span class=p>,</span> <span class=mi>4</span><span class=p>,</span> <span class=mi>1</span><span class=p>,</span> <span class=mi>2</span><span class=p>])</span>
       <span class=o>|</span> <span class=s1>&#39;Sum values&#39;</span> <span class=o>&gt;&gt;</span> <span class=n>beam</span><span class=o>.</span><span class=n>CombineGlobally</span><span class=p>(</span><span class=nb>sum</span><span class=p>)</span>
-      <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>10</code></pre></div></div><h3 id= [...]
+      <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>10</code></pre></div></div><h3 id= [...]
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
diff --git a/website/generated-content/documentation/transforms/python/aggregation/top/index.html b/website/generated-content/documentation/transforms/python/aggregation/top/index.html
index ff610522f5b..9b02d1486bd 100644
--- a/website/generated-content/documentation/transforms/python/aggregation/top/index.html
+++ b/website/generated-content/documentation/transforms/python/aggregation/top/index.html
@@ -24,7 +24,7 @@ function openMenu(){addPlaceholder();blockScroll();}</script><div class="clearfi
 Pydoc</a></td></table><p><br><br><br></p><p>Transforms for finding the largest (or smallest) set of elements in
 a collection, or the largest (or smallest) set of values associated
 with each key in a collection of key-value pairs.</p><h2 id=examples>Examples</h2><p>In the following example, we create a pipeline with a <code>PCollection</code>.
-Then, we get the largest or smallest elements in different ways.</p><h3 id=example-1-largest-elements-from-a-pcollection>Example 1: Largest elements from a PCollection</h3><p>We use <code>Top.Largest()</code> to get the largest elements from the <em>entire</em> <code>PCollection</code>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/ap [...]
+Then, we get the largest or smallest elements in different ways.</p><h3 id=example-1-largest-elements-from-a-pcollection>Example 1: Largest elements from a PCollection</h3><p>We use <code>Top.Largest()</code> to get the largest elements from the <em>entire</em> <code>PCollection</code>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/ap [...]
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -32,7 +32,7 @@ Then, we get the largest or smallest elements in different ways.</p><h3 id=examp
       <span class=n>pipeline</span>
       <span class=o>|</span> <span class=s1>&#39;Create numbers&#39;</span> <span class=o>&gt;&gt;</span> <span class=n>beam</span><span class=o>.</span><span class=n>Create</span><span class=p>([</span><span class=mi>3</span><span class=p>,</span> <span class=mi>4</span><span class=p>,</span> <span class=mi>1</span><span class=p>,</span> <span class=mi>2</span><span class=p>])</span>
       <span class=o>|</span> <span class=s1>&#39;Largest N values&#39;</span> <span class=o>&gt;&gt;</span> <span class=n>beam</span><span class=o>.</span><span class=n>combiners</span><span class=o>.</span><span class=n>Top</span><span class=o>.</span><span class=n>Largest</span><span class=p>(</span><span class=mi>2</span><span class=p>)</span>
-      <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>[4, 3]</code></pre></div></div><h3 [...]
+      <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>[4, 3]</code></pre></div></div><h3 [...]
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -49,7 +49,7 @@ Then, we get the largest or smallest elements in different ways.</p><h3 id=examp
       <span class=o>|</span> <span class=s1>&#39;Largest N values per key&#39;</span> <span class=o>&gt;&gt;</span> <span class=n>beam</span><span class=o>.</span><span class=n>combiners</span><span class=o>.</span><span class=n>Top</span><span class=o>.</span><span class=n>LargestPerKey</span><span class=p>(</span><span class=mi>2</span><span class=p>)</span>
       <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>(&#39;🥕&#39;, [3, 2])
 (&#39;🍆&#39;, [1])
-(&#39;🍅&#39;, [5, 4])</code></pre></div></div><h3 id=example-3-smallest-elements-from-a-pcollection>Example 3: Smallest elements from a PCollection</h3><p>We use <code>Top.Smallest()</code> to get the smallest elements from the <em>entire</em> <code>PCollection</code>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/mas [...]
+(&#39;🍅&#39;, [5, 4])</code></pre></div></div><h3 id=example-3-smallest-elements-from-a-pcollection>Example 3: Smallest elements from a PCollection</h3><p>We use <code>Top.Smallest()</code> to get the smallest elements from the <em>entire</em> <code>PCollection</code>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/mas [...]
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -57,7 +57,7 @@ Then, we get the largest or smallest elements in different ways.</p><h3 id=examp
       <span class=n>pipeline</span>
       <span class=o>|</span> <span class=s1>&#39;Create numbers&#39;</span> <span class=o>&gt;&gt;</span> <span class=n>beam</span><span class=o>.</span><span class=n>Create</span><span class=p>([</span><span class=mi>3</span><span class=p>,</span> <span class=mi>4</span><span class=p>,</span> <span class=mi>1</span><span class=p>,</span> <span class=mi>2</span><span class=p>])</span>
       <span class=o>|</span> <span class=s1>&#39;Smallest N values&#39;</span> <span class=o>&gt;&gt;</span> <span class=n>beam</span><span class=o>.</span><span class=n>combiners</span><span class=o>.</span><span class=n>Top</span><span class=o>.</span><span class=n>Smallest</span><span class=p>(</span><span class=mi>2</span><span class=p>)</span>
-      <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>[1, 2]</code></pre></div></div><h3 [...]
+      <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>[1, 2]</code></pre></div></div><h3 [...]
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -75,7 +75,7 @@ Then, we get the largest or smallest elements in different ways.</p><h3 id=examp
       <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>(&#39;🥕&#39;, [2, 3])
 (&#39;🍆&#39;, [1])
 (&#39;🍅&#39;, [3, 4])</code></pre></div></div><h3 id=example-5-custom-elements-from-a-pcollection>Example 5: Custom elements from a PCollection</h3><p>We use <code>Top.Of()</code> to get elements with customized rules from the <em>entire</em> <code>PCollection</code>.</p><p>You can change how the elements are compared with <code>key</code>.
-By default you get the largest elements, but you can get the smallest by setting <code>reverse=True</code>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/top.py><img src=/images/code-icon.svg></a>
+By default you get the largest elements, but you can get the smallest by setting <code>reverse=True</code>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/top_of.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -95,7 +95,7 @@ By default you get the largest elements, but you can get the smallest by setting
       <span class=p>)</span>
       <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>)</span>
   <span class=p>)</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>[&#39;🌽 Corn&#39;, &#39;🥕 Carrot&#39;]</code></pre></div></div><h3 id=example-6-custom-elements-for-each-key>Example 6: Custom elements for each key</h3><p>We use <code>Top.PerKey() [...]
-By default you get the largest elements, but you can get the smallest by setting <code>reverse=True</code>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/top.py><img src=/images/code-icon.svg></a>
+By default you get the largest elements, but you can get the smallest by setting <code>reverse=True</code>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/aggregation/top_per_key.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
diff --git a/website/generated-content/documentation/transforms/python/elementwise/filter/index.html b/website/generated-content/documentation/transforms/python/elementwise/filter/index.html
index bcfba2d4753..9078f21c5df 100644
--- a/website/generated-content/documentation/transforms/python/elementwise/filter/index.html
+++ b/website/generated-content/documentation/transforms/python/elementwise/filter/index.html
@@ -25,7 +25,7 @@ Pydoc</a></td></table><p><br><br><br></p><p>Given a predicate, filter out all el
 May also be used to filter based on an inequality with a given value based
 on the comparison ordering of the element.</p><h2 id=examples>Examples</h2><p>In the following examples, we create a pipeline with a <code>PCollection</code> of produce with their icon, name, and duration.
 Then, we apply <code>Filter</code> in multiple ways to filter out produce by their duration value.</p><p><code>Filter</code> accepts a function that keeps elements that return <code>True</code>, and filters out the remaining elements.</p><h3 id=example-1-filtering-with-a-function>Example 1: Filtering with a function</h3><p>We define a function <code>is_perennial</code> which returns <code>True</code> if the element&rsquo;s duration equals <code>'perennial'</code>, and <code>False</code>  [...]
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/filter.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/filter_function.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>def</span> <span class=nf>is_perennial</span><span class=p>(</span><span class=n>plant</span><span class=p>):</span>
@@ -55,7 +55,7 @@ Then, we apply <code>Filter</code> in multiple ways to filter out produce by the
       <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>{&#39;icon&#39;: &#39;🍓&#39;, &#39 [...]
 {&#39;icon&#39;: &#39;🍆&#39;, &#39;name&#39;: &#39;Eggplant&#39;, &#39;duration&#39;: &#39;perennial&#39;}
 {&#39;icon&#39;: &#39;🥔&#39;, &#39;name&#39;: &#39;Potato&#39;, &#39;duration&#39;: &#39;perennial&#39;}</code></pre></div></div><h3 id=example-2-filtering-with-a-lambda-function>Example 2: Filtering with a lambda function</h3><p>We can also use lambda functions to simplify <strong>Example 1</strong>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab. [...]
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/filter.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/filter_lambda.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -84,7 +84,7 @@ Then, we apply <code>Filter</code> in multiple ways to filter out produce by the
 {&#39;icon&#39;: &#39;🍆&#39;, &#39;name&#39;: &#39;Eggplant&#39;, &#39;duration&#39;: &#39;perennial&#39;}
 {&#39;icon&#39;: &#39;🥔&#39;, &#39;name&#39;: &#39;Potato&#39;, &#39;duration&#39;: &#39;perennial&#39;}</code></pre></div></div><h3 id=example-3-filtering-with-multiple-arguments>Example 3: Filtering with multiple arguments</h3><p>You can pass functions with multiple arguments to <code>Filter</code>.
 They are passed as additional positional arguments or keyword arguments to the function.</p><p>In this example, <code>has_duration</code> takes <code>plant</code> and <code>duration</code> as arguments.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/pytho [...]
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/filter.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/filter_multiple_arguments.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>def</span> <span class=nf>has_duration</span><span class=p>(</span><span class=n>plant</span><span class=p>,</span> <span class=n>duration</span><span class=p>):</span>
@@ -116,7 +116,7 @@ They are passed as additional positional arguments or keyword arguments to the f
 {&#39;icon&#39;: &#39;🥔&#39;, &#39;name&#39;: &#39;Potato&#39;, &#39;duration&#39;: &#39;perennial&#39;}</code></pre></div></div><h3 id=example-4-filtering-with-side-inputs-as-singletons>Example 4: Filtering with side inputs as singletons</h3><p>If the <code>PCollection</code> has a single value, such as the average from another computation,
 passing the <code>PCollection</code> as a <em>singleton</em> accesses that value.</p><p>In this example, we pass a <code>PCollection</code> the value <code>'perennial'</code> as a singleton.
 We then use that value to filter out perennials.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/filter-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/filter.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/filter_side_inputs_singleton.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -151,7 +151,7 @@ We then use that value to filter out perennials.</p><div class="language-py snip
 {&#39;icon&#39;: &#39;🥔&#39;, &#39;name&#39;: &#39;Potato&#39;, &#39;duration&#39;: &#39;perennial&#39;}</code></pre></div></div><h3 id=example-5-filtering-with-side-inputs-as-iterators>Example 5: Filtering with side inputs as iterators</h3><p>If the <code>PCollection</code> has multiple values, pass the <code>PCollection</code> as an <em>iterator</em>.
 This accesses elements lazily as they are needed,
 so it is possible to iterate over large <code>PCollection</code>s that won&rsquo;t fit into memory.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/filter-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/filter.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/filter_side_inputs_iter.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -193,7 +193,7 @@ but this requires that all the elements fit into memory.</p></blockquote><h3 id=
 Each element must be a <code>(key, value)</code> pair.
 Note that all the elements of the <code>PCollection</code> must fit into memory for this.
 If the <code>PCollection</code> won&rsquo;t fit into memory, use <code>beam.pvalue.AsIter(pcollection)</code> instead.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/filter-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/filter.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/filter_side_inputs_dict.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
diff --git a/website/generated-content/documentation/transforms/python/elementwise/flatmap/index.html b/website/generated-content/documentation/transforms/python/elementwise/flatmap/index.html
index e11444ba143..f45dbf364c3 100644
--- a/website/generated-content/documentation/transforms/python/elementwise/flatmap/index.html
+++ b/website/generated-content/documentation/transforms/python/elementwise/flatmap/index.html
@@ -26,7 +26,7 @@ The many elements are flattened into the resulting collection.</p><h2 id=example
 Then, we apply <code>FlatMap</code> in multiple ways to yield zero or more elements per each input element into the resulting <code>PCollection</code>.</p><p><code>FlatMap</code> accepts a function that returns an <code>iterable</code>,
 where each of the output <code>iterable</code>'s elements is an element of the resulting <code>PCollection</code>.</p><h3 id=example-1-flatmap-with-a-predefined-function>Example 1: FlatMap with a predefined function</h3><p>We use the function <code>str.split</code> which takes a single <code>str</code> element and outputs a <code>list</code> of <code>str</code>s.
 This pipeline splits the input element using whitespaces, creating a list of zero or more elements.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/flatmap-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap_simple.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -42,7 +42,7 @@ This pipeline splits the input element using whitespaces, creating a list of zer
 🍆Eggplant
 🍅Tomato
 🥔Potato</code></pre></div></div><h3 id=example-2-flatmap-with-a-function>Example 2: FlatMap with a function</h3><p>We define a function <code>split_words</code> which splits an input <code>str</code> element using the delimiter <code>','</code> and outputs a <code>list</code> of <code>str</code>s.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.rese [...]
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap_function.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>def</span> <span class=nf>split_words</span><span class=p>(</span><span class=n>text</span><span class=p>):</span>
@@ -63,7 +63,7 @@ This pipeline splits the input element using whitespaces, creating a list of zer
 🥔Potato</code></pre></div></div><h3 id=example-3-flatmap-with-a-lambda-function>Example 3: FlatMap with a lambda function</h3><p>For this example, we want to flatten a <code>PCollection</code> of lists of <code>str</code>s into a <code>PCollection</code> of <code>str</code>s.
 Each input element is already an <code>iterable</code>, where each element is what we want in the resulting <code>PCollection</code>.
 We use a lambda function that returns the same input element it received.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/flatmap-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap_lambda.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -81,7 +81,7 @@ We use a lambda function that returns the same input element it received.</p><di
 🥔Potato</code></pre></div></div><h3 id=example-4-flatmap-with-a-generator>Example 4: FlatMap with a generator</h3><p>For this example, we want to flatten a <code>PCollection</code> of lists of <code>str</code>s into a <code>PCollection</code> of <code>str</code>s.
 We use a generator to iterate over the input list and yield each of the elements.
 Each yielded result in the generator is an element in the resulting <code>PCollection</code>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/flatmap-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap_generator.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>def</span> <span class=nf>generate_elements</span><span class=p>(</span><span class=n>elements</span><span class=p>):</span>
@@ -102,7 +102,7 @@ Each yielded result in the generator is an element in the resulting <code>PColle
 🍅Tomato
 🥔Potato</code></pre></div></div><h3 id=example-5-flatmaptuple-for-key-value-pairs>Example 5: FlatMapTuple for key-value pairs</h3><p>If your <code>PCollection</code> consists of <code>(key, value)</code> pairs,
 you can use <code>FlatMapTuple</code> to unpack them into different function arguments.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/flatmap-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap_tuple.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>def</span> <span class=nf>format_plant</span><span class=p>(</span><span class=n>icon</span><span class=p>,</span> <span class=n>plant</span><span class=p>):</span>
@@ -127,7 +127,7 @@ you can use <code>FlatMapTuple</code> to unpack them into different function arg
 🍅Tomato
 🥔Potato</code></pre></div></div><h3 id=example-6-flatmap-with-multiple-arguments>Example 6: FlatMap with multiple arguments</h3><p>You can pass functions with multiple arguments to <code>FlatMap</code>.
 They are passed as additional positional arguments or keyword arguments to the function.</p><p>In this example, <code>split_words</code> takes <code>text</code> and <code>delimiter</code> as arguments.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python [...]
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap_multiple_arguments.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>def</span> <span class=nf>split_words</span><span class=p>(</span><span class=n>text</span><span class=p>,</span> <span class=n>delimiter</span><span class=o>=</span><span class=bp>None</span><span class=p>):</span>
@@ -148,7 +148,7 @@ They are passed as additional positional arguments or keyword arguments to the f
 🥔Potato</code></pre></div></div><h3 id=example-7-flatmap-with-side-inputs-as-singletons>Example 7: FlatMap with side inputs as singletons</h3><p>If the <code>PCollection</code> has a single value, such as the average from another computation,
 passing the <code>PCollection</code> as a <em>singleton</em> accesses that value.</p><p>In this example, we pass a <code>PCollection</code> the value <code>','</code> as a singleton.
 We then use that value as the delimiter for the <code>str.split</code> method.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/flatmap-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap_side_inputs_singleton.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -172,7 +172,7 @@ We then use that value as the delimiter for the <code>str.split</code> method.</
 🥔Potato</code></pre></div></div><h3 id=example-8-flatmap-with-side-inputs-as-iterators>Example 8: FlatMap with side inputs as iterators</h3><p>If the <code>PCollection</code> has multiple values, pass the <code>PCollection</code> as an <em>iterator</em>.
 This accesses elements lazily as they are needed,
 so it is possible to iterate over large <code>PCollection</code>s that won&rsquo;t fit into memory.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/flatmap-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap_side_inputs_iter.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>def</span> <span class=nf>normalize_and_validate_durations</span><span class=p>(</span><span class=n>plant</span><span class=p>,</span> <span class=n>valid_durations</span><span class=p>):</span>
@@ -218,7 +218,7 @@ but this requires that all the elements fit into memory.</p></blockquote><h3 id=
 Each element must be a <code>(key, value)</code> pair.
 Note that all the elements of the <code>PCollection</code> must fit into memory for this.
 If the <code>PCollection</code> won&rsquo;t fit into memory, use <code>beam.pvalue.AsIter(pcollection)</code> instead.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/flatmap-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/flatmap_side_inputs_dict.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>def</span> <span class=nf>replace_duration_if_valid</span><span class=p>(</span><span class=n>plant</span><span class=p>,</span> <span class=n>durations</span><span class=p>):</span>
diff --git a/website/generated-content/documentation/transforms/python/elementwise/map/index.html b/website/generated-content/documentation/transforms/python/elementwise/map/index.html
index e5e697cc1c5..c2666c32767 100644
--- a/website/generated-content/documentation/transforms/python/elementwise/map/index.html
+++ b/website/generated-content/documentation/transforms/python/elementwise/map/index.html
@@ -24,7 +24,7 @@ function openMenu(){addPlaceholder();blockScroll();}</script><div class="clearfi
 Pydoc</a></td></table><p><br><br><br></p><p>Applies a simple 1-to-1 mapping function over each element in the collection.</p><h2 id=examples>Examples</h2><p>In the following examples, we create a pipeline with a <code>PCollection</code> of produce with their icon, name, and duration.
 Then, we apply <code>Map</code> in multiple ways to transform every element in the <code>PCollection</code>.</p><p><code>Map</code> accepts a function that returns a single element for every input element in the <code>PCollection</code>.</p><h3 id=example-1-map-with-a-predefined-function>Example 1: Map with a predefined function</h3><p>We use the function <code>str.strip</code> which takes a single <code>str</code> element and outputs a <code>str</code>.
 It strips the input element&rsquo;s whitespaces, including newlines and tabs.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/map-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/map.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/map_simple.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -43,7 +43,7 @@ It strips the input element&rsquo;s whitespaces, including newlines and tabs.</p
 🍆Eggplant
 🍅Tomato
 🥔Potato</code></pre></div></div><h3 id=example-2-map-with-a-function>Example 2: Map with a function</h3><p>We define a function <code>strip_header_and_newline</code> which strips any <code>'#'</code>, <code>' '</code>, and <code>'\n'</code> characters from each element.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apach [...]
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/map.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/map_function.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>def</span> <span class=nf>strip_header_and_newline</span><span class=p>(</span><span class=n>text</span><span class=p>):</span>
@@ -65,7 +65,7 @@ It strips the input element&rsquo;s whitespaces, including newlines and tabs.</p
 🍆Eggplant
 🍅Tomato
 🥔Potato</code></pre></div></div><h3 id=example-3-map-with-a-lambda-function>Example 3: Map with a lambda function</h3><p>We can also use lambda functions to simplify <strong>Example 2</strong>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/element [...]
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/map.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/map_lambda.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -85,7 +85,7 @@ It strips the input element&rsquo;s whitespaces, including newlines and tabs.</p
 🍅Tomato
 🥔Potato</code></pre></div></div><h3 id=example-4-map-with-multiple-arguments>Example 4: Map with multiple arguments</h3><p>You can pass functions with multiple arguments to <code>Map</code>.
 They are passed as additional positional arguments or keyword arguments to the function.</p><p>In this example, <code>strip</code> takes <code>text</code> and <code>chars</code> as arguments.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwi [...]
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/map.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/map_multiple_arguments.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>def</span> <span class=nf>strip</span><span class=p>(</span><span class=n>text</span><span class=p>,</span> <span class=n>chars</span><span class=o>=</span><span class=bp>None</span><span class=p>):</span>
@@ -108,7 +108,7 @@ They are passed as additional positional arguments or keyword arguments to the f
 🍅Tomato
 🥔Potato</code></pre></div></div><h3 id=example-5-maptuple-for-key-value-pairs>Example 5: MapTuple for key-value pairs</h3><p>If your <code>PCollection</code> consists of <code>(key, value)</code> pairs,
 you can use <code>MapTuple</code> to unpack them into different function arguments.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/map-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/map.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/map_tuple.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -130,7 +130,7 @@ you can use <code>MapTuple</code> to unpack them into different function argumen
 🥔Potato</code></pre></div></div><h3 id=example-6-map-with-side-inputs-as-singletons>Example 6: Map with side inputs as singletons</h3><p>If the <code>PCollection</code> has a single value, such as the average from another computation,
 passing the <code>PCollection</code> as a <em>singleton</em> accesses that value.</p><p>In this example, we pass a <code>PCollection</code> the value <code>'# \n'</code> as a singleton.
 We then use that value as the characters for the <code>str.strip</code> method.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/map-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/map.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/map_side_inputs_singleton.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -157,7 +157,7 @@ We then use that value as the characters for the <code>str.strip</code> method.<
 🥔Potato</code></pre></div></div><h3 id=example-7-map-with-side-inputs-as-iterators>Example 7: Map with side inputs as iterators</h3><p>If the <code>PCollection</code> has multiple values, pass the <code>PCollection</code> as an <em>iterator</em>.
 This accesses elements lazily as they are needed,
 so it is possible to iterate over large <code>PCollection</code>s that won&rsquo;t fit into memory.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/map-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/map.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/map_side_inputs_iter.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -186,7 +186,7 @@ but this requires that all the elements fit into memory.</p></blockquote><h3 id=
 Each element must be a <code>(key, value)</code> pair.
 Note that all the elements of the <code>PCollection</code> must fit into memory for this.
 If the <code>PCollection</code> won&rsquo;t fit into memory, use <code>beam.pvalue.AsIter(pcollection)</code> instead.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/map-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/map.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/map_side_inputs_dict.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>def</span> <span class=nf>replace_duration</span><span class=p>(</span><span class=n>plant</span><span class=p>,</span> <span class=n>durations</span><span class=p>):</span>
diff --git a/website/generated-content/documentation/transforms/python/elementwise/pardo/index.html b/website/generated-content/documentation/transforms/python/elementwise/pardo/index.html
index b1ab109920e..1833bca959b 100644
--- a/website/generated-content/documentation/transforms/python/elementwise/pardo/index.html
+++ b/website/generated-content/documentation/transforms/python/elementwise/pardo/index.html
@@ -30,7 +30,7 @@ the timestamp and windowing information.</p><h3 id=example-1-pardo-with-a-simple
 which stores the <code>delimiter</code> as an object field.
 The <code>process</code> method is called once per element,
 and it can yield zero or more output elements.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/pardo-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/pardo.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/pardo_dofn.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>class</span> <span class=nc>SplitWords</span><span class=p>(</span><span class=n>beam</span><span class=o>.</span><span class=n>DoFn</span><span class=p>):</span>
@@ -60,7 +60,7 @@ object.</li><li><a href=https://beam.apache.org/releases/pydoc/current/apache_be
 binds the window information as the appropriate
 <a href=https://beam.apache.org/releases/pydoc/current/apache_beam.transforms.window.html><code>apache_beam.transforms.window.*Window</code></a>
 object.</li></ul><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/pardo-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/pardo.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/pardo_dofn_params.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>class</span> <span class=nc>AnalyzeElement</span><span class=p>(</span><span class=n>beam</span><span class=o>.</span><span class=n>DoFn</span><span class=p>):</span>
@@ -132,7 +132,7 @@ You also need to provide a window, which you can get from the last processed ele
 Called <em>once (as a best effort) per <code>DoFn</code> instance</em> when the <code>DoFn</code> instance is shutting down.
 This is a good place to close database instances, close network connections or other resources.</p><p>Note that <code>teardown</code> is called as a <em>best effort</em> and is <em>not guaranteed</em>.
 For example, if the worker crashes, <code>teardown</code> might not be called.</p></li></ul><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/pardo-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/pardo.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/pardo_dofn_methods.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>class</span> <span class=nc>DoFnMethods</span><span class=p>(</span><span class=n>beam</span><span class=o>.</span><span class=n>DoFn</span><span class=p>):</span>
diff --git a/website/generated-content/documentation/transforms/python/elementwise/partition/index.html b/website/generated-content/documentation/transforms/python/elementwise/partition/index.html
index 3fd4edb4de8..d8efa9bcf19 100644
--- a/website/generated-content/documentation/transforms/python/elementwise/partition/index.html
+++ b/website/generated-content/documentation/transforms/python/elementwise/partition/index.html
@@ -31,7 +31,7 @@ and returns the index of the desired partition for the element.
 The number of partitions passed must be a positive integer,
 and it must return an integer in the range <code>0</code> to <code>num_partitions-1</code>.</p><h3 id=example-1-partition-with-a-function>Example 1: Partition with a function</h3><p>In the following example, we have a known list of durations.
 We partition the <code>PCollection</code> into one <code>PCollection</code> for every duration type.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/partition-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/partition.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/partition_function.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=n>durations</span> <span class=o>=</span> <span class=p>[</span><span class=s1>&#39;annual&#39;</span><span class=p>,</span> <span class=s1>&#39;biennial&#39;</span><span class=p>,</span> <span class=s1>&#39;perennial&#39;</span><span class=p>]</span>
@@ -61,7 +61,7 @@ biennial: {&#39;icon&#39;: &#39;🥕&#39;, &#39;name&#39;: &#39;Carrot&#39;, &#3
 perennial: {&#39;icon&#39;: &#39;🍆&#39;, &#39;name&#39;: &#39;Eggplant&#39;, &#39;duration&#39;: &#39;perennial&#39;}
 annual: {&#39;icon&#39;: &#39;🍅&#39;, &#39;name&#39;: &#39;Tomato&#39;, &#39;duration&#39;: &#39;annual&#39;}
 perennial: {&#39;icon&#39;: &#39;🥔&#39;, &#39;name&#39;: &#39;Potato&#39;, &#39;duration&#39;: &#39;perennial&#39;}</code></pre></div></div><h3 id=example-2-partition-with-a-lambda-function>Example 2: Partition with a lambda function</h3><p>We can also use lambda functions to simplify <strong>Example 1</strong>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=htt [...]
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/partition.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/partition_lambda.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=n>durations</span> <span class=o>=</span> <span class=p>[</span><span class=s1>&#39;annual&#39;</span><span class=p>,</span> <span class=s1>&#39;biennial&#39;</span><span class=p>,</span> <span class=s1>&#39;perennial&#39;</span><span class=p>]</span>
@@ -109,7 +109,7 @@ JSON representation to make it deterministic.
 Finally, we loop through all the elements in the ratio and have a running total to
 identify the partition index to which that bucket corresponds.</p><p>This <code>split_dataset</code> function is generic enough to support any number of partitions by any ratio.
 You might want to adapt the bucket assignment to use a more appropriate or randomized hash for your dataset.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/partition-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/partition.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/partition_multiple_arguments.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 <span class=kn>import</span> <span class=nn>json</span>
 
diff --git a/website/generated-content/documentation/transforms/python/elementwise/regex/index.html b/website/generated-content/documentation/transforms/python/elementwise/regex/index.html
index 27316ac7551..09d79c64e17 100644
--- a/website/generated-content/documentation/transforms/python/elementwise/regex/index.html
+++ b/website/generated-content/documentation/transforms/python/elementwise/regex/index.html
@@ -42,7 +42,7 @@ The argument <code>group</code> is set to <code>0</code> (the entire match) by d
 but can be set to a group number like <code>3</code>, or to a named group like <code>'icon'</code>.</p><p><code>Regex.matches</code> starts to match the regular expression at the beginning of the string.
 To match until the end of the string, add <code>'$'</code> at the end of the regular expression.</p><p>To start matching at any point instead of the beginning of the string, use
 <a href=#example-4-regex-find><code>Regex.find(regex)</code></a>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/regex-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/regex.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/regex_matches.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=c1># Matches a named group &#39;icon&#39;, and then two comma-separated groups.</span>
@@ -70,7 +70,7 @@ The groups are returned in the order encountered in the regular expression,
 including <code>group 0</code> (the entire match) as the first group.</p><p><code>Regex.all_matches</code> starts to match the regular expression at the beginning of the string.
 To match until the end of the string, add <code>'$'</code> at the end of the regular expression.</p><p>To start matching at any point instead of the beginning of the string, use
 <a href=#example-5-regex-find-all><code>Regex.find_all(regex, group=Regex.ALL, outputEmpty=False)</code></a>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/regex-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/regex.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/regex_all_matches.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=c1># Matches a named group &#39;icon&#39;, and then two comma-separated groups.</span>
@@ -99,7 +99,7 @@ The argument <code>valueGroup</code> is set to <code>0</code> (the entire match)
 but can be set to a group number like <code>3</code>, or to a named group like <code>'icon'</code>.</p><p><code>Regex.matches_kv</code> starts to match the regular expression at the beginning of the string.
 To match until the end of the string, add <code>'$'</code> at the end of the regular expression.</p><p>To start matching at any point instead of the beginning of the string, use
 <a href=#example-6-regex-find-as-key-value-pairs><code>Regex.find_kv(regex, keyGroup)</code></a>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/regex-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/regex.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/regex_matches_kv.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=c1># Matches a named group &#39;icon&#39;, and then two comma-separated groups.</span>
@@ -128,7 +128,7 @@ but can be set to a group number like <code>3</code>, or to a named group like <
 To start matching at the beginning, add <code>'^'</code> at the beginning of the regular expression.
 To match until the end of the string, add <code>'$'</code> at the end of the regular expression.</p><p>If you need to match from the start only, consider using
 <a href=#example-1-regex-match><code>Regex.matches(regex)</code></a>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/regex-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/regex.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/regex_find.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=c1># Matches a named group &#39;icon&#39;, and then two comma-separated groups.</span>
@@ -155,7 +155,7 @@ The argument <code>outputEmpty</code> is set to <code>True</code> by default, bu
 To start matching at the beginning, add <code>'^'</code> at the start of the regular expression.
 To match until the end of the string, add <code>'$'</code> at the end of the regular expression.</p><p>If you need to match all groups from the start only, consider using
 <a href=#example-2-regex-match-with-all-groups><code>Regex.all_matches(regex)</code></a>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/regex-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/regex.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/regex_find_all.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=c1># Matches a named group &#39;icon&#39;, and then two comma-separated groups.</span>
@@ -183,7 +183,7 @@ but can be set to a group number like <code>3</code>, or to a named group like <
 To start matching at the beginning, add <code>'^'</code> at the beginning of the regular expression.
 To match until the end of the string, add <code>'$'</code> at the end of the regular expression.</p><p>If you need to match as key-value pairs from the start only, consider using
 <a href=#example-3-regex-match-into-key-value-pairs><code>Regex.matches_kv(regex)</code></a>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/regex-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/regex.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/regex_find_kv.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=c1># Matches a named group &#39;icon&#39;, and then two comma-separated groups.</span>
@@ -209,7 +209,7 @@ To match until the end of the string, add <code>'$'</code> at the end of the reg
 You can also use
 <a href="https://docs.python.org/3/library/re.html?highlight=backreference#re.sub">backreferences</a>
 on the <code>replacement</code>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/regex-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/regex.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/regex_replace_all.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -231,7 +231,7 @@ on the <code>replacement</code>.</p><div class="language-py snippet"><div class=
 You can also use
 <a href="https://docs.python.org/3/library/re.html?highlight=backreference#re.sub">backreferences</a>
 on the <code>replacement</code>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/regex-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/regex.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/regex_replace_first.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -251,7 +251,7 @@ on the <code>replacement</code>.</p><div class="language-py snippet"><div class=
 🍅: Tomato, annual
 🥔: Potato, perennial</code></pre></div></div><h3 id=example-9-regex-split>Example 9: Regex split</h3><p><code>Regex.split</code> returns the list of strings that were delimited by the specified regular expression.
 The argument <code>outputEmpty</code> is set to <code>False</code> by default, but can be set to <code>True</code> to keep empty items in the output list.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/regex-py.ipynb><img src=/images/ru [...]
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/regex.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/regex_split.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
diff --git a/website/generated-content/documentation/transforms/python/elementwise/runinference-sklearn/index.html b/website/generated-content/documentation/transforms/python/elementwise/runinference-sklearn/index.html
index b5ae6aee845..c08a3806145 100644
--- a/website/generated-content/documentation/transforms/python/elementwise/runinference-sklearn/index.html
+++ b/website/generated-content/documentation/transforms/python/elementwise/runinference-sklearn/index.html
@@ -21,7 +21,7 @@ function addPlaceholder(){$('input:text').attr('placeholder',"What are you looki
 function endSearch(){var search=document.querySelector(".searchBar");search.classList.add("disappear");var icons=document.querySelector("#iconsBar");icons.classList.remove("disappear");}
 function blockScroll(){$("body").toggleClass("fixedPosition");}
 function openMenu(){addPlaceholder();blockScroll();}</script><div class="clearfix container-main-content"><div class="section-nav closed" data-offset-top=90 data-offset-bottom=500><span class="section-nav-back glyphicon glyphicon-menu-left"></span><nav><ul class=section-nav-list data-section-nav><li><span class=section-nav-list-main-title>Documentation</span></li><li><a href=/documentation>Using the Documentation</a></li><li class=section-nav-item--collapsible><span class=section-nav-lis [...]
-Pydoc</a></td></table><p><br><br><br></p></a></td></tr></table><p>The following examples demonstrate how to to create pipelines that use the Beam RunInference API and Sklearn.</p><h2 id=example-1-sklearn-unkeyed-model>Example 1: Sklearn unkeyed model</h2><p>In this example, we create a pipeline that uses an SKlearn RunInference transform on unkeyed data.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs [...]
+Pydoc</a></td></table><p><br><br><br></p></a></td></tr></table><p>The following examples demonstrate how to to create pipelines that use the Beam RunInference API and Sklearn.</p><h2 id=example-1-sklearn-unkeyed-model>Example 1: Sklearn unkeyed model</h2><p>In this example, we create a pipeline that uses an SKlearn RunInference transform on unkeyed data.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs [...]
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 <span class=kn>import</span> <span class=nn>numpy</span>
 <span class=kn>from</span> <span class=nn>apache_beam.ml.inference.base</span> <span class=kn>import</span> <span class=n>RunInference</span>
@@ -43,7 +43,7 @@ Pydoc</a></td></table><p><br><br><br></p></a></td></tr></table><p>The following
       <span class=o>|</span> <span class=n>beam</span><span class=o>.</span><span class=n>Map</span><span class=p>(</span><span class=k>print</span><span class=p>))</span></code></pre></div></div></div><p class=notebook-skip>Output:</p><div class=snippet><div class="notebook-skip code-snippet without_switcher"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><pre><code>PredictionResult(example=array([20 [...]
 PredictionResult(example=array([40.], dtype=float32), inference=array([200.], dtype=float32), model_id=&#39;gs://apache-beam-samples/run_inference/five_times_table_sklearn.pkl&#39;)
 PredictionResult(example=array([60.], dtype=float32), inference=array([300.], dtype=float32), model_id=&#39;gs://apache-beam-samples/run_inference/five_times_table_sklearn.pkl&#39;)
-PredictionResult(example=array([90.], dtype=float32), inference=array([450.], dtype=float32), model_id=&#39;gs://apache-beam-samples/run_inference/five_times_table_sklearn.pkl&#39;)</code></pre></div></div><h2 id=example-2-sklearn-keyed-model>Example 2: Sklearn keyed model</h2><p>In this example, we create a pipeline that uses an SKlearn RunInference transform on keyed data.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-t [...]
+PredictionResult(example=array([90.], dtype=float32), inference=array([450.], dtype=float32), model_id=&#39;gs://apache-beam-samples/run_inference/five_times_table_sklearn.pkl&#39;)</code></pre></div></div><h2 id=example-2-sklearn-keyed-model>Example 2: Sklearn keyed model</h2><p>In this example, we create a pipeline that uses an SKlearn RunInference transform on keyed data.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-t [...]
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 <span class=kn>from</span> <span class=nn>apache_beam.ml.inference.base</span> <span class=kn>import</span> <span class=n>KeyedModelHandler</span>
 <span class=kn>from</span> <span class=nn>apache_beam.ml.inference.base</span> <span class=kn>import</span> <span class=n>RunInference</span>
diff --git a/website/generated-content/documentation/transforms/python/elementwise/tostring/index.html b/website/generated-content/documentation/transforms/python/elementwise/tostring/index.html
index a1e0ba87393..05cab07951a 100644
--- a/website/generated-content/documentation/transforms/python/elementwise/tostring/index.html
+++ b/website/generated-content/documentation/transforms/python/elementwise/tostring/index.html
@@ -26,7 +26,7 @@ Many I/O transforms, such as
 <a href=https://beam.apache.org/releases/pydoc/current/apache_beam.io.textio.html#apache_beam.io.textio.WriteToText><code>textio.WriteToText</code></a>,
 expect their input elements to be strings.</p><h3 id=example-1-key-value-pairs-to-string>Example 1: Key-value pairs to string</h3><p>The following example converts a <code>(key, value)</code> pair into a string delimited by <code>','</code>.
 You can specify a different delimiter using the <code>delimiter</code> argument.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/tostring-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/tostring.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/tostring_kvs.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -46,7 +46,7 @@ You can specify a different delimiter using the <code>delimiter</code> argument.
 🍅,Tomato
 🥔,Potato</code></pre></div></div><h3 id=example-2-elements-to-string>Example 2: Elements to string</h3><p>The following example converts a dictionary into a string.
 The string output will be equivalent to <code>str(element)</code>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/tostring-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/tostring.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/tostring_element.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
@@ -68,7 +68,7 @@ The string output will be equivalent to <code>str(element)</code>.</p><div class
 into a string delimited by <code>','</code>.
 You can specify a different delimiter using the <code>delimiter</code> argument.
 The string output will be equivalent to <code>iterable.join(delimiter)</code>.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/tostring-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/tostring.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/tostring_iterables.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>with</span> <span class=n>beam</span><span class=o>.</span><span class=n>Pipeline</span><span class=p>()</span> <span class=k>as</span> <span class=n>pipeline</span><span class=p>:</span>
diff --git a/website/generated-content/documentation/transforms/python/elementwise/withtimestamps/index.html b/website/generated-content/documentation/transforms/python/elementwise/withtimestamps/index.html
index ba0fced7d22..59118889096 100644
--- a/website/generated-content/documentation/transforms/python/elementwise/withtimestamps/index.html
+++ b/website/generated-content/documentation/transforms/python/elementwise/withtimestamps/index.html
@@ -25,7 +25,7 @@ When windowing and late data play an important role in streaming pipelines, time
 <code>beam.window.TimestampedValue</code> takes a value and a
 <a href=https://en.wikipedia.org/wiki/Unix_time>Unix timestamp</a>
 in the form of seconds.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/withtimestamps-py.ipynb><img src=/images/run-icon.svg></a>
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/withtimestamps.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/withtimestamps_event_time.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>class</span> <span class=nc>GetTimestamp</span><span class=p>(</span><span class=n>beam</span><span class=o>.</span><span class=n>DoFn</span><span class=p>):</span>
@@ -69,7 +69,7 @@ time_tuple = now.timetuple()
 unix_time = time.mktime(time_tuple)</code></pre></div></div><h3 id=example-2-timestamp-by-logical-clock>Example 2: Timestamp by logical clock</h3><p>If each element has a chronological number, these numbers can be used as a
 <a href=https://en.wikipedia.org/wiki/Logical_clock>logical clock</a>.
 These numbers have to be converted to a <em>&ldquo;seconds&rdquo;</em> equivalent, which can be especially important depending on your windowing and late data rules.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/documentation/transforms/python/elementwise/withtimestamps-py.ipynb [...]
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/withtimestamps.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/withtimestamps_logical_clock.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 
 <span class=k>class</span> <span class=nc>GetTimestamp</span><span class=p>(</span><span class=n>beam</span><span class=o>.</span><span class=n>DoFn</span><span class=p>):</span>
@@ -98,7 +98,7 @@ These numbers have to be converted to a <em>&ldquo;seconds&rdquo;</em> equivalen
 5 - Potato</code></pre></div></div><h3 id=example-3-timestamp-by-processing-time>Example 3: Timestamp by processing time</h3><p>If the elements do not have any time data available, you can also use the current processing time for each element.
 Note that this grabs the local time of the <em>worker</em> that is processing each element.
 Workers might have time deltas, so using this method is not a reliable way to do precise ordering.</p><p>By using processing time, there is no way of knowing if data is arriving late because the timestamp is attached when the element <em>enters</em> into the pipeline.</p><div class="language-py snippet"><div class="notebook-skip code-snippet"><a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Run code" href=https://colab.research.google.com/github/apache/ [...]
-<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/withtimestamps.py><img src=/images/code-icon.svg></a>
+<a target=_blank type=button data-bs-toggle=tooltip data-bs-placement=bottom title="View source code" href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/snippets/transforms/elementwise/withtimestamps_processing_time.py><img src=/images/code-icon.svg></a>
 <a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=kn>import</span> <span class=nn>apache_beam</span> <span class=kn>as</span> <span class=nn>beam</span>
 <span class=kn>import</span> <span class=nn>time</span>
 
diff --git a/website/generated-content/feed.xml b/website/generated-content/feed.xml
index f95e088b1a4..f355b695315 100644
--- a/website/generated-content/feed.xml
+++ b/website/generated-content/feed.xml
@@ -12,8 +12,7 @@ limitations under the License.
 -->
 &lt;p>We are happy to present the new 2.48.0 release of Beam.
 This release includes both improvements and new functionality.
-See the &lt;a href="/get-started/downloads/%7B$DOWNLOAD_ANCHOR%7D">download page&lt;/a> for this release.&lt;/p>
-&lt;p>&amp;lt;{!&amp;ndash;more&amp;ndash;&amp;gt;&lt;/p>
+See the &lt;a href="/get-started/downloads/#2480-2023-05-31">download page&lt;/a> for this release.&lt;/p>
 &lt;p>For more information on changes in 2.48.0, check out the &lt;a href="https://github.com/apache/beam/milestone/12">detailed release notes&lt;/a>.&lt;/p>
 &lt;h2 id="highlights">Highlights&lt;/h2>
 &lt;ul>
@@ -133,7 +132,7 @@ limitations under the License.
 -->
 &lt;p>We are happy to present the new 2.47.0 release of Beam.
 This release includes both improvements and new functionality.
-See the &lt;a href="/get-started/downloads/%7B$DOWNLOAD_ANCHOR%7D">download page&lt;/a> for this release.&lt;/p>
+See the &lt;a href="/get-started/downloads/#2470-2023-05-10">download page&lt;/a> for this release.&lt;/p>
 &lt;p>For more information on changes in 2.47.0, check out the &lt;a href="https://github.com/apache/beam/milestone/10">detailed release notes&lt;/a>.&lt;/p>
 &lt;h2 id="highlights">Highlights&lt;/h2>
 &lt;ul>
diff --git a/website/generated-content/get-started/index.xml b/website/generated-content/get-started/index.xml
index 35472a50afa..1c0f1d3e08a 100644
--- a/website/generated-content/get-started/index.xml
+++ b/website/generated-content/get-started/index.xml
@@ -4983,91 +4983,7 @@ data-width="100%"
 data-height="700px"
 >&lt;/div>
 &lt;/div>
-&lt;h2 id="how-to-add-new-examples">How To Add New Examples&lt;/h2>
-&lt;p>To add an Apache Beam example/test/kata into Beam Playground catalog,
-add the &lt;code>beam-playground&lt;/code> tag into the file to be added.
-&lt;code>beam-playground&lt;/code> tag is a yaml format comment:&lt;/p>
-&lt;p>
-&lt;div class='language-java snippet'>
-&lt;div class="notebook-skip code-snippet">
-&lt;a class="copy" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Copy to clipboard">
-&lt;img src="/images/copy-icon.svg"/>
-&lt;/a>
-&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-java" data-lang="java">&lt;span class="c1">// beam-playground:
-&lt;/span>&lt;span class="c1">// name: Name of the example/test/kata
-&lt;/span>&lt;span class="c1">// description: Description of the example/test/kata
-&lt;/span>&lt;span class="c1">// multifile: false
-&lt;/span>&lt;span class="c1">// pipeline_options: --option1 value1 --option2 value2
-&lt;/span>&lt;span class="c1">// default_example: false
-&lt;/span>&lt;span class="c1">// context_line: 10
-&lt;/span>&lt;span class="c1">// categories:
-&lt;/span>&lt;span class="c1">// - category 1
-&lt;/span>&lt;span class="c1">// - category 2
-&lt;/span>&lt;span class="c1">// - category N
-&lt;/span>&lt;span class="c1">&lt;/span>
-&lt;span class="o">//&lt;/span> &lt;span class="n">example&lt;/span> &lt;span class="n">code&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
-&lt;/div>
-&lt;/div>
-&lt;div class='language-py snippet'>
-&lt;div class="notebook-skip code-snippet">
-&lt;a class="copy" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Copy to clipboard">
-&lt;img src="/images/copy-icon.svg"/>
-&lt;/a>
-&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-py" data-lang="py">&lt;span class="c1"># beam-playground:&lt;/span>
-&lt;span class="c1"># name: Name of the example/test/kata&lt;/span>
-&lt;span class="c1"># description: Description of the example/test/kata&lt;/span>
-&lt;span class="c1"># multifile: false&lt;/span>
-&lt;span class="c1"># pipeline_options: --option1 value1 --option2 value2&lt;/span>
-&lt;span class="c1"># default_example: false&lt;/span>
-&lt;span class="c1"># context_line: 10&lt;/span>
-&lt;span class="c1"># categories:&lt;/span>
-&lt;span class="c1"># - category 1&lt;/span>
-&lt;span class="c1"># - category 2&lt;/span>
-&lt;span class="c1"># - category N&lt;/span>
-&lt;span class="c1"># example code&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
-&lt;/div>
-&lt;/div>
-&lt;div class='language-go snippet'>
-&lt;div class="notebook-skip code-snippet">
-&lt;a class="copy" type="button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Copy to clipboard">
-&lt;img src="/images/copy-icon.svg"/>
-&lt;/a>
-&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="c1">// beam-playground:
-&lt;/span>&lt;span class="c1">// name: Name of the example/test/kata
-&lt;/span>&lt;span class="c1">// description: Description of the example/test/kata
-&lt;/span>&lt;span class="c1">// multifile: false
-&lt;/span>&lt;span class="c1">// pipeline_options: --option1 value1 --option2 value2
-&lt;/span>&lt;span class="c1">// default_example: false
-&lt;/span>&lt;span class="c1">// context_line: 10
-&lt;/span>&lt;span class="c1">// categories:
-&lt;/span>&lt;span class="c1">// - category 1
-&lt;/span>&lt;span class="c1">// - category 2
-&lt;/span>&lt;span class="c1">// - category N
-&lt;/span>&lt;span class="c1">&lt;/span>
-&lt;span class="o">//&lt;/span> &lt;span class="nx">example&lt;/span> &lt;span class="nx">code&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
-&lt;/div>
-&lt;/div>
-&lt;/p>
-&lt;p>The &amp;lsquo;beam-playground&amp;rsquo; tag consists of the following &lt;strong>required&lt;/strong> elements:&lt;/p>
-&lt;ul>
-&lt;li>&lt;code>beam-playground&lt;/code> - tag title.&lt;/li>
-&lt;li>&lt;code>name&lt;/code> - string field. Name of the Beam example/test/kata that will be displayed in the Beam Playground
-examples catalog.&lt;/li>
-&lt;li>&lt;code>description&lt;/code> - string field. Description of the Beam example/test/kata that will be displayed in Beam Playground.&lt;/li>
-&lt;li>&lt;code>multifile&lt;/code> - boolean field. Specifies if the given example consists of multiple files or not.&lt;/li>
-&lt;li>&lt;code>pipeline_options&lt;/code> - string field (optional). Contains information about pipeline options of the Beam example/test/kata.&lt;/li>
-&lt;li>&lt;code>default_example&lt;/code> - boolean field (optional). Specifies if the given example is default or not. If some example is tagged
-as default it means that this example is shown when its SDK is chosen in Beam Playground.
-Only one example can be set as a default for each SDK.&lt;/li>
-&lt;li>&lt;code>context_line&lt;/code> - integer field. The line where the main part of the Beam example/test/kata begins.&lt;/li>
-&lt;li>&lt;code>categories&lt;/code> - list type field.
-Lists categories this example is included into. Available categories are listed in
-&lt;a href="https://github.com/apache/beam/blob/master/playground/categories.yaml">playground/categories.yaml&lt;/a>.
-If some Beam example/kata/test needs to add a new category, then please submit PR with the changes to &lt;code>categories.yaml&lt;/code>.
-After the category has been added, it can be used in the examples.&lt;/li>
-&lt;/ul>
-&lt;p>More details on examples in Apache Beam Playground can be found
-&lt;a href="https://docs.google.com/document/d/1LBeGVTYwJHYbtmLt06OjhBR1CJ1Wgz18MEZjvNkuofc/edit?usp=sharing">here&lt;/a>.&lt;/p>
+&lt;p>See &lt;a href="https://github.com/apache/beam/blob/master/playground/load_your_code.md">here&lt;/a> for adding new examples.&lt;/p>
 &lt;h2 id="next-steps">Next Steps&lt;/h2>
 &lt;ul>
 &lt;li>Try examples in &lt;a href="https://play.beam.apache.org/">Apache Beam Playground&lt;/a>.&lt;/li>
diff --git a/website/generated-content/get-started/try-beam-playground/index.html b/website/generated-content/get-started/try-beam-playground/index.html
index 25eef3384d4..5ecc4ed6de8 100644
--- a/website/generated-content/get-started/try-beam-playground/index.html
+++ b/website/generated-content/get-started/try-beam-playground/index.html
@@ -20,55 +20,9 @@
 function addPlaceholder(){$('input:text').attr('placeholder',"What are you looking for?");}
 function endSearch(){var search=document.querySelector(".searchBar");search.classList.add("disappear");var icons=document.querySelector("#iconsBar");icons.classList.remove("disappear");}
 function blockScroll(){$("body").toggleClass("fixedPosition");}
-function openMenu(){addPlaceholder();blockScroll();}</script><div class="clearfix container-main-content"><div class="section-nav closed" data-offset-top=90 data-offset-bottom=500><span class="section-nav-back glyphicon glyphicon-menu-left"></span><nav><ul class=section-nav-list data-section-nav><li><span class=section-nav-list-main-title>Get started</span></li><li><a href=/get-started/beam-overview/>Beam Overview</a></li><li><a href=/get-started/tour-of-beam/>Tour of Beam</a></li><li><s [...]
+function openMenu(){addPlaceholder();blockScroll();}</script><div class="clearfix container-main-content"><div class="section-nav closed" data-offset-top=90 data-offset-bottom=500><span class="section-nav-back glyphicon glyphicon-menu-left"></span><nav><ul class=section-nav-list data-section-nav><li><span class=section-nav-list-main-title>Get started</span></li><li><a href=/get-started/beam-overview/>Beam Overview</a></li><li><a href=/get-started/tour-of-beam/>Tour of Beam</a></li><li><s [...]
 without having to install Apache Beam in your environment.</p><p>You can try the available Apache Beam examples at
-<a href=https://play.beam.apache.org/>Beam Playground</a>.</p><h2 id=beam-playground-wordcount-example>Beam Playground WordCount Example</h2><div class=playground-wrapper><div class=playground-snippets><div class="language-java playground-snippet" data-sdk=java data-path=SDK_JAVA_MinimalWordCount></div><div class="language-py playground-snippet" data-sdk=python data-path=SDK_PYTHON_WordCountWithMetrics></div><div class="language-go playground-snippet" data-sdk=go data-path=SDK_GO_Minimal [...]
-add the <code>beam-playground</code> tag into the file to be added.
-<code>beam-playground</code> tag is a yaml format comment:</p><p><div class="language-java snippet"><div class="notebook-skip code-snippet"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-java data-lang=java><span class=c1>// beam-playground:
-</span><span class=c1>//   name: Name of the example/test/kata
-</span><span class=c1>//   description: Description of the example/test/kata
-</span><span class=c1>//   multifile: false
-</span><span class=c1>//   pipeline_options: --option1 value1 --option2 value2
-</span><span class=c1>//   default_example: false
-</span><span class=c1>//   context_line: 10
-</span><span class=c1>//   categories:
-</span><span class=c1>//     - category 1
-</span><span class=c1>//     - category 2
-</span><span class=c1>//     - category N
-</span><span class=c1></span>
-<span class=o>//</span> <span class=n>example</span> <span class=n>code</span></code></pre></div></div></div><div class="language-py snippet"><div class="notebook-skip code-snippet"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-py data-lang=py><span class=c1># beam-playground:</span>
-<span class=c1>#   name: Name of the example/test/kata</span>
-<span class=c1>#   description: Description of the example/test/kata</span>
-<span class=c1>#   multifile: false</span>
-<span class=c1>#   pipeline_options: --option1 value1 --option2 value2</span>
-<span class=c1>#   default_example: false</span>
-<span class=c1>#   context_line: 10</span>
-<span class=c1>#   categories:</span>
-<span class=c1>#     - category 1</span>
-<span class=c1>#     - category 2</span>
-<span class=c1>#     - category N</span>
-
-<span class=c1># example code</span></code></pre></div></div></div><div class="language-go snippet"><div class="notebook-skip code-snippet"><a class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code class=language-go data-lang=go><span class=c1>// beam-playground:
-</span><span class=c1>//   name: Name of the example/test/kata
-</span><span class=c1>//   description: Description of the example/test/kata
-</span><span class=c1>//   multifile: false
-</span><span class=c1>//   pipeline_options: --option1 value1 --option2 value2
-</span><span class=c1>//   default_example: false
-</span><span class=c1>//   context_line: 10
-</span><span class=c1>//   categories:
-</span><span class=c1>//     - category 1
-</span><span class=c1>//     - category 2
-</span><span class=c1>//     - category N
-</span><span class=c1></span>
-<span class=o>//</span> <span class=nx>example</span> <span class=nx>code</span></code></pre></div></div></div></p><p>The &lsquo;beam-playground&rsquo; tag consists of the following <strong>required</strong> elements:</p><ul><li><code>beam-playground</code> - tag title.</li><li><code>name</code> - string field. Name of the Beam example/test/kata that will be displayed in the Beam Playground
-examples catalog.</li><li><code>description</code> - string field. Description of the Beam example/test/kata that will be displayed in Beam Playground.</li><li><code>multifile</code> - boolean field. Specifies if the given example consists of multiple files or not.</li><li><code>pipeline_options</code> - string field (optional). Contains information about pipeline options of the Beam example/test/kata.</li><li><code>default_example</code> - boolean field (optional). Specifies if the give [...]
-as default it means that this example is shown when its SDK is chosen in Beam Playground.
-Only one example can be set as a default for each SDK.</li><li><code>context_line</code> - integer field. The line where the main part of the Beam example/test/kata begins.</li><li><code>categories</code> - list type field.
-Lists categories this example is included into. Available categories are listed in
-<a href=https://github.com/apache/beam/blob/master/playground/categories.yaml>playground/categories.yaml</a>.
-If some Beam example/kata/test needs to add a new category, then please submit PR with the changes to <code>categories.yaml</code>.
-After the category has been added, it can be used in the examples.</li></ul><p>More details on examples in Apache Beam Playground can be found
-<a href="https://docs.google.com/document/d/1LBeGVTYwJHYbtmLt06OjhBR1CJ1Wgz18MEZjvNkuofc/edit?usp=sharing">here</a>.</p><h2 id=next-steps>Next Steps</h2><ul><li>Try examples in <a href=https://play.beam.apache.org/>Apache Beam Playground</a>.</li><li>Submit feedback using &ldquo;Enjoying Playground?&rdquo; in
+<a href=https://play.beam.apache.org/>Beam Playground</a>.</p><h2 id=beam-playground-wordcount-example>Beam Playground WordCount Example</h2><div class=playground-wrapper><div class=playground-snippets><div class="language-java playground-snippet" data-sdk=java data-path=SDK_JAVA_MinimalWordCount></div><div class="language-py playground-snippet" data-sdk=python data-path=SDK_PYTHON_WordCountWithMetrics></div><div class="language-go playground-snippet" data-sdk=go data-path=SDK_GO_Minimal [...]
 <a href=https://play.beam.apache.org/>Apache Beam Playground</a> or via
 <a href="https://docs.google.com/forms/d/e/1FAIpQLSd5_5XeOwwW2yjEVHUXmiBad8Lxk-4OtNcgG45pbyAZzd4EbA/viewform?usp=pp_url">this form</a>.</li><li>Join the Beam <a href=/community/contact-us>users@</a> mailing list.</li><li>If you&rsquo;re interested in contributing to the Apache Beam Playground codebase, see the <a href=/contribute>Contribution Guide</a>.</li></ul><p>Please don&rsquo;t hesitate to <a href=/community/contact-us>reach out</a> if you encounter any issues!</p><div class=feedba [...]
 <a href=https://www.apache.org>The Apache Software Foundation</a>
diff --git a/website/generated-content/sitemap.xml b/website/generated-content/sitemap.xml
index 98bc0b5d50a..d2a86c180c3 100644
--- a/website/generated-content/sitemap.xml
+++ b/website/generated-content/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>/blog/beam-2.48.0/</loc><lastmod>2023-06-05T11:22:30-04:00</lastmod></url><url><loc>/categories/blog/</loc><lastmod>2023-06-05T11:22:30-04:00</lastmod></url><url><loc>/blog/</loc><lastmod>2023-06-05T11:22:30-04:00</lastmod></url><url><loc>/categories/</loc><lastmod>2023-06-05T11:22:30-04:00</lastmod></url><url><loc>/catego [...]
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>/blog/beam-2.48.0/</loc><lastmod>2023-06-05T16:33:43-04:00</lastmod></url><url><loc>/categories/blog/</loc><lastmod>2023-06-05T16:33:43-04:00</lastmod></url><url><loc>/blog/</loc><lastmod>2023-06-05T16:33:43-04:00</lastmod></url><url><loc>/categories/</loc><lastmod>2023-06-05T16:33:43-04:00</lastmod></url><url><loc>/catego [...]
\ No newline at end of file