Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-MarkupSafe for 
openSUSE:Factory checked in at 2022-03-29 18:14:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-MarkupSafe (Old)
 and      /work/SRC/openSUSE:Factory/.python-MarkupSafe.new.1900 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-MarkupSafe"

Tue Mar 29 18:14:15 2022 rev:23 rq:965250 version:2.1.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-MarkupSafe/python-MarkupSafe.changes      
2021-07-10 22:53:32.704201903 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-MarkupSafe.new.1900/python-MarkupSafe.changes
    2022-03-29 18:14:29.443076915 +0200
@@ -1,0 +2,18 @@
+Fri Mar 18 22:31:50 UTC 2022 - Arun Persaud <a...@gmx.de>
+
+- specfile:
+  * update copyright year
+  * require python >= 3.7
+
+- update to version 2.1.1:
+  * Avoid ambiguous regex matches in "striptags". :pr:`293`
+
+- changes from version 2.1.0:
+  * Drop support for Python 3.6. :pr:`262`
+  * Remove "soft_unicode", which was previously deprecated. Use
+      "soft_str" instead. :pr:`261`
+  * Raise error on missing single placeholder during string
+      interpolation. :issue:`225`
+  * Disable speedups module for GraalPython. :issue:`277`
+
+-------------------------------------------------------------------

Old:
----
  MarkupSafe-2.0.1.tar.gz

New:
----
  MarkupSafe-2.1.1.tar.gz

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

Other differences:
------------------
++++++ python-MarkupSafe.spec ++++++
--- /var/tmp/diff_new_pack.KNPkYm/_old  2022-03-29 18:14:29.939077371 +0200
+++ /var/tmp/diff_new_pack.KNPkYm/_new  2022-03-29 18:14:29.943077375 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-MarkupSafe
 #
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2022 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,30 +16,30 @@
 #
 
 
-%bcond_without test
 %define oldpython python
 %define skip_python2 1
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
+%bcond_without test
 Name:           python-MarkupSafe
-Version:        2.0.1
+Version:        2.1.1
 Release:        0
-URL:            https://github.com/pallets/markupsafe
 Summary:        Implements a XML/HTML/XHTML Markup safe string for Python
 License:        BSD-3-Clause
 Group:          Development/Languages/Python
+URL:            https://github.com/pallets/markupsafe
 Source:         
https://files.pythonhosted.org/packages/source/M/MarkupSafe/MarkupSafe-%{version}.tar.gz
 BuildRequires:  %{python_module devel}
-%if %{with test}
-BuildRequires:  %{python_module pytest}
-%endif
 BuildRequires:  %{python_module setuptools}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
+Requires:       python-base >= 3.7
+%if %{with test}
+BuildRequires:  %{python_module pytest}
+%endif
 %ifpython2
 Provides:       %{oldpython}-markupsafe = %{version}
 Obsoletes:      %{oldpython}-markupsafe < %{version}
 %endif
-
 %python_subpackages
 
 %description
@@ -60,7 +60,7 @@
 
 %if %{with test}
 %check
-%python_expand PYTHONPATH=%{buildroot}%{$python_sitearch} $python -m pytest
+%pytest_arch
 %endif
 
 %files %{python_files}

++++++ MarkupSafe-2.0.1.tar.gz -> MarkupSafe-2.1.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MarkupSafe-2.0.1/CHANGES.rst 
new/MarkupSafe-2.1.1/CHANGES.rst
--- old/MarkupSafe-2.0.1/CHANGES.rst    2021-05-18 19:03:18.000000000 +0200
+++ new/MarkupSafe-2.1.1/CHANGES.rst    2022-03-14 17:53:29.000000000 +0100
@@ -1,3 +1,24 @@
+Version 2.1.1
+-------------
+
+Released 2022-03-14
+
+-   Avoid ambiguous regex matches in ``striptags``. :pr:`293`
+
+
+Version 2.1.0
+-------------
+
+Released 2022-02-17
+
+-   Drop support for Python 3.6. :pr:`262`
+-   Remove ``soft_unicode``, which was previously deprecated. Use
+    ``soft_str`` instead. :pr:`261`
+-   Raise error on missing single placeholder during string
+    interpolation. :issue:`225`
+-   Disable speedups module for GraalPython. :issue:`277`
+
+
 Version 2.0.1
 -------------
 
@@ -37,7 +58,7 @@
 -   Build wheels for Linux, Mac, and Windows, allowing systems without
     a compiler to take advantage of the C extension speedups. :pr:`104`
 -   Use newer CPython API on Python 3, resulting in a 1.5x speedup.
-    :pr`64`
+    :pr:`64`
 -   ``escape`` wraps ``__html__`` result in ``Markup``, consistent with
     documented behavior. :pr:`69`
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MarkupSafe-2.0.1/PKG-INFO 
new/MarkupSafe-2.1.1/PKG-INFO
--- old/MarkupSafe-2.0.1/PKG-INFO       2021-05-18 19:04:31.574849400 +0200
+++ new/MarkupSafe-2.1.1/PKG-INFO       2022-03-15 14:06:38.150444500 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: MarkupSafe
-Version: 2.0.1
+Version: 2.1.1
 Summary: Safely add untrusted strings to HTML/XML markup.
 Home-page: https://palletsprojects.com/p/markupsafe/
 Author: Armin Ronacher
