diff --git a/mkdocs/config/base.py b/mkdocs/config/base.py
index 25631c33..9c99018f 100644
--- a/mkdocs/config/base.py
+++ b/mkdocs/config/base.py
@@ -363,13 +363,13 @@ def load_config(config_file: Optional[Union[str, IO]] = None, **kwargs) -> MkDoc
     errors, warnings = cfg.validate()
 
     for config_name, warning in warnings:
-        log.warning(f"Config value: '{config_name}'. Warning: {warning}")
+        log.warning(f"Config value '{config_name}': {warning}")
 
     for config_name, error in errors:
-        log.error(f"Config value: '{config_name}'. Error: {error}")
+        log.error(f"Config value '{config_name}': {error}")
 
     for key, value in cfg.items():
-        log.debug(f"Config value: '{key}' = {value!r}")
+        log.debug(f"Config value '{key}' = {value!r}")
 
     if len(errors) > 0:
         raise exceptions.Abort(f"Aborted with {len(errors)} Configuration Errors!")
diff --git a/mkdocs/config/config_options.py b/mkdocs/config/config_options.py
index 1545d5cf..19386c92 100644
--- a/mkdocs/config/config_options.py
+++ b/mkdocs/config/config_options.py
@@ -96,11 +96,11 @@ class SubConfig(Generic[SomeConfig], BaseConfigOption[SomeConfig]):
 
         if self._do_validation:
             # Capture errors and warnings
-            self.warnings = [f'Sub-option {key!r}: {msg}' for key, msg in warnings]
+            self.warnings = [f"Sub-option '{key}': {msg}" for key, msg in warnings]
             if failed:
                 # Get the first failing one
                 key, err = failed[0]
-                raise ValidationError(f"Sub-option {key!r} configuration error: {err}")
+                raise ValidationError(f"Sub-option '{key}': {err}")
 
         return config
 
@@ -309,7 +309,7 @@ class Deprecated(BaseConfigOption):
             else:
                 message = (
                     "The configuration option '{}' has been deprecated and "
-                    "will be removed in a future release of MkDocs."
+                    "will be removed in a future release."
                 )
             if moved_to:
                 message += f" Use '{moved_to}' instead."
@@ -996,11 +996,17 @@ class Plugins(OptionallyRequired[plugins.PluginCollection]):
             if hasattr(plugin, 'on_startup') or hasattr(plugin, 'on_shutdown'):
                 self.plugin_cache[name] = plugin
 
-        errors, warnings = plugin.load_config(
+        errors, warns = plugin.load_config(
             config, self._config.config_file_path if self._config else None
         )
-        self.warnings.extend(f"Plugin '{name}' value: '{x}'. Warning: {y}" for x, y in warnings)
-        errors_message = '\n'.join(f"Plugin '{name}' value: '{x}'. Error: {y}" for x, y in errors)
+        for warning in warns:
+            if isinstance(warning, str):
+                self.warnings.append(f"Plugin '{name}': {warning}")
+            else:
+                key, msg = warning
+                self.warnings.append(f"Plugin '{name}' option '{key}': {msg}")
+
+        errors_message = '\n'.join(f"Plugin '{name}' option '{key}': {msg}" for key, msg in errors)
         if errors_message:
             raise ValidationError(errors_message)
         return plugin

diff --git a/mkdocs/tests/config/base_tests.py b/mkdocs/tests/config/base_tests.py
index 70f96787..3138f48e 100644
--- a/mkdocs/tests/config/base_tests.py
+++ b/mkdocs/tests/config/base_tests.py
@@ -147,7 +147,7 @@ class ConfigBaseTests(unittest.TestCase):
                 base.load_config(config_file=config_file.name)
         self.assertEqual(
             '\n'.join(cm.output),
-            "ERROR:mkdocs.config:Config value: 'site_name'. Error: Required configuration not provided.",
+            "ERROR:mkdocs.config:Config value 'site_name': Required configuration not provided.",
         )
 
     def test_pre_validation_error(self):
diff --git a/mkdocs/tests/config/config_options_legacy_tests.py b/mkdocs/tests/config/config_options_legacy_tests.py
index 7d926514..8adcdd96 100644
--- a/mkdocs/tests/config/config_options_legacy_tests.py
+++ b/mkdocs/tests/config/config_options_legacy_tests.py
@@ -190,7 +190,7 @@ class DeprecatedTest(TestCase):
             {'d': 'value'},
             warnings=dict(
                 d="The configuration option 'd' has been deprecated and will be removed in a "
-                "future release of MkDocs."
+                "future release."
             ),
         )
 
@@ -209,7 +209,7 @@ class DeprecatedTest(TestCase):
             {'d': 'value'},
             warnings=dict(
                 d="The configuration option 'd' has been deprecated and will be removed in a "
-                "future release of MkDocs."
+                "future release."
             ),
         )
 
@@ -223,7 +223,7 @@ class DeprecatedTest(TestCase):
                 {'d': 'value'},
                 warnings=dict(
                     d="The configuration option 'd' has been deprecated and will be removed in a "
-                    "future release of MkDocs."
+                    "future release."
                 ),
             )
 
@@ -252,7 +252,7 @@ class DeprecatedTest(TestCase):
             {'old': 'value'},
             warnings=dict(
                 old="The configuration option 'old' has been deprecated and will be removed in a "
-                "future release of MkDocs. Use 'new' instead."
+                "future release. Use 'new' instead."
             ),
         )
         self.assertEqual(conf, {'new': 'value', 'old': None})
@@ -267,7 +267,7 @@ class DeprecatedTest(TestCase):
             {'old': 'value'},
             warnings=dict(
                 old="The configuration option 'old' has been deprecated and will be removed in a "
-                "future release of MkDocs. Use 'foo.bar' instead."
+                "future release. Use 'foo.bar' instead."
             ),
         )
         self.assertEqual(conf, {'foo': {'bar': 'value'}, 'old': None})
