python-lxml>=5 breaks the CSS selector filter
Description:
The python-lxml 5.1.0 update broke the CSS selector filter due to a deprecated LXML functionality:
Traceback (most recent call last):
File "/usr/bin/urlwatch", line 8, in <module>
sys.exit(main())
^^^^^^
File "/usr/lib/python3.11/site-packages/urlwatch/cli.py", line 109, in main
urlwatch_command.run()
File "/usr/lib/python3.11/site-packages/urlwatch/command.py", line 458, in run
self.handle_actions()
File "/usr/lib/python3.11/site-packages/urlwatch/command.py", line 256, in handle_actions
sys.exit(self.test_filter(self.urlwatch_config.test_filter))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/site-packages/urlwatch/command.py", line 139, in test_filter
raise job_state.exception
File "/usr/lib/python3.11/site-packages/urlwatch/handler.py", line 120, in process
data = FilterBase.process(filter_kind, subfilter, self, data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/site-packages/urlwatch/filters.py", line 188, in process
return filtercls(state.job, state).filter(data, subfilter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/site-packages/urlwatch/filters.py", line 810, in filter
return lxml_parser.get_filtered_data()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/site-packages/urlwatch/filters.py", line 776, in get_filtered_data
elements = list(self._get_filtered_elements())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/site-packages/urlwatch/filters.py", line 764, in _get_filtered_elements
namespaces=self.namespaces).evaluate(root)
^^^^^^^^
AttributeError: 'CSSSelector' object has no attribute 'evaluate'
Additional info:
Upstream bug report: https://github.com/thp/urlwatch/issues/783
Upstream fix: https://github.com/thp/urlwatch/commit/123de66d019aef7fc18fab6d56cc2a54d81fea3f
Rebuilding with the upstream commit applied fixes the issue.
$ pacman -Q urlwatch python-lxml
urlwatch 2.28-1
python-lxml 5.1.0-1
name: 'electron'
url: 'https://archlinux.org/packages/extra/any/electron/'
filter:
- css: '#pkgdetails h2'
- html2text:
Steps to reproduce:
- Run urlwatch on a config with the css filter used
- Observe the error
Edited by Daniel Peukert