@@ -15,76 +15,6 @@
 Project-URL: Issue Tracker, https://github.com/pallets/markupsafe/issues/
 Project-URL: Twitter, https://twitter.com/PalletsTeam
 Project-URL: Chat, https://discord.gg/pallets
-Description: MarkupSafe
-        ==========
-        
-        MarkupSafe implements a text object that escapes characters so it is
-        safe to use in HTML and XML. Characters that have special meanings are
-        replaced so that they display as the actual characters. This mitigates
-        injection attacks, meaning untrusted user input can safely be displayed
-        on a page.
-        
-        
-        Installing
-        ----------
-        
-        Install and update using `pip`_:
-        
-        .. code-block:: text
-        
-            pip install -U MarkupSafe
-        
-        .. _pip: https://pip.pypa.io/en/stable/quickstart/
-        
-        
-        Examples
-        --------
-        
-        .. code-block:: pycon
-        
-            >>> from markupsafe import Markup, escape
-        
-            >>> # escape replaces special characters and wraps in Markup
-            >>> escape("<script>alert(document.cookie);</script>")
-            Markup('&lt;script&gt;alert(document.cookie);&lt;/script&gt;')
-        
-            >>> # wrap in Markup to mark text "safe" and prevent escaping
-            >>> Markup("<strong>Hello</strong>")
-            Markup('<strong>hello</strong>')
-        
-            >>> escape(Markup("<strong>Hello</strong>"))
-            Markup('<strong>hello</strong>')
-        
-            >>> # Markup is a str subclass
-            >>> # methods and operators escape their arguments
-            >>> template = Markup("Hello <em>{name}</em>")
-            >>> template.format(name='"World"')
-            Markup('Hello <em>&#34;World&#34;</em>')
-        
-        
-        Donate
-        ------
-        
-        The Pallets organization develops and supports MarkupSafe and other
-        popular packages. In order to grow the community of contributors and
-        users, and allow the maintainers to devote more time to the projects,
-        `please donate today`_.
-        
-        .. _please donate today: https://palletsprojects.com/donate
-        
-        
-        Links
-        -----
-        
-        -   Documentation: https://markupsafe.palletsprojects.com/
-        -   Changes: https://markupsafe.palletsprojects.com/changes/
-        -   PyPI Releases: https://pypi.org/project/MarkupSafe/
-        -   Source Code: https://github.com/pallets/markupsafe/
-        -   Issue Tracker: https://github.com/pallets/markupsafe/issues/
-        -   Website: https://palletsprojects.com/p/markupsafe/
-        -   Twitter: https://twitter.com/PalletsTeam
-        -   Chat: https://discord.gg/pallets
-        
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
 Classifier: Environment :: Web Environment
@@ -94,5 +24,78 @@
 Classifier: Programming Language :: Python
 Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
 Classifier: Topic :: Text Processing :: Markup :: HTML
-Requires-Python: >=3.6
+Requires-Python: >=3.7
 Description-Content-Type: text/x-rst
+License-File: LICENSE.rst
+
+MarkupSafe
+==========
+
+MarkupSafe implements a text object that escapes characters so it is
+safe to use in HTML and XML. Characters that have special meanings are
+replaced so that they display as the actual characters. This mitigates
+injection attacks, meaning untrusted user input can safely be displayed
+on a page.
+
+
+Installing
+----------
+
+Install and update using `pip`_:
+
+.. code-block:: text
+
+    pip install -U MarkupSafe
+
+.. _pip: https://pip.pypa.io/en/stable/getting-started/
+
+
+Examples
+--------
+
+.. code-block:: pycon
+
+    >>> from markupsafe import Markup, escape
+
+    >>> # escape replaces special characters and wraps in Markup
+    >>> escape("<script>alert(document.cookie);</script>")
+    Markup('&lt;script&gt;alert(document.cookie);&lt;/script&gt;')
+
+    >>> # wrap in Markup to mark text "safe" and prevent escaping
+    >>> Markup("<strong>Hello</strong>")
+    Markup('<strong>hello</strong>')
+
+    >>> escape(Markup("<strong>Hello</strong>"))
+    Markup('<strong>hello</strong>')
+
+    >>> # Markup is a str subclass
+    >>> # methods and operators escape their arguments
+    >>> template = Markup("Hello <em>{name}</em>")
+    >>> template.format(name='"World"')
+    Markup('Hello <em>&#34;World&#34;</em>')
+
+
+Donate
+------
+
+The Pallets organization develops and supports MarkupSafe and other
+popular packages. In order to grow the community of contributors and
+users, and allow the maintainers to devote more time to the projects,
+`please donate today`_.
+
+.. _please donate today: https://palletsprojects.com/donate
+
+
+Links
+-----
+
+-   Documentation: https://markupsafe.palletsprojects.com/
+-   Changes: https://markupsafe.palletsprojects.com/changes/
+-   PyPI Releases: https://pypi.org/project/MarkupSafe/
+-   Source Code: https://github.com/pallets/markupsafe/
+-   Issue Tracker: https://github.com/pallets/markupsafe/issues/
+-   Website: https://palletsprojects.com/p/markupsafe/
+-   Twitter: https://twitter.com/PalletsTeam
+-   Chat: https://discord.gg/pallets
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MarkupSafe-2.0.1/README.rst 
new/MarkupSafe-2.1.1/README.rst
--- old/MarkupSafe-2.0.1/README.rst     2021-02-24 21:55:18.000000000 +0100
+++ new/MarkupSafe-2.1.1/README.rst     2021-10-22 19:43:18.000000000 +0200
@@ -17,7 +17,7 @@
 
     pip install -U MarkupSafe
 
