New Upstream Release - python-mkdocs

Ready changes

Summary

Merged new upstream version: 1.4.3+dfsg (was: 1.4.2+dfsg).

Resulting package

Built on 2023-06-17T07:50 (took 6m46s)

The resulting binary packages can be installed (if you have the apt repository enabled) by running one of:

apt install -t fresh-releases mkdocs-docapt install -t fresh-releases mkdocs

Lintian Result

Diff

diff --git a/README.md b/README.md
index e63d11e..4a7aaaf 100644
--- a/README.md
+++ b/README.md
@@ -29,7 +29,7 @@ If you need help with MkDocs, do not hesitate to get in contact with us!
 
 -   For questions and high-level discussions, use **[Discussions]** on GitHub.
     -   For small questions, a good alternative is the **[Chat room]** on
-        Gitter/Matrix (**new!**)
+        Gitter/Matrix.
 -   To report a bug or make a feature request, open an **[Issue]** on GitHub.
 
 Please note that we may only provide
@@ -44,8 +44,7 @@ Make sure to stick around to answer some questions as well!
 
 - [Official Documentation][mkdocs]
 - [Latest Release Notes][release-notes]
-- [MkDocs Wiki][wiki] (Third-party themes, recipes, plugins and more)
-- [Best-of-MkDocs][best-of] (Curated list of themes, plugins and more)
+- [Best-of-MkDocs][best-of] (Third-party themes, recipes, plugins and more)
 
 ## Contributing to MkDocs
 
@@ -71,10 +70,9 @@ discussion forums is expected to follow the [PyPA Code of Conduct].
 [Discussions]: https://github.com/mkdocs/mkdocs/discussions
 [Chat room]: https://gitter.im/mkdocs/community
 [release-notes]: https://www.mkdocs.org/about/release-notes/
-[wiki]: https://github.com/mkdocs/mkdocs/wiki
 [Contributing Guide]: https://www.mkdocs.org/about/contributing/
 [PyPA Code of Conduct]: https://www.pypa.io/en/latest/code-of-conduct/
-[best-of]: https://github.com/pawamoy/best-of-mkdocs
+[best-of]: https://github.com/mkdocs/best-of-mkdocs
 
 ## License
 
diff --git a/debian/changelog b/debian/changelog
index bfb2e99..9c1ad8a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+python-mkdocs (1.4.3+dfsg-1) UNRELEASED; urgency=low
+
+  * New upstream release.
+
+ -- Debian Janitor <janitor@jelmer.uk>  Sat, 17 Jun 2023 07:44:21 -0000
+
 python-mkdocs (1.4.2+dfsg-2) unstable; urgency=medium
 
   * Team Upload.
diff --git a/debian/patches/debian-hacks/Disable-non-English-search-support.patch b/debian/patches/debian-hacks/Disable-non-English-search-support.patch
index 3dd0b40..0f81826 100644
--- a/debian/patches/debian-hacks/Disable-non-English-search-support.patch
+++ b/debian/patches/debian-hacks/Disable-non-English-search-support.patch
@@ -12,10 +12,10 @@ Forwarded: Not-Needed
  mkdocs/tests/search_tests.py            |  7 ++++++
  3 files changed, 7 insertions(+), 61 deletions(-)
 
-diff --git a/docs/user-guide/configuration.md b/docs/user-guide/configuration.md
-index fc6800d..6259158 100644
---- a/docs/user-guide/configuration.md
-+++ b/docs/user-guide/configuration.md
+Index: python-mkdocs.git/docs/user-guide/configuration.md
+===================================================================
+--- python-mkdocs.git.orig/docs/user-guide/configuration.md
++++ python-mkdocs.git/docs/user-guide/configuration.md
 @@ -719,47 +719,6 @@ plugins:
  
    **default**: 3
@@ -64,7 +64,7 @@ index fc6800d..6259158 100644
  ##### **prebuild_index**
  
  Optionally generates a pre-built index of all pages, which provides some
-@@ -971,9 +930,6 @@ path based options in the primary configuration file only.
+@@ -972,9 +931,6 @@ path based options in the primary config
  [extra_css]: #extra_css
  [Plugins]: ../dev-guide/plugins.md
  [lunr.js]: https://lunrjs.com/
@@ -74,10 +74,10 @@ index fc6800d..6259158 100644
  [Node.js]: https://nodejs.org/
  [markdown_extensions]: #markdown_extensions
  [nav]: #nav
