Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-Markdown for openSUSE:Factory
checked in at 2026-01-27 16:06:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-Markdown (Old)
and /work/SRC/openSUSE:Factory/.python-Markdown.new.1928 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-Markdown"
Tue Jan 27 16:06:49 2026 rev:59 rq:1329160 version:3.10.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-Markdown/python-Markdown.changes
2025-11-07 18:20:06.933532412 +0100
+++
/work/SRC/openSUSE:Factory/.python-Markdown.new.1928/python-Markdown.changes
2026-01-27 16:06:58.444653917 +0100
@@ -1,0 +2,12 @@
+Fri Jan 23 16:12:26 UTC 2026 - BenoƮt Monin <[email protected]>
+
+- update to version 3.10.1:
+ * Ensure nested elements inside inline comments are properly
+ unescaped (#1571).
+ * Make the docs build successfully with mkdocstrings-python 2.0
+ (#1575).
+ * Fix infinite loop when multiple bogus or unclosed HTML comments
+ appear in input (#1578).
+ * Fix another infinite loop when handling bad comments (#1586).
+
+-------------------------------------------------------------------
Old:
----
markdown-3.10.tar.gz
New:
----
markdown-3.10.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-Markdown.spec ++++++
--- /var/tmp/diff_new_pack.d2T9sN/_old 2026-01-27 16:06:59.492698114 +0100
+++ /var/tmp/diff_new_pack.d2T9sN/_new 2026-01-27 16:06:59.496698283 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-Markdown
#
-# Copyright (c) 2025 SUSE LLC and contributors
+# Copyright (c) 2026 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -32,7 +32,7 @@
%endif
%{?sle15_python_module_pythons}
Name: python-Markdown%{psuffix}
-Version: 3.10
+Version: 3.10.1
Release: 0
Summary: Python implementation of Markdown
License: BSD-3-Clause
++++++ markdown-3.10.tar.gz -> markdown-3.10.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/markdown-3.10/Markdown.egg-info/PKG-INFO
new/markdown-3.10.1/Markdown.egg-info/PKG-INFO
--- old/markdown-3.10/Markdown.egg-info/PKG-INFO 2025-11-03
20:51:04.000000000 +0100
+++ new/markdown-3.10.1/Markdown.egg-info/PKG-INFO 2026-01-21
19:09:17.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.4
Name: Markdown
-Version: 3.10
+Version: 3.10.1
Summary: Python implementation of John Gruber's Markdown.
Author: Manfred Stienstra, Yuri Takhteyev
Author-email: Waylan limberg <[email protected]>
@@ -43,7 +43,7 @@
Requires-Dist: mkdocs>=1.6; extra == "docs"
Requires-Dist: mkdocs-nature>=0.6; extra == "docs"
Requires-Dist: mdx_gh_links>=0.2; extra == "docs"
-Requires-Dist: mkdocstrings[python]; extra == "docs"
+Requires-Dist: mkdocstrings[python]>=0.28.3; extra == "docs"
Requires-Dist: mkdocs-gen-files; extra == "docs"
Requires-Dist: mkdocs-section-index; extra == "docs"
Requires-Dist: mkdocs-literate-nav; extra == "docs"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/markdown-3.10/Markdown.egg-info/requires.txt
new/markdown-3.10.1/Markdown.egg-info/requires.txt
--- old/markdown-3.10/Markdown.egg-info/requires.txt 2025-11-03
20:51:04.000000000 +0100
+++ new/markdown-3.10.1/Markdown.egg-info/requires.txt 2026-01-21
19:09:17.000000000 +0100
@@ -3,7 +3,7 @@
mkdocs>=1.6
mkdocs-nature>=0.6
mdx_gh_links>=0.2
-mkdocstrings[python]
+mkdocstrings[python]>=0.28.3
mkdocs-gen-files
mkdocs-section-index
mkdocs-literate-nav
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/markdown-3.10/PKG-INFO new/markdown-3.10.1/PKG-INFO
--- old/markdown-3.10/PKG-INFO 2025-11-03 20:51:04.667874000 +0100
+++ new/markdown-3.10.1/PKG-INFO 2026-01-21 19:09:17.219820000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.4
Name: Markdown
-Version: 3.10
+Version: 3.10.1
Summary: Python implementation of John Gruber's Markdown.
Author: Manfred Stienstra, Yuri Takhteyev
Author-email: Waylan limberg <[email protected]>
@@ -43,7 +43,7 @@
Requires-Dist: mkdocs>=1.6; extra == "docs"
Requires-Dist: mkdocs-nature>=0.6; extra == "docs"
Requires-Dist: mdx_gh_links>=0.2; extra == "docs"
-Requires-Dist: mkdocstrings[python]; extra == "docs"
+Requires-Dist: mkdocstrings[python]>=0.28.3; extra == "docs"
Requires-Dist: mkdocs-gen-files; extra == "docs"
Requires-Dist: mkdocs-section-index; extra == "docs"
Requires-Dist: mkdocs-literate-nav; extra == "docs"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/markdown-3.10/docs/changelog.md
new/markdown-3.10.1/docs/changelog.md
--- old/markdown-3.10/docs/changelog.md 2025-11-03 20:50:58.000000000 +0100
+++ new/markdown-3.10.1/docs/changelog.md 2026-01-21 19:09:10.000000000
+0100
@@ -10,6 +10,15 @@
[Python Version
Specification](https://packaging.python.org/en/latest/specifications/version-specifiers/).
See the [Contributing Guide](contributing.md) for details.
+## [3.10.1] - 2026-01-21
+
+### Fixed
+
+* Ensure nested elements inside inline comments are properly unescaped (#1571).
+* Make the docs build successfully with mkdocstrings-python 2.0 (#1575).
+* Fix infinite loop when multiple bogus or unclosed HTML comments appear in
input (#1578).
+* Fix another infinite loop when handling bad comments (#1586).
+
## [3.10.0] - 2025-11-03
### Changed
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/markdown-3.10/docs/templates/python/nature/attribute.html.jinja
new/markdown-3.10.1/docs/templates/python/nature/attribute.html.jinja
--- old/markdown-3.10/docs/templates/python/nature/attribute.html.jinja
2025-11-03 20:50:58.000000000 +0100
+++ new/markdown-3.10.1/docs/templates/python/nature/attribute.html.jinja
2026-01-21 19:09:10.000000000 +0100
@@ -1,7 +1,7 @@
{% extends "_base/attribute.html.jinja" %}
{% block heading scoped %}
- <a class="doc-source-link" href="{{ config.source.repo }}/tree/{{
config.source.tag }}/{{ attribute.relative_filepath }}#L{{ attribute.lineno
}}{% if attribute.endlineno > attribute.lineno %}-L{{ attribute.endlineno }}{%
endif %}" title='View source code on GitHub'>‹›</a>
+ <a class="doc-source-link" href="{{ config.extra.source.repo }}/tree/{{
config.extra.source.tag }}/{{ attribute.relative_filepath }}#L{{
attribute.lineno }}{% if attribute.endlineno > attribute.lineno %}-L{{
attribute.endlineno }}{% endif %}" title='View source code on
GitHub'>‹›</a>
{% if config.show_symbol_type_heading %}<code class="doc-symbol
doc-symbol-heading doc-symbol-attribute"></code>{% endif %}
{%+ filter highlight(language="python", inline=True) %}
{{ attribute_name }}{% if attribute.annotation %}: {{ attribute.annotation
}}{% endif %}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/markdown-3.10/docs/templates/python/nature/class.html.jinja
new/markdown-3.10.1/docs/templates/python/nature/class.html.jinja
--- old/markdown-3.10/docs/templates/python/nature/class.html.jinja
2025-11-03 20:50:58.000000000 +0100
+++ new/markdown-3.10.1/docs/templates/python/nature/class.html.jinja
2026-01-21 19:09:10.000000000 +0100
@@ -1,6 +1,6 @@
{% extends "_base/class.html.jinja" %}
{% block heading scoped %}
- <a class="doc-source-link" href="{{ config.source.repo }}/tree/{{
config.source.tag }}/{{ class.relative_filepath }}#L{{ class.lineno }}"
title="{{ config.source.title }}">‹›</a>
+ <a class="doc-source-link" href="{{ config.extra.source.repo }}/tree/{{
config.extra.source.tag }}/{{ class.relative_filepath }}#L{{ class.lineno }}"
title="{{ config.extra.source.title }}">‹›</a>
{{ super() }}
{% endblock heading %}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/markdown-3.10/docs/templates/python/nature/function.html.jinja
new/markdown-3.10.1/docs/templates/python/nature/function.html.jinja
--- old/markdown-3.10/docs/templates/python/nature/function.html.jinja
2025-11-03 20:50:58.000000000 +0100
+++ new/markdown-3.10.1/docs/templates/python/nature/function.html.jinja
2026-01-21 19:09:10.000000000 +0100
@@ -1,6 +1,6 @@
{% extends "_base/function.html.jinja" %}
{% block heading scoped %}
- <a class="doc-source-link" href="{{ config.source.repo }}/tree/{{
config.source.tag }}/{{ function.relative_filepath }}#L{{ function.lineno }}{%
if function.endlineno > function.lineno %}-L{{ function.endlineno }}{% endif
%}" title="{{ config.source.title }}">‹›</a>
+ <a class="doc-source-link" href="{{ config.extra.source.repo }}/tree/{{
config.extra.source.tag }}/{{ function.relative_filepath }}#L{{ function.lineno
}}{% if function.endlineno > function.lineno %}-L{{ function.endlineno }}{%
endif %}" title="{{ config.extra.source.title }}">‹›</a>
{{ super() }}
{% endblock heading %}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/markdown-3.10/docs/templates/python/nature/module.html.jinja
new/markdown-3.10.1/docs/templates/python/nature/module.html.jinja
--- old/markdown-3.10/docs/templates/python/nature/module.html.jinja
2025-11-03 20:50:58.000000000 +0100
+++ new/markdown-3.10.1/docs/templates/python/nature/module.html.jinja
2026-01-21 19:09:10.000000000 +0100
@@ -1,6 +1,6 @@
{% extends "_base/module.html.jinja" %}
{% block heading scoped %}
- <a class="doc-source-link" href="{{ config.source.repo }}/tree/{{
config.source.tag }}/{{ module.relative_filepath }}" title="{{
config.source.title }}">‹›</a>
+ <a class="doc-source-link" href="{{ config.extra.source.repo }}/tree/{{
config.extra.source.tag }}/{{ module.relative_filepath }}" title="{{
config.extra.source.title }}">‹›</a>
{{ super() }}
{% endblock heading %}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/markdown-3.10/markdown/__meta__.py
new/markdown-3.10.1/markdown/__meta__.py
--- old/markdown-3.10/markdown/__meta__.py 2025-11-03 20:50:58.000000000
+0100
+++ new/markdown-3.10.1/markdown/__meta__.py 2026-01-21 19:09:10.000000000
+0100
@@ -28,7 +28,7 @@
from __future__ import annotations
-__version_info__ = (3, 10, 0, 'final', 0)
+__version_info__ = (3, 10, 1, 'final', 0)
def _get_version(version_info):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/markdown-3.10/markdown/extensions/abbr.py
new/markdown-3.10.1/markdown/extensions/abbr.py
--- old/markdown-3.10/markdown/extensions/abbr.py 2025-11-03
20:50:58.000000000 +0100
+++ new/markdown-3.10.1/markdown/extensions/abbr.py 2026-01-21
19:09:10.000000000 +0100
@@ -6,7 +6,7 @@
# See https://Python-Markdown.github.io/extensions/abbreviations
# for documentation.
-# Original code Copyright 2007-2008 [Waylan Limberg](http://achinghead.com/)
+# Original code Copyright 2007-2008 [Waylan Limberg](https://github.com/waylan)
# and [Seemant Kulleen](http://www.kulleen.org/)
# All changes Copyright 2008-2014 The Python Markdown Project
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/markdown-3.10/markdown/extensions/attr_list.py
new/markdown-3.10.1/markdown/extensions/attr_list.py
--- old/markdown-3.10/markdown/extensions/attr_list.py 2025-11-03
20:50:58.000000000 +0100
+++ new/markdown-3.10.1/markdown/extensions/attr_list.py 2026-01-21
19:09:10.000000000 +0100
@@ -8,7 +8,7 @@
# See https://Python-Markdown.github.io/extensions/attr_list
# for documentation.
-# Original code Copyright 2011 [Waylan Limberg](http://achinghead.com/).
+# Original code Copyright 2011 [Waylan Limberg](https://github.com/waylan).
# All changes Copyright 2011-2014 The Python Markdown Project
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/markdown-3.10/markdown/extensions/codehilite.py
new/markdown-3.10.1/markdown/extensions/codehilite.py
--- old/markdown-3.10/markdown/extensions/codehilite.py 2025-11-03
20:50:58.000000000 +0100
+++ new/markdown-3.10.1/markdown/extensions/codehilite.py 2026-01-21
19:09:10.000000000 +0100
@@ -6,7 +6,7 @@
# See https://Python-Markdown.github.io/extensions/code_hilite
# for documentation.
-# Original code Copyright 2006-2008 [Waylan Limberg](http://achinghead.com/).
+# Original code Copyright 2006-2008 [Waylan
Limberg](https://github.com/waylan).
# All changes Copyright 2008-2014 The Python Markdown Project
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/markdown-3.10/markdown/extensions/def_list.py
new/markdown-3.10.1/markdown/extensions/def_list.py
--- old/markdown-3.10/markdown/extensions/def_list.py 2025-11-03
20:50:58.000000000 +0100
+++ new/markdown-3.10.1/markdown/extensions/def_list.py 2026-01-21
19:09:10.000000000 +0100
@@ -6,7 +6,7 @@
# See https://Python-Markdown.github.io/extensions/definition_lists
# for documentation.
-# Original code Copyright 2008 [Waylan Limberg](http://achinghead.com)
+# Original code Copyright 2008 [Waylan Limberg](https://github.com/waylan)
# All changes Copyright 2008-2014 The Python Markdown Project
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/markdown-3.10/markdown/extensions/fenced_code.py
new/markdown-3.10.1/markdown/extensions/fenced_code.py
--- old/markdown-3.10/markdown/extensions/fenced_code.py 2025-11-03
20:50:58.000000000 +0100
+++ new/markdown-3.10.1/markdown/extensions/fenced_code.py 2026-01-21
19:09:10.000000000 +0100
@@ -6,7 +6,7 @@
# See https://Python-Markdown.github.io/extensions/fenced_code_blocks
# for documentation.
-# Original code Copyright 2007-2008 [Waylan Limberg](http://achinghead.com/).
+# Original code Copyright 2007-2008 [Waylan
Limberg](https://github.com/waylan).
# All changes Copyright 2008-2014 The Python Markdown Project
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/markdown-3.10/markdown/extensions/meta.py
new/markdown-3.10.1/markdown/extensions/meta.py
--- old/markdown-3.10/markdown/extensions/meta.py 2025-11-03
20:50:58.000000000 +0100
+++ new/markdown-3.10.1/markdown/extensions/meta.py 2026-01-21
19:09:10.000000000 +0100
@@ -6,7 +6,7 @@
# See https://Python-Markdown.github.io/extensions/meta_data
# for documentation.
-# Original code Copyright 2007-2008 [Waylan Limberg](http://achinghead.com).
+# Original code Copyright 2007-2008 [Waylan
Limberg](https://github.com/waylan).
# All changes Copyright 2008-2014 The Python Markdown Project
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/markdown-3.10/markdown/extensions/sane_lists.py
new/markdown-3.10.1/markdown/extensions/sane_lists.py
--- old/markdown-3.10/markdown/extensions/sane_lists.py 2025-11-03
20:50:58.000000000 +0100
+++ new/markdown-3.10.1/markdown/extensions/sane_lists.py 2026-01-21
19:09:10.000000000 +0100
@@ -6,7 +6,7 @@
# See https://Python-Markdown.github.io/extensions/sane_lists
# for documentation.
-# Original code Copyright 2011 [Waylan Limberg](http://achinghead.com)
+# Original code Copyright 2011 [Waylan Limberg](https://github.com/waylan)
# All changes Copyright 2011-2014 The Python Markdown Project
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/markdown-3.10/markdown/extensions/tables.py
new/markdown-3.10.1/markdown/extensions/tables.py
--- old/markdown-3.10/markdown/extensions/tables.py 2025-11-03
20:50:58.000000000 +0100
+++ new/markdown-3.10.1/markdown/extensions/tables.py 2026-01-21
19:09:10.000000000 +0100
@@ -6,7 +6,7 @@
# See https://Python-Markdown.github.io/extensions/tables
# for documentation.
-# Original code Copyright 2009 [Waylan Limberg](http://achinghead.com)
+# Original code Copyright 2009 [Waylan Limberg](https://github.com/waylan)
# All changes Copyright 2008-2014 The Python Markdown Project
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/markdown-3.10/markdown/extensions/wikilinks.py
new/markdown-3.10.1/markdown/extensions/wikilinks.py
--- old/markdown-3.10/markdown/extensions/wikilinks.py 2025-11-03
20:50:58.000000000 +0100
+++ new/markdown-3.10.1/markdown/extensions/wikilinks.py 2026-01-21
19:09:10.000000000 +0100
@@ -6,7 +6,7 @@
# See https://Python-Markdown.github.io/extensions/wikilinks
# for documentation.
-# Original code Copyright [Waylan Limberg](http://achinghead.com/).
+# Original code Copyright [Waylan Limberg](https://github.com/waylan).
# All changes Copyright The Python Markdown Project
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/markdown-3.10/markdown/htmlparser.py
new/markdown-3.10.1/markdown/htmlparser.py
--- old/markdown-3.10/markdown/htmlparser.py 2025-11-03 20:50:58.000000000
+0100
+++ new/markdown-3.10.1/markdown/htmlparser.py 2026-01-21 19:09:10.000000000
+0100
@@ -111,6 +111,7 @@
self.lineno_start_cache = [0]
self.override_comment_update = False
+ self.override_comment_start = 0
# This calls self.reset
super().__init__(*args, **kwargs)
@@ -124,6 +125,8 @@
self._cache: list[str] = []
self.cleandoc: list[str] = []
self.lineno_start_cache = [0]
+ self.override_comment_start = 0
+ self.override_comment_update = False
super().reset()
@@ -273,9 +276,11 @@
def handle_comment(self, data: str):
# Check if the comment is unclosed, if so, we need to override position
- i = self.line_offset + self.offset + len(data) + 4
- if self.rawdata[i:i + 3] != '-->':
+ j = len(self.rawdata) - len(data)
+ i = j - 2
+ if self.rawdata[i:j] == '</':
self.handle_data('<')
+ self.override_comment_start = i
self.override_comment_update = True
return
self.handle_empty_tag('<!--{}-->'.format(data), is_block=True)
@@ -283,8 +288,8 @@
def updatepos(self, i: int, j: int) -> int:
if self.override_comment_update:
self.override_comment_update = False
- i = 0
- j = 1
+ i = self.override_comment_start
+ j = self.override_comment_start + 1
return super().updatepos(i, j)
def handle_decl(self, data: str):
@@ -305,21 +310,19 @@
self.handle_data('<?')
return i + 2
- if not hasattr(htmlparser, 'commentabruptclose'):
- # Internal -- parse comment, return length or -1 if not terminated
- # see
https://html.spec.whatwg.org/multipage/parsing.html#comment-start-state
- def parse_comment(self, i, report=True):
- rawdata = self.rawdata
- assert rawdata.startswith('<!--', i), 'unexpected call to
parse_comment()'
- match = commentclose.search(rawdata, i+4)
- if not match:
- match = commentabruptclose.match(rawdata, i+4)
- if not match:
- return -1
- if report:
- j = match.start()
- self.handle_comment(rawdata[i+4: j])
- return match.end()
+ # Internal -- parse comment, return length or -1 if not terminated
+ # see
https://html.spec.whatwg.org/multipage/parsing.html#comment-start-state
+ def parse_comment(self, i, report=True):
+ rawdata = self.rawdata
+ assert rawdata.startswith('<!--', i), 'unexpected call to
parse_comment()'
+ match = commentclose.search(rawdata, i+4)
+ if not match:
+ self.handle_data('<')
+ return i + 1
+ if report:
+ j = match.start()
+ self.handle_comment(rawdata[i+4: j])
+ return match.end()
def parse_html_declaration(self, i: int) -> int:
if self.at_line_start() or self.intail:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/markdown-3.10/markdown/inlinepatterns.py
new/markdown-3.10.1/markdown/inlinepatterns.py
--- old/markdown-3.10/markdown/inlinepatterns.py 2025-11-03
20:50:58.000000000 +0100
+++ new/markdown-3.10.1/markdown/inlinepatterns.py 2026-01-21
19:09:10.000000000 +0100
@@ -520,7 +520,8 @@
value = stash.get(id)
if value is not None:
try:
- return self.md.serializer(value)
+ # Ensure we don't have a placeholder inside a placeholder
+ return self.unescape(self.md.serializer(value))
except Exception:
return r'\%s' % value
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/markdown-3.10/mkdocs.yml
new/markdown-3.10.1/mkdocs.yml
--- old/markdown-3.10/mkdocs.yml 2025-11-03 20:50:58.000000000 +0100
+++ new/markdown-3.10.1/mkdocs.yml 2026-01-21 19:09:10.000000000 +0100
@@ -81,7 +81,7 @@
custom_templates: docs/templates
handlers:
python:
- import:
+ inventories:
- https://docs.python.org/3/objects.inv
options:
annotations_path: brief
@@ -113,7 +113,8 @@
show_symbol_type_toc: false
signature_crossrefs: false
summary: true
- source:
- repo: https://github.com/Python-Markdown/markdown
- tag: !!python/name:markdown.__version__
- title: "View source code on GitHub."
+ extra:
+ source:
+ repo: https://github.com/Python-Markdown/markdown
+ tag: !!python/name:markdown.__version__
+ title: "View source code on GitHub."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/markdown-3.10/pyproject.toml
new/markdown-3.10.1/pyproject.toml
--- old/markdown-3.10/pyproject.toml 2025-11-03 20:50:58.000000000 +0100
+++ new/markdown-3.10.1/pyproject.toml 2026-01-21 19:09:10.000000000 +0100
@@ -53,7 +53,7 @@
'mkdocs>=1.6',
'mkdocs-nature>=0.6',
'mdx_gh_links>=0.2',
- "mkdocstrings[python]",
+ "mkdocstrings[python]>=0.28.3",
"mkdocs-gen-files",
"mkdocs-section-index",
"mkdocs-literate-nav",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/markdown-3.10/tests/test_syntax/blocks/test_html_blocks.py
new/markdown-3.10.1/tests/test_syntax/blocks/test_html_blocks.py
--- old/markdown-3.10/tests/test_syntax/blocks/test_html_blocks.py
2025-11-03 20:50:58.000000000 +0100
+++ new/markdown-3.10.1/tests/test_syntax/blocks/test_html_blocks.py
2026-01-21 19:09:10.000000000 +0100
@@ -1684,3 +1684,25 @@
"""
)
)
+
+ def test_multiple_bogus_comments_no_hang(self):
+ """Test that multiple bogus comments (</` patterns) don't cause
infinite loop."""
+ self.assertMarkdownRenders(
+ '`</` and `</`',
+ '<p><code></</code> and <code></</code></p>'
+ )
+
+ def test_multiple_unclosed_comments_no_hang(self):
+ """Test that multiple unclosed comments don't cause infinite loop."""
+ self.assertMarkdownRenders(
+ '<!-- and <!--',
+ '<p><!-- and <!--</p>'
+ )
+
+ def test_no_hang_issue_1586(self):
+ """Test no hang condition for issue #1586."""
+
+ self.assertMarkdownRenders(
+ 'Test `<!--[if mso]>` and `<!--[if !mso]>`',
+ '<p>Test <code><!--[if mso]></code> and <code><!--[if
!mso]></code></p>'
+ )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/markdown-3.10/tests/test_syntax/inline/test_raw_html.py
new/markdown-3.10.1/tests/test_syntax/inline/test_raw_html.py
--- old/markdown-3.10/tests/test_syntax/inline/test_raw_html.py 2025-11-03
20:50:58.000000000 +0100
+++ new/markdown-3.10.1/tests/test_syntax/inline/test_raw_html.py
2026-01-21 19:09:10.000000000 +0100
@@ -34,3 +34,9 @@
def test_noname_tag(self):
self.assertMarkdownRenders('<span></></span>',
'<p><span></></span></p>')
+
+ def test_markdown_nested_in_inline_comment(self):
+ self.assertMarkdownRenders(
+ 'Example: <!-- [**Bold link**](http://example.com) -->',
+ '<p>Example: <!-- <a href="http://example.com"><strong>Bold
link</strong></a> --></p>'
+ )