Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-cssselect2 for 
openSUSE:Factory checked in at 2026-02-17 16:37:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-cssselect2 (Old)
 and      /work/SRC/openSUSE:Factory/.python-cssselect2.new.1977 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-cssselect2"

Tue Feb 17 16:37:55 2026 rev:10 rq:1333412 version:0.9.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-cssselect2/python-cssselect2.changes      
2025-03-21 20:21:42.224966422 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-cssselect2.new.1977/python-cssselect2.changes
    2026-02-17 16:39:11.910980915 +0100
@@ -1,0 +2,7 @@
+Mon Feb 16 17:12:22 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 0.9.0:
+  * Drop support of Python 3.9, support 3.14
+  * Support :host
+
+-------------------------------------------------------------------

Old:
----
  cssselect2-0.8.0.tar.gz

New:
----
  cssselect2-0.9.0.tar.gz

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

Other differences:
------------------
++++++ python-cssselect2.spec ++++++
--- /var/tmp/diff_new_pack.IOXFyq/_old  2026-02-17 16:39:12.495005329 +0100
+++ /var/tmp/diff_new_pack.IOXFyq/_new  2026-02-17 16:39:12.495005329 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-cssselect2
 #
-# Copyright (c) 2025 SUSE LLC
+# 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
@@ -19,7 +19,7 @@
 %define skip_python2 1
 %{?sle15_python_module_pythons}
 Name:           python-cssselect2
-Version:        0.8.0
+Version:        0.9.0
 Release:        0
 Summary:        CSS selectors for Python ElementTree
 License:        BSD-3-Clause

++++++ cssselect2-0.8.0.tar.gz -> cssselect2-0.9.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cssselect2-0.8.0/.github/workflows/release.yml 
new/cssselect2-0.9.0/.github/workflows/release.yml
--- old/cssselect2-0.8.0/.github/workflows/release.yml  2025-03-05 
15:35:04.000000000 +0100
+++ new/cssselect2-0.9.0/.github/workflows/release.yml  2026-02-12 
18:12:31.000000000 +0100
@@ -2,7 +2,7 @@
 on:
   push:
     tags:
-      - *
+      - '*'
 
 jobs:
   pypi-publish:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cssselect2-0.8.0/.github/workflows/tests.yml 
new/cssselect2-0.9.0/.github/workflows/tests.yml
--- old/cssselect2-0.8.0/.github/workflows/tests.yml    2025-03-05 
15:35:04.000000000 +0100
+++ new/cssselect2-0.9.0/.github/workflows/tests.yml    2026-02-12 
18:12:31.000000000 +0100
@@ -8,12 +8,12 @@
     strategy:
       matrix:
         os: [ubuntu-latest, macos-latest, windows-latest]
-        python-version: ['3.13']
+        python-version: ['3.14']
         include:
           - os: ubuntu-latest
-            python-version: '3.9'
+            python-version: '3.10'
           - os: ubuntu-latest
-            python-version: 'pypy-3.10'
+            python-version: 'pypy-3.11'
     steps:
       - uses: actions/checkout@v4
         with:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cssselect2-0.8.0/README.rst 
new/cssselect2-0.9.0/README.rst
--- old/cssselect2-0.8.0/README.rst     2025-03-05 15:35:04.000000000 +0100
+++ new/cssselect2-0.9.0/README.rst     2026-02-12 18:12:31.000000000 +0100
@@ -3,7 +3,7 @@
 (including cElementTree, lxml, html5lib, etc.)
 
 * Free software: BSD license
-* For Python 3.9+, tested on CPython and PyPy
+* For Python 3.10+, tested on CPython and PyPy
 * Documentation: https://doc.courtbouillon.org/cssselect2
 * Changelog: https://github.com/Kozea/cssselect2/releases
 * Code, issues, tests: https://github.com/Kozea/cssselect2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cssselect2-0.8.0/cssselect2/__init__.py 
new/cssselect2-0.9.0/cssselect2/__init__.py
--- old/cssselect2-0.8.0/cssselect2/__init__.py 2025-03-05 15:35:04.000000000 
+0100
+++ new/cssselect2-0.9.0/cssselect2/__init__.py 2026-02-12 18:12:31.000000000 
+0100
@@ -13,7 +13,7 @@
 from .parser import SelectorError  # noqa
 from .tree import ElementWrapper  # noqa
 
-VERSION = __version__ = '0.8.0'
+VERSION = __version__ = '0.9.0'
 
 
 class Matcher:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cssselect2-0.8.0/cssselect2/compiler.py 