-.. _pip: https://pip.pypa.io/en/stable/quickstart/
+.. _pip: https://pip.pypa.io/en/stable/getting-started/
 
 
 Examples
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MarkupSafe-2.0.1/docs/conf.py 
new/MarkupSafe-2.1.1/docs/conf.py
--- old/MarkupSafe-2.0.1/docs/conf.py   2021-04-16 17:03:02.000000000 +0200
+++ new/MarkupSafe-2.1.1/docs/conf.py   2021-10-22 19:43:18.000000000 +0200
@@ -38,10 +38,10 @@
     ]
 }
 html_sidebars = {
-    "index": ["project.html", "localtoc.html", "searchbox.html"],
-    "**": ["localtoc.html", "relations.html", "searchbox.html"],
+    "index": ["project.html", "localtoc.html", "searchbox.html", 
"ethicalads.html"],
+    "**": ["localtoc.html", "relations.html", "searchbox.html", 
"ethicalads.html"],
 }
-singlehtml_sidebars = {"index": ["project.html", "localtoc.html"]}
+singlehtml_sidebars = {"index": ["project.html", "localtoc.html", 
"ethicalads.html"]}
 html_title = f"MarkupSafe Documentation ({version})"
 html_show_sourcelink = False
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MarkupSafe-2.0.1/requirements/dev.txt 
new/MarkupSafe-2.1.1/requirements/dev.txt
--- old/MarkupSafe-2.0.1/requirements/dev.txt   2021-05-12 00:33:53.000000000 
+0200
+++ new/MarkupSafe-2.1.1/requirements/dev.txt   2022-02-16 20:02:27.000000000 
+0100
@@ -1,131 +1,59 @@
+# SHA1:54b5b77ec8c7a0064ffa93b2fd16cb0130ba177c
 #
-# This file is autogenerated by pip-compile
+# This file is autogenerated by pip-compile-multi
 # To update, run:
 #
-#    pip-compile requirements/dev.in
+#    pip-compile-multi
 #
-alabaster==0.7.12
-    # via sphinx
-appdirs==1.4.4
-    # via virtualenv
-attrs==21.2.0
-    # via pytest
-babel==2.9.1
-    # via sphinx
-certifi==2020.12.5
-    # via requests
-cfgv==3.2.0
+-r docs.txt
+-r tests.txt
+-r typing.txt
+cfgv==3.3.1
     # via pre-commit
-chardet==4.0.0
-    # via requests
-click==8.0.0
-    # via pip-tools
-distlib==0.3.1
+click==8.0.3
+    # via
+    #   pip-compile-multi
+    #   pip-tools
+distlib==0.3.4
     # via virtualenv
-docutils==0.17.1
-    # via sphinx
-filelock==3.0.12
+filelock==3.5.1
     # via
     #   tox
     #   virtualenv
-identify==2.2.4
+identify==2.4.10
     # via pre-commit
-idna==2.10
-    # via requests
-imagesize==1.2.0
-    # via sphinx
-iniconfig==1.1.1
-    # via pytest
-jinja2==3.0.0
-    # via sphinx
-markupsafe==2.0.0
-    # via jinja2
-mypy-extensions==0.4.3
-    # via mypy
-mypy==0.812
-    # via -r requirements/typing.in
 nodeenv==1.6.0
     # via pre-commit
-packaging==20.9
-    # via
-    #   pallets-sphinx-themes
-    #   pytest
-    #   sphinx
-    #   tox
-pallets-sphinx-themes==2.0.0
-    # via -r requirements/docs.in
-pep517==0.10.0
+pep517==0.12.0
     # via pip-tools
-pip-tools==6.1.0
+pip-compile-multi==2.4.3
     # via -r requirements/dev.in
-pluggy==0.13.1
-    # via
-    #   pytest
-    #   tox
-pre-commit==2.12.1
+pip-tools==6.5.1
+    # via pip-compile-multi
+platformdirs==2.5.0
+    # via virtualenv
+pre-commit==2.17.0
     # via -r requirements/dev.in