@@ -282,7 +282,7 @@ class DeprecatedTest(TestCase):
             {'old': 'value', 'foo': {'existing': 'existing'}},
             warnings=dict(
                 old="The configuration option 'old' has been deprecated and will be removed in a "
-                "future release of MkDocs. Use 'foo.bar' instead."
+                "future release. Use 'foo.bar' instead."
             ),
         )
         self.assertEqual(conf, {'foo': {'existing': 'existing', 'bar': 'value'}, 'old': None})
@@ -298,7 +298,7 @@ class DeprecatedTest(TestCase):
                 {'old': 'value', 'foo': 'wrong type'},
                 warnings=dict(
                     old="The configuration option 'old' has been deprecated and will be removed in a "
-                    "future release of MkDocs. Use 'foo.bar' instead."
+                    "future release. Use 'foo.bar' instead."
                 ),
             )
 
@@ -1247,7 +1247,7 @@ class SubConfigTest(TestCase):
             )
 
         with self.expect_error(
-            option="Sub-option 'cc' configuration error: Expected one of: ('foo', 'bar') but received: True"
+            option="Sub-option 'cc': Expected one of: ('foo', 'bar') but received: True"
         ):
             self.get_config(Schema, {'option': {'cc': True}})
 
@@ -1320,7 +1320,7 @@ class ConfigItemsTest(TestCase):
             conf = self.get_config(Schema, {'sub': None})
 
         with self.expect_error(
-            sub="Sub-option 'opt' configuration error: Expected type: <class 'int'> but received: <class 'str'>"
+            sub="Sub-option 'opt': Expected type: <class 'int'> but received: <class 'str'>"
         ):
             conf = self.get_config(Schema, {'sub': [{'opt': 'asdf'}, {}]})
 
@@ -1330,14 +1330,12 @@ class ConfigItemsTest(TestCase):
         self.assertEqual(conf['sub'], [{'opt': 1}, {'opt': 2}])
 
         with self.expect_error(
-            sub="Sub-option 'opt' configuration error: Expected type: <class 'int'> but "
-            "received: <class 'str'>"
+            sub="Sub-option 'opt': Expected type: <class 'int'> but received: <class 'str'>"
         ):
             self.get_config(Schema, {'sub': [{'opt': 'z'}, {'opt': 2}]})
 
         with self.expect_error(
-            sub="Sub-option 'opt' configuration error: "
-            "Expected type: <class 'int'> but received: <class 'str'>"
+            sub="Sub-option 'opt': Expected type: <class 'int'> but received: <class 'str'>"
         ):
             conf = self.get_config(Schema, {'sub': [{'opt': 'z'}, {'opt': 2}]})
 
diff --git a/mkdocs/tests/config/config_options_tests.py b/mkdocs/tests/config/config_options_tests.py
index 91828c5e..a34f5d60 100644
--- a/mkdocs/tests/config/config_options_tests.py
+++ b/mkdocs/tests/config/config_options_tests.py
@@ -171,7 +171,7 @@ class DeprecatedTest(TestCase):
             {'d': 'value'},
             warnings=dict(
                 d="The configuration option 'd' has been deprecated and will be removed in a "
-                "future release of MkDocs."
+                "future release."
             ),
         )
 
@@ -190,7 +190,7 @@ class DeprecatedTest(TestCase):
             {'d': 'value'},
             warnings=dict(
                 d="The configuration option 'd' has been deprecated and will be removed in a "
-                "future release of MkDocs."
+                "future release."
             ),
         )
 
@@ -204,7 +204,7 @@ class DeprecatedTest(TestCase):
                 {'d': 'value'},
                 warnings=dict(
                     d="The configuration option 'd' has been deprecated and will be removed in a "
-                    "future release of MkDocs."
+                    "future release."
                 ),
             )
 
@@ -233,7 +233,7 @@ class DeprecatedTest(TestCase):
             {'old': 'value'},
             warnings=dict(
                 old="The configuration option 'old' has been deprecated and will be removed in a "
-                "future release of MkDocs. Use 'new' instead."
+                "future release. Use 'new' instead."
             ),
         )
         self.assertEqual(conf, {'new': 'value', 'old': None})
@@ -248,7 +248,7 @@ class DeprecatedTest(TestCase):
             {'old': 'value'},
             warnings=dict(
                 old="The configuration option 'old' has been deprecated and will be removed in a "
-                "future release of MkDocs. Use 'foo.bar' instead."
+                "future release. Use 'foo.bar' instead."
             ),
         )
         self.assertEqual(conf, {'foo': {'bar': 'value'}, 'old': None})
@@ -263,7 +263,7 @@ class DeprecatedTest(TestCase):
             {'old': 'value', 'foo': {'existing': 'existing'}},
             warnings=dict(
                 old="The configuration option 'old' has been deprecated and will be removed in a "
-                "future release of MkDocs. Use 'foo.bar' instead."
+                "future release. Use 'foo.bar' instead."
             ),
         )
         self.assertEqual(conf, {'foo': {'existing': 'existing', 'bar': 'value'}, 'old': None})
@@ -279,7 +279,7 @@ class DeprecatedTest(TestCase):
                 {'old': 'value', 'foo': 'wrong type'},
                 warnings=dict(
                     old="The configuration option 'old' has been deprecated and will be removed in a "
-                    "future release of MkDocs. Use 'foo.bar' instead."
+                    "future release. Use 'foo.bar' instead."
                 ),
             )
 
@@ -1252,7 +1252,7 @@ class SubConfigTest(TestCase):
             option = c.SubConfig(Sub)
 
         with self.expect_error(
-            option="Sub-option 'cc' configuration error: Expected one of: ('foo', 'bar') but received: True"
+            option="Sub-option 'cc': Expected one of: ('foo', 'bar') but received: True"
         ):
             self.get_config(Schema, {'option': {'cc': True}})
 