new/cssselect2-0.9.0/cssselect2/compiler.py
--- old/cssselect2-0.8.0/cssselect2/compiler.py 2025-03-05 15:35:04.000000000 
+0100
+++ new/cssselect2-0.9.0/cssselect2/compiler.py 2026-02-12 18:12:31.000000000 
+0100
@@ -279,7 +279,7 @@
                 'focus-visible', 'target', 'target-within', 'current', 'past',
                 'future', 'playing', 'paused', 'seeking', 'buffering',
                 'stalled', 'muted', 'volume-locked', 'user-valid',
-                'user-invalid'):
+                'user-invalid', 'host'):
             # Not applicable in a static context: never match.
             return '0'
         elif selector.name in ('root', 'scope'):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cssselect2-0.8.0/cssselect2/tree.py 
new/cssselect2-0.9.0/cssselect2/tree.py
--- old/cssselect2-0.8.0/cssselect2/tree.py     2025-03-05 15:35:04.000000000 
+0100
+++ new/cssselect2-0.9.0/cssselect2/tree.py     2026-02-12 18:12:31.000000000 
+0100
@@ -305,14 +305,14 @@
     def local_name(self):
         """The local name of this element, as a string."""
         namespace_url, local_name = _split_etree_tag(self.etree_element.tag)
-        self.__dict__[str('namespace_url')] = namespace_url
+        self.__dict__['namespace_url'] = namespace_url
         return local_name
 
     @cached_property
     def namespace_url(self):
         """The namespace URL of this element, as a string."""
         namespace_url, local_name = _split_etree_tag(self.etree_element.tag)
-        self.__dict__[str('local_name')] = local_name
+        self.__dict__['local_name'] = local_name
         return namespace_url
 
     @cached_property
@@ -371,10 +371,9 @@
 
 def _split_etree_tag(tag):
     position = tag.rfind('}')
-    if position == -1:
+    if position == -1 or tag[0] != '{':
         return '', tag
     else:
-        assert tag[0] == '{'
         return tag[1:position], tag[position+1:]
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cssselect2-0.8.0/docs/changelog.rst 
new/cssselect2-0.9.0/docs/changelog.rst
--- old/cssselect2-0.8.0/docs/changelog.rst     2025-03-05 15:35:04.000000000 
+0100
+++ new/cssselect2-0.9.0/docs/changelog.rst     2026-02-12 18:12:31.000000000 
+0100
@@ -2,6 +2,15 @@
 ---------
 
 
+Version 0.9.0
+.............
+
+Released on 2026-02-12.
+
+* Drop support of Python 3.9, support 3.14
+* Support :host
+
+
 Version 0.8.0
 .............
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cssselect2-0.8.0/docs/example.py 
new/cssselect2-0.9.0/docs/example.py
--- old/cssselect2-0.8.0/docs/example.py        2025-03-05 15:35:04.000000000 
+0100
+++ new/cssselect2-0.9.0/docs/example.py        2026-02-12 18:12:31.000000000 
+0100
@@ -34,15 +34,14 @@
 wrapper = cssselect2.ElementWrapper.from_html_root(html_tree)
 for element in wrapper.iter_subtree():
     tag = element.etree_element.tag.split('}')[-1]
-    print('Found tag "{}" in HTML'.format(tag))
+    print(f'Found tag "{tag}" in HTML')
 
     matches = matcher.match(element)
     if matches:
         for match in matches:
             specificity, order, pseudo, payload = match
             selector_string, content_string = payload
-            print('Matching selector "{}" ({})'.format(
-                selector_string, content_string))
+            print(f'Matching selector "{selector_string}" ({content_string})')
     else:
         print('No rule matching this tag')
     print()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cssselect2-0.8.0/pyproject.toml 
new/cssselect2-0.9.0/pyproject.toml
--- old/cssselect2-0.8.0/pyproject.toml 2025-03-05 15:35:04.000000000 +0100
+++ new/cssselect2-0.9.0/pyproject.toml 2026-02-12 18:12:31.000000000 +0100
@@ -8,7 +8,7 @@
 keywords = ['css', 'elementtree']
 authors = [{name = 'Simon Sapin', email = '[email protected]'}]
 maintainers = [{name = 'CourtBouillon', email = '[email protected]'}]
