diff --git a/mkdocs/commands/get_deps.py b/mkdocs/commands/get_deps.py index 9c8cc436..9caaf4fd 100644 --- a/mkdocs/commands/get_deps.py +++ b/mkdocs/commands/get_deps.py @@ -97,8 +97,15 @@ def get_deps(projects_file_url: str, config_file_path: str | None = None) -> Non with _open_config_file(config_file_path) as f: cfg = utils.yaml_load(f, loader=YamlLoader) # type: ignore + packages_to_install = set() + if all(c not in cfg for c in ('site_name', 'theme', 'plugins', 'markdown_extensions')): log.warning("The passed config file doesn't seem to be a mkdocs.yml config file") + else: + if dig(cfg, 'theme.locale') not in (NotFound, 'en'): + packages_to_install.add('mkdocs[i18n]') + else: + packages_to_install.add('mkdocs') try: theme = cfg['theme']['name'] @@ -120,7 +127,6 @@ def get_deps(projects_file_url: str, config_file_path: str | None = None) -> Non content = download_and_cache_url(projects_file_url, datetime.timedelta(days=7)) projects = yaml.safe_load(content)['projects'] - packages_to_install = set() for project in projects: for kind, wanted in wanted_plugins: available = strings(project.get(kind.projects_key, ())) diff --git a/mkdocs/tests/get_deps_tests.py b/mkdocs/tests/get_deps_tests.py index 0b2153ad..18d00094 100644 --- a/mkdocs/tests/get_deps_tests.py +++ b/mkdocs/tests/get_deps_tests.py @@ -41,7 +41,7 @@ class TestGetDeps(unittest.TestCase): cfg = ''' plugins: [search] ''' - self._test_get_deps(cfg, []) + self._test_get_deps(cfg, ['mkdocs']) def test_mkdocs_config(self): cfg = ''' @@ -82,6 +82,7 @@ class TestGetDeps(unittest.TestCase): [ 'markdown-callouts', 'mdx-gh-links', + 'mkdocs', 'mkdocs-autorefs', 'mkdocs-click', 'mkdocs-literate-nav', @@ -104,7 +105,9 @@ class TestGetDeps(unittest.TestCase): emoji_index: !!python/name:materialx.emoji.twemoji emoji_generator: !!python/name:materialx.emoji.to_svg ''' - self._test_get_deps(cfg, ['mkdocs-code-validator', 'mkdocs-material', 'pymdown-extensions']) + self._test_get_deps( + cfg, ['mkdocs', 'mkdocs-code-validator', 'mkdocs-material', 'pymdown-extensions'] + ) def test_theme_precedence(self): cfg = ''' @@ -112,19 +115,19 @@ class TestGetDeps(unittest.TestCase): - tags theme: material ''' - self._test_get_deps(cfg, ['mkdocs-material']) + self._test_get_deps(cfg, ['mkdocs', 'mkdocs-material']) cfg = ''' plugins: - material/tags ''' - self._test_get_deps(cfg, ['mkdocs-material']) + self._test_get_deps(cfg, ['mkdocs', 'mkdocs-material']) cfg = ''' plugins: - tags ''' - self._test_get_deps(cfg, ['mkdocs-plugin-tags']) + self._test_get_deps(cfg, ['mkdocs', 'mkdocs-plugin-tags']) def test_nonexistent(self): cfg = ''' @@ -143,7 +146,7 @@ class TestGetDeps(unittest.TestCase): WARNING:Extension 'saqdhyndpvpa' is not provided by any registered project """ with self._assert_logs(expected_logs): - self._test_get_deps(cfg, ['mkdocs-redirects']) + self._test_get_deps(cfg, ['mkdocs', 'mkdocs-redirects']) def test_git_and_shadowed(self): cfg = ''' @@ -151,11 +154,19 @@ class TestGetDeps(unittest.TestCase): plugins: [blog] ''' self._test_get_deps( - cfg, ['git+https://github.com/andyoakley/mkdocs-blog', 'mkdocs-bootstrap4'] + cfg, ['git+https://github.com/andyoakley/mkdocs-blog', 'mkdocs', 'mkdocs-bootstrap4'] ) def test_multi_theme(self): cfg = ''' theme: minty ''' - self._test_get_deps(cfg, ['mkdocs-bootswatch']) + self._test_get_deps(cfg, ['mkdocs', 'mkdocs-bootswatch']) + + def test_with_locale(self): + cfg = ''' + theme: + name: mkdocs + locale: uk + ''' + self._test_get_deps(cfg, ['mkdocs[i18n]'])