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 2025-06-27 23:00:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-Markdown (Old)
 and      /work/SRC/openSUSE:Factory/.python-Markdown.new.7067 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-Markdown"

Fri Jun 27 23:00:19 2025 rev:52 rq:1288743 version:3.8.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-Markdown/python-Markdown.changes  
2025-06-20 16:48:43.446560807 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-Markdown.new.7067/python-Markdown.changes    
    2025-06-27 23:00:49.804080725 +0200
@@ -1,0 +2,9 @@
+Thu Jun 19 19:01:44 UTC 2025 - BenoƮt Monin <benoit.mo...@gmx.fr>
+
+- update to version 3.8.2:
+  * Fix codecs deprecation in Python 3.14.
+  * Fix issue with unclosed comment parsing in Python 3.14.
+  * Fix issue with unclosed declarations in Python 3.14.
+  * Fix issue with unclosed HTML tag <foo and Python 3.14.
+
+-------------------------------------------------------------------

Old:
----
  markdown-3.8.1.tar.gz

New:
----
  markdown-3.8.2.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-Markdown.spec ++++++
--- /var/tmp/diff_new_pack.xDdp2J/_old  2025-06-27 23:00:51.632156066 +0200
+++ /var/tmp/diff_new_pack.xDdp2J/_new  2025-06-27 23:00:51.636156231 +0200
@@ -27,7 +27,7 @@
 %bcond_with test
 %endif
 Name:           python-Markdown%{psuffix}
-Version:        3.8.1
+Version:        3.8.2
 Release:        0
 Summary:        Python implementation of Markdown
 License:        BSD-3-Clause

++++++ markdown-3.8.1.tar.gz -> markdown-3.8.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/markdown-3.8.1/Markdown.egg-info/PKG-INFO 
new/markdown-3.8.2/Markdown.egg-info/PKG-INFO
--- old/markdown-3.8.1/Markdown.egg-info/PKG-INFO       2025-06-18 
16:50:31.000000000 +0200
+++ new/markdown-3.8.2/Markdown.egg-info/PKG-INFO       2025-06-19 
19:12:34.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: Markdown
-Version: 3.8.1
+Version: 3.8.2
 Summary: Python implementation of John Gruber's Markdown.
 Author: Manfred Stienstra, Yuri Takhteyev
 Author-email: Waylan limberg <python.markd...@gmail.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/markdown-3.8.1/PKG-INFO new/markdown-3.8.2/PKG-INFO
--- old/markdown-3.8.1/PKG-INFO 2025-06-18 16:50:31.789539000 +0200
+++ new/markdown-3.8.2/PKG-INFO 2025-06-19 19:12:34.962509200 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: Markdown
-Version: 3.8.1
+Version: 3.8.2
 Summary: Python implementation of John Gruber's Markdown.
 Author: Manfred Stienstra, Yuri Takhteyev
 Author-email: Waylan limberg <python.markd...@gmail.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/markdown-3.8.1/docs/changelog.md 
