markdown: Migrate off deprecated extension registration interface.

Fixes #15205.

https://python-markdown.github.io/change_log/release-3.0/#homegrown-ordereddict-has-been-replaced-with-a-purpose-built-registry
https://python-markdown.github.io/change_log/release-3.0/#md_globals-keyword-deprecated-from-extension-api

The priority numbers are arbitrarily chosen to preserve the existing
order.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
Anders Kaseorg
2020-10-19 16:28:13 -07:00
committed by Anders Kaseorg
parent 84142df152
commit 254b904965
10 changed files with 34 additions and 33 deletions

View File

@@ -21,9 +21,9 @@ class MarkdownArgumentsTableGenerator(Extension):
for key, value in configs.items(): for key, value in configs.items():
self.setConfig(key, value) self.setConfig(key, value)
def extendMarkdown(self, md: markdown.Markdown, md_globals: Dict[str, Any]) -> None: def extendMarkdown(self, md: markdown.Markdown) -> None:
md.preprocessors.add( md.preprocessors.register(
'generate_api_arguments', APIArgumentsTablePreprocessor(md, self.getConfigs()), '_begin', APIArgumentsTablePreprocessor(md, self.getConfigs()), 'generate_api_arguments', 505
) )

View File

@@ -15,9 +15,9 @@ class MarkdownReturnValuesTableGenerator(Extension):
def __init__(self, configs: Mapping[str, Any] = {}) -> None: def __init__(self, configs: Mapping[str, Any] = {}) -> None:
self.config: Dict[str, Any] = {} self.config: Dict[str, Any] = {}
def extendMarkdown(self, md: markdown.Markdown, md_globals: Dict[str, Any]) -> None: def extendMarkdown(self, md: markdown.Markdown) -> None:
md.preprocessors.add( md.preprocessors.register(
'generate_return_values', APIReturnValuesTablePreprocessor(md, self.getConfigs()), '_begin', APIReturnValuesTablePreprocessor(md, self.getConfigs()), 'generate_return_values', 510
) )

View File