-py==1.10.0
-    # via
-    #   pytest
-    #   tox
-pygments==2.9.0
-    # via sphinx
-pyparsing==2.4.7
-    # via packaging
-pytest==6.2.4
-    # via -r requirements/tests.in
-pytz==2021.1
-    # via babel
-pyyaml==5.4.1
+pyyaml==6.0
     # via pre-commit
-requests==2.25.1
-    # via sphinx
 six==1.16.0
     # via
     #   tox
     #   virtualenv
-snowballstemmer==2.1.0
-    # via sphinx
-sphinx-issues==1.2.0
-    # via -r requirements/docs.in
-git+https://github.com/sphinx-doc/sphinx.git@96dbe5e3
-    # via
-    #   -r requirements/docs.in
-    #   pallets-sphinx-themes
-    #   sphinx-issues
-    #   sphinxcontrib-log-cabinet
-sphinxcontrib-applehelp==1.0.2
-    # via sphinx
-sphinxcontrib-devhelp==1.0.2
-    # via sphinx
-sphinxcontrib-htmlhelp==1.0.3
-    # via sphinx
-sphinxcontrib-jsmath==1.0.1
-    # via sphinx
-sphinxcontrib-log-cabinet==1.0.1
-    # via -r requirements/docs.in
-sphinxcontrib-qthelp==1.0.3
-    # via sphinx
-sphinxcontrib-serializinghtml==1.1.4
-    # via sphinx
 toml==0.10.2
     # via
-    #   pep517
     #   pre-commit
-    #   pytest
     #   tox
-tox==3.23.1
+toposort==1.7
+    # via pip-compile-multi
+tox==3.24.5
     # via -r requirements/dev.in
-typed-ast==1.4.3
-    # via mypy
-typing-extensions==3.10.0.0
-    # via mypy
-urllib3==1.26.4
-    # via requests
-virtualenv==20.4.6
+virtualenv==20.13.1
     # via
     #   pre-commit
     #   tox
+wheel==0.37.1
+    # via pip-tools
 
 # The following packages are considered to be unsafe in a requirements file:
 # pip
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MarkupSafe-2.0.1/requirements/docs.txt 
new/MarkupSafe-2.1.1/requirements/docs.txt
--- old/MarkupSafe-2.0.1/requirements/docs.txt  2021-05-12 00:33:53.000000000 
+0200
+++ new/MarkupSafe-2.1.1/requirements/docs.txt  2022-02-16 20:02:22.000000000 
+0100
@@ -1,56 +1,57 @@
+# SHA1:45c590f97fe95b8bdc755eef796e91adf5fbe4ea
 #
-# This file is autogenerated by pip-compile
+# This file is autogenerated by pip-compile-multi
 # To update, run:
 #
-#    pip-compile requirements/docs.in
+#    pip-compile-multi
 #
 alabaster==0.7.12
     # via sphinx
 babel==2.9.1
     # via sphinx
-certifi==2020.12.5
+certifi==2021.10.8
     # via requests
-chardet==4.0.0
+charset-normalizer==2.0.12
     # via requests
 docutils==0.17.1
     # via sphinx
-idna==2.10
+idna==3.3
     # via requests
-imagesize==1.2.0
+imagesize==1.3.0
     # via sphinx
-jinja2==3.0.0
+jinja2==3.0.3
     # via sphinx
-markupsafe==2.0.0
+markupsafe==2.0.1
     # via jinja2
-packaging==20.9
+packaging==21.3
     # via
     #   pallets-sphinx-themes
     #   sphinx
-pallets-sphinx-themes==2.0.0
+pallets-sphinx-themes==2.0.2
     # via -r requirements/docs.in
-pygments==2.9.0
+pygments==2.11.2
     # via sphinx
-pyparsing==2.4.7
+pyparsing==3.0.7
     # via packaging
-pytz==2021.1
+pytz==2021.3
     # via babel
-requests==2.25.1
+requests==2.27.1
     # via sphinx
-snowballstemmer==2.1.0
+snowballstemmer==2.2.0
     # via sphinx
-sphinx-issues==1.2.0
-    # via -r requirements/docs.in
-git+https://github.com/sphinx-doc/sphinx.git@96dbe5e3
+sphinx==4.4.0
     # via
     #   -r requirements/docs.in
     #   pallets-sphinx-themes
     #   sphinx-issues
     #   sphinxcontrib-log-cabinet
+sphinx-issues==3.0.1
+    # via -r requirements/docs.in
 sphinxcontrib-applehelp==1.0.2
     # via sphinx
 sphinxcontrib-devhelp==1.0.2
     # via sphinx
-sphinxcontrib-htmlhelp==1.0.3
+sphinxcontrib-htmlhelp==2.0.0
     # via sphinx
 sphinxcontrib-jsmath==1.0.1
     # via sphinx