new/markdown-3.8.2/docs/changelog.md
--- old/markdown-3.8.1/docs/changelog.md        2025-06-18 16:50:27.000000000 
+0200
+++ new/markdown-3.8.2/docs/changelog.md        2025-06-19 19:12:28.000000000 
+0200
@@ -6,9 +6,19 @@
 All notable changes to this project will be documented in this file.
 
 The format is based on [Keep a 
Changelog](https://keepachangelog.com/en/1.1.0/),
-and this project adheres to [Semantic 
Versioning](https://semver.org/spec/v2.0.0.html).
+and this project adheres to the
+[Python Version Specification]: 
https://packaging.python.org/en/latest/specifications/version-specifiers/.
 See the [Contributing Guide](contributing.md) for details.
 
+## [3.8.2] - 2025-06-19
+
+### Fixed
+
+* Fix `codecs` deprecation in Python 3.14.
+* Fix issue with unclosed comment parsing in Python 3.14.
+* Fix issue with unclosed declarations in Python 3.14.
+* Fix issue with unclosed HTML tag `<foo` and Python 3.14.
+
 ## [3.8.1] - 2025-06-18
 
 ### Fixed
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/markdown-3.8.1/docs/contributing.md 
new/markdown-3.8.2/docs/contributing.md
--- old/markdown-3.8.1/docs/contributing.md     2025-06-18 16:50:27.000000000 
+0200
+++ new/markdown-3.8.2/docs/contributing.md     2025-06-19 19:12:28.000000000 
+0200
@@ -23,7 +23,7 @@
 
 * Branch `master` should generally be stable and release-ready at all times.
 * Version branches should be used for bug-fixes back-ported to the most recent
-  PATCH release.
+  MICRO release.
 * No other branches should be created. Any other branches which exist are
   preserved for historical reasons only.
 
@@ -256,8 +256,8 @@
 maintainers.
 
 The current changelog should only document the changes for one MAJOR release 
and
-its various MINOR and PATCH releases (see [Versions](#versions) for an
-explanation of MAJOR, MINOR, and PATCH releases). Older versions from previous
+its various MINOR and MICRO releases (see [Versions](#versions) for an
+explanation of MAJOR, MINOR, and MICRO releases). Older versions from previous
 series of releases can be found in the archive at `docs/change_log/` and may
 follow a different format. Note that the archived changelogs are not in the 
site
 navigation and are only linked from the [Previous
@@ -416,22 +416,23 @@
 
 ## Versions
 
-Python-Markdown follows [Semantic Versioning] and uses the
-`MAJOR.MINOR.PATCH[.dev#|a#|b#|rc#]` format for identifying releases. The 
status
-of the `master` branch should always be identified in the `__version_info__`
-tuple defined in [`markdown/__meta__.py`][markdown/__meta__.py]. The contents 
of
-that tuple will automatically be converted into a normalized version which
-conforms to [PEP 440]. Each time the version is changed, the continuous
-integration server will run a test to ensure that the current version is in a
-valid normalized format.
+Python-Markdown follows the [Python Version Specification] (originally defined
+in [PEP 440]) and uses the `MAJOR.MINOR.MICRO[.dev#|a#|b#|rc#]` format for
+identifying releases. The status of the `master` branch should always be
+identified in the `__version_info__` tuple defined in[`markdown/__meta__.py`]
+[markdown/__meta__.py]. The contents of that tuple will automatically be
+converted into a normalized version string which conforms to the
+[Python Version Specification]. Each time the version is changed, the
+continuous integration server will run a test to ensure that the current
+version is in a valid normalized format.
 
 ### Version Status
 
 A MAJOR version is in development status when the MINOR version is `0`, the
-PATCH version is `0`, and the version includes a `dev` segment.
+MICRO version is `0`, and the version includes a `dev` segment.
 
 A MINOR version is in development status when the MINOR version is not `0`, the
-PATCH version is `0`, and the version includes a `dev` segment.
+MICRO version is `0`, and the version includes a `dev` segment.
 
 At all other times, the code is considered stable and release-ready.
 
@@ -446,7 +447,7 @@
 
 New features and backward incompatible changes may only be merged to the
 `master` branch when the MAJOR and/or MINOR version is in development status
-pursuant to [Semantic Versioning].
+pursuant to the [Python Version Specification].
 
 A separate commit to the `master` branch should be made to bump up the MAJOR
 and/or MINOR version and set development status. Only then will any pull
@@ -459,7 +460,7 @@
 be named with the most recently released MINOR version. For example, if the
 `master` branch is at `3.1.dev0` and the most recent MINOR release was `3.0.4`,
 then the version branch would be named `3.0` and any releases from that branch
-would increment the PATCH version only (`3.0.5`, `3.0.6`...).
+would increment the MICRO version only (`3.0.5`, `3.0.6`...).
 
 ## Release Process
 
@@ -474,24 +475,37 @@
 
 3. Update the version defined in 
[`markdown/__meta__.py`][markdown/__meta__.py].
 
-4. Build a local copy of the documentation, browse through the pages and
+4. Build a local copy of the documentation and browse through the pages to
    confirm that no obvious issues exist with the documentation.
 
-5. Create a pull request with a commit message in the following format:
+5. Create a pull request labeled `release`{ .label .release } with a commit
+   message in the following format:
 
         Bump version to X.X.X
 
+    !!! note 
+
+        For the checks to run properly the `release`{ .label .release } label
+        must be set on GitHub before creating the pull request. If the label
+        is added to the pull request later, additional changes will need to
+        be pushed to the pull request for the checks to acknowledge the
+        label.The relevant check verifies that the version defined in the
+        code matches the latest version in the changelog and that the
+        changelog no longer lists an `unreleased` entry. This check is
+        necessary to ensure deployment will not fail later. 
+
 6. After all checks have passed, merge the pull request.
 
-7. Create a git tag with the new version as the tag name and push to the
-   [Python-Markdown/markdown] repository. The new tag should trigger a GitHub
-   workflow which will automatically deploy the release to PyPI and update the
-   documentation.
+7. Create a git tag with the new version as the tag name (in the format X.X.X
+   with no prefixes or suffixes) and push to the [Python-Markdown/markdown] 
+   repository. The new tag should trigger a GitHub workflow which will
+   automatically deploy the release to PyPI and update the documentation.
 
     In the event that the deployment fails, the following steps can be taken to
     deploy manually:
 
-    - Deploy the release to [PyPI] with the command `make deploy`.
+    - Deploy the release to [PyPI] with the command `make deploy` (a valid
+      authentication token will need to be provided).
 
     - Deploy an update to the documentation using [MkDocs]. The following 
example
       assumes that local clones of the [Python-Markdown/markdown] and
@@ -504,7 +518,7 @@
 
 ## Issue and Pull Request Labels
 
-Below are the labels used to track and manages issues and pull requests. The
+Below are the labels used to track and manage issues and pull requests. The
 labels are loosely grouped by their purpose, but it is not necessary for every
 issue to have a label from every group, and an issue may have more than one
 label from the same group.
@@ -551,6 +565,10 @@
 | `approved`{ .label .approved }        | The pull request is ready to be 
merged.              |
 | `rejected`{ .label .rejected }        | The pull request is rejected for the 
stated reasons. |
 
+One additional label exists named `release`{ .label .release }. This label 
should only be
+assigned to pull requests which bump the version. See the [Release 
Process](#release-process)
+for details.
+
 [Python-Markdown Organization]: https://github.com/Python-Markdown
 [Python-Markdown Code of Conduct]: 
https://github.com/Python-Markdown/markdown/blob/master/CODE_OF_CONDUCT.md
 [Python-Markdown/markdown]: https://github.com/Python-Markdown/markdown
@@ -582,8 +600,8 @@
 [tox]: https://tox.readthedocs.io/en/latest/
 [aspell]: http://aspell.net/
 [test tools]: test_tools.md
-[Semantic Versioning]: https://semver.org/spec/v2.0.0.html
-[markdown/__meta__.py]: 
https://github.com/Python-Markdown/markdown/blob/master/markdown/__meta__.py#L29
+[Python Version Specification]: 
https://packaging.python.org/en/latest/specifications/version-specifiers/
+[markdown/__meta__.py]: 
https://github.com/Python-Markdown/markdown/blob/master/markdown/__meta__.py#L31
 [PEP 440]: https://www.python.org/dev/peps/pep-0440/
 [PyPI]: https://pypi.org/project/Markdown/
 [Python-Markdown/Python-Markdown.github.io]: 
https://github.com/Python-Markdown/Python-Markdown.github.io
@@ -596,41 +614,46 @@
         font-weight: 600;
         line-height: 15px;
         display: inline-block;
-        padding: 4px 6px;
+        padding: 0 8px;
+        margin: 4px 0;
+        border-radius: 999px;
     }
     code.bug {
-        background-color: #c45b46;
+        background-color: #c45b46 !important;
     }
     code.feature {
-        background-color: #7b17d8;
+        background-color: #7b17d8 !important;
         color: #ffffff;
     }
     code.support {
-        background-color: #efbe62;
+        background-color: #efbe62 !important;
     }
     code.process {
-        background-color: #eec9ff;
+        background-color: #eec9ff !important;
     }
     code.core {
-        background-color: #0b02e1;
+        background-color: #0b02e1 !important;
         color: #ffffff;
     }
     code.extension {
-        background-color: #709ad8;
+        background-color: #709ad8 !important;
     }
     code.docs {
-        background-color: #b2ffeb;
+        background-color: #b2ffeb !important;
     }
     code.approved {
-        background-color: #beed6d;
+        background-color: #beed6d !important;
     }
     code.low {
-        background-color: #dddddd;
+        background-color: #dddddd !important;
     }
     code.pending {
-        background-color: #f0f49a;
+        background-color: #f0f49a !important;
     }
     code.rejected {
-        background-color: #f7c7be;
+        background-color: #f7c7be !important;
+    }
+    code.release {
+        background-color: #d4c5f9 !important;
     }
 </style>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/markdown-3.8.1/markdown/__main__.py 
new/markdown-3.8.2/markdown/__main__.py
--- old/markdown-3.8.1/markdown/__main__.py     2025-06-18 16:50:27.000000000 
+0200
+++ new/markdown-3.8.2/markdown/__main__.py     2025-06-19 19:12:28.000000000 
+0200
@@ -21,7 +21,6 @@
 
 import sys
 import optparse
-import codecs
 import warnings
 import markdown
 try:
@@ -100,7 +99,7 @@
 
     extension_configs = {}
     if options.configfile:
-        with codecs.open(
+        with open(
             options.configfile, mode="r", encoding=options.encoding
         ) as fp:
             try:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/markdown-3.8.1/markdown/__meta__.py 
new/markdown-3.8.2/markdown/__meta__.py
--- old/markdown-3.8.1/markdown/__meta__.py     2025-06-18 16:50:27.000000000 
+0200
+++ new/markdown-3.8.2/markdown/__meta__.py     2025-06-19 19:12:28.000000000 
+0200
@@ -28,7 +28,7 @@
 from __future__ import annotations
 
 
-__version_info__ = (3, 8, 1, 'final', 0)
+__version_info__ = (3, 8, 2, 'final', 0)
 
 
 def _get_version(version_info):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/markdown-3.8.1/markdown/core.py 
new/markdown-3.8.2/markdown/core.py
--- old/markdown-3.8.1/markdown/core.py 2025-06-18 16:50:27.000000000 +0200
+++ new/markdown-3.8.2/markdown/core.py 2025-06-19 19:12:28.000000000 +0200
@@ -417,7 +417,7 @@
         # Read the source
         if input:
             if isinstance(input, str):
-                input_file = codecs.open(input, mode="r", encoding=encoding)
+                input_file = open(input, mode="r", encoding=encoding)
             else:
                 input_file = codecs.getreader(encoding)(input)
             text = input_file.read()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/markdown-3.8.1/markdown/extensions/md_in_html.py 
new/markdown-3.8.2/markdown/extensions/md_in_html.py
--- old/markdown-3.8.1/markdown/extensions/md_in_html.py        2025-06-18 
16:50:27.000000000 +0200
+++ new/markdown-3.8.2/markdown/extensions/md_in_html.py        2025-06-19 
19:12:28.000000000 +0200
@@ -283,7 +283,11 @@
             if self.rawdata[i:i+3] == '<![' and not self.rawdata[i:i+9] == 
'<![CDATA[':
                 # We have encountered the bug in #1534 (Python bug `gh-77057`).
                 # Provide an override until we drop support for Python < 3.13.
-                return self.parse_bogus_comment(i)
+                result = self.parse_bogus_comment(i)
+                if result == -1:
+                    self.handle_data(self.rawdata[i:i + 1])
+                    return i + 1
+                return result
             # The same override exists in `HTMLExtractor` without the check
             # for `mdstack`. Therefore, use parent of `HTMLExtractor` instead.
             return super(HTMLExtractor, self).parse_html_declaration(i)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/markdown-3.8.1/markdown/htmlparser.py 
new/markdown-3.8.2/markdown/htmlparser.py
--- old/markdown-3.8.1/markdown/htmlparser.py   2025-06-18 16:50:27.000000000 
+0200
+++ new/markdown-3.8.2/markdown/htmlparser.py   2025-06-19 19:12:28.000000000 
+0200
@@ -93,6 +93,8 @@
 
         self.lineno_start_cache = [0]
 
+        self.override_comment_update = False
+
         # This calls self.reset
         super().__init__(*args, **kwargs)
         self.md = md
@@ -253,8 +255,21 @@
         self.handle_empty_tag('&{};'.format(name), is_block=False)
 
     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] != '-->':
+            self.handle_data('<')
+            self.override_comment_update = True
+            return
         self.handle_empty_tag('<!--{}-->'.format(data), is_block=True)
 
+    def updatepos(self, i: int, j: int) -> int:
+        if self.override_comment_update:
+            self.override_comment_update = False
+            i = 0
+            j = 1
+        return super().updatepos(i, j)
+
     def handle_decl(self, data: str):
         self.handle_empty_tag('<!{}>'.format(data), is_block=True)
 
@@ -278,7 +293,11 @@
             if self.rawdata[i:i+3] == '<![' and not self.rawdata[i:i+9] == 
'<![CDATA[':
                 # We have encountered the bug in #1534 (Python bug `gh-77057`).
                 # Provide an override until we drop support for Python < 3.13.
-                return self.parse_bogus_comment(i)
+                result = self.parse_bogus_comment(i)
+                if result == -1:
+                    self.handle_data(self.rawdata[i:i + 1])
+                    return i + 1
+                return result
             return super().parse_html_declaration(i)
         # This is not the beginning of a raw block so treat as plain data
         # and avoid consuming any tags which may follow (see #1066).
@@ -313,7 +332,8 @@
         self.__starttag_text = None
         endpos = self.check_for_whole_start_tag(i)
         if endpos < 0:
-            return endpos
+            self.handle_data(self.rawdata[i:i + 1])
+            return i + 1
         rawdata = self.rawdata
         self.__starttag_text = rawdata[i:endpos]
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/markdown-3.8.1/tox.ini new/markdown-3.8.2/tox.ini
--- old/markdown-3.8.1/tox.ini  2025-06-18 16:50:27.000000000 +0200
+++ new/markdown-3.8.2/tox.ini  2025-06-19 19:12:28.000000000 +0200
@@ -1,5 +1,5 @@
 [tox]
-envlist = py{39, 310, 311, 312, 313}, pypy{39, 310}, pygments, flake8, 
checkspelling, pep517check, checklinks
+envlist = py{39, 310, 311, 312, 313, py314}, pypy{39, 310}, pygments, flake8, 
checkspelling, pep517check, checklinks
 isolated_build = True
 
 [testenv]

Reply via email to