-requires-python = '>=3.9'
+requires-python = '>=3.10'
 readme = {file = 'README.rst', content-type = 'text/x-rst'}
 license = {file = 'LICENSE'}
 dependencies = ['tinycss2', 'webencodings']
@@ -20,11 +20,11 @@
   'Programming Language :: Python',
   'Programming Language :: Python :: 3',
   'Programming Language :: Python :: 3 :: Only',
-  'Programming Language :: Python :: 3.9',
   'Programming Language :: Python :: 3.10',
   'Programming Language :: Python :: 3.11',
   'Programming Language :: Python :: 3.12',
   'Programming Language :: Python :: 3.13',
+  'Programming Language :: Python :: 3.14',
   'Programming Language :: Python :: Implementation :: CPython',
   'Programming Language :: Python :: Implementation :: PyPy',
   'Topic :: Internet :: WWW/HTTP',
@@ -55,8 +55,12 @@
 omit = ['.*']
 
 [tool.ruff.lint]
-select = ['E', 'W', 'F', 'I', 'N', 'RUF']
+select = ['E', 'W', 'F', 'I', 'N', 'RUF', 'T20', 'PIE', 'PT', 'RSE', 'UP', 'Q']
 ignore = ['RUF001', 'RUF002', 'RUF003']
 
+[tool.ruff.lint.flake8-quotes]
+inline-quotes = 'single'
+multiline-quotes = 'single'
+
 [tool.ruff.lint.extend-per-file-ignores]
-'docs/example.py' = ['I001']
+'docs/example.py' = ['I001', 'T201']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cssselect2-0.8.0/tests/test_cssselect2.py 
new/cssselect2-0.9.0/tests/test_cssselect2.py
--- old/cssselect2-0.8.0/tests/test_cssselect2.py       2025-03-05 
15:35:04.000000000 +0100
+++ new/cssselect2-0.9.0/tests/test_cssselect2.py       2026-02-12 
18:12:31.000000000 +0100
@@ -119,7 +119,7 @@
     assert not root.matches(':lang(en)')
 
 
[email protected]('selector, result', (
[email protected](('selector', 'result'), [
     ('*', ALL_IDS),
     ('div', ['outer-div', 'li-div', 'foobar-div']),
     ('div div', ['li-div']),
@@ -228,7 +228,6 @@
     ('*#first-li', ['first-li']),
     ('li div', ['li-div']),
     ('li > div', ['li-div']),
-    ('div div', ['li-div']),
     ('div > div', []),
     ('div>.c', ['first-ol']),
     ('div > .c', ['first-ol']),
@@ -301,6 +300,7 @@
     (':active', []),
     (':focus', []),
     (':target', []),
+    (':host', []),
     (':enabled', [
         'link-href', 'tag-anchor', 'nofollow-anchor', 'checkbox-unchecked',
         'text-checked', 'input-hidden', 'checkbox-checked', 'area-href']),
@@ -319,7 +319,7 @@
     ('/* test */a:not([href])/* test */,div  div', ['name-anchor', 'li-div']),
     ('/* test */ a:not([href]), div/* test */ div', ['name-anchor', 'li-div']),
     ('a:not([href]) /* test */,/* test */div  div', ['name-anchor', 'li-div']),
-))
+])
 def test_select(selector, result):
     xml_ids = [
         element.etree_element.get('id', 'nil') for element in
@@ -330,12 +330,12 @@
     assert xml_ids == html_ids == result
 
 
[email protected]('selector, result', (
[email protected](('selector', 'result'), [
     ('DIV', ['outer-div', 'li-div', 'foobar-div']),
     ('a[NAme]', ['name-anchor']),
     ('HTML :link', [
         'link-href', 'tag-anchor', 'nofollow-anchor', 'area-href']),
-))
+])
 def test_html_select(selector, result):
     assert not [
         element.etree_element.get('id', 'nil') for element in
@@ -346,7 +346,7 @@
 
 
 # Data borrowed from http://mootools.net/slickspeed/
[email protected]('selector, result', (
[email protected](('selector', 'result'), [
     # Changed from original because we’re only searching the body.
     # ('*', 252),
     ('*', 246),
@@ -395,6 +395,6 @@
     ('div[class|=dialog]', 50),  # ? Seems right
     # assert count('div[class!=madeup]', 243),  # ? Seems right
     ('div[class~=dialog]', 51),  # ? Seems right
-))
+])
 def test_select_shakespeare(selector, result):
     assert sum(1 for _ in SHAKESPEARE_BODY.query_all(selector)) == result

Reply via email to