@@ -58,10 +59,7 @@
     # via -r requirements/docs.in
 sphinxcontrib-qthelp==1.0.3
     # via sphinx
-sphinxcontrib-serializinghtml==1.1.4
+sphinxcontrib-serializinghtml==1.1.5
     # via sphinx
-urllib3==1.26.4
+urllib3==1.26.8
     # via requests
-
-# The following packages are considered to be unsafe in a requirements file:
-# setuptools
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MarkupSafe-2.0.1/requirements/tests.txt 
new/MarkupSafe-2.1.1/requirements/tests.txt
--- old/MarkupSafe-2.0.1/requirements/tests.txt 2021-05-11 21:32:42.000000000 
+0200
+++ new/MarkupSafe-2.1.1/requirements/tests.txt 2022-02-16 20:02:23.000000000 
+0100
@@ -1,22 +1,23 @@
+# SHA1:0eaa389e1fdb3a1917c0f987514bd561be5718ee
 #
-# This file is autogenerated by pip-compile
+# This file is autogenerated by pip-compile-multi
 # To update, run:
 #
-#    pip-compile requirements/tests.in
+#    pip-compile-multi
 #
-attrs==21.2.0
+attrs==21.4.0
     # via pytest
 iniconfig==1.1.1
     # via pytest
-packaging==20.9
+packaging==21.3
     # via pytest
-pluggy==0.13.1
+pluggy==1.0.0
     # via pytest
-py==1.10.0
+py==1.11.0
     # via pytest
-pyparsing==2.4.7
+pyparsing==3.0.7
     # via packaging
-pytest==6.2.4
+pytest==7.0.1
     # via -r requirements/tests.in
-toml==0.10.2
+tomli==2.0.1
     # via pytest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MarkupSafe-2.0.1/requirements/typing.txt 
new/MarkupSafe-2.1.1/requirements/typing.txt
--- old/MarkupSafe-2.0.1/requirements/typing.txt        2021-05-11 
21:32:42.000000000 +0200
+++ new/MarkupSafe-2.1.1/requirements/typing.txt        2022-02-16 
20:02:24.000000000 +0100
@@ -1,14 +1,15 @@
+# SHA1:7983aaa01d64547827c20395d77e248c41b2572f
 #
-# This file is autogenerated by pip-compile
+# This file is autogenerated by pip-compile-multi
 # To update, run:
 #
-#    pip-compile requirements/typing.in
+#    pip-compile-multi
 #
+mypy==0.931
+    # via -r requirements/typing.in
 mypy-extensions==0.4.3
     # via mypy
-mypy==0.812
-    # via -r requirements/typing.in
-typed-ast==1.4.3
+tomli==2.0.1
     # via mypy
-typing-extensions==3.10.0.0
+typing-extensions==4.1.1
     # via mypy
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MarkupSafe-2.0.1/setup.cfg 
new/MarkupSafe-2.1.1/setup.cfg
--- old/MarkupSafe-2.0.1/setup.cfg      2021-05-18 19:04:31.574849400 +0200
+++ new/MarkupSafe-2.1.1/setup.cfg      2022-03-15 14:06:38.150444500 +0100
@@ -32,8 +32,8 @@
 [options]
 packages = find:
 package_dir = = src
-include_package_data = true
-python_requires = >= 3.6
+include_package_data = True
+python_requires = >= 3.7
 
 [options.packages.find]
 where = src
@@ -44,7 +44,7 @@
        error
 
 [coverage:run]
-branch = true
+branch = True
 source = 
        markupsafe
        tests
@@ -55,7 +55,7 @@
        */site-packages
 
 [flake8]
-select = B, E, F, W, B9
+select = B, E, F, W, B9, ISC
 ignore = 
        E203
        E501
@@ -65,7 +65,8 @@
 
 [mypy]
 files = src/markupsafe
-python_version = 3.6
+python_version = 3.7
+show_error_codes = True
 disallow_subclassing_any = True
 disallow_untyped_calls = True
 disallow_untyped_defs = True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MarkupSafe-2.0.1/setup.py 
new/MarkupSafe-2.1.1/setup.py
--- old/MarkupSafe-2.0.1/setup.py       2021-02-15 16:28:50.000000000 +0100
+++ new/MarkupSafe-2.1.1/setup.py       2022-02-16 19:46:40.000000000 +0100
@@ -1,10 +1,10 @@
 import os
 import platform
 import sys
+
 from distutils.errors import CCompilerError
 from distutils.errors import DistutilsExecError
 from distutils.errors import DistutilsPlatformError
-
 from setuptools import Extension
 from setuptools import setup
 from setuptools.command.build_ext import build_ext
@@ -22,18 +22,18 @@
     def run(self):
         try:
             build_ext.run(self)
-        except DistutilsPlatformError:
-            raise BuildFailed()
+        except DistutilsPlatformError as e:
+            raise BuildFailed() from e
 
     def build_extension(self, ext):
         try:
             build_ext.build_extension(self, ext)