@@ -1330,7 +1330,7 @@ class SubConfigTest(TestCase):
             conf = self.get_config(Schema, {'sub': None})
 
         with self.expect_error(
-            sub="Sub-option 'opt' configuration error: Expected type: <class 'int'> but received: <class 'str'>"
+            sub="Sub-option 'opt': Expected type: <class 'int'> but received: <class 'str'>"
         ):
             conf = self.get_config(Schema, {'sub': [{'opt': 'asdf'}, {}]})
 
@@ -1343,14 +1343,12 @@ class SubConfigTest(TestCase):
         self.assertEqual(conf.sub[0].opt, 1)
 
         with self.expect_error(
-            sub="Sub-option 'opt' configuration error: Expected type: <class 'int'> but "
-            "received: <class 'str'>"
+            sub="Sub-option 'opt': Expected type: <class 'int'> but received: <class 'str'>"
         ):
             self.get_config(Schema, {'sub': [{'opt': 'z'}, {'opt': 2}]})
 
         with self.expect_error(
-            sub="Sub-option 'opt' configuration error: "
-            "Expected type: <class 'int'> but received: <class 'str'>"
+            sub="Sub-option 'opt': Expected type: <class 'int'> but received: <class 'str'>"
         ):
             conf = self.get_config(Schema, {'sub': [{'opt': 'z'}, {'opt': 2}]})
 
@@ -1927,7 +1925,7 @@ class PluginsTest(TestCase):
             }
         }
         with self.expect_error(
-            plugins="Plugin 'sample' value: 'bar'. Error: Expected type: <class 'int'> but received: <class 'str'>"
+            plugins="Plugin 'sample' option 'bar': Expected type: <class 'int'> but received: <class 'str'>"
         ):
             self.get_config(Schema, cfg)
 
@@ -1944,8 +1942,8 @@ class PluginsTest(TestCase):
             Schema,
             cfg,
             warnings=dict(
-                plugins="Plugin 'sample2' value: 'depr'. Warning: The configuration option "
-                "'depr' has been deprecated and will be removed in a future release of MkDocs."
+                plugins="Plugin 'sample2' option 'depr': The configuration option "
+                "'depr' has been deprecated and will be removed in a future release."
             ),
         )
 

Unclear issue when trying to build the site
Hi, on two different machines (one macOS, the other Ubuntu with a fresh install of mkdocs), when I try to build the site, I get these very unclear error messages. Would anyone have an idea if the issue is with the mkdocs files or python itself?

Running python 3.10 on the Mac, 3.8 on Ubuntu. Latest version of mkdocs and materials installed. The YAML file was validated, but it is encoded in ASCII and multiple attempts to convert it to UTF8 have mysteriously failed.

It also fails when compiling with GitHub Pages, which is why I tried to debug this on my laptop. There were a few changes made to the code by removing a plug-in I believe, but even if I download old commits that used to build and publish just fine do not work on my computer or on Ubuntu.

I'm really at a loss here.

