mirror of
https://github.com/mkdocs/mkdocs.git
synced 2026-03-27 09:58:31 +07:00
get-deps: suggest 'mkdocs[i18n]' if theme.locale is used (#3271)
This commit is contained in:
@@ -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, ()))
|
||||
|
||||
@@ -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]'])
|
||||
|
||||
Reference in New Issue
Block a user