-        except (CCompilerError, DistutilsExecError, DistutilsPlatformError):
-            raise BuildFailed()
-        except ValueError:
+        except (CCompilerError, DistutilsExecError, DistutilsPlatformError) as 
e:
+            raise BuildFailed() from e
+        except ValueError as e:
             # this can happen on Windows 64 bit, see Python issue 7511
             if "'path'" in str(sys.exc_info()[1]):  # works with Python 2 and 3
-                raise BuildFailed()
+                raise BuildFailed() from e
             raise
 
 
@@ -52,7 +52,11 @@
     print("=" * 74)
 
 
-supports_speedups = platform.python_implementation() not in {"PyPy", "Jython"}
+supports_speedups = platform.python_implementation() not in {
+    "PyPy",
+    "Jython",
+    "GraalVM",
+}
 
 if os.environ.get("CIBUILDWHEEL", "0") == "1" and supports_speedups:
     run_setup(True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MarkupSafe-2.0.1/src/MarkupSafe.egg-info/PKG-INFO 
new/MarkupSafe-2.1.1/src/MarkupSafe.egg-info/PKG-INFO
--- old/MarkupSafe-2.0.1/src/MarkupSafe.egg-info/PKG-INFO       2021-05-18 
19:04:31.000000000 +0200
+++ new/MarkupSafe-2.1.1/src/MarkupSafe.egg-info/PKG-INFO       2022-03-15 
14:06:38.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: MarkupSafe
-Version: 2.0.1
+Version: 2.1.1
 Summary: Safely add untrusted strings to HTML/XML markup.
 Home-page: https://palletsprojects.com/p/markupsafe/
 Author: Armin Ronacher
@@ -15,76 +15,6 @@
 Project-URL: Issue Tracker, https://github.com/pallets/markupsafe/issues/
 Project-URL: Twitter, https://twitter.com/PalletsTeam
 Project-URL: Chat, https://discord.gg/pallets
-Description: MarkupSafe
-        ==========
-        
-        MarkupSafe implements a text object that escapes characters so it is
-        safe to use in HTML and XML. Characters that have special meanings are
-        replaced so that they display as the actual characters. This mitigates
-        injection attacks, meaning untrusted user input can safely be displayed
-        on a page.
-        
-        
-        Installing
-        ----------
-        
-        Install and update using `pip`_:
-        
-        .. code-block:: text
-        
-            pip install -U MarkupSafe
-        
-        .. _pip: https://pip.pypa.io/en/stable/quickstart/
-        
-        
-        Examples
-        --------
-        
-        .. code-block:: pycon
-        
-            >>> from markupsafe import Markup, escape
-        
-            >>> # escape replaces special characters and wraps in Markup
-            >>> escape("<script>alert(document.cookie);</script>")
-            Markup('&lt;script&gt;alert(document.cookie);&lt;/script&gt;')
-        
-            >>> # wrap in Markup to mark text "safe" and prevent escaping
-            >>> Markup("<strong>Hello</strong>")
-            Markup('<strong>hello</strong>')
-        
-            >>> escape(Markup("<strong>Hello</strong>"))
-            Markup('<strong>hello</strong>')
-        
-            >>> # Markup is a str subclass
-            >>> # methods and operators escape their arguments
-            >>> template = Markup("Hello <em>{name}</em>")
-            >>> template.format(name='"World"')
-            Markup('Hello <em>&#34;World&#34;</em>')
-        
-        
-        Donate
-        ------
-        
-        The Pallets organization develops and supports MarkupSafe and other
-        popular packages. In order to grow the community of contributors and
-        users, and allow the maintainers to devote more time to the projects,
-        `please donate today`_.
-        
-        .. _please donate today: https://palletsprojects.com/donate
-        
-        
-        Links
-        -----
-        
-        -   Documentation: https://markupsafe.palletsprojects.com/
-        -   Changes: https://markupsafe.palletsprojects.com/changes/
-        -   PyPI Releases: https://pypi.org/project/MarkupSafe/
-        -   Source Code: https://github.com/pallets/markupsafe/
-        -   Issue Tracker: https://github.com/pallets/markupsafe/issues/
-        -   Website: https://palletsprojects.com/p/markupsafe/
-        -   Twitter: https://twitter.com/PalletsTeam
-        -   Chat: https://discord.gg/pallets
-        
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
 Classifier: Environment :: Web Environment
@@ -94,5 +24,78 @@
 Classifier: Programming Language :: Python
 Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
 Classifier: Topic :: Text Processing :: Markup :: HTML
-Requires-Python: >=3.6
+Requires-Python: >=3.7
 Description-Content-Type: text/x-rst
+License-File: LICENSE.rst
+
+MarkupSafe
+==========
+
+MarkupSafe implements a text object that escapes characters so it is
+safe to use in HTML and XML. Characters that have special meanings are
+replaced so that they display as the actual characters. This mitigates
+injection attacks, meaning untrusted user input can safely be displayed
+on a page.
+
+
+Installing
+----------
+
+Install and update using `pip`_:
+
+.. code-block:: text
+
+    pip install -U MarkupSafe
+
+.. _pip: https://pip.pypa.io/en/stable/getting-started/
+
+
+Examples
+--------
+
+.. code-block:: pycon
+
+    >>> from markupsafe import Markup, escape
+
+    >>> # escape replaces special characters and wraps in Markup
+    >>> escape("<script>alert(document.cookie);</script>")
+    Markup('&lt;script&gt;alert(document.cookie);&lt;/script&gt;')
+
+    >>> # wrap in Markup to mark text "safe" and prevent escaping
+    >>> Markup("<strong>Hello</strong>")
+    Markup('<strong>hello</strong>')
+
+    >>> escape(Markup("<strong>Hello</strong>"))
+    Markup('<strong>hello</strong>')
+
+    >>> # Markup is a str subclass
+    >>> # methods and operators escape their arguments
+    >>> template = Markup("Hello <em>{name}</em>")
+    >>> template.format(name='"World"')
+    Markup('Hello <em>&#34;World&#34;</em>')
+
+
+Donate
+------
+
+The Pallets organization develops and supports MarkupSafe and other
+popular packages. In order to grow the community of contributors and
+users, and allow the maintainers to devote more time to the projects,
+`please donate today`_.
+
+.. _please donate today: https://palletsprojects.com/donate
+
+
+Links
+-----
+
+-   Documentation: https://markupsafe.palletsprojects.com/
+-   Changes: https://markupsafe.palletsprojects.com/changes/
+-   PyPI Releases: https://pypi.org/project/MarkupSafe/
+-   Source Code: https://github.com/pallets/markupsafe/
+-   Issue Tracker: https://github.com/pallets/markupsafe/issues/
+-   Website: https://palletsprojects.com/p/markupsafe/
+-   Twitter: https://twitter.com/PalletsTeam
+-   Chat: https://discord.gg/pallets
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MarkupSafe-2.0.1/src/markupsafe/__init__.py 
new/MarkupSafe-2.1.1/src/markupsafe/__init__.py
--- old/MarkupSafe-2.0.1/src/markupsafe/__init__.py     2021-05-18 
19:03:18.000000000 +0200
+++ new/MarkupSafe-2.1.1/src/markupsafe/__init__.py     2022-03-14 
17:53:29.000000000 +0100
@@ -11,9 +11,10 @@
             pass
 
 
-__version__ = "2.0.1"
+__version__ = "2.1.1"
 
-_striptags_re = re.compile(r"(<!--.*?-->|<[^>]*>)")
+_strip_comments_re = re.compile(r"<!--.*?-->")
+_strip_tags_re = re.compile(r"<.*?>")
 
 
 def _simple_escaping_wrapper(name: str) -> t.Callable[..., "Markup"]:
@@ -92,19 +93,24 @@
 
         return NotImplemented
 
-    def __mul__(self, num: int) -> "Markup":
+    def __mul__(self, num: "te.SupportsIndex") -> "Markup":
         if isinstance(num, int):
             return self.__class__(super().__mul__(num))
 
-        return NotImplemented  # type: ignore
+        return NotImplemented
 
     __rmul__ = __mul__
 
     def __mod__(self, arg: t.Any) -> "Markup":
         if isinstance(arg, tuple):
+            # a tuple of arguments, each wrapped
             arg = tuple(_MarkupEscapeHelper(x, self.escape) for x in arg)
-        else:
+        elif hasattr(type(arg), "__getitem__") and not isinstance(arg, str):
+            # a mapping of arguments, wrapped
             arg = _MarkupEscapeHelper(arg, self.escape)
+        else:
+            # a single argument, wrapped with the helper and a tuple
+            arg = (_MarkupEscapeHelper(arg, self.escape),)
 
         return self.__class__(super().__mod__(arg))
 
@@ -153,8 +159,11 @@
         >>> Markup("Main &raquo;\t<em>About</em>").striptags()
         'Main ?? About'
         """
-        stripped = " ".join(_striptags_re.sub("", self).split())
-        return Markup(stripped).unescape()
+        # Use two regexes to avoid ambiguous matches.
+        value = _strip_comments_re.sub("", self)
+        value = _strip_tags_re.sub("", value)
+        value = " ".join(value.split())
+        return Markup(value).unescape()
 
     @classmethod
     def escape(cls, s: t.Any) -> "Markup":
@@ -280,9 +289,7 @@
     from ._speedups import escape as escape
     from ._speedups import escape_silent as escape_silent
     from ._speedups import soft_str as soft_str
-    from ._speedups import soft_unicode
 except ImportError:
     from ._native import escape as escape
     from ._native import escape_silent as escape_silent  # noqa: F401
     from ._native import soft_str as soft_str  # noqa: F401
-    from ._native import soft_unicode  # noqa: F401
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MarkupSafe-2.0.1/src/markupsafe/_native.py 
new/MarkupSafe-2.1.1/src/markupsafe/_native.py
--- old/MarkupSafe-2.0.1/src/markupsafe/_native.py      2021-04-16 
00:27:24.000000000 +0200
+++ new/MarkupSafe-2.1.1/src/markupsafe/_native.py      2022-02-16 
19:46:40.000000000 +0100
@@ -61,15 +61,3 @@
         return str(s)
 
     return s
-
-
-def soft_unicode(s: t.Any) -> str:
-    import warnings
-
-    warnings.warn(
-        "'soft_unicode' has been renamed to 'soft_str'. The old name"
-        " will be removed in MarkupSafe 2.1.",
-        DeprecationWarning,
-        stacklevel=2,
-    )
-    return soft_str(s)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MarkupSafe-2.0.1/src/markupsafe/_speedups.c 
new/MarkupSafe-2.1.1/src/markupsafe/_speedups.c
--- old/MarkupSafe-2.0.1/src/markupsafe/_speedups.c     2021-04-16 
00:27:24.000000000 +0200
+++ new/MarkupSafe-2.1.1/src/markupsafe/_speedups.c     2022-02-16 
19:46:40.000000000 +0100
@@ -254,19 +254,6 @@
 }
 
 
-static PyObject*
-soft_unicode(PyObject *self, PyObject *s)
-{
-       PyErr_WarnEx(
-               PyExc_DeprecationWarning,
-               "'soft_unicode' has been renamed to 'soft_str'. The old name"
-               " will be removed in MarkupSafe 2.1.",
-               2
-       );
-       return soft_str(self, s);
-}
-
-
 static PyMethodDef module_methods[] = {
        {
                "escape",
@@ -308,12 +295,6 @@
                ">>> escape(soft_str(value))\n"
                "Markup('&lt;User 1&gt;')\n"
        },
-       {
-               "soft_unicode",
-               (PyCFunction)soft_unicode,
-               METH_O,
-               ""
-       },
        {NULL, NULL, 0, NULL}  /* Sentinel */
 };
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MarkupSafe-2.0.1/tests/conftest.py 
new/MarkupSafe-2.1.1/tests/conftest.py
--- old/MarkupSafe-2.0.1/tests/conftest.py      2021-01-30 03:46:42.000000000 
+0100
+++ new/MarkupSafe-2.1.1/tests/conftest.py      2022-02-16 19:46:40.000000000 
+0100
@@ -35,8 +35,3 @@
 @pytest.fixture(scope="session")
 def soft_str(_mod):
     return _mod.soft_str
-
-
-@pytest.fixture(scope="session")
-def soft_unicode(_mod):
-    return _mod.soft_unicode
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MarkupSafe-2.0.1/tests/test_markupsafe.py 
new/MarkupSafe-2.1.1/tests/test_markupsafe.py
--- old/MarkupSafe-2.0.1/tests/test_markupsafe.py       2021-01-30 
00:09:24.000000000 +0100
+++ new/MarkupSafe-2.1.1/tests/test_markupsafe.py       2022-03-14 
17:53:29.000000000 +0100
@@ -45,6 +45,12 @@
     assert result == "<strong><em>awesome</em></strong>"
 
 
+@pytest.mark.parametrize("args", ["foo", 42, ("foo", 42)])
+def test_missing_interpol(args):
+    with pytest.raises(TypeError):
+        Markup("<em></em>") % args
+
+
 def test_tuple_interpol():
     result = Markup("<em>%s:%s</em>") % ("<foo>", "<bar>")
     expect = Markup("<em>&lt;foo&gt;:&lt;bar&gt;</em>")
@@ -63,7 +69,15 @@
 
 def test_escaping(escape):
     assert escape("\"<>&'") == "&#34;&lt;&gt;&amp;&#39;"
-    assert Markup("<em>Foo &amp; Bar</em>").striptags() == "Foo & Bar"
+    assert (
+        Markup(
+            "<!-- outer comment -->"
+            "<em>Foo &amp; Bar"
+            "<!-- inner comment about <em> -->"
+            "</em>"
+        ).striptags()
+        == "Foo & Bar"
+    )
 
 
 def test_unescape():
@@ -178,8 +192,3 @@
     assert type(soft_str("")) is str
     assert type(soft_str(Markup())) is Markup
     assert type(soft_str(15)) is str
-
-
-def test_soft_unicode_deprecated(soft_unicode):
-    with pytest.warns(DeprecationWarning):
-        assert type(soft_unicode(Markup())) is Markup
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MarkupSafe-2.0.1/tox.ini new/MarkupSafe-2.1.1/tox.ini
--- old/MarkupSafe-2.0.1/tox.ini        2021-02-24 21:55:18.000000000 +0100
+++ new/MarkupSafe-2.1.1/tox.ini        2022-02-16 19:46:40.000000000 +0100
@@ -1,6 +1,6 @@
 [tox]
 envlist =
-    py{39,38,37,36,py3}
+    py3{11,10,9,8,7},pypy3{8,7}
     style
     typing
     docs

Reply via email to