```
mkdocs build
INFO     -  DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
              File "/usr/lib/python3/dist-packages/apport/report.py", line 13, in <module>
                import fnmatch, glob, traceback, errno, sys, atexit, locale, imp, stat
              File "/usr/lib/python3.8/imp.py", line 31, in <module>
                warnings.warn("the imp module is deprecated in favour of importlib; "
Traceback (most recent call last):
  File "/usr/local/bin/mkdocs", line 8, in <module>
    sys.exit(cli())
  File "/usr/lib/python3/dist-packages/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/usr/lib/python3/dist-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/lib/python3/dist-packages/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/lib/python3/dist-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/mkdocs/__main__.py", line 247, in build_command
    cfg = config.load_config(**kwargs)
  File "/usr/local/lib/python3.8/dist-packages/mkdocs/config/base.py", line 363, in load_config
    errors, warnings = cfg.validate()
  File "/usr/local/lib/python3.8/dist-packages/mkdocs/config/base.py", line 228, in validate
    run_failed, run_warnings = self._validate()
  File "/usr/local/lib/python3.8/dist-packages/mkdocs/config/base.py", line 186, in _validate
    self[key] = config_option.validate(value)
  File "/usr/local/lib/python3.8/dist-packages/mkdocs/config/config_options.py", line 146, in validate
    return self.run_validation(value)
  File "/usr/local/lib/python3.8/dist-packages/mkdocs/config/config_options.py", line 937, in run_validation
    name, plugin = self.load_plugin_with_namespace(name, cfg)
  File "/usr/local/lib/python3.8/dist-packages/mkdocs/config/config_options.py", line 974, in load_plugin_with_namespace
    return (name, self.load_plugin(name, config))
  File "/usr/local/lib/python3.8/dist-packages/mkdocs/config/config_options.py", line 1002, in load_plugin
    self.warnings.extend(f"Plugin '{name}' value: '{x}'. Warning: {y}" for x, y in warnings)
  File "/usr/local/lib/python3.8/dist-packages/mkdocs/config/config_options.py", line 1002, in <genexpr>
    self.warnings.extend(f"Plugin '{name}' value: '{x}'. Warning: {y}" for x, y in warnings)
ValueError: too many values to unpack (expected 2)
```
mkdocs/tests/config/config_options_legacy_tests.py::DeprecatedTest::test_deprecated_option_move mkdocs/tests/config/config_options_legacy_tests.py::DeprecatedTest::test_deprecated_option_move_complex mkdocs/tests/config/config_options_legacy_tests.py::DeprecatedTest::test_deprecated_option_move_existing mkdocs/tests/config/config_options_legacy_tests.py::DeprecatedTest::test_deprecated_option_simple mkdocs/tests/config/config_options_legacy_tests.py::DeprecatedTest::test_deprecated_option_with_type mkdocs/tests/config/config_options_legacy_tests.py::SubConfigTest::test_subconfig_invalid_option mkdocs/tests/config/config_options_legacy_tests.py::ConfigItemsTest::test_required mkdocs/tests/config/config_options_tests.py::DeprecatedTest::test_deprecated_option_move mkdocs/tests/config/config_options_tests.py::DeprecatedTest::test_deprecated_option_move_complex mkdocs/tests/config/config_options_tests.py::DeprecatedTest::test_deprecated_option_move_existing mkdocs/tests/config/config_options_tests.py::DeprecatedTest::test_deprecated_option_simple mkdocs/tests/config/config_options_tests.py::DeprecatedTest::test_deprecated_option_with_type mkdocs/tests/config/config_options_tests.py::SubConfigTest::test_required mkdocs/tests/config/config_options_tests.py::SubConfigTest::test_subconfig_invalid_option mkdocs/tests/config/config_options_tests.py::PluginsTest::test_plugin_config_sub_error mkdocs/tests/config/config_options_tests.py::PluginsTest::test_plugin_config_sub_warning
mkdocs/tests/config/base_tests.py::ConfigBaseTests::test_get_schema mkdocs/tests/config/base_tests.py::ConfigBaseTests::test_load_default_file mkdocs/tests/config/base_tests.py::ConfigBaseTests::test_load_default_file_prefer_yml mkdocs/tests/config/base_tests.py::ConfigBaseTests::test_load_default_file_with_yaml mkdocs/tests/config/base_tests.py::ConfigBaseTests::test_load_from_closed_file mkdocs/tests/config/base_tests.py::ConfigBaseTests::test_load_from_file mkdocs/tests/config/base_tests.py::ConfigBaseTests::test_load_from_file_with_relative_paths mkdocs/tests/config/base_tests.py::ConfigBaseTests::test_load_from_missing_file mkdocs/tests/config/base_tests.py::ConfigBaseTests::test_load_from_open_file mkdocs/tests/config/base_tests.py::ConfigBaseTests::test_load_missing_required mkdocs/tests/config/base_tests.py::ConfigBaseTests::test_missing_required mkdocs/tests/config/base_tests.py::ConfigBaseTests::test_post_validation_error mkdocs/tests/config/base_tests.py::ConfigBaseTests::test_pre_and_run_validation_errors mkdocs/tests/config/base_tests.py::ConfigBaseTests::test_pre_validation_error mkdocs/tests/config/base_tests.py::ConfigBaseTests::test_run_and_post_validation_errors mkdocs/tests/config/base_tests.py::ConfigBaseTests::test_run_validation_error mkdocs/tests/config/base_tests.py::ConfigBaseTests::test_unrecognised_keys mkdocs/tests/config/base_tests.py::ConfigBaseTests::test_validation_warnings mkdocs/tests/config/config_options_legacy_tests.py::OptionallyRequiredTest::test_default mkdocs/tests/config/config_options_legacy_tests.py::OptionallyRequiredTest::test_empty mkdocs/tests/config/config_options_legacy_tests.py::OptionallyRequiredTest::test_replace_default mkdocs/tests/config/config_options_legacy_tests.py::OptionallyRequiredTest::test_required mkdocs/tests/config/config_options_legacy_tests.py::OptionallyRequiredTest::test_required_no_default mkdocs/tests/config/config_options_legacy_tests.py::TypeTest::test_length mkdocs/tests/config/config_options_legacy_tests.py::TypeTest::test_multiple_types mkdocs/tests/config/config_options_legacy_tests.py::TypeTest::test_single_type mkdocs/tests/config/config_options_legacy_tests.py::ChoiceTest::test_default mkdocs/tests/config/config_options_legacy_tests.py::ChoiceTest::test_invalid_choice mkdocs/tests/config/config_options_legacy_tests.py::ChoiceTest::test_invalid_choices mkdocs/tests/config/config_options_legacy_tests.py::ChoiceTest::test_invalid_default mkdocs/tests/config/config_options_legacy_tests.py::ChoiceTest::test_optional mkdocs/tests/config/config_options_legacy_tests.py::ChoiceTest::test_required mkdocs/tests/config/config_options_legacy_tests.py::DeprecatedTest::test_deprecated_option_message mkdocs/tests/config/config_options_legacy_tests.py::DeprecatedTest::test_deprecated_option_move_invalid mkdocs/tests/config/config_options_legacy_tests.py::DeprecatedTest::test_deprecated_option_with_invalid_type mkdocs/tests/config/config_options_legacy_tests.py::DeprecatedTest::test_deprecated_option_with_type_undefined mkdocs/tests/config/config_options_legacy_tests.py::DeprecatedTest::test_removed_option mkdocs/tests/config/config_options_legacy_tests.py::IpAddressTest::test_default_address mkdocs/tests/config/config_options_legacy_tests.py::IpAddressTest::test_invalid_address_format mkdocs/tests/config/config_options_legacy_tests.py::IpAddressTest::test_invalid_address_missing_port mkdocs/tests/config/config_options_legacy_tests.py::IpAddressTest::test_invalid_address_port mkdocs/tests/config/config_options_legacy_tests.py::IpAddressTest::test_invalid_address_range mkdocs/tests/config/config_options_legacy_tests.py::IpAddressTest::test_invalid_address_type mkdocs/tests/config/config_options_legacy_tests.py::IpAddressTest::test_invalid_leading_zeros mkdocs/tests/config/config_options_legacy_tests.py::IpAddressTest::test_named_address mkdocs/tests/config/config_options_legacy_tests.py::IpAddressTest::test_unsupported_IPv6_address mkdocs/tests/config/config_options_legacy_tests.py::IpAddressTest::test_unsupported_address mkdocs/tests/config/config_options_legacy_tests.py::IpAddressTest::test_valid_IPv6_address mkdocs/tests/config/config_options_legacy_tests.py::IpAddressTest::test_valid_address mkdocs/tests/config/config_options_legacy_tests.py::IpAddressTest::test_valid_full_IPv6_address mkdocs/tests/config/config_options_legacy_tests.py::URLTest::test_invalid_type mkdocs/tests/config/config_options_legacy_tests.py::URLTest::test_invalid_url mkdocs/tests/config/config_options_legacy_tests.py::URLTest::test_optional mkdocs/tests/config/config_options_legacy_tests.py::URLTest::test_valid_url mkdocs/tests/config/config_options_legacy_tests.py::URLTest::test_valid_url_is_dir mkdocs/tests/config/config_options_legacy_tests.py::EditURITest::test_edit_uri_bitbucket mkdocs/tests/config/config_options_legacy_tests.py::EditURITest::test_edit_uri_custom mkdocs/tests/config/config_options_legacy_tests.py::EditURITest::test_edit_uri_github mkdocs/tests/config/config_options_legacy_tests.py::EditURITest::test_edit_uri_gitlab mkdocs/tests/config/config_options_legacy_tests.py::EditURITest::test_edit_uri_template_errors mkdocs/tests/config/config_options_legacy_tests.py::EditURITest::test_edit_uri_template_ok mkdocs/tests/config/config_options_legacy_tests.py::EditURITest::test_edit_uri_template_warning mkdocs/tests/config/config_options_legacy_tests.py::EditURITest::test_repo_name_bitbucket mkdocs/tests/config/config_options_legacy_tests.py::EditURITest::test_repo_name_custom mkdocs/tests/config/config_options_legacy_tests.py::EditURITest::test_repo_name_custom_and_empty_edit_uri mkdocs/tests/config/config_options_legacy_tests.py::EditURITest::test_repo_name_github mkdocs/tests/config/config_options_legacy_tests.py::EditURITest::test_repo_name_gitlab mkdocs/tests/config/config_options_legacy_tests.py::ListOfItemsTest::test_combined_float_type mkdocs/tests/config/config_options_legacy_tests.py::ListOfItemsTest::test_int_type mkdocs/tests/config/config_options_legacy_tests.py::ListOfItemsTest::test_list_default mkdocs/tests/config/config_options_legacy_tests.py::ListOfItemsTest::test_none_without_default mkdocs/tests/config/config_options_legacy_tests.py::ListOfItemsTest::test_post_validation_error mkdocs/tests/config/config_options_legacy_tests.py::ListOfItemsTest::test_string_not_a_list_of_strings mkdocs/tests/config/config_options_legacy_tests.py::FilesystemObjectTest::test_config_dir_prepended mkdocs/tests/config/config_options_legacy_tests.py::FilesystemObjectTest::test_dir_bytes mkdocs/tests/config/config_options_legacy_tests.py::FilesystemObjectTest::test_incorrect_type_error mkdocs/tests/config/config_options_legacy_tests.py::FilesystemObjectTest::test_missing_but_required mkdocs/tests/config/config_options_legacy_tests.py::FilesystemObjectTest::test_missing_without_exists mkdocs/tests/config/config_options_legacy_tests.py::FilesystemObjectTest::test_not_a_dir mkdocs/tests/config/config_options_legacy_tests.py::FilesystemObjectTest::test_not_a_file mkdocs/tests/config/config_options_legacy_tests.py::FilesystemObjectTest::test_site_dir_is_config_dir_fails mkdocs/tests/config/config_options_legacy_tests.py::FilesystemObjectTest::test_valid_dir mkdocs/tests/config/config_options_legacy_tests.py::FilesystemObjectTest::test_valid_file mkdocs/tests/config/config_options_legacy_tests.py::FilesystemObjectTest::test_with_unicode mkdocs/tests/config/config_options_legacy_tests.py::ListOfPathsTest::test_empty_list mkdocs/tests/config/config_options_legacy_tests.py::ListOfPathsTest::test_file mkdocs/tests/config/config_options_legacy_tests.py::ListOfPathsTest::test_missing_path mkdocs/tests/config/config_options_legacy_tests.py::ListOfPathsTest::test_non_list mkdocs/tests/config/config_options_legacy_tests.py::ListOfPathsTest::test_non_path mkdocs/tests/config/config_options_legacy_tests.py::ListOfPathsTest::test_paths_localized_to_config mkdocs/tests/config/config_options_legacy_tests.py::ListOfPathsTest::test_valid_path mkdocs/tests/config/config_options_legacy_tests.py::SiteDirTest::test_common_prefix mkdocs/tests/config/config_options_legacy_tests.py::SiteDirTest::test_doc_dir_in_site_dir mkdocs/tests/config/config_options_legacy_tests.py::SiteDirTest::test_site_dir_in_docs_dir mkdocs/tests/config/config_options_legacy_tests.py::ThemeTest::test_post_validation_inexisting_custom_dir mkdocs/tests/config/config_options_legacy_tests.py::ThemeTest::test_post_validation_locale mkdocs/tests/config/config_options_legacy_tests.py::ThemeTest::test_post_validation_locale_invalid_type mkdocs/tests/config/config_options_legacy_tests.py::ThemeTest::test_post_validation_locale_none mkdocs/tests/config/config_options_legacy_tests.py::ThemeTest::test_post_validation_none_theme_name_and_missing_custom_dir mkdocs/tests/config/config_options_legacy_tests.py::ThemeTest::test_theme_as_complex_config mkdocs/tests/config/config_options_legacy_tests.py::ThemeTest::test_theme_as_simple_config mkdocs/tests/config/config_options_legacy_tests.py::ThemeTest::test_theme_as_string mkdocs/tests/config/config_options_legacy_tests.py::ThemeTest::test_theme_config_missing_name mkdocs/tests/config/config_options_legacy_tests.py::ThemeTest::test_theme_default mkdocs/tests/config/config_options_legacy_tests.py::ThemeTest::test_theme_invalid_type mkdocs/tests/config/config_options_legacy_tests.py::ThemeTest::test_theme_name_is_none mkdocs/tests/config/config_options_legacy_tests.py::ThemeTest::test_uninstalled_theme_as_config mkdocs/tests/config/config_options_legacy_tests.py::ThemeTest::test_uninstalled_theme_as_string mkdocs/tests/config/config_options_legacy_tests.py::NavTest::test_invalid_children_config_int mkdocs/tests/config/config_options_legacy_tests.py::NavTest::test_invalid_children_config_none mkdocs/tests/config/config_options_legacy_tests.py::NavTest::test_invalid_children_empty_dict mkdocs/tests/config/config_options_legacy_tests.py::NavTest::test_invalid_children_oversized_dict mkdocs/tests/config/config_options_legacy_tests.py::NavTest::test_invalid_item_int mkdocs/tests/config/config_options_legacy_tests.py::NavTest::test_invalid_item_none mkdocs/tests/config/config_options_legacy_tests.py::NavTest::test_invalid_nested_list mkdocs/tests/config/config_options_legacy_tests.py::NavTest::test_invalid_type_dict mkdocs/tests/config/config_options_legacy_tests.py::NavTest::test_invalid_type_int mkdocs/tests/config/config_options_legacy_tests.py::NavTest::test_normal_nav mkdocs/tests/config/config_options_legacy_tests.py::NavTest::test_old_format mkdocs/tests/config/config_options_legacy_tests.py::NavTest::test_provided_dict mkdocs/tests/config/config_options_legacy_tests.py::NavTest::test_provided_empty mkdocs/tests/config/config_options_legacy_tests.py::NavTest::test_warns_for_dict mkdocs/tests/config/config_options_legacy_tests.py::PrivateTest::test_defined mkdocs/tests/config/config_options_legacy_tests.py::SubConfigTest::test_subconfig_ignored mkdocs/tests/config/config_options_legacy_tests.py::SubConfigTest::test_subconfig_normal mkdocs/tests/config/config_options_legacy_tests.py::SubConfigTest::test_subconfig_unknown_option mkdocs/tests/config/config_options_legacy_tests.py::SubConfigTest::test_subconfig_wrong_type mkdocs/tests/config/config_options_legacy_tests.py::ConfigItemsTest::test_optional mkdocs/tests/config/config_options_legacy_tests.py::ConfigItemsTest::test_subconfig_with_multiple_items mkdocs/tests/config/config_options_legacy_tests.py::MarkdownExtensionsTest::test_builtins mkdocs/tests/config/config_options_legacy_tests.py::MarkdownExtensionsTest::test_builtins_config mkdocs/tests/config/config_options_legacy_tests.py::MarkdownExtensionsTest::test_configkey mkdocs/tests/config/config_options_legacy_tests.py::MarkdownExtensionsTest::test_dict_of_dicts mkdocs/tests/config/config_options_legacy_tests.py::MarkdownExtensionsTest::test_duplicates mkdocs/tests/config/config_options_legacy_tests.py::MarkdownExtensionsTest::test_invalid_config_item mkdocs/tests/config/config_options_legacy_tests.py::MarkdownExtensionsTest::test_invalid_config_option mkdocs/tests/config/config_options_legacy_tests.py::MarkdownExtensionsTest::test_invalid_dict_item mkdocs/tests/config/config_options_legacy_tests.py::MarkdownExtensionsTest::test_list_dicts mkdocs/tests/config/config_options_legacy_tests.py::MarkdownExtensionsTest::test_missing_default mkdocs/tests/config/config_options_legacy_tests.py::MarkdownExtensionsTest::test_mixed_list mkdocs/tests/config/config_options_legacy_tests.py::MarkdownExtensionsTest::test_multiple_markdown_config_instances mkdocs/tests/config/config_options_legacy_tests.py::MarkdownExtensionsTest::test_none mkdocs/tests/config/config_options_legacy_tests.py::MarkdownExtensionsTest::test_not_list mkdocs/tests/config/config_options_legacy_tests.py::MarkdownExtensionsTest::test_simple_list mkdocs/tests/config/config_options_legacy_tests.py::MarkdownExtensionsTest::test_unknown_extension mkdocs/tests/config/config_options_legacy_tests.py::HooksTest::test_hooks mkdocs/tests/config/config_options_legacy_tests.py::SchemaTest::test_copy mkdocs/tests/config/config_options_tests.py::TypeTest::test_length mkdocs/tests/config/config_options_tests.py::TypeTest::test_multiple_types mkdocs/tests/config/config_options_tests.py::TypeTest::test_optional_with_default mkdocs/tests/config/config_options_tests.py::TypeTest::test_single_type mkdocs/tests/config/config_options_tests.py::ChoiceTest::test_default mkdocs/tests/config/config_options_tests.py::ChoiceTest::test_invalid_choice mkdocs/tests/config/config_options_tests.py::ChoiceTest::test_invalid_choices mkdocs/tests/config/config_options_tests.py::ChoiceTest::test_invalid_default mkdocs/tests/config/config_options_tests.py::ChoiceTest::test_optional mkdocs/tests/config/config_options_tests.py::ChoiceTest::test_required mkdocs/tests/config/config_options_tests.py::DeprecatedTest::test_deprecated_option_message mkdocs/tests/config/config_options_tests.py::DeprecatedTest::test_deprecated_option_move_invalid mkdocs/tests/config/config_options_tests.py::DeprecatedTest::test_deprecated_option_with_invalid_type mkdocs/tests/config/config_options_tests.py::DeprecatedTest::test_deprecated_option_with_type_undefined mkdocs/tests/config/config_options_tests.py::DeprecatedTest::test_removed_option mkdocs/tests/config/config_options_tests.py::IpAddressTest::test_default_address mkdocs/tests/config/config_options_tests.py::IpAddressTest::test_invalid_address_format mkdocs/tests/config/config_options_tests.py::IpAddressTest::test_invalid_address_missing_port mkdocs/tests/config/config_options_tests.py::IpAddressTest::test_invalid_address_port mkdocs/tests/config/config_options_tests.py::IpAddressTest::test_invalid_address_range mkdocs/tests/config/config_options_tests.py::IpAddressTest::test_invalid_address_type mkdocs/tests/config/config_options_tests.py::IpAddressTest::test_invalid_leading_zeros mkdocs/tests/config/config_options_tests.py::IpAddressTest::test_named_address mkdocs/tests/config/config_options_tests.py::IpAddressTest::test_unsupported_IPv6_address mkdocs/tests/config/config_options_tests.py::IpAddressTest::test_unsupported_address mkdocs/tests/config/config_options_tests.py::IpAddressTest::test_valid_IPv6_address mkdocs/tests/config/config_options_tests.py::IpAddressTest::test_valid_address mkdocs/tests/config/config_options_tests.py::IpAddressTest::test_valid_full_IPv6_address mkdocs/tests/config/config_options_tests.py::URLTest::test_invalid_type mkdocs/tests/config/config_options_tests.py::URLTest::test_invalid_url mkdocs/tests/config/config_options_tests.py::URLTest::test_optional mkdocs/tests/config/config_options_tests.py::URLTest::test_valid_url mkdocs/tests/config/config_options_tests.py::URLTest::test_valid_url_is_dir mkdocs/tests/config/config_options_tests.py::EditURITest::test_edit_uri_bitbucket mkdocs/tests/config/config_options_tests.py::EditURITest::test_edit_uri_custom mkdocs/tests/config/config_options_tests.py::EditURITest::test_edit_uri_github mkdocs/tests/config/config_options_tests.py::EditURITest::test_edit_uri_gitlab mkdocs/tests/config/config_options_tests.py::EditURITest::test_edit_uri_template_errors mkdocs/tests/config/config_options_tests.py::EditURITest::test_edit_uri_template_ok mkdocs/tests/config/config_options_tests.py::EditURITest::test_edit_uri_template_warning mkdocs/tests/config/config_options_tests.py::EditURITest::test_repo_name_bitbucket mkdocs/tests/config/config_options_tests.py::EditURITest::test_repo_name_custom mkdocs/tests/config/config_options_tests.py::EditURITest::test_repo_name_custom_and_empty_edit_uri mkdocs/tests/config/config_options_tests.py::EditURITest::test_repo_name_github mkdocs/tests/config/config_options_tests.py::EditURITest::test_repo_name_gitlab mkdocs/tests/config/config_options_tests.py::ListOfItemsTest::test_combined_float_type mkdocs/tests/config/config_options_tests.py::ListOfItemsTest::test_int_type mkdocs/tests/config/config_options_tests.py::ListOfItemsTest::test_list_default mkdocs/tests/config/config_options_tests.py::ListOfItemsTest::test_list_of_optional mkdocs/tests/config/config_options_tests.py::ListOfItemsTest::test_none_without_default mkdocs/tests/config/config_options_tests.py::ListOfItemsTest::test_optional mkdocs/tests/config/config_options_tests.py::ListOfItemsTest::test_post_validation_error mkdocs/tests/config/config_options_tests.py::ListOfItemsTest::test_string_not_a_list_of_strings mkdocs/tests/config/config_options_tests.py::FilesystemObjectTest::test_config_dir_prepended mkdocs/tests/config/config_options_tests.py::FilesystemObjectTest::test_dir_bytes mkdocs/tests/config/config_options_tests.py::FilesystemObjectTest::test_incorrect_type_error mkdocs/tests/config/config_options_tests.py::FilesystemObjectTest::test_missing_but_required mkdocs/tests/config/config_options_tests.py::FilesystemObjectTest::test_missing_without_exists mkdocs/tests/config/config_options_tests.py::FilesystemObjectTest::test_not_a_dir mkdocs/tests/config/config_options_tests.py::FilesystemObjectTest::test_not_a_file mkdocs/tests/config/config_options_tests.py::FilesystemObjectTest::test_site_dir_is_config_dir_fails mkdocs/tests/config/config_options_tests.py::FilesystemObjectTest::test_valid_dir mkdocs/tests/config/config_options_tests.py::FilesystemObjectTest::test_valid_file mkdocs/tests/config/config_options_tests.py::FilesystemObjectTest::test_with_unicode mkdocs/tests/config/config_options_tests.py::ListOfPathsTest::test_empty_list mkdocs/tests/config/config_options_tests.py::ListOfPathsTest::test_file mkdocs/tests/config/config_options_tests.py::ListOfPathsTest::test_missing_path mkdocs/tests/config/config_options_tests.py::ListOfPathsTest::test_non_list mkdocs/tests/config/config_options_tests.py::ListOfPathsTest::test_non_path mkdocs/tests/config/config_options_tests.py::ListOfPathsTest::test_none mkdocs/tests/config/config_options_tests.py::ListOfPathsTest::test_paths_localized_to_config mkdocs/tests/config/config_options_tests.py::ListOfPathsTest::test_valid_path mkdocs/tests/config/config_options_tests.py::SiteDirTest::test_common_prefix mkdocs/tests/config/config_options_tests.py::SiteDirTest::test_doc_dir_in_site_dir mkdocs/tests/config/config_options_tests.py::SiteDirTest::test_site_dir_in_docs_dir mkdocs/tests/config/config_options_tests.py::ThemeTest::test_post_validation_inexisting_custom_dir mkdocs/tests/config/config_options_tests.py::ThemeTest::test_post_validation_locale mkdocs/tests/config/config_options_tests.py::ThemeTest::test_post_validation_locale_invalid_type mkdocs/tests/config/config_options_tests.py::ThemeTest::test_post_validation_locale_none mkdocs/tests/config/config_options_tests.py::ThemeTest::test_post_validation_none_theme_name_and_missing_custom_dir mkdocs/tests/config/config_options_tests.py::ThemeTest::test_theme_as_complex_config mkdocs/tests/config/config_options_tests.py::ThemeTest::test_theme_as_simple_config mkdocs/tests/config/config_options_tests.py::ThemeTest::test_theme_as_string mkdocs/tests/config/config_options_tests.py::ThemeTest::test_theme_config_missing_name mkdocs/tests/config/config_options_tests.py::ThemeTest::test_theme_default mkdocs/tests/config/config_options_tests.py::ThemeTest::test_theme_invalid_type mkdocs/tests/config/config_options_tests.py::ThemeTest::test_theme_name_is_none mkdocs/tests/config/config_options_tests.py::ThemeTest::test_uninstalled_theme_as_config mkdocs/tests/config/config_options_tests.py::ThemeTest::test_uninstalled_theme_as_string mkdocs/tests/config/config_options_tests.py::NavTest::test_invalid_children_config_int mkdocs/tests/config/config_options_tests.py::NavTest::test_invalid_children_config_none mkdocs/tests/config/config_options_tests.py::NavTest::test_invalid_children_empty_dict mkdocs/tests/config/config_options_tests.py::NavTest::test_invalid_children_oversized_dict mkdocs/tests/config/config_options_tests.py::NavTest::test_invalid_item_int mkdocs/tests/config/config_options_tests.py::NavTest::test_invalid_item_none mkdocs/tests/config/config_options_tests.py::NavTest::test_invalid_nested_list mkdocs/tests/config/config_options_tests.py::NavTest::test_invalid_type_dict mkdocs/tests/config/config_options_tests.py::NavTest::test_invalid_type_int mkdocs/tests/config/config_options_tests.py::NavTest::test_normal_nav mkdocs/tests/config/config_options_tests.py::NavTest::test_old_format mkdocs/tests/config/config_options_tests.py::NavTest::test_provided_dict mkdocs/tests/config/config_options_tests.py::NavTest::test_provided_empty mkdocs/tests/config/config_options_tests.py::NavTest::test_warns_for_dict mkdocs/tests/config/config_options_tests.py::PrivateTest::test_defined mkdocs/tests/config/config_options_tests.py::SubConfigTest::test_default mkdocs/tests/config/config_options_tests.py::SubConfigTest::test_optional mkdocs/tests/config/config_options_tests.py::SubConfigTest::test_subconfig_normal mkdocs/tests/config/config_options_tests.py::SubConfigTest::test_subconfig_unknown_option mkdocs/tests/config/config_options_tests.py::SubConfigTest::test_subconfig_with_multiple_items mkdocs/tests/config/config_options_tests.py::SubConfigTest::test_subconfig_wrong_type mkdocs/tests/config/config_options_tests.py::MarkdownExtensionsTest::test_builtins mkdocs/tests/config/config_options_tests.py::MarkdownExtensionsTest::test_builtins_config mkdocs/tests/config/config_options_tests.py::MarkdownExtensionsTest::test_configkey mkdocs/tests/config/config_options_tests.py::MarkdownExtensionsTest::test_dict_of_dicts mkdocs/tests/config/config_options_tests.py::MarkdownExtensionsTest::test_duplicates mkdocs/tests/config/config_options_tests.py::MarkdownExtensionsTest::test_invalid_config_item mkdocs/tests/config/config_options_tests.py::MarkdownExtensionsTest::test_invalid_config_option mkdocs/tests/config/config_options_tests.py::MarkdownExtensionsTest::test_invalid_dict_item mkdocs/tests/config/config_options_tests.py::MarkdownExtensionsTest::test_list_dicts mkdocs/tests/config/config_options_tests.py::MarkdownExtensionsTest::test_missing_default mkdocs/tests/config/config_options_tests.py::MarkdownExtensionsTest::test_mixed_list mkdocs/tests/config/config_options_tests.py::MarkdownExtensionsTest::test_multiple_markdown_config_instances mkdocs/tests/config/config_options_tests.py::MarkdownExtensionsTest::test_none mkdocs/tests/config/config_options_tests.py::MarkdownExtensionsTest::test_not_list mkdocs/tests/config/config_options_tests.py::MarkdownExtensionsTest::test_simple_list mkdocs/tests/config/config_options_tests.py::MarkdownExtensionsTest::test_unknown_extension mkdocs/tests/config/config_options_tests.py::PluginsTest::test_plugin_config_as_dict mkdocs/tests/config/config_options_tests.py::PluginsTest::test_plugin_config_empty_list_with_default mkdocs/tests/config/config_options_tests.py::PluginsTest::test_plugin_config_empty_list_with_empty_default mkdocs/tests/config/config_options_tests.py::PluginsTest::test_plugin_config_multivalue_dict mkdocs/tests/config/config_options_tests.py::PluginsTest::test_plugin_config_none_with_default mkdocs/tests/config/config_options_tests.py::PluginsTest::test_plugin_config_none_with_empty_default mkdocs/tests/config/config_options_tests.py::PluginsTest::test_plugin_config_not_list mkdocs/tests/config/config_options_tests.py::PluginsTest::test_plugin_config_not_string_or_dict mkdocs/tests/config/config_options_tests.py::PluginsTest::test_plugin_config_options_not_dict mkdocs/tests/config/config_options_tests.py::PluginsTest::test_plugin_config_uninstalled mkdocs/tests/config/config_options_tests.py::PluginsTest::test_plugin_config_with_deduced_theme_namespace mkdocs/tests/config/config_options_tests.py::PluginsTest::test_plugin_config_with_deduced_theme_namespace_overridden mkdocs/tests/config/config_options_tests.py::PluginsTest::test_plugin_config_with_explicit_empty_namespace mkdocs/tests/config/config_options_tests.py::PluginsTest::test_plugin_config_with_explicit_theme_namespace mkdocs/tests/config/config_options_tests.py::PluginsTest::test_plugin_config_with_options mkdocs/tests/config/config_options_tests.py::PluginsTest::test_plugin_config_without_options mkdocs/tests/config/config_options_tests.py::HooksTest::test_hooks mkdocs/tests/config/config_options_tests.py::HooksTest::test_hooks_wrong_type mkdocs/tests/config/config_options_tests.py::SchemaTest::test_copy mkdocs/tests/config/config_options_tests.py::SchemaTest::test_subclass