@@ -149,7 +149,7 @@ class FencedCodeExtension(markdown.Extension):
for key, value in config.items(): for key, value in config.items():
self.setConfig(key, value) self.setConfig(key, value)
def extendMarkdown(self, md: markdown.Markdown, md_globals: Dict[str, Any]) -> None: def extendMarkdown(self, md: markdown.Markdown) -> None:
""" Add FencedBlockPreprocessor to the Markdown instance. """ """ Add FencedBlockPreprocessor to the Markdown instance. """
md.registerExtension(self) md.registerExtension(self)
processor = FencedBlockPreprocessor( processor = FencedBlockPreprocessor(

View File

@@ -1,5 +1,5 @@
import re import re
from typing import Any, Dict, List from typing import Any, List
from typing.re import Match from typing.re import Match
import markdown import markdown
@@ -36,10 +36,10 @@ ROW_HTML = """\
""" """
class EmoticonTranslationsHelpExtension(markdown.Extension): class EmoticonTranslationsHelpExtension(markdown.Extension):
def extendMarkdown(self, md: markdown.Markdown, md_globals: Dict[str, Any]) -> None: def extendMarkdown(self, md: markdown.Markdown) -> None:
""" Add SettingHelpExtension to the Markdown instance. """ """ Add SettingHelpExtension to the Markdown instance. """
md.registerExtension(self) md.registerExtension(self)
md.preprocessors.add('emoticon_translations', EmoticonTranslation(), '_end') md.preprocessors.register(EmoticonTranslation(), 'emoticon_translations', -505)
class EmoticonTranslation(Preprocessor): class EmoticonTranslation(Preprocessor):

View File

@@ -1,5 +1,5 @@
import re import re
from typing import Any, Dict, List, Optional from typing import Any, List, Optional
from typing.re import Match from typing.re import Match
import markdown import markdown
@@ -67,10 +67,10 @@ LINK_TYPE_HANDLERS = {
} }
class RelativeLinksHelpExtension(markdown.Extension): class RelativeLinksHelpExtension(markdown.Extension):
def extendMarkdown(self, md: markdown.Markdown, md_globals: Dict[str, Any]) -> None: def extendMarkdown(self, md: markdown.Markdown) -> None:
""" Add RelativeLinksHelpExtension to the Markdown instance. """ """ Add RelativeLinksHelpExtension to the Markdown instance. """
md.registerExtension(self) md.registerExtension(self)
md.preprocessors.add('help_relative_links', RelativeLinks(), '_begin') md.preprocessors.register(RelativeLinks(), 'help_relative_links', 520)
relative_help_links: Optional[bool] = None relative_help_links: Optional[bool] = None

View File

@@ -1,5 +1,5 @@
import re import re
from typing import Any, Dict, List, Optional from typing import Any, List, Optional
from typing.re import Match from typing.re import Match
import markdown import markdown
@@ -63,10 +63,10 @@ settings_markdown = """
class SettingHelpExtension(markdown.Extension): class SettingHelpExtension(markdown.Extension):
def extendMarkdown(self, md: markdown.Markdown, md_globals: Dict[str, Any]) -> None: def extendMarkdown(self, md: markdown.Markdown) -> None:
""" Add SettingHelpExtension to the Markdown instance. """ """ Add SettingHelpExtension to the Markdown instance. """
md.registerExtension(self) md.registerExtension(self)
md.preprocessors.add('setting', Setting(), '_begin') md.preprocessors.register(Setting(), 'setting', 515)
relative_settings_links: Optional[bool] = None relative_settings_links: Optional[bool] = None

View File

@@ -1,6 +1,6 @@
import os import os
import re import re
from typing import Any, Dict, List from typing import Any, List
import markdown import markdown
from markdown_include.include import IncludePreprocessor, MarkdownInclude from markdown_include.include import IncludePreprocessor, MarkdownInclude
@@ -11,11 +11,11 @@ INC_SYNTAX = re.compile(r'\{!\s*(.+?)\s*!\}')
class MarkdownIncludeCustom(MarkdownInclude): class MarkdownIncludeCustom(MarkdownInclude):
def extendMarkdown(self, md: markdown.Markdown, md_globals: Dict[str, Any]) -> None: def extendMarkdown(self, md: markdown.Markdown) -> None:
md.preprocessors.add( md.preprocessors.register(
'include_wrapper',
IncludeCustomPreprocessor(md, self.getConfigs()), IncludeCustomPreprocessor(md, self.getConfigs()),
'_begin', 'include_wrapper',
500,
) )
class IncludeCustomPreprocessor(IncludePreprocessor): class IncludeCustomPreprocessor(IncludePreprocessor):

View File

@@ -8,11 +8,11 @@ from zerver.lib.markdown import ResultWithFamily, walk_tree_with_family
class NestedCodeBlocksRenderer(Extension): class NestedCodeBlocksRenderer(Extension):
def extendMarkdown(self, md: markdown.Markdown, md_globals: Dict[str, Any]) -> None: def extendMarkdown(self, md: markdown.Markdown) -> None:
md.treeprocessors.add( md.treeprocessors.register(
'nested_code_blocks',
NestedCodeBlocksRendererTreeProcessor(md, self.getConfigs()), NestedCodeBlocksRendererTreeProcessor(md, self.getConfigs()),
'_end', 'nested_code_blocks',
-500,
) )
class NestedCodeBlocksRendererTreeProcessor(markdown.treeprocessors.Treeprocessor): class NestedCodeBlocksRendererTreeProcessor(markdown.treeprocessors.Treeprocessor):

View File

@@ -79,9 +79,10 @@ TAB_DISPLAY_NAMES = {
} }
class TabbedSectionsGenerator(Extension): class TabbedSectionsGenerator(Extension):
def extendMarkdown(self, md: markdown.Markdown, md_globals: Dict[str, Any]) -> None: def extendMarkdown(self, md: markdown.Markdown) -> None:
md.preprocessors.add( md.preprocessors.register(
'tabbed_sections', TabbedSectionsPreprocessor(md, self.getConfigs()), '_end') TabbedSectionsPreprocessor(md, self.getConfigs()), 'tabbed_sections', -500
)
class TabbedSectionsPreprocessor(Preprocessor): class TabbedSectionsPreprocessor(Preprocessor):
def __init__(self, md: markdown.Markdown, config: Dict[str, Any]) -> None: def __init__(self, md: markdown.Markdown, config: Dict[str, Any]) -> None:

View File

@@ -348,12 +348,12 @@ class APIMarkdownExtension(Extension):
], ],
} }
def extendMarkdown(self, md: markdown.Markdown, md_globals: Dict[str, Any]) -> None: def extendMarkdown(self, md: markdown.Markdown) -> None:
md.preprocessors.add( md.preprocessors.register(
'generate_code_example', APICodeExamplesPreprocessor(md, self.getConfigs()), '_begin', APICodeExamplesPreprocessor(md, self.getConfigs()), 'generate_code_example', 525
) )
md.preprocessors.add( md.preprocessors.register(
'generate_api_description', APIDescriptionPreprocessor(md, self.getConfigs()), '_begin', APIDescriptionPreprocessor(md, self.getConfigs()), 'generate_api_description', 530
) )
class APICodeExamplesPreprocessor(Preprocessor): class APICodeExamplesPreprocessor(Preprocessor):