-diff --git a/mkdocs/contrib/search/prebuild-index.js b/mkdocs/contrib/search/prebuild-index.js
-index 835d17b..a23a033 100644
---- a/mkdocs/contrib/search/prebuild-index.js
-+++ b/mkdocs/contrib/search/prebuild-index.js
+Index: python-mkdocs.git/mkdocs/contrib/search/prebuild-index.js
+===================================================================
+--- python-mkdocs.git.orig/mkdocs/contrib/search/prebuild-index.js
++++ python-mkdocs.git/mkdocs/contrib/search/prebuild-index.js
 @@ -15,23 +15,6 @@ stdin.on('end', function () {
        lang = ['en'];
  
@@ -102,11 +102,11 @@ index 835d17b..a23a033 100644
      if (data.config.separator && data.config.separator.length) {
        lunr.tokenizer.separator = new RegExp(data.config.separator);
      }
-diff --git a/mkdocs/tests/search_tests.py b/mkdocs/tests/search_tests.py
-index ada861c..80f7291 100644
---- a/mkdocs/tests/search_tests.py
-+++ b/mkdocs/tests/search_tests.py
-@@ -33,6 +33,7 @@ class SearchConfigTests(unittest.TestCase):
+Index: python-mkdocs.git/mkdocs/tests/search_tests.py
+===================================================================
+--- python-mkdocs.git.orig/mkdocs/tests/search_tests.py
++++ python-mkdocs.git/mkdocs/tests/search_tests.py
+@@ -33,6 +33,7 @@ class SearchConfigTests(unittest.TestCas
          value = option.validate(['en'])
          self.assertEqual(['en'], value)
  
@@ -114,7 +114,7 @@ index ada861c..80f7291 100644
      def test_lang_multi_list(self):
          option = search.LangOption()
          value = option.validate(['en', 'es', 'fr'])
-@@ -68,6 +69,7 @@ class SearchConfigTests(unittest.TestCase):
+@@ -68,6 +69,7 @@ class SearchConfigTests(unittest.TestCas
          value = option.validate(['en', 'foo'])
          self.assertEqual(['en'], value)
  
@@ -122,7 +122,7 @@ index ada861c..80f7291 100644
      def test_lang_missing_and_with_territory(self):
          option = search.LangOption()
          value = option.validate(['zh_CN', 'pt_BR', 'fr'])
-@@ -89,6 +91,7 @@ class SearchPluginTests(unittest.TestCase):
+@@ -89,6 +91,7 @@ class SearchPluginTests(unittest.TestCas
          self.assertEqual(errors, [])
          self.assertEqual(warnings, [])
  
@@ -130,7 +130,7 @@ index ada861c..80f7291 100644
      def test_plugin_config_lang(self):
          expected = {
              'lang': ['es'],
-@@ -170,6 +173,7 @@ class SearchPluginTests(unittest.TestCase):
+@@ -170,6 +173,7 @@ class SearchPluginTests(unittest.TestCas
          self.assertEqual(result['extra_javascript'], ['search/main.js'])
          self.assertEqual(plugin.config.lang, [result['theme']['locale'].language])
  
@@ -138,7 +138,7 @@ index ada861c..80f7291 100644
      def test_event_on_config_lang(self):
          plugin = search.SearchPlugin()
          plugin.load_config({'lang': 'es'})
-@@ -181,6 +185,7 @@ class SearchPluginTests(unittest.TestCase):
+@@ -181,6 +185,7 @@ class SearchPluginTests(unittest.TestCas
          self.assertEqual(result['extra_javascript'], ['search/main.js'])
          self.assertEqual(plugin.config.lang, ['es'])
  
@@ -146,7 +146,7 @@ index ada861c..80f7291 100644
      def test_event_on_config_theme_locale(self):
          plugin = search.SearchPlugin()
          plugin.load_config({})
-@@ -234,6 +239,7 @@ class SearchPluginTests(unittest.TestCase):
+@@ -234,6 +239,7 @@ class SearchPluginTests(unittest.TestCas
          self.assertEqual(mock_copy_file.call_count, 0)
          self.assertEqual(mock_write_file.call_count, 1)
  
@@ -154,7 +154,7 @@ index ada861c..80f7291 100644
      @mock.patch('mkdocs.utils.write_file', autospec=True)
      @mock.patch('mkdocs.utils.copy_file', autospec=True)
      def test_event_on_post_build_single_lang(self, mock_copy_file, mock_write_file):
-@@ -245,6 +251,7 @@ class SearchPluginTests(unittest.TestCase):
+@@ -245,6 +251,7 @@ class SearchPluginTests(unittest.TestCas
          self.assertEqual(mock_copy_file.call_count, 2)
          self.assertEqual(mock_write_file.call_count, 1)
  
diff --git a/debian/patches/debian-hacks/Disable-the-Markdown-GitHub-links-extension.patch b/debian/patches/debian-hacks/Disable-the-Markdown-GitHub-links-extension.patch
index 94cba83..39a6c16 100644
--- a/debian/patches/debian-hacks/Disable-the-Markdown-GitHub-links-extension.patch
+++ b/debian/patches/debian-hacks/Disable-the-Markdown-GitHub-links-extension.patch
@@ -9,10 +9,10 @@ Forwarded: Not-Needed
  mkdocs.yml | 3 ---
  1 file changed, 3 deletions(-)
 
-diff --git a/mkdocs.yml b/mkdocs.yml
-index 39c855a..14010bf 100644
---- a/mkdocs.yml
-+++ b/mkdocs.yml
+Index: python-mkdocs.git/mkdocs.yml
+===================================================================
+--- python-mkdocs.git.orig/mkdocs.yml
++++ python-mkdocs.git/mkdocs.yml
 @@ -39,9 +39,6 @@ markdown_extensions:
      - pymdownx.snippets
      - pymdownx.superfences
@@ -22,4 +22,4 @@ index 39c855a..14010bf 100644
 -        repo: mkdocs
      - mkdocs-click
  
- copyright: Copyright &copy; 2014 <a href="https://twitter.com/_tomchristie">Tom Christie</a>, Maintained by the <a href="/about/release-notes/#maintenance-team">MkDocs Team</a>.
+ copyright: Copyright &copy; 2014 <a href="https://twitter.com/starletdreaming">Tom Christie</a>, Maintained by the <a href="/about/release-notes/#maintenance-team">MkDocs Team</a>.
diff --git a/debian/patches/debian-hacks/Disable-use_directory_urls-configuration-option.patch b/debian/patches/debian-hacks/Disable-use_directory_urls-configuration-option.patch
index 3e7de62..da3a2b9 100644
--- a/debian/patches/debian-hacks/Disable-use_directory_urls-configuration-option.patch
+++ b/debian/patches/debian-hacks/Disable-use_directory_urls-configuration-option.patch
@@ -7,10 +7,10 @@ To make it easier to browse the documentation locally.
  mkdocs.yml | 2 ++
  1 file changed, 2 insertions(+)
 
-diff --git a/mkdocs.yml b/mkdocs.yml
-index 844f236..39c855a 100644
---- a/mkdocs.yml
-+++ b/mkdocs.yml
+Index: python-mkdocs.git/mkdocs.yml
+===================================================================
+--- python-mkdocs.git.orig/mkdocs.yml
++++ python-mkdocs.git/mkdocs.yml
 @@ -69,3 +69,5 @@ plugins:
  
  watch:
diff --git a/debian/patches/debian-hacks/Do-not-assert-that-fonts-directory-exists.patch b/debian/patches/debian-hacks/Do-not-assert-that-fonts-directory-exists.patch
index 2d8260b..05c3757 100644
--- a/debian/patches/debian-hacks/Do-not-assert-that-fonts-directory-exists.patch
+++ b/debian/patches/debian-hacks/Do-not-assert-that-fonts-directory-exists.patch
@@ -10,11 +10,11 @@ Forwarded: Not-Needed
  mkdocs/tests/build_tests.py | 1 -
  1 file changed, 1 deletion(-)
 
-diff --git a/mkdocs/tests/build_tests.py b/mkdocs/tests/build_tests.py
-index fa29bf6..a2ab8cd 100644
---- a/mkdocs/tests/build_tests.py
-+++ b/mkdocs/tests/build_tests.py
-@@ -552,7 +552,6 @@ class BuildTests(PathAssertionMixin, unittest.TestCase):
+Index: python-mkdocs.git/mkdocs/tests/build_tests.py
+===================================================================
+--- python-mkdocs.git.orig/mkdocs/tests/build_tests.py
++++ python-mkdocs.git/mkdocs/tests/build_tests.py
+@@ -552,7 +552,6 @@ class BuildTests(PathAssertionMixin, uni
          self.assertPathIsDir(site_dir, 'js')
          self.assertPathIsDir(site_dir, 'css')
          self.assertPathIsDir(site_dir, 'img')
diff --git a/debian/patches/debian-hacks/Make-toc.html-look-better-with-default-Bootstrap-theme.patch b/debian/patches/debian-hacks/Make-toc.html-look-better-with-default-Bootstrap-theme.patch
index b54c1ad..48d1a03 100644
--- a/debian/patches/debian-hacks/Make-toc.html-look-better-with-default-Bootstrap-theme.patch
+++ b/debian/patches/debian-hacks/Make-toc.html-look-better-with-default-Bootstrap-theme.patch
@@ -7,10 +7,10 @@ Forwarded: Not-Needed
  mkdocs/themes/mkdocs/toc.html | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-diff --git a/mkdocs/themes/mkdocs/toc.html b/mkdocs/themes/mkdocs/toc.html
-index 53467a0..1f5c6ca 100644
---- a/mkdocs/themes/mkdocs/toc.html
-+++ b/mkdocs/themes/mkdocs/toc.html
+Index: python-mkdocs.git/mkdocs/themes/mkdocs/toc.html
+===================================================================
+--- python-mkdocs.git.orig/mkdocs/themes/mkdocs/toc.html
++++ python-mkdocs.git/mkdocs/themes/mkdocs/toc.html
 @@ -16,7 +16,7 @@
              </li>
          {%- endif %}
diff --git a/debian/patches/debian-hacks/Use-themes-from-usr-share-mkdocs-themes.patch b/debian/patches/debian-hacks/Use-themes-from-usr-share-mkdocs-themes.patch
index 1218c4f..165220b 100644
--- a/debian/patches/debian-hacks/Use-themes-from-usr-share-mkdocs-themes.patch
+++ b/debian/patches/debian-hacks/Use-themes-from-usr-share-mkdocs-themes.patch
@@ -7,10 +7,10 @@ See https://lists.debian.org/debian-python/2016/04/msg00042.html
  mkdocs/__init__.py | 4 ++++
  1 file changed, 4 insertions(+)
 
-diff --git a/mkdocs/__init__.py b/mkdocs/__init__.py
-index 2c22232..a44eb07 100644
---- a/mkdocs/__init__.py
-+++ b/mkdocs/__init__.py
+Index: python-mkdocs.git/mkdocs/__init__.py
+===================================================================
+--- python-mkdocs.git.orig/mkdocs/__init__.py
++++ python-mkdocs.git/mkdocs/__init__.py
 @@ -1,5 +1,9 @@
  #!/usr/bin/env python
  
@@ -20,4 +20,4 @@ index 2c22232..a44eb07 100644
 +sys.path.insert(1, "/usr/share/mkdocs/themes")
 +
  # For acceptable version formats, see https://www.python.org/dev/peps/pep-0440/
- __version__ = '1.4.2'
+ __version__ = '1.4.3'
diff --git a/debian/patches/debian-hacks/docs-Disable-Google-Analytics-in-mkdocs-doc.patch b/debian/patches/debian-hacks/docs-Disable-Google-Analytics-in-mkdocs-doc.patch
index d22db20..538bf9c 100644
--- a/debian/patches/debian-hacks/docs-Disable-Google-Analytics-in-mkdocs-doc.patch
+++ b/debian/patches/debian-hacks/docs-Disable-Google-Analytics-in-mkdocs-doc.patch
@@ -11,10 +11,10 @@ Forwarded: Not-Needed
  mkdocs.yml | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-diff --git a/mkdocs.yml b/mkdocs.yml
-index 14010bf..5d6fbac 100644
---- a/mkdocs.yml
-+++ b/mkdocs.yml
+Index: python-mkdocs.git/mkdocs.yml
+===================================================================
+--- python-mkdocs.git.orig/mkdocs.yml
++++ python-mkdocs.git/mkdocs.yml
 @@ -9,7 +9,7 @@ edit_uri: blob/master/docs/
  theme:
      name: mkdocs
diff --git a/debian/patches/debian-hacks/s390x-Work-around-unittest-issue.patch b/debian/patches/debian-hacks/s390x-Work-around-unittest-issue.patch
index 396eccb..580058f 100644
--- a/debian/patches/debian-hacks/s390x-Work-around-unittest-issue.patch
+++ b/debian/patches/debian-hacks/s390x-Work-around-unittest-issue.patch
@@ -11,10 +11,10 @@ Forwarded: Not-Needed
  mkdocs/tests/livereload_tests.py | 3 +++
  1 file changed, 3 insertions(+)
 
-diff --git a/mkdocs/tests/livereload_tests.py b/mkdocs/tests/livereload_tests.py
-index 91586f6..921db36 100644
---- a/mkdocs/tests/livereload_tests.py
-+++ b/mkdocs/tests/livereload_tests.py
+Index: python-mkdocs.git/mkdocs/tests/livereload_tests.py
+===================================================================
+--- python-mkdocs.git.orig/mkdocs/tests/livereload_tests.py
++++ python-mkdocs.git/mkdocs/tests/livereload_tests.py
 @@ -3,6 +3,7 @@
  import contextlib
  import email
diff --git a/debian/patches/upstream/Update-IpAddress-tests-for-Python3.9.5.patch b/debian/patches/upstream/Update-IpAddress-tests-for-Python3.9.5.patch
index 334aaee..5d703b5 100644
--- a/debian/patches/upstream/Update-IpAddress-tests-for-Python3.9.5.patch
+++ b/debian/patches/upstream/Update-IpAddress-tests-for-Python3.9.5.patch
@@ -9,15 +9,14 @@ Forwarded: https://github.com/mkdocs/mkdocs/commit/775d506c63d4b57553110ee56b8c1
  mkdocs/tests/config/config_options_tests.py | 12 ++++++++++++
  1 file changed, 12 insertions(+)
 
-diff --git a/mkdocs/tests/config/config_options_tests.py b/mkdocs/tests/config/config_options_tests.py
-index 3c72eb1..660e72b 100644
---- a/mkdocs/tests/config/config_options_tests.py
-+++ b/mkdocs/tests/config/config_options_tests.py
-@@ -335,6 +335,18 @@ class IpAddressTest(TestCase):
-         self.assertEqual(conf.option.host, '127.0.0.1')
+Index: python-mkdocs.git/mkdocs/tests/config/config_options_tests.py
+===================================================================
+--- python-mkdocs.git.orig/mkdocs/tests/config/config_options_tests.py
++++ python-mkdocs.git/mkdocs/tests/config/config_options_tests.py
+@@ -336,6 +336,18 @@ class IpAddressTest(TestCase):
          self.assertEqual(conf.option.port, 8000)
  
-+    @unittest.skipIf(
+     @unittest.skipIf(
 +        sys.version_info >= (3, 9, 5),
 +        "Leading zeros not allowed in IP addresses since Python3.9.5",
 +    )
@@ -29,6 +28,7 @@ index 3c72eb1..660e72b 100644
 +        self.assertEqual(value.host, '127.0.0.1')
 +        self.assertEqual(value.port, 8000)
 +
-     @unittest.skipIf(
++    @unittest.skipIf(
          sys.version_info < (3, 9, 5),
          "Leading zeros allowed in IP addresses before Python3.9.5",
+     )
diff --git a/docs/about/contributing.md b/docs/about/contributing.md
index 2264841..4f5c9a9 100644
--- a/docs/about/contributing.md
+++ b/docs/about/contributing.md
@@ -86,11 +86,12 @@ with `{% trans %}` and `{% endtrans %}` tags.
 
 Each time a translatable text placeholder is added, removed or changed in a
 theme template, the theme's Portable Object Template (`pot`) file needs to be
-updated by running the `extract_messages` command. For example, to update the
-`pot` file of the `mkdocs` theme, run the following command:
+updated by running the `extract_messages` command. To update the
+`pot` file for both built-in themes, run these commands:
 
 ```bash
 pybabel extract --project=MkDocs --copyright-holder=MkDocs --msgid-bugs-address='https://github.com/mkdocs/mkdocs/issues' --no-wrap --version="$(hatch version)" --mapping-file mkdocs/themes/babel.cfg --output-file mkdocs/themes/mkdocs/messages.pot mkdocs/themes/mkdocs
+pybabel extract --project=MkDocs --copyright-holder=MkDocs --msgid-bugs-address='https://github.com/mkdocs/mkdocs/issues' --no-wrap --version="$(hatch version)" --mapping-file mkdocs/themes/babel.cfg --output-file mkdocs/themes/readthedocs/messages.pot mkdocs/themes/readthedocs
 ```
 
 The updated `pot` file should be included in a PR with the updated template.
diff --git a/docs/about/release-notes.md b/docs/about/release-notes.md
index 83ed461..52f6635 100644
--- a/docs/about/release-notes.md
+++ b/docs/about/release-notes.md
@@ -27,6 +27,23 @@ The current and past members of the MkDocs team.
 * [@oprypin](https://github.com/oprypin/)
 * [@ultrabug](https://github.com/ultrabug/)
 
+## Version 1.4.3 (2023-05-02)
+
+*   Bugfix: for the `hooks` feature, modules no longer fail to load if using some advanced Python features like dataclasses (#3193)
+
+*   Bugfix: Don't create `None` sitemap entries if the page has no populated URL - affects sites that exclude some files from navigation ([`07a297b`](https://github.com/mkdocs/mkdocs/commit/07a297b3b4de4a1b49469b1497ee34039b9f38fa))
+
+*   "readthedocs" theme:
+    * Accessibility: add aria labels to Home logo (#3129) and search inputs (#3046)
+    * "readthedocs" theme now supports `hljs_style:` config, same as "mkdocs" theme (#3199)
+
+*   Translations:
+    * Built-in themes now also support Indonesian language (#3154)
+    * Fixed `zh_CN` translation (#3125)
+    * `tr_TR` translation becomes just `tr` - usage should remain unaffected (#3195)
+
+See [commit log](https://github.com/mkdocs/mkdocs/compare/1.4.2...1.4.3).
+
 ## Version 1.4.2 (2022-11-01)
 
 *   Officially support Python 3.11 (#3020)
@@ -1525,7 +1542,7 @@ a small subset of the configuration options can be passed to the commands. To
 see in full commands and available arguments use `mkdocs --help` and
 `mkdocs build --help` to have them displayed.
 
-[Click]: http://click.pocoo.org/4/
+[Click]: https://click.palletsprojects.com/
 
 #### Support Extra HTML and XML files
 
diff --git a/docs/dev-guide/plugins.md b/docs/dev-guide/plugins.md
index 8447f5a..30f61cb 100644
--- a/docs/dev-guide/plugins.md
+++ b/docs/dev-guide/plugins.md
@@ -16,8 +16,8 @@ pip install mkdocs-foo-plugin
 ```
 
 Once a plugin has been successfully installed, it is ready to use. It just needs
-to be [enabled](#using-plugins) in the configuration file. The [MkDocs Plugins]
-wiki page has a growing list of plugins that you can install and use.
+to be [enabled](#using-plugins) in the configuration file. The [Best-of-MkDocs]
+page has a large list of plugins that you can install and use.
 
 ## Using Plugins
 
@@ -239,7 +239,7 @@ class MyPlugin(BasePlugin):
 > ```python
 > def on_config(self, config: MkDocsConfig):
 >     config.theme.static_templates.add('my_template.html')
->         return config
+>     return config
 > ```
 
 ### Events
@@ -519,5 +519,5 @@ tell MkDocs to use it via the config.
 [post_template]: #on_post_template
 [static_templates]: ../user-guide/configuration.md#static_templates
 [Template Events]: #template-events
-[MkDocs Plugins]: https://github.com/mkdocs/mkdocs/wiki/MkDocs-Plugins
+[Best-of-MkDocs]: https://github.com/mkdocs/best-of-mkdocs
 [on_build_error]: #on_build_error
diff --git a/docs/dev-guide/themes.md b/docs/dev-guide/themes.md
index 46bfaaf..504b98e 100644
--- a/docs/dev-guide/themes.md
+++ b/docs/dev-guide/themes.md
@@ -6,8 +6,8 @@ A guide to creating and distributing custom themes.
 
 NOTE:
 If you are looking for existing third party themes, they are listed in the
-MkDocs [community wiki]. If you want to share a theme you create, you
-should list it on the Wiki.
+[community wiki] page and [Best-of-MkDocs]. If you want to share a theme you create, you
+should list it there.
 
 When creating a new theme, you can either follow the steps in this guide to
 create one from scratch or you can download the `mkdocs-basic-theme` as a
@@ -16,6 +16,7 @@ this base theme on [GitHub][basic theme]**. It contains detailed comments in
 the code to describe the different features and their usage.
 
 [community wiki]: https://github.com/mkdocs/mkdocs/wiki/MkDocs-Themes
+[Best-of-MkDocs]: https://github.com/mkdocs/best-of-mkdocs#-theming
 [basic theme]: https://github.com/mkdocs/mkdocs-basic-theme
 
 ## Creating a custom theme
@@ -111,8 +112,8 @@ required, third party template authors are encouraged to follow a similar
 pattern and may want to define the same [blocks] as are used in the built-in
 themes for consistency.
 
-[Jinja]: http://jinja.pocoo.org/
-[template inheritance]: http://jinja.pocoo.org/docs/dev/templates/#template-inheritance
+[Jinja]: https://jinja.palletsprojects.com/
+[template inheritance]: https://jinja.palletsprojects.com/en/latest/templates/#template-inheritance
 [blocks]: ../user-guide/customizing-your-theme.md#overriding-template-blocks
 
 ## Theme Files
@@ -727,7 +728,7 @@ created if the user explicitly enables the [prebuild_index] config option.
 Themes should expect the index to not be present, but can choose to use the
 index when it is available. The `index` object was new in MkDocs version *1.0*.
 
-[Jinja2 template]: http://jinja.pocoo.org/docs/dev/
+[Jinja2 template]: https://jinja.palletsprojects.com/
 [built-in themes]: https://github.com/mkdocs/mkdocs/tree/master/mkdocs/themes
 [theme's configuration file]: #theme-configuration
 [lunr.js]: https://lunrjs.com/
diff --git a/docs/dev-guide/translations.md b/docs/dev-guide/translations.md
index 9763b06..80df04b 100644
--- a/docs/dev-guide/translations.md
+++ b/docs/dev-guide/translations.md
@@ -41,7 +41,7 @@ Make sure translation requirements are installed in your environment:
 pip install mkdocs[i18n]
 ```
 
-[babel]: http://babel.pocoo.org/en/latest/cmdline.html
+[babel]: https://babel.pocoo.org/en/latest/cmdline.html
 [Contributing Guide]: ../about/contributing.md
 [Install for Development]: ../about/contributing.md#installing-for-development
 [Submit a Pull Request]: ../about/contributing.md#submitting-pull-requests
@@ -54,11 +54,12 @@ translation by following the steps below.
 
 Here is a quick summary of what you'll need to do:
 
-1. [Initialize new localization catalogs](#initializing-the-localization-catalogs) for your language (if a translation for your locale already exists, follow the instructions for [updating theme localization files](/user-guide/custom-themes/#localizing-themes) instead).
-2. [Add a translation](#translating-the-mkdocs-themes) for every text placeholder in the localized catalogs.
-3. [Locally serve and test](#testing-theme-translations) the translated themes for your language.
-4. [Update the documentation](#updating-theme-documentation) about supported translations for each translated theme.
-5. [Contribute your translation](#contributing-translations) through a Pull Request.
+1. [Fork and clone the MkDocs repository](#fork-and-clone-the-mkdocs-repository) and then [install MkDocs for development](/about/contributing/#installing-for-development) for adding and testing translations.
+2. [Initialize new localization catalogs](#initializing-the-localization-catalogs) for your language (if a translation for your locale already exists, follow the instructions for [updating theme localization files](/user-guide/custom-themes/#localizing-themes) instead).
+3. [Add a translation](#translating-the-mkdocs-themes) for every text placeholder in the localized catalogs.
+4. [Locally serve and test](#testing-theme-translations) the translated themes for your language.
+5. [Update the documentation](#updating-theme-documentation) about supported translations for each translated theme.
+6. [Contribute your translation](#contributing-translations) through a Pull Request.
 
 NOTE:
 Translation locales are usually identified using the [ISO-639-1] (2-letter)
@@ -69,6 +70,15 @@ use of a term which differs from the general language translation.
 
 [ISO-639-1]: https://en.wikipedia.org/wiki/ISO_639-1
 
+### Fork and clone the MkDocs repository
+
+In the following steps you'll work with a fork of the MkDocs repository. Follow
+the instructions for [forking and cloning the MkDocs
+repository](/about/contributing/#installing-for-development).
+
+To test the translations you also need to [install MkDocs for
+development](/about/contributing/#installing-for-development) from your fork.
+
 ### Initializing the localization catalogs
 
 The templates for each theme contain text placeholders that have been extracted
@@ -79,15 +89,26 @@ Initializing a catalog consists of running a command which will create a
 directory structure for your desired language and prepare a Portable Object
 (`messages.po`) file derived from the `pot` file of the theme.
 
-Use the `init_catalog` command on each theme's directory and provide the
-appropriate language code (`-l <language>`). For example, to add a translation
-for the Spanish `es` language to the `mkdocs` theme, run the following command:
+Use the `init_catalog` command on each theme's directory and provide the appropriate language code (`-l <language>`).
+
+The language code is almost always just two lowercase letters, such as `sv`, but in some cases it needs to be further disambiguated.
+
+See:
+
+* [Already translated languages for built-in themes](../user-guide/choosing-your-theme.md#mkdocs-locale)
+* [ISO 639 Language List](https://www.localeplanet.com/icu/iso639.html)
+* [Language subtag registry](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry)
+
+In particular, the way to know that the `pt` language should be disambiguated as `pt_PT` and `pt_BR` is that the *Language subtag registry* page contains `pt-` if you search for it. Whereas `sv` should remain just `sv`, because that page does *not* contain `sv-`.
+
+So, if we pick `es` (Spanish) as our example language code, to add a translation for it to both built-in themes, run these commands:
 
 ```bash
-pybabel init --input-file mkdocs/themes/mkdocs/messages.pot --output-dir mkdocs/themes/mkdocs/locales --locale es
+pybabel init --input-file mkdocs/themes/mkdocs/messages.pot --output-dir mkdocs/themes/mkdocs/locales -l es
+pybabel init --input-file mkdocs/themes/readthedocs/messages.pot --output-dir mkdocs/themes/readthedocs/locales -l es
 ```
 
-The above command will create the following file structure:
+The above command will create a file structure as follows:
 
 ```text
 mkdocs/themes/mkdocs/locales
@@ -117,11 +138,11 @@ This step should be completed after a theme template have been [updated][update
 themes] for each language that you are comfortable contributing a translation
 for.
 
-To update the `fr` translation catalog of the `mkdocs` theme, use the following
-command:
+To update the `fr` translation catalog of both built-in themes, use the following commands:
 
 ```bash
-pybabel update --ignore-obsolete --update-header-comment --input-file mkdocs/themes/mkdocs/messages.pot --output-dir mkdocs/themes/mkdocs/locales --locale fr
+pybabel update --ignore-obsolete --update-header-comment --input-file mkdocs/themes/mkdocs/messages.pot --output-dir mkdocs/themes/mkdocs/locales -l fr
+pybabel update --ignore-obsolete --update-header-comment --input-file mkdocs/themes/readthedocs/messages.pot --output-dir mkdocs/themes/readthedocs/locales -l fr
 ```
 
 You can now move on to the next step and [add a translation] for every updated
@@ -149,11 +170,12 @@ you'll want to [test your localized theme](#testing-theme-translations).
 ### Testing theme translations
 
 To test a theme with translations, you need to first compile the `messages.po`
-files of your theme into `messages.mo` files. The following command will compile
-the `es` translation for the `mkdocs` theme.
+files of your theme into `messages.mo` files. The following commands will compile
+the `es` translation for both built-in themes:
 
 ```bash
-pybabel compile --statistics --directory mkdocs/themes/mkdocs/locales --locale es
+pybabel compile --statistics --directory mkdocs/themes/mkdocs/locales -l es
+pybabel compile --statistics --directory mkdocs/themes/readthedocs/locales -l es
 ```
 
 The above command results in the following file structure:
diff --git a/docs/index.md b/docs/index.md
index 5f35674..634ee6b 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -27,15 +27,14 @@ configuration file. Start by reading the [introductory tutorial], then check the
       <div class="card-body">
         <h3 class="card-title">Great themes available</h3>
         <p class="card-text">
-            There's a stack of good looking <a
-            href="user-guide/choosing-your-theme">themes</a> available for
-            MkDocs. Choose between the built in themes: <a
-            href="user-guide/choosing-your-theme/#mkdocs">mkdocs</a> and <a
-            href="user-guide/choosing-your-theme/#readthedocs">readthedocs</a>,
-            select one of the third-party themes listed on the <a
-            href="https://github.com/mkdocs/mkdocs/wiki/MkDocs-Themes">MkDocs
-            Themes</a> wiki page, or <a href="dev-guide/themes/">build your
-            own</a>.
+            There's a stack of good looking <a href="user-guide/choosing-your-theme">themes</a> available for MkDocs.
+            Choose between the built in themes:
+            <a href="user-guide/choosing-your-theme/#mkdocs">mkdocs</a> and
+            <a href="user-guide/choosing-your-theme/#readthedocs">readthedocs</a>,
+            select one of the third-party themes
+            (on the <a href="https://github.com/mkdocs/mkdocs/wiki/MkDocs-Themes">MkDocs Themes</a> wiki page
+            as well as <a href="https://github.com/mkdocs/best-of-mkdocs#-theming">Best-of-MkDocs</a>),
+            or <a href="dev-guide/themes/">build your own</a>.
         </p>
       </div>
     </div>
@@ -79,7 +78,7 @@ configuration file. Start by reading the [introductory tutorial], then check the
         <h3 class="card-title">Host anywhere</h3>
         <p class="card-text">
             MkDocs builds completely static HTML sites that you can host on
-            GitHub pages, Amazon S3, or <a
+            GitHub Pages, Amazon S3, or <a
             href="user-guide/deploying-your-docs/">anywhere</a> else you
             choose.
         </p>
diff --git a/docs/user-guide/choosing-your-theme.md b/docs/user-guide/choosing-your-theme.md
index 30492e2..74c7f98 100644
--- a/docs/user-guide/choosing-your-theme.md
+++ b/docs/user-guide/choosing-your-theme.md
@@ -102,7 +102,7 @@ supports the following options:
     ```
 
 *   __`locale`__{ #mkdocs-locale }: The locale (language/location) used to
-    build the theme. If your locale is not yet supported, it will fallback
+    build the theme. If your locale is not yet supported, it will fall back
     to the default.
 
     The following locales are supported by this theme:
@@ -112,13 +112,14 @@ supports the following options:
     * `es`: Spanish
     * `fa`: Persian (Farsi)
     * `fr`: French
+    * `id`: Indonesian
     * `it`: Italian
     * `ja`: Japanese
     * `nb`: Norwegian Bokmål
     * `nn`: Norwegian Nynorsk
     * `pt_BR`: Portuguese (Brazil)
     * `ru`: Russian
-    * `tr_TR`: Turkish (Turkey)
+    * `tr`: Turkish
     * `uk`: Ukrainian
     * `zh_CN`: Simplified Chinese
 
@@ -191,23 +192,24 @@ theme supports the following options:
     page content as you scroll the page. Default: `True`.
 
 *   __`locale`__{ #readthedocs-locale }: The locale (language/location) used to
-    build the theme. If your locale is not yet supported, it will fallback
+    build the theme. If your locale is not yet supported, it will fall back
     to the default.
 
     The following locales are supported by this theme:
 
     * `en`: English (default)
-    * `fr`: French
-    * `es`: Spanish
-    * `ja`: Japanese
-    * `pt_BR`: Portuguese (Brazil)
-    * `zh_CN`: Simplified Chinese
     * `de`: German
+    * `es`: Spanish
     * `fa`: Persian (Farsi)
+    * `fr`: French
+    * `id`: Indonesian
     * `it`: Italian
-    * `tr_TR`: Turkish (Turkey)
+    * `ja`: Japanese
+    * `pt_BR`: Portuguese (Brazil)
     * `ru`: Russian
+    * `tr`: Turkish
     * `uk`: Ukrainian
+    * `zh_CN`: Simplified Chinese
 
     See the guide on [localizing your theme] for more information.
 
@@ -216,8 +218,7 @@ theme supports the following options:
 
 ## Third Party Themes
 
-A list of third party themes can be found in the MkDocs [community wiki]. If you
-have created your own, please feel free to add it to the list.
+A list of third party themes can be found at the [community wiki] page and [Best-of-MkDocs]. If you have created your own, please add them there.
 
 [third party themes]: #third-party-themes
 [theme]: configuration.md#theme
@@ -228,4 +229,5 @@ have created your own, please feel free to add it to the list.
 [upgrade-GA4]: https://support.google.com/analytics/answer/9744165?hl=en&ref_topic=9303319
 [Read the Docs]: https://readthedocs.org/
 [community wiki]: https://github.com/mkdocs/mkdocs/wiki/MkDocs-Themes
+[Best-of-MkDocs]: https://github.com/mkdocs/best-of-mkdocs#-theming
 [localizing your theme]: localizing-your-theme.md
diff --git a/docs/user-guide/configuration.md b/docs/user-guide/configuration.md
index fc6800d..e084ee6 100644
--- a/docs/user-guide/configuration.md
+++ b/docs/user-guide/configuration.md
@@ -106,7 +106,7 @@ means that a page named 'foo/bar.md' will have its edit link lead to:
 `edit_uri` can actually be just an absolute URL, not necessarily relative to `repo_url`, so this can achieve the same result:
 
 ```yaml
-repo_url: https://example.com/project/repo/blob/main/docs/
+edit_uri: https://example.com/project/repo/blob/main/docs/
 ```
 
 For more flexibility, see [edit_uri_template](#edit_uri_template) below.
@@ -575,7 +575,7 @@ This alternative syntax is required if you intend to override some options via
 > which are available out-of-the-box. For a list of configuration options
 > available for a given extension, see the documentation for that extension.
 >
-> You may also install and use various [third party extensions][3rd]. Consult
+> You may also install and use various third party extensions ([Python-Markdown wiki], [Best-of-MkDocs]). Consult
 > the documentation provided by those extensions for installation instructions
 > and available configuration options.
 
@@ -963,7 +963,8 @@ path based options in the primary configuration file only.
 [pymkd]: https://python-markdown.github.io/
 [smarty]: https://python-markdown.github.io/extensions/smarty/
 [exts]: https://python-markdown.github.io/extensions/
-[3rd]: https://github.com/Python-Markdown/markdown/wiki/Third-Party-Extensions
+[Python-Markdown wiki]: https://github.com/Python-Markdown/markdown/wiki/Third-Party-Extensions
+[Best-of-MkDocs]: https://github.com/mkdocs/best-of-mkdocs
 [configuring pages and navigation]: writing-your-docs.md#configure-pages-and-navigation
 [theme_dir]: customizing-your-theme.md#using-the-theme_dir
 [choosing your theme]: choosing-your-theme.md
diff --git a/docs/user-guide/customizing-your-theme.md b/docs/user-guide/customizing-your-theme.md
index 3df9725..688c2b6 100644
--- a/docs/user-guide/customizing-your-theme.md
+++ b/docs/user-guide/customizing-your-theme.md
@@ -224,6 +224,6 @@ any additional CSS files included in the `custom_dir`.
 [mkdocs]: ./choosing-your-theme.md#mkdocs
 [browse source]: https://github.com/mkdocs/mkdocs/tree/master/mkdocs/themes/mkdocs
 [Template Variables]: ../dev-guide/themes.md#template-variables
-[Jinja documentation]: http://jinja.pocoo.org/docs/dev/templates/#template-inheritance
-[super block]: http://jinja.pocoo.org/docs/dev/templates/#super-blocks
+[Jinja documentation]: https://jinja.palletsprojects.com/en/latest/templates/#template-inheritance
+[super block]: https://jinja.palletsprojects.com/en/latest/templates/#super-blocks
 [base_url]: ../dev-guide/themes.md#base_url
diff --git a/docs/user-guide/deploying-your-docs.md b/docs/user-guide/deploying-your-docs.md
index 279062b..27b9847 100644
--- a/docs/user-guide/deploying-your-docs.md
+++ b/docs/user-guide/deploying-your-docs.md
@@ -40,6 +40,10 @@ You should never edit files in your pages repository by hand if you're using
 the `gh-deploy` command because you will lose your work the next time you
 run the command.
 
+WARNING:
+If there are untracked files or uncommitted work in the local repository where
+`mkdocs gh-deploy` is run, these will be included in the pages that are deployed.
+
 ### Organization and User Pages
 
 User and Organization Pages sites are not tied to a specific project, and the
diff --git a/docs/user-guide/writing-your-docs.md b/docs/user-guide/writing-your-docs.md
index ea18e8d..4697abd 100644
--- a/docs/user-guide/writing-your-docs.md
+++ b/docs/user-guide/writing-your-docs.md
@@ -309,7 +309,7 @@ As well as the Markdown source files, you can also include other file types in
 your documentation, which will be copied across when generating your
 documentation site. These might include images and other media.
 
-For example, if your project documentation needed to include a [GitHub pages
+For example, if your project documentation needed to include a [GitHub Pages
 CNAME file] and a PNG formatted screenshot image then your file layout might
 look as follows:
 
@@ -338,7 +338,7 @@ Cupcake indexer is a snazzy new project for indexing small cakes.
 Your image will now be embedded when you build the documentation, and should
 also be previewed if you're working on the documentation with a Markdown editor.
 
-[GitHub pages CNAME file]: https://help.github.com/articles/using-a-custom-domain-with-github-pages/
+[GitHub Pages CNAME file]: https://help.github.com/articles/using-a-custom-domain-with-github-pages/
 
 #### Linking from raw HTML
 
@@ -459,8 +459,8 @@ detected, but the content between the delimiters is not valid YAML
 meta-data, MkDocs does not attempt to parse the content as MultiMarkdown
 style meta-data.
 
-[YAML]: http://yaml.org
-[MultiMarkdown]: http://fletcherpenney.net/MultiMarkdown_Syntax_Guide#metadata
+[YAML]: https://yaml.org
+[MultiMarkdown]: https://fletcherpenney.net/MultiMarkdown_Syntax_Guide#metadata
 [nav]: configuration.md#nav
 
 ### Tables
diff --git a/mkdocs.yml b/mkdocs.yml
index 844f236..b012974 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -44,7 +44,7 @@ markdown_extensions:
         repo: mkdocs
     - mkdocs-click
 
-copyright: Copyright &copy; 2014 <a href="https://twitter.com/_tomchristie">Tom Christie</a>, Maintained by the <a href="/about/release-notes/#maintenance-team">MkDocs Team</a>.
+copyright: Copyright &copy; 2014 <a href="https://twitter.com/starletdreaming">Tom Christie</a>, Maintained by the <a href="/about/release-notes/#maintenance-team">MkDocs Team</a>.
 
 plugins:
     - search
diff --git a/mkdocs/__init__.py b/mkdocs/__init__.py
index 2c22232..24ff6f7 100644
--- a/mkdocs/__init__.py
+++ b/mkdocs/__init__.py
@@ -2,4 +2,4 @@
 
 
 # For acceptable version formats, see https://www.python.org/dev/peps/pep-0440/
-__version__ = '1.4.2'
+__version__ = '1.4.3'
diff --git a/mkdocs/commands/build.py b/mkdocs/commands/build.py
index 6071665..e46ecc9 100644
--- a/mkdocs/commands/build.py
+++ b/mkdocs/commands/build.py
@@ -336,7 +336,7 @@ def build(config: MkDocsConfig, live_server: bool = False, dirty: bool = False)
             msg = ', '.join(f'{v} {k.lower()}s' for k, v in counts)
             raise Abort(f'\nAborted with {msg} in strict mode!')
 
-        log.info('Documentation built in %.2f seconds', time.monotonic() - start)
+        log.info(f'Documentation built in {time.monotonic() - start:.2f} seconds')
 
     except Exception as e:
         # Run `build_error` plugin events.
diff --git a/mkdocs/commands/gh_deploy.py b/mkdocs/commands/gh_deploy.py
index 9f7bcae..d107a79 100644
--- a/mkdocs/commands/gh_deploy.py
+++ b/mkdocs/commands/gh_deploy.py
@@ -47,7 +47,7 @@ def _get_current_sha(repo_path) -> str:
 
 def _get_remote_url(remote_name: str) -> Union[Tuple[str, str], Tuple[None, None]]:
     # No CNAME found.  We will use the origin URL to determine the GitHub
-    # pages location.
+    # Pages location.
     remote = f"remote.{remote_name}.url"
     proc = subprocess.Popen(
         ["git", "config", "--get", remote],
@@ -140,9 +140,9 @@ def gh_deploy(
         raise Abort('Deployment Aborted!')
 
     cname_file = os.path.join(config.site_dir, 'CNAME')
-    # Does this repository have a CNAME set for GitHub pages?
+    # Does this repository have a CNAME set for GitHub Pages?
     if os.path.isfile(cname_file):
-        # This GitHub pages repository has a CNAME configured.
+        # This GitHub Pages repository has a CNAME configured.
         with open(cname_file) as f:
             cname_host = f.read().strip()
         log.info(
diff --git a/mkdocs/config/base.py b/mkdocs/config/base.py
index 9c99018..88fb77c 100644
--- a/mkdocs/config/base.py
+++ b/mkdocs/config/base.py
@@ -35,7 +35,7 @@ T = TypeVar('T')
 
 
 class BaseConfigOption(Generic[T]):
-    def __init__(self):
+    def __init__(self) -> None:
         self.warnings: List[str] = []
         self.default = None
 
@@ -239,7 +239,7 @@ class Config(UserDict):
 
         return failed, warnings
 
-    def load_dict(self, patch: Optional[dict]) -> None:
+    def load_dict(self, patch: dict) -> None:
         """Load config options from a dictionary."""
 
         if not isinstance(patch, dict):
diff --git a/mkdocs/config/config_options.py b/mkdocs/config/config_options.py
index 1a035d1..7f09d03 100644
--- a/mkdocs/config/config_options.py
+++ b/mkdocs/config/config_options.py
@@ -12,6 +12,7 @@ import warnings
 from collections import Counter, UserString
 from typing import (
     Any,
+    Callable,
     Collection,
     Dict,
     Generic,
@@ -603,7 +604,7 @@ class FilesystemObject(Type[str]):
     Base class for options that point to filesystem objects.
     """
 
-    existence_test = staticmethod(os.path.exists)
+    existence_test: Callable[[str], bool] = staticmethod(os.path.exists)
     name = 'file or directory'
 
     def __init__(self, exists: bool = False, **kwargs) -> None:
@@ -1056,6 +1057,7 @@ class Hooks(BaseConfigOption[List[types.ModuleType]]):
         if spec is None:
             raise ValidationError(f"Cannot import path '{path}' as a Python module")
         module = importlib.util.module_from_spec(spec)
+        sys.modules[name] = module
         if spec.loader is None:
             raise ValidationError(f"Cannot import path '{path}' as a Python module")
         spec.loader.exec_module(module)
diff --git a/mkdocs/contrib/search/search_index.py b/mkdocs/contrib/search/search_index.py
index 18e406f..9eb43e8 100644
--- a/mkdocs/contrib/search/search_index.py
+++ b/mkdocs/contrib/search/search_index.py
@@ -143,7 +143,7 @@ class SearchIndex:
 class ContentSection:
     """
     Used by the ContentParser class to capture the information we
-    need when it is parsing the HMTL.
+    need when it is parsing the HTML.
     """
 
     def __init__(
diff --git a/mkdocs/livereload/__init__.py b/mkdocs/livereload/__init__.py
index e136ff0..b959a06 100644
--- a/mkdocs/livereload/__init__.py
+++ b/mkdocs/livereload/__init__.py
@@ -137,7 +137,7 @@ class LiveReloadServer(socketserver.ThreadingMixIn, wsgiref.simple_server.WSGISe
                 self._rebuild_cond.notify_all()
 
         handler = watchdog.events.FileSystemEventHandler()
-        handler.on_any_event = callback
+        handler.on_any_event = callback  # type: ignore[method-assign]
         log.debug(f"Watching '{path}'")
         self._watch_refs[path] = self.observer.schedule(handler, path, recursive=recursive)
 
diff --git a/mkdocs/plugins.py b/mkdocs/plugins.py
index 63fdcb8..d33ab46 100644
--- a/mkdocs/plugins.py
+++ b/mkdocs/plugins.py
@@ -325,12 +325,12 @@ class BasePlugin(Generic[SomeConfig]):
         page and can be used to alter the `Page` instance.
 
         Parameters:
-            page: `mkdocs.nav.Page` instance
+            page: `mkdocs.structure.pages.Page` instance
             config: global configuration object
             files: global files collection
 
         Returns:
-            `mkdocs.nav.Page` instance
+            `mkdocs.structure.pages.Page` instance
         """
         return page
 
@@ -340,7 +340,7 @@ class BasePlugin(Generic[SomeConfig]):
         the contents of a page's source from the filesystem.
 
         Parameters:
-            page: `mkdocs.nav.Page` instance
+            page: `mkdocs.structure.pages.Page` instance
             config: global configuration object
 
         Returns:
@@ -359,7 +359,7 @@ class BasePlugin(Generic[SomeConfig]):
 
         Parameters:
             markdown: Markdown source text of page as string
-            page: `mkdocs.nav.Page` instance
+            page: `mkdocs.structure.pages.Page` instance
             config: global configuration object
             files: global files collection
 
@@ -378,7 +378,7 @@ class BasePlugin(Generic[SomeConfig]):
 
         Parameters:
             html: HTML rendered from Markdown source as string
-            page: `mkdocs.nav.Page` instance
+            page: `mkdocs.structure.pages.Page` instance
             config: global configuration object
             files: global files collection
 
@@ -396,7 +396,7 @@ class BasePlugin(Generic[SomeConfig]):
 
         Parameters:
             context: dict of template context variables
-            page: `mkdocs.nav.Page` instance
+            page: `mkdocs.structure.pages.Page` instance
             config: global configuration object
             nav: global navigation object
 
@@ -414,7 +414,7 @@ class BasePlugin(Generic[SomeConfig]):
 
         Parameters:
             output: output of rendered template as string
-            page: `mkdocs.nav.Page` instance
+            page: `mkdocs.structure.pages.Page` instance
             config: global configuration object
 
         Returns:
diff --git a/mkdocs/structure/files.py b/mkdocs/structure/files.py
index 91679f8..e3ed45a 100644
--- a/mkdocs/structure/files.py
+++ b/mkdocs/structure/files.py
@@ -233,7 +233,7 @@ class File:
             url = (dirname or '.') + '/'
         return urlquote(url)
 
-    def url_relative_to(self, other: File) -> str:
+    def url_relative_to(self, other: Union[File, str]) -> str:
         """Return url for file relative to other file."""
         return utils.get_relative_url(self.url, other.url if isinstance(other, File) else other)
 
diff --git a/mkdocs/templates/sitemap.xml b/mkdocs/templates/sitemap.xml
index e3a935a..e60c7d0 100644
--- a/mkdocs/templates/sitemap.xml
+++ b/mkdocs/templates/sitemap.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
 {%- for file in pages -%}
-    {% if not file.page.is_link %}
+    {% if not file.page.is_link and (file.page.abs_url or file.page.canonical_url) %}
     <url>
          <loc>{% if file.page.canonical_url %}{{ file.page.canonical_url|e }}{% else %}{{ file.page.abs_url|e }}{% endif %}</loc>
          {% if file.page.update_date %}<lastmod>{{file.page.update_date}}</lastmod>{% endif %}
diff --git a/mkdocs/tests/__init__.py b/mkdocs/tests/__init__.py
old mode 100755
new mode 100644
diff --git a/mkdocs/tests/config/config_tests.py b/mkdocs/tests/config/config_tests.py
index e098178..10d092e 100644
--- a/mkdocs/tests/config/config_tests.py
+++ b/mkdocs/tests/config/config_tests.py
@@ -27,10 +27,6 @@ class ConfigTests(unittest.TestCase):
         )
         self.assertEqual(warnings, [])
 
-    def test_empty_config(self):
-        with self.assertRaises(ConfigurationError):
-            config.load_config(config_file='/dev/null')
-
     def test_nonexistant_config(self):
         with self.assertRaises(ConfigurationError):
             config.load_config(config_file='/path/that/is/not/real')
@@ -132,6 +128,7 @@ class ConfigTests(unittest.TestCase):
                     'analytics': {'anonymize_ip': False, 'gtag': None},
                     'highlightjs': True,
                     'hljs_languages': [],
+                    'hljs_style': 'github',
                     'include_homepage_in_sidebar': True,
                     'prev_next_buttons_location': 'bottom',
                     'navigation_depth': 4,
@@ -152,6 +149,7 @@ class ConfigTests(unittest.TestCase):
                     'analytics': {'anonymize_ip': False, 'gtag': None},
                     'highlightjs': True,
                     'hljs_languages': [],
+                    'hljs_style': 'github',
                     'include_homepage_in_sidebar': True,
                     'prev_next_buttons_location': 'bottom',
                     'navigation_depth': 4,
@@ -177,6 +175,7 @@ class ConfigTests(unittest.TestCase):
                     'analytics': {'anonymize_ip': False, 'gtag': None},
                     'highlightjs': True,
                     'hljs_languages': [],
+                    'hljs_style': 'github',
                     'include_homepage_in_sidebar': True,
                     'prev_next_buttons_location': 'bottom',
                     'navigation_depth': 4,
diff --git a/mkdocs/tests/theme_tests.py b/mkdocs/tests/theme_tests.py
index 213e264..bb183da 100644
--- a/mkdocs/tests/theme_tests.py
+++ b/mkdocs/tests/theme_tests.py
@@ -81,7 +81,7 @@ class ThemeTests(unittest.TestCase):
         self.assertTrue('new' in theme)
         self.assertEqual(theme['new'], 42)
 
-    @mock.patch('mkdocs.utils.yaml_load', return_value=None)
+    @mock.patch('mkdocs.utils.yaml_load', return_value={})
     def test_no_theme_config(self, m):
         theme = Theme(name='mkdocs')
         self.assertEqual(m.call_count, 1)
diff --git a/mkdocs/tests/utils/utils_tests.py b/mkdocs/tests/utils/utils_tests.py
index 5b7a2d1..5be58fb 100644
--- a/mkdocs/tests/utils/utils_tests.py
+++ b/mkdocs/tests/utils/utils_tests.py
@@ -424,7 +424,7 @@ class UtilsTests(unittest.TestCase):
             key2:
               - value
             '''
-        ).encode('utf-8')
+        )
 
         config = utils.yaml_load(yaml_src)
         self.assertTrue(isinstance(config['key'], str))
diff --git a/mkdocs/theme.py b/mkdocs/theme.py
index 06b69d4..2cdc283 100644
--- a/mkdocs/theme.py
+++ b/mkdocs/theme.py
@@ -88,8 +88,6 @@ class Theme:
             file_path = os.path.join(theme_dir, 'mkdocs_theme.yml')
             with open(file_path, 'rb') as f:
                 theme_config = utils.yaml_load(f)
-                if theme_config is None:
-                    theme_config = {}
         except OSError as e:
             log.debug(e)
             raise ValidationError(
diff --git a/mkdocs/themes/mkdocs/locales/id/LC_MESSAGES/messages.po b/mkdocs/themes/mkdocs/locales/id/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..5d5ddb5
--- /dev/null
+++ b/mkdocs/themes/mkdocs/locales/id/LC_MESSAGES/messages.po
@@ -0,0 +1,102 @@
+# Indonesian translations for MkDocs.
+# Copyright (C) 2022 MkDocs
+# This file is distributed under the same license as the MkDocs project.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: MkDocs 1.3.1\n"
+"Report-Msgid-Bugs-To: \"https://github.com/mkdocs/mkdocs/issues\"\n"
+"POT-Creation-Date: 2022-08-15 17:05+0200\n"
+"PO-Revision-Date: 2023-03-12 13:50+0800\n"
+"Last-Translator: Kira <kiraware@github.com>\n"
+"Language: id\n"
+"Language-Team: id <LL@li.org>\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.12.1\n"
+
+#: mkdocs/themes/mkdocs/404.html:8
+msgid "Page not found"
+msgstr "Halaman tidak ditemukan"
+
+#: mkdocs/themes/mkdocs/base.html:116
+#: mkdocs/themes/mkdocs/keyboard-modal.html:31
+#: mkdocs/themes/mkdocs/search-modal.html:5
+msgid "Search"
+msgstr "Telusuri"
+
+#: mkdocs/themes/mkdocs/base.html:126
+msgid "Previous"
+msgstr "Sebelumnya"
+
+#: mkdocs/themes/mkdocs/base.html:131
+msgid "Next"
+msgstr "Selanjutnya"
+
+#: mkdocs/themes/mkdocs/base.html:142 mkdocs/themes/mkdocs/base.html:144
+#: mkdocs/themes/mkdocs/base.html:146 mkdocs/themes/mkdocs/base.html:148
+#, python-format
+msgid "Edit on %(repo_name)s"
+msgstr "Sunting pada %(repo_name)s"
+
+#: mkdocs/themes/mkdocs/base.html:150
+msgid "Edit"
+msgstr "Sunting"
+
+#: mkdocs/themes/mkdocs/base.html:190
+#, python-format
+msgid "Documentation built with %(mkdocs_link)s."
+msgstr "Dokumentasi dibuat dengan %(mkdocs_link)s."
+
+#: mkdocs/themes/mkdocs/keyboard-modal.html:5
+msgid "Keyboard Shortcuts"
+msgstr "Pintasan Keyboard"
+
+#: mkdocs/themes/mkdocs/keyboard-modal.html:6
+#: mkdocs/themes/mkdocs/search-modal.html:6
+msgid "Close"
+msgstr "Tutup"
+
+#: mkdocs/themes/mkdocs/keyboard-modal.html:12
+msgid "Keys"
+msgstr "Tombol"
+
+#: mkdocs/themes/mkdocs/keyboard-modal.html:13
+msgid "Action"
+msgstr "Tindakan"
+
+#: mkdocs/themes/mkdocs/keyboard-modal.html:19
+msgid "Open this help"
+msgstr "Buka bantuan ini"
+
+#: mkdocs/themes/mkdocs/keyboard-modal.html:23
+msgid "Next page"
+msgstr "Halaman selanjutnya"
+
+#: mkdocs/themes/mkdocs/keyboard-modal.html:27
+msgid "Previous page"
+msgstr "Halaman sebelumnya"
+
+#: mkdocs/themes/mkdocs/search-modal.html:9
+msgid "From here you can search these documents. Enter your search terms below."
+msgstr "Dari sini Anda dapat mencari dokumen ini. Masukkan istilah pencarian "
+"Anda di bawah ini."
+
+#: mkdocs/themes/mkdocs/search-modal.html:12
+msgid "Search..."
+msgstr "Telusuri..."
+
+#: mkdocs/themes/mkdocs/search-modal.html:12
+msgid "Type search term here"
+msgstr "Ketik istilah pencarian di sini"
+
+#: mkdocs/themes/mkdocs/search-modal.html:15
+msgid "No results found"
+msgstr "Tidak ada hasil yang ditemukan"
+
+#: mkdocs/themes/mkdocs/toc.html:3
+msgid "Table of Contents"
+msgstr "Daftar Isi"
+
diff --git a/mkdocs/themes/mkdocs/locales/tr_TR/LC_MESSAGES/messages.po b/mkdocs/themes/mkdocs/locales/tr/LC_MESSAGES/messages.po
similarity index 96%
rename from mkdocs/themes/mkdocs/locales/tr_TR/LC_MESSAGES/messages.po
rename to mkdocs/themes/mkdocs/locales/tr/LC_MESSAGES/messages.po
index ee81dfe..8d13285 100644
--- a/mkdocs/themes/mkdocs/locales/tr_TR/LC_MESSAGES/messages.po
+++ b/mkdocs/themes/mkdocs/locales/tr/LC_MESSAGES/messages.po
@@ -1,4 +1,4 @@
-# Turkish (Turkey) translations for MkDocs.
+# Turkish translations for MkDocs.
 # Copyright (C) 2022 MkDocs
 # This file is distributed under the same license as the MkDocs project.
 #
@@ -9,8 +9,8 @@ msgstr ""
 "POT-Creation-Date: 2022-08-15 17:05+0200\n"
 "PO-Revision-Date: 2022-08-21 18:58+0300\n"
 "Last-Translator: Mustafa Sami Salt <mss1451@gmail.com>\n"
-"Language: tr_TR\n"
-"Language-Team: tr_TR <LL@li.org>\n"
+"Language: tr\n"
+"Language-Team: tr <LL@li.org>\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
@@ -98,4 +98,3 @@ msgstr "Sonuç bulunamadı"
 #: mkdocs/themes/mkdocs/toc.html:3
 msgid "Table of Contents"
 msgstr "İçindekiler"
-
diff --git a/mkdocs/themes/mkdocs/locales/zh_CN/LC_MESSAGES/messages.po b/mkdocs/themes/mkdocs/locales/zh_CN/LC_MESSAGES/messages.po
index 6a17b1f..ff6c135 100644
--- a/mkdocs/themes/mkdocs/locales/zh_CN/LC_MESSAGES/messages.po
+++ b/mkdocs/themes/mkdocs/locales/zh_CN/LC_MESSAGES/messages.po
@@ -30,11 +30,11 @@ msgstr "搜索"
 
 #: mkdocs/themes/mkdocs/base.html:126
 msgid "Previous"
-msgstr "上一张"
+msgstr "上一章"
 
 #: mkdocs/themes/mkdocs/base.html:131
 msgid "Next"
-msgstr "下一张"
+msgstr "下一章"
 
 #: mkdocs/themes/mkdocs/base.html:142 mkdocs/themes/mkdocs/base.html:144
 #: mkdocs/themes/mkdocs/base.html:146 mkdocs/themes/mkdocs/base.html:148
diff --git a/mkdocs/themes/readthedocs/base.html b/mkdocs/themes/readthedocs/base.html
index 7683e70..6caa756 100644
--- a/mkdocs/themes/readthedocs/base.html
+++ b/mkdocs/themes/readthedocs/base.html
@@ -23,7 +23,7 @@
     <link rel="stylesheet" href="{{ 'css/theme.css'|url }}" />
     <link rel="stylesheet" href="{{ 'css/theme_extra.css'|url }}" />
     {%- if config.theme.highlightjs %}
-        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.5.0/styles/github.min.css" />
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.5.0/styles/{{ config.theme.hljs_style }}.min.css" />
     {%- endif %}
     {%- for path in extra_css %}
         <link href="{{ path }}" rel="stylesheet" />
diff --git a/mkdocs/themes/readthedocs/breadcrumbs.html b/mkdocs/themes/readthedocs/breadcrumbs.html
index c40968e..2b0d30c 100644
--- a/mkdocs/themes/readthedocs/breadcrumbs.html
+++ b/mkdocs/themes/readthedocs/breadcrumbs.html
@@ -1,6 +1,6 @@
 <div role="navigation" aria-label="breadcrumbs navigation">
   <ul class="wy-breadcrumbs">
-    <li><a href="{{ nav.homepage.url|url }}" class="icon icon-home" alt="{% trans %}Docs{% endtrans %}"></a> &raquo;</li>
+    <li><a href="{{ nav.homepage.url|url }}" class="icon icon-home" aria-label="{% trans %}Docs{% endtrans %}"></a> &raquo;</li>
     {%- if page %}
       {%- for doc in page.ancestors[::-1] %}
         {%- if doc.link %}
diff --git a/mkdocs/themes/readthedocs/locales/id/LC_MESSAGES/messages.po b/mkdocs/themes/readthedocs/locales/id/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..d454d55
--- /dev/null
+++ b/mkdocs/themes/readthedocs/locales/id/LC_MESSAGES/messages.po
@@ -0,0 +1,110 @@
+# Indonesian translations for MkDocs.
+# Copyright (C) 2022 MkDocs
+# This file is distributed under the same license as the MkDocs project.
+# Kira <kiraware@github.com>, 2021.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: MkDocs 1.3.1\n"
+"Report-Msgid-Bugs-To: \"https://github.com/mkdocs/mkdocs/issues\"\n"
+"POT-Creation-Date: 2022-08-15 17:05+0200\n"
+"PO-Revision-Date: 2023-03-21 21:00+0800\n"
+"Last-Translator: Kira <kiraware@github.com>\n"
+"Language: id\n"
+"Language-Team: id <LL@li.org>\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.12.1\n"
+
+#: mkdocs/themes/readthedocs/404.html:7
+msgid "Page not found"
+msgstr "Halaman tidak ditemukan"
+
+#: mkdocs/themes/readthedocs/base.html:97
+msgid "Logo"
+msgstr "Logo"
+
+#: mkdocs/themes/readthedocs/base.html:111
+msgid "Navigation menu"
+msgstr "Menu navigasi"
+
+#: mkdocs/themes/readthedocs/base.html:140
+msgid "Mobile navigation menu"
+msgstr "Menu navigasi seluler"
+
+#: mkdocs/themes/readthedocs/breadcrumbs.html:3
+msgid "Docs"
+msgstr "Dokumen"
+
+#: mkdocs/themes/readthedocs/breadcrumbs.html:18
+#: mkdocs/themes/readthedocs/breadcrumbs.html:20
+#: mkdocs/themes/readthedocs/breadcrumbs.html:22
+#: mkdocs/themes/readthedocs/breadcrumbs.html:24
+#, python-format
+msgid "Edit on %(repo_name)s"
+msgstr "Sunting pada %(repo_name)s"
+
+#: mkdocs/themes/readthedocs/breadcrumbs.html:26
+msgid "Edit"
+msgstr "Sunting"
+
+#: mkdocs/themes/readthedocs/breadcrumbs.html:34
+msgid "Breadcrumb Navigation"
+msgstr "Navigasi Remah Roti"
+
+#: mkdocs/themes/readthedocs/breadcrumbs.html:36
+#: mkdocs/themes/readthedocs/footer.html:7
+#: mkdocs/themes/readthedocs/versions.html:17
+msgid "Previous"
+msgstr "Sebelumnya"
+
+#: mkdocs/themes/readthedocs/breadcrumbs.html:39
+#: mkdocs/themes/readthedocs/footer.html:10
+#: mkdocs/themes/readthedocs/versions.html:20
+msgid "Next"
+msgstr "Selanjutnya"
+
+#: mkdocs/themes/readthedocs/footer.html:5
+msgid "Footer Navigation"
+msgstr "Navigasi Footer"
+
+#: mkdocs/themes/readthedocs/footer.html:25
+#, python-format
+msgid ""
+"Built with %(mkdocs_link)s using a %(sphinx_link)s provided by "
+"%(rtd_link)s."
+msgstr ""
+"Dibangun dengan %(mkdocs_link)s menggunakan %(sphinx_link)s yang "
+"disediakan oleh %(rtd_link)s."
+
+#: mkdocs/themes/readthedocs/search.html:5
+msgid "Search Results"
+msgstr "Hasil Penelusuran"
+
+#: mkdocs/themes/readthedocs/search.html:9
+msgid "Search the Docs"
+msgstr "Telusuri Dokumen"
+
+#: mkdocs/themes/readthedocs/search.html:9
+#: mkdocs/themes/readthedocs/searchbox.html:3
+msgid "Type search term here"
+msgstr "Ketik istilah pencarian di sini"
+
+#: mkdocs/themes/readthedocs/search.html:12
+msgid "No results found"
+msgstr "Tidak ada hasil yang ditemukan"
+
+#: mkdocs/themes/readthedocs/search.html:13
+msgid "Searching..."
+msgstr "Menelusuri..."
+
+#: mkdocs/themes/readthedocs/searchbox.html:3
+msgid "Search docs"
+msgstr "Telusuri dokumen"
+
+#: mkdocs/themes/readthedocs/versions.html:1
+msgid "Versions"
+msgstr "Versi"
+
diff --git a/mkdocs/themes/readthedocs/locales/tr_TR/LC_MESSAGES/messages.po b/mkdocs/themes/readthedocs/locales/tr/LC_MESSAGES/messages.po
similarity index 96%
rename from mkdocs/themes/readthedocs/locales/tr_TR/LC_MESSAGES/messages.po
rename to mkdocs/themes/readthedocs/locales/tr/LC_MESSAGES/messages.po
index 00dff6e..dbfe141 100644
--- a/mkdocs/themes/readthedocs/locales/tr_TR/LC_MESSAGES/messages.po
+++ b/mkdocs/themes/readthedocs/locales/tr/LC_MESSAGES/messages.po
@@ -1,4 +1,4 @@
-# Turkish (Turkey) translations for MkDocs.
+# Turkish translations for MkDocs.
 # Copyright (C) 2022 MkDocs
 # This file is distributed under the same license as the MkDocs project.
 # FIRST AUTHOR <EMAIL@ADDRESS>, 2021.
@@ -10,8 +10,8 @@ msgstr ""
 "POT-Creation-Date: 2022-08-15 17:05+0200\n"
 "PO-Revision-Date: 2022-08-21 18:39+0300\n"
 "Last-Translator: Mustafa Sami Salt <mss1451@gmail.com>\n"
-"Language: tr_TR\n"
-"Language-Team: tr_TR <LL@li.org>\n"
+"Language: tr\n"
+"Language-Team: tr <LL@li.org>\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
@@ -106,4 +106,3 @@ msgstr "Belgelerde ara"
 #: mkdocs/themes/readthedocs/versions.html:1
 msgid "Versions"
 msgstr "Sürümler"
-
diff --git a/mkdocs/themes/readthedocs/locales/zh_CN/LC_MESSAGES/messages.po b/mkdocs/themes/readthedocs/locales/zh_CN/LC_MESSAGES/messages.po
index 34641be..6e7999a 100644
--- a/mkdocs/themes/readthedocs/locales/zh_CN/LC_MESSAGES/messages.po
+++ b/mkdocs/themes/readthedocs/locales/zh_CN/LC_MESSAGES/messages.po
@@ -60,13 +60,13 @@ msgstr "面包屑导航"
 #: mkdocs/themes/readthedocs/footer.html:7
 #: mkdocs/themes/readthedocs/versions.html:17
 msgid "Previous"
-msgstr "上一张"
+msgstr "上一章"
 
 #: mkdocs/themes/readthedocs/breadcrumbs.html:39
 #: mkdocs/themes/readthedocs/footer.html:10
 #: mkdocs/themes/readthedocs/versions.html:20
 msgid "Next"
-msgstr "下一张"
+msgstr "下一章"
 
 #: mkdocs/themes/readthedocs/footer.html:5
 msgid "Footer Navigation"
diff --git a/mkdocs/themes/readthedocs/mkdocs_theme.yml b/mkdocs/themes/readthedocs/mkdocs_theme.yml
index 9406910..d9553ae 100644
--- a/mkdocs/themes/readthedocs/mkdocs_theme.yml
+++ b/mkdocs/themes/readthedocs/mkdocs_theme.yml
@@ -10,6 +10,7 @@ search_index_only: false
 
 highlightjs: true
 hljs_languages: []
+hljs_style: github
 
 analytics:
   gtag: null
diff --git a/mkdocs/themes/readthedocs/search.html b/mkdocs/themes/readthedocs/search.html
index 705fcbe..b5b82b2 100644
--- a/mkdocs/themes/readthedocs/search.html
+++ b/mkdocs/themes/readthedocs/search.html
@@ -6,7 +6,7 @@
 
   <form id="content_search" action="search.html">
     <span role="status" aria-live="polite" class="ui-helper-hidden-accessible"></span>
-    <input name="q" id="mkdocs-search-query" type="text" class="search_input search-query ui-autocomplete-input" placeholder="{% trans %}Search the Docs{% endtrans %}" autocomplete="off" autofocus title="{% trans %}Type search term here{% endtrans %}">
+    <input name="q" id="mkdocs-search-query" type="text" class="search_input search-query ui-autocomplete-input" placeholder="{% trans %}Search the Docs{% endtrans %}" aria-label="{% trans %}Search the Docs{% endtrans %}" autocomplete="off" autofocus title="{% trans %}Type search term here{% endtrans %}">
   </form>
 
   <div id="mkdocs-search-results" class="search-results" data-no-results-text="{% trans %}No results found{% endtrans %}">
diff --git a/mkdocs/themes/readthedocs/searchbox.html b/mkdocs/themes/readthedocs/searchbox.html
index cb7c497..3f246aa 100644
--- a/mkdocs/themes/readthedocs/searchbox.html
+++ b/mkdocs/themes/readthedocs/searchbox.html
@@ -1,5 +1,5 @@
 <div role="search">
   <form id ="rtd-search-form" class="wy-form" action="{{ base_url }}/search.html" method="get">
-      <input type="text" name="q" placeholder="{% trans %}Search docs{% endtrans %}" title="{% trans %}Type search term here{% endtrans %}" />
+      <input type="text" name="q" placeholder="{% trans %}Search docs{% endtrans %}" aria-label="{% trans %}Search docs{% endtrans %}" title="{% trans %}Type search term here{% endtrans %}" />
   </form>
 </div>
diff --git a/mkdocs/utils/__init__.py b/mkdocs/utils/__init__.py
index e54413e..d2973c5 100644
--- a/mkdocs/utils/__init__.py
+++ b/mkdocs/utils/__init__.py
@@ -30,6 +30,7 @@ from typing import (
     Tuple,
     Type,
     TypeVar,
+    Union,
 )
 from urllib.parse import urlsplit
 
@@ -76,11 +77,13 @@ def get_yaml_loader(loader=yaml.Loader):
     return Loader
 
 
-def yaml_load(source: IO, loader: Optional[Type[yaml.Loader]] = None) -> Optional[Dict[str, Any]]:
+def yaml_load(source: Union[IO, str], loader: Optional[Type[yaml.Loader]] = None) -> Dict[str, Any]:
     """Return dict of source YAML file using loader, recursively deep merging inherited parent."""
     Loader = loader or get_yaml_loader()
     result = yaml.load(source, Loader=Loader)
-    if result is not None and 'INHERIT' in result:
+    if result is None:
+        return {}
+    if 'INHERIT' in result and not isinstance(source, str):
         relpath = result.pop('INHERIT')
         abspath = os.path.normpath(os.path.join(os.path.dirname(source.name), relpath))
         if not os.path.exists(abspath):
@@ -142,7 +145,7 @@ def get_build_date() -> str:
     return get_build_datetime().strftime('%Y-%m-%d')
 
 
-def reduce_list(data_set: Iterable[str]) -> List[str]:
+def reduce_list(data_set: Iterable[T]) -> List[T]:
     """Reduce duplicate items in a list and preserve order"""
     return list(dict.fromkeys(data_set))
 
@@ -320,7 +323,7 @@ def _get_norm_url(path: str) -> Tuple[str, bool]:
 
 
 def create_media_urls(
-    path_list: List[str], page: Optional[Page] = None, base: str = ''
+    path_list: Iterable[str], page: Optional[Page] = None, base: str = ''
 ) -> List[str]:
     """
     Return a list of URLs relative to the given page or using the base.

Debdiff

[The following lists of changes regard files as different if they have different names, permissions or owners.]

Files in second set of .debs but not in first

-rw-r--r--  root/root   /usr/lib/python3/dist-packages/mkdocs-1.4.3.dist-info/METADATA
-rw-r--r--  root/root   /usr/lib/python3/dist-packages/mkdocs-1.4.3.dist-info/RECORD
-rw-r--r--  root/root   /usr/lib/python3/dist-packages/mkdocs-1.4.3.dist-info/WHEEL
-rw-r--r--  root/root   /usr/lib/python3/dist-packages/mkdocs-1.4.3.dist-info/entry_points.txt
-rw-r--r--  root/root   /usr/lib/python3/dist-packages/mkdocs/themes/mkdocs/locales/id/LC_MESSAGES/messages.mo
-rw-r--r--  root/root   /usr/lib/python3/dist-packages/mkdocs/themes/mkdocs/locales/tr/LC_MESSAGES/messages.mo
-rw-r--r--  root/root   /usr/lib/python3/dist-packages/mkdocs/themes/readthedocs/locales/id/LC_MESSAGES/messages.mo
-rw-r--r--  root/root   /usr/lib/python3/dist-packages/mkdocs/themes/readthedocs/locales/tr/LC_MESSAGES/messages.mo

Files in first set of .debs but not in second

-rw-r--r--  root/root   /usr/lib/python3/dist-packages/mkdocs-1.4.2.dist-info/METADATA
-rw-r--r--  root/root   /usr/lib/python3/dist-packages/mkdocs-1.4.2.dist-info/RECORD
-rw-r--r--  root/root   /usr/lib/python3/dist-packages/mkdocs-1.4.2.dist-info/WHEEL
-rw-r--r--  root/root   /usr/lib/python3/dist-packages/mkdocs-1.4.2.dist-info/entry_points.txt
-rw-r--r--  root/root   /usr/lib/python3/dist-packages/mkdocs/themes/mkdocs/locales/tr_TR/LC_MESSAGES/messages.mo
-rw-r--r--  root/root   /usr/lib/python3/dist-packages/mkdocs/themes/readthedocs/locales/tr_TR/LC_MESSAGES/messages.mo

No differences were encountered between the control files of package mkdocs

No differences were encountered between the control files of package mkdocs-doc

More details

Full run details