From 153670832e1795140ee45347dc5094ce27aba773 Mon Sep 17 00:00:00 2001 From: Raghunandan Date: Mon, 2 Nov 2020 14:24:56 +0100 Subject: [PATCH 1/8] techdocs: override default mkdocs config with user config from mkdocs.yaml --- .../techdocs-core/src/core.py | 28 +++++++++-- .../techdocs-core/src/test_core.py | 48 +++++++++++++++++++ 2 files changed, 71 insertions(+), 5 deletions(-) create mode 100644 packages/techdocs-container/techdocs-core/src/test_core.py diff --git a/packages/techdocs-container/techdocs-core/src/core.py b/packages/techdocs-container/techdocs-core/src/core.py index ed1eb7c6f6..aa94d870bc 100644 --- a/packages/techdocs-container/techdocs-core/src/core.py +++ b/packages/techdocs-container/techdocs-core/src/core.py @@ -30,6 +30,10 @@ class TechDocsCore(BasePlugin): '{\n "site_name": "{{ config.site_name }}",\n "site_description": "{{ config.site_description }}"\n}' ) + mdx_configs_override = {} + if "mdx_configs" in config.keys(): + mdx_configs_override = config["mdx_configs"].copy() + # Theme config["theme"] = Theme( name="material", static_templates=["techdocs_metadata.json",], @@ -44,15 +48,16 @@ class TechDocsCore(BasePlugin): monorepo_plugin = MonorepoPlugin() monorepo_plugin.load_config({}) - config["plugins"]["search"] = search_plugin config["plugins"]["monorepo"] = monorepo_plugin - search_plugin = SearchPlugin() - search_plugin.load_config({}) - config["plugins"]["search"] = search_plugin - # Markdown Extensions + if "markdown_extensions" not in config.keys(): + config["markdown_extensions"] = [] + + if "mdx_configs" not in config.keys(): + config["mdx_configs"] = {} + config["markdown_extensions"].append("admonition") config["markdown_extensions"].append("toc") config["mdx_configs"]["toc"] = { @@ -90,4 +95,17 @@ class TechDocsCore(BasePlugin): config["markdown_extensions"].append("markdown_inline_graphviz") config["markdown_extensions"].append("plantuml_markdown") + # merge or add config supplied by user in the mkdocs.yml + mdx_configs_keys = config["mdx_configs"].keys() + mdx_configs_override_keys = mdx_configs_override.keys() + for key in mdx_configs_override_keys: + if key in mdx_configs_keys: + default_config = config["mdx_configs"][key] + override_config = mdx_configs_override[key] + default_config.update(override_config) + config["mdx_configs"][key] = default_config + else: + config["mdx_configs"].append(key) + config["mdx_configs"][key] = mdx_configs_override[key] + return config diff --git a/packages/techdocs-container/techdocs-core/src/test_core.py b/packages/techdocs-container/techdocs-core/src/test_core.py new file mode 100644 index 0000000000..7f34d28d38 --- /dev/null +++ b/packages/techdocs-container/techdocs-core/src/test_core.py @@ -0,0 +1,48 @@ +import unittest +import mkdocs.config as config +import mkdocs.plugins as plugins +from .core import TechDocsCore + +class DummyTechDocsCorePlugin(plugins.BasePlugin): + pass + +class TestTechDocsCoreConfig(unittest.TestCase): + def setUp(self): + self.techdocscore = TechDocsCore() + self.plugin_collection = plugins.PluginCollection() + plugin = DummyTechDocsCorePlugin() + self.plugin_collection['techdocs-core'] = plugin + self.mkdocs_yaml_config = {"plugins": self.plugin_collection} + + def test_removes_techdocs_core_plugin_from_config(self): + final_config = self.techdocscore.on_config(self.mkdocs_yaml_config) + self.assertTrue("techdocs-core" not in final_config["plugins"]) + + def test_merge_default_config_and_user_config(self): + self.mkdocs_yaml_config["markdown_extension"] = [] + self.mkdocs_yaml_config["mdx_configs"] = {} + self.mkdocs_yaml_config["markdown_extension"].append(["toc"]) + self.mkdocs_yaml_config["mdx_configs"]["toc"] = {"toc_depth": 3} + final_config = self.techdocscore.on_config(self.mkdocs_yaml_config) + self.assertTrue("toc" in final_config["mdx_configs"]) + self.assertTrue("permalink" in final_config["mdx_configs"]["toc"]) + self.assertTrue("toc_depth" in final_config["mdx_configs"]["toc"]) + + def test_override_default_config_with_user_config(self): + self.mkdocs_yaml_config["markdown_extension"] = [] + self.mkdocs_yaml_config["mdx_configs"] = {} + self.mkdocs_yaml_config["markdown_extension"].append(["toc"]) + self.mkdocs_yaml_config["mdx_configs"]["toc"] = {"permalink": False} + final_config = self.techdocscore.on_config(self.mkdocs_yaml_config) + self.assertTrue("toc" in final_config["mdx_configs"]) + self.assertTrue("permalink" in final_config["mdx_configs"]["toc"]) + self.assertFalse(final_config["mdx_configs"]["toc"]["permalink"]) + + def test_add_user_config_to_default_config(self): + self.mkdocs_yaml_config["markdown_extension"] = [] + self.mkdocs_yaml_config["mdx_configs"] = {} + self.mkdocs_yaml_config["markdown_extension"].append(["abc"]) + self.mkdocs_yaml_config["mdx_configs"]["abc"] = {"testkey": "testvalue"} + final_config = self.techdocscore.on_config(self.mkdocs_yaml_config) + self.assertTrue("abc" in final_config["mdx_configs"]) + self.assertTrue("testkey" in final_config["mdx_configs"]["abc"]) From 833d8feae76625d73ab8a3c507a410206008340c Mon Sep 17 00:00:00 2001 From: Raghunandan Date: Mon, 2 Nov 2020 14:37:57 +0100 Subject: [PATCH 2/8] only override config keys that exist --- packages/techdocs-container/techdocs-core/src/core.py | 6 +----- .../techdocs-container/techdocs-core/src/test_core.py | 9 --------- 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/packages/techdocs-container/techdocs-core/src/core.py b/packages/techdocs-container/techdocs-core/src/core.py index aa94d870bc..7e5385e9f5 100644 --- a/packages/techdocs-container/techdocs-core/src/core.py +++ b/packages/techdocs-container/techdocs-core/src/core.py @@ -95,7 +95,7 @@ class TechDocsCore(BasePlugin): config["markdown_extensions"].append("markdown_inline_graphviz") config["markdown_extensions"].append("plantuml_markdown") - # merge or add config supplied by user in the mkdocs.yml + # merge config supplied by user in the mkdocs.yml mdx_configs_keys = config["mdx_configs"].keys() mdx_configs_override_keys = mdx_configs_override.keys() for key in mdx_configs_override_keys: @@ -103,9 +103,5 @@ class TechDocsCore(BasePlugin): default_config = config["mdx_configs"][key] override_config = mdx_configs_override[key] default_config.update(override_config) - config["mdx_configs"][key] = default_config - else: - config["mdx_configs"].append(key) - config["mdx_configs"][key] = mdx_configs_override[key] return config diff --git a/packages/techdocs-container/techdocs-core/src/test_core.py b/packages/techdocs-container/techdocs-core/src/test_core.py index 7f34d28d38..0ccdc713e6 100644 --- a/packages/techdocs-container/techdocs-core/src/test_core.py +++ b/packages/techdocs-container/techdocs-core/src/test_core.py @@ -37,12 +37,3 @@ class TestTechDocsCoreConfig(unittest.TestCase): self.assertTrue("toc" in final_config["mdx_configs"]) self.assertTrue("permalink" in final_config["mdx_configs"]["toc"]) self.assertFalse(final_config["mdx_configs"]["toc"]["permalink"]) - - def test_add_user_config_to_default_config(self): - self.mkdocs_yaml_config["markdown_extension"] = [] - self.mkdocs_yaml_config["mdx_configs"] = {} - self.mkdocs_yaml_config["markdown_extension"].append(["abc"]) - self.mkdocs_yaml_config["mdx_configs"]["abc"] = {"testkey": "testvalue"} - final_config = self.techdocscore.on_config(self.mkdocs_yaml_config) - self.assertTrue("abc" in final_config["mdx_configs"]) - self.assertTrue("testkey" in final_config["mdx_configs"]["abc"]) From 4c8ac3daf1149ba3102e7a8197b89e3e297cf0dc Mon Sep 17 00:00:00 2001 From: Raghunandan Date: Mon, 2 Nov 2020 15:23:14 +0100 Subject: [PATCH 3/8] Fix formatting --- .../techdocs-container/techdocs-core/src/core.py | 5 ++++- .../techdocs-core/src/test_core.py | 14 ++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/packages/techdocs-container/techdocs-core/src/core.py b/packages/techdocs-container/techdocs-core/src/core.py index 7e5385e9f5..c29715c283 100644 --- a/packages/techdocs-container/techdocs-core/src/core.py +++ b/packages/techdocs-container/techdocs-core/src/core.py @@ -36,7 +36,10 @@ class TechDocsCore(BasePlugin): # Theme config["theme"] = Theme( - name="material", static_templates=["techdocs_metadata.json",], + name="material", + static_templates=[ + "techdocs_metadata.json", + ], ) config["theme"].dirs.append(tempfile.gettempdir()) diff --git a/packages/techdocs-container/techdocs-core/src/test_core.py b/packages/techdocs-container/techdocs-core/src/test_core.py index 0ccdc713e6..621570356c 100644 --- a/packages/techdocs-container/techdocs-core/src/test_core.py +++ b/packages/techdocs-container/techdocs-core/src/test_core.py @@ -3,15 +3,17 @@ import mkdocs.config as config import mkdocs.plugins as plugins from .core import TechDocsCore + class DummyTechDocsCorePlugin(plugins.BasePlugin): pass + class TestTechDocsCoreConfig(unittest.TestCase): def setUp(self): self.techdocscore = TechDocsCore() self.plugin_collection = plugins.PluginCollection() plugin = DummyTechDocsCorePlugin() - self.plugin_collection['techdocs-core'] = plugin + self.plugin_collection["techdocs-core"] = plugin self.mkdocs_yaml_config = {"plugins": self.plugin_collection} def test_removes_techdocs_core_plugin_from_config(self): @@ -24,9 +26,9 @@ class TestTechDocsCoreConfig(unittest.TestCase): self.mkdocs_yaml_config["markdown_extension"].append(["toc"]) self.mkdocs_yaml_config["mdx_configs"]["toc"] = {"toc_depth": 3} final_config = self.techdocscore.on_config(self.mkdocs_yaml_config) - self.assertTrue("toc" in final_config["mdx_configs"]) - self.assertTrue("permalink" in final_config["mdx_configs"]["toc"]) - self.assertTrue("toc_depth" in final_config["mdx_configs"]["toc"]) + self.assertTrue("toc" in final_config["mdx_configs"]) + self.assertTrue("permalink" in final_config["mdx_configs"]["toc"]) + self.assertTrue("toc_depth" in final_config["mdx_configs"]["toc"]) def test_override_default_config_with_user_config(self): self.mkdocs_yaml_config["markdown_extension"] = [] @@ -34,6 +36,6 @@ class TestTechDocsCoreConfig(unittest.TestCase): self.mkdocs_yaml_config["markdown_extension"].append(["toc"]) self.mkdocs_yaml_config["mdx_configs"]["toc"] = {"permalink": False} final_config = self.techdocscore.on_config(self.mkdocs_yaml_config) - self.assertTrue("toc" in final_config["mdx_configs"]) - self.assertTrue("permalink" in final_config["mdx_configs"]["toc"]) + self.assertTrue("toc" in final_config["mdx_configs"]) + self.assertTrue("permalink" in final_config["mdx_configs"]["toc"]) self.assertFalse(final_config["mdx_configs"]["toc"]["permalink"]) From f0cf95b0cc7f43d55f052b958f5135fdab10336f Mon Sep 17 00:00:00 2001 From: Raghunandan Date: Mon, 2 Nov 2020 16:02:32 +0100 Subject: [PATCH 4/8] Update black linter version --- packages/techdocs-container/techdocs-core/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/techdocs-container/techdocs-core/requirements.txt b/packages/techdocs-container/techdocs-core/requirements.txt index fc56ae6aee..279a391454 100644 --- a/packages/techdocs-container/techdocs-core/requirements.txt +++ b/packages/techdocs-container/techdocs-core/requirements.txt @@ -13,4 +13,4 @@ Markdown==3.2.2 # The linter using for Python # Note: This requires Python 3.6+ to run, but can format Python 2 code too. # https://github.com/psf/black -black==19.10b0 +black==20.8b1 From 46ca3c9aa51d5cc45f010049f1b9afd6dd9c0839 Mon Sep 17 00:00:00 2001 From: Raghunandan Date: Mon, 2 Nov 2020 16:10:00 +0100 Subject: [PATCH 5/8] Revert "Update black linter version" This reverts commit f0cf95b0cc7f43d55f052b958f5135fdab10336f. --- packages/techdocs-container/techdocs-core/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/techdocs-container/techdocs-core/requirements.txt b/packages/techdocs-container/techdocs-core/requirements.txt index 279a391454..fc56ae6aee 100644 --- a/packages/techdocs-container/techdocs-core/requirements.txt +++ b/packages/techdocs-container/techdocs-core/requirements.txt @@ -13,4 +13,4 @@ Markdown==3.2.2 # The linter using for Python # Note: This requires Python 3.6+ to run, but can format Python 2 code too. # https://github.com/psf/black -black==20.8b1 +black==19.10b0 From 653c882a2c879a1300d3aa0e26b624320293ffd4 Mon Sep 17 00:00:00 2001 From: Raghunandan Date: Mon, 2 Nov 2020 16:11:08 +0100 Subject: [PATCH 6/8] one more formatting fix --- packages/techdocs-container/techdocs-core/src/core.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/techdocs-container/techdocs-core/src/core.py b/packages/techdocs-container/techdocs-core/src/core.py index c29715c283..7e5385e9f5 100644 --- a/packages/techdocs-container/techdocs-core/src/core.py +++ b/packages/techdocs-container/techdocs-core/src/core.py @@ -36,10 +36,7 @@ class TechDocsCore(BasePlugin): # Theme config["theme"] = Theme( - name="material", - static_templates=[ - "techdocs_metadata.json", - ], + name="material", static_templates=["techdocs_metadata.json",], ) config["theme"].dirs.append(tempfile.gettempdir()) From e2fb37db0a66c98725b2c97b8c93e837d6929abd Mon Sep 17 00:00:00 2001 From: Raghunandan Date: Mon, 2 Nov 2020 16:21:47 +0100 Subject: [PATCH 7/8] PR review fixes --- packages/techdocs-container/techdocs-core/src/core.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/techdocs-container/techdocs-core/src/core.py b/packages/techdocs-container/techdocs-core/src/core.py index 7e5385e9f5..b78ff24cdf 100644 --- a/packages/techdocs-container/techdocs-core/src/core.py +++ b/packages/techdocs-container/techdocs-core/src/core.py @@ -96,10 +96,8 @@ class TechDocsCore(BasePlugin): config["markdown_extensions"].append("plantuml_markdown") # merge config supplied by user in the mkdocs.yml - mdx_configs_keys = config["mdx_configs"].keys() - mdx_configs_override_keys = mdx_configs_override.keys() - for key in mdx_configs_override_keys: - if key in mdx_configs_keys: + for key in mdx_configs_override: + if key in config["mdx_configs"]: default_config = config["mdx_configs"][key] override_config = mdx_configs_override[key] default_config.update(override_config) From e2b4aea8eb76172fac7cfd018d34b9390998dba7 Mon Sep 17 00:00:00 2001 From: Himanshu Mishra Date: Mon, 2 Nov 2020 16:50:14 +0100 Subject: [PATCH 8/8] TechDocs: Remove explicit .keys for dictionaries --- packages/techdocs-container/techdocs-core/src/core.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/techdocs-container/techdocs-core/src/core.py b/packages/techdocs-container/techdocs-core/src/core.py index b78ff24cdf..7d32b69ad8 100644 --- a/packages/techdocs-container/techdocs-core/src/core.py +++ b/packages/techdocs-container/techdocs-core/src/core.py @@ -31,7 +31,7 @@ class TechDocsCore(BasePlugin): ) mdx_configs_override = {} - if "mdx_configs" in config.keys(): + if "mdx_configs" in config: mdx_configs_override = config["mdx_configs"].copy() # Theme @@ -52,10 +52,10 @@ class TechDocsCore(BasePlugin): config["plugins"]["monorepo"] = monorepo_plugin # Markdown Extensions - if "markdown_extensions" not in config.keys(): + if "markdown_extensions" not in config: config["markdown_extensions"] = [] - if "mdx_configs" not in config.keys(): + if "mdx_configs" not in config: config["mdx_configs"] = {} config["markdown_extensions"].append("admonition")