diff --git a/docs/change_log/index.md b/docs/change_log/index.md index 8f1b9db84..121dab083 100644 --- a/docs/change_log/index.md +++ b/docs/change_log/index.md @@ -6,7 +6,10 @@ Python-Markdown Change Log Under development: version 3.2.2 (a bug-fix release). * Load entry_points (for extensions) only once using `importlib.metadata`. -* Fixed issue where double escaped entities could end up in TOC. +* Do not double escape entities in TOC. +* Correctly report if an extension raises a `TypeError` (#939). +* Raise a `KeyError` when attempting to delete a nonexistent key from the + extension registry (#939). Feb 12, 2020: Released version 3.2.1 (a bug-fix release). diff --git a/markdown/extensions/__init__.py b/markdown/extensions/__init__.py index 010e310c3..4bc8e5fd7 100644 --- a/markdown/extensions/__init__.py +++ b/markdown/extensions/__init__.py @@ -75,15 +75,18 @@ def _extendMarkdown(self, *args): md = args[0] try: self.extendMarkdown(md) - except TypeError: - # Must be a 2.x extension. Pass in a dumby md_globals. - self.extendMarkdown(md, {}) - warnings.warn( - "The 'md_globals' parameter of '{}.{}.extendMarkdown' is " - "deprecated.".format(self.__class__.__module__, self.__class__.__name__), - category=DeprecationWarning, - stacklevel=2 - ) + except TypeError as e: + if "missing 1 required positional argument" in str(e): + # Must be a 2.x extension. Pass in a dumby md_globals. + self.extendMarkdown(md, {}) + warnings.warn( + "The 'md_globals' parameter of '{}.{}.extendMarkdown' is " + "deprecated.".format(self.__class__.__module__, self.__class__.__name__), + category=DeprecationWarning, + stacklevel=2 + ) + else: + raise def extendMarkdown(self, md): """ diff --git a/markdown/util.py b/markdown/util.py index 056fd72a2..a8db7bd87 100644 --- a/markdown/util.py +++ b/markdown/util.py @@ -399,7 +399,7 @@ def __delitem__(self, key): stacklevel=2, ) else: - raise TypeError + raise KeyError('Cannot delete key {}, not registered.'.format(key)) def add(self, key, value, location): """ Register a key by location. """ diff --git a/tests/test_apis.py b/tests/test_apis.py index 39236f26f..6564c6699 100644 --- a/tests/test_apis.py +++ b/tests/test_apis.py @@ -337,7 +337,7 @@ def testRegistrySetItem(self): def testRegistryDelItem(self): r = markdown.util.Registry() r.register(Item('a'), 'a', 20) - with self.assertRaises(TypeError): + with self.assertRaises(KeyError): del r[0] # TODO: restore this when deprecated __del__ is removed. # with self.assertRaises(TypeError): @@ -352,7 +352,7 @@ def testRegistryDelItem(self): self.assertEqual(list(r), ['a', 'c']) del r['a'] self.assertEqual(list(r), ['c']) - with self.assertRaises(TypeError): + with self.assertRaises(KeyError): del r['badname'] del r['c'] self.assertEqual(list(r), [])