Skip to content

Commit 6832e1b

Browse files
committed
feat!: Test against lxml 6.0 and drop 4.9 support
1 parent 8a058a8 commit 6832e1b

2 files changed

Lines changed: 16 additions & 32 deletions

File tree

pyproject.toml

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,12 @@ rt-test = [
8181
{include-group = "mypy"},
8282
{include-group = "pyright"},
8383
]
84-
lxml49 = ["lxml == 4.9.4"]
8584
lxml50 = ["lxml == 5.0.2"]
8685
lxml51 = ["lxml == 5.1.1"]
8786
lxml52 = ["lxml == 5.2.2"]
8887
lxml53 = ["lxml == 5.3.2"]
8988
lxml54 = ["lxml == 5.4.0"]
89+
lxml60 = ["lxml == 6.0.0"]
9090
dev = [
9191
'tox ~= 4.22',
9292
# microsoft/pyright#9412, microsoft/pyright#9984
@@ -96,7 +96,7 @@ dev = [
9696
'urllib3 >= 2.0',
9797
'pytest-mypy-plugins >= 2.0',
9898
'pytest-revealtype-injector >= 0.5.0',
99-
'lxml >= 4.9',
99+
'lxml >= 5.0',
100100
'rnc2rng',
101101
# HypothesisWorks/hypothesis#4269
102102
'hypothesis[zoneinfo] >= 6.127.7',
@@ -232,26 +232,27 @@ static = [
232232
'py313-stub',
233233
]
234234
runtime = [
235-
'py310-rt-lxml49',
236235
'py310-rt-lxml50',
237236
'py310-rt-lxml51',
238237
'py310-rt-lxml52',
239238
'py310-rt-lxml53',
240239
'py310-rt-lxml54',
241-
'py311-rt-lxml49',
240+
'py310-rt-lxml60',
242241
'py311-rt-lxml50',
243242
'py311-rt-lxml51',
244243
'py311-rt-lxml52',
245244
'py311-rt-lxml53',
246245
'py311-rt-lxml54',
247-
'py312-rt-lxml49',
246+
'py311-rt-lxml60',
248247
'py312-rt-lxml50',
249248
'py312-rt-lxml51',
250249
'py312-rt-lxml52',
251250
'py312-rt-lxml53',
252251
'py312-rt-lxml54',
252+
'py312-rt-lxml60',
253253
'py313-rt-lxml53',
254254
'py313-rt-lxml54',
255+
'py313-rt-lxml60',
255256
]
256257

257258
# HACK Taking advantage of tox-gh-actions using
@@ -327,9 +328,6 @@ commands = [
327328
]
328329
]
329330

330-
[tool.tox._env_lxml49]
331-
dependency_groups = ['basic', 'rt-test', 'lxml49']
332-
333331
[tool.tox._env_lxml50]
334332
dependency_groups = ['basic', 'rt-test', 'lxml50']
335333

@@ -345,33 +343,37 @@ dependency_groups = ['basic', 'rt-test', 'lxml53']
345343
[tool.tox._env_lxml54]
346344
dependency_groups = ['basic', 'rt-test', 'lxml54']
347345

346+
[tool.tox._env_lxml60]
347+
dependency_groups = ['basic', 'rt-test', 'lxml60']
348+
348349
[tool.tox.env]
349350
py38-stub = {base = ['_env_stub']}
350351
py39-stub = {base = ['_env_stub']}
351352
py310-stub = {base = ['_env_stub']}
352353
py311-stub = {base = ['_env_stub']}
353354
py312-stub = {base = ['_env_stub']}
354355
py313-stub = {base = ['_env_stub']}
355-
py310-rt-lxml49 = {base = ['_env_rt', '_env_lxml49']}
356356
py310-rt-lxml50 = {base = ['_env_rt', '_env_lxml50']}
357357
py310-rt-lxml51 = {base = ['_env_rt', '_env_lxml51']}
358358
py310-rt-lxml52 = {base = ['_env_rt', '_env_lxml52']}
359359
py310-rt-lxml53 = {base = ['_env_rt', '_env_lxml53']}
360360
py310-rt-lxml54 = {base = ['_env_rt', '_env_lxml54']}
361-
py311-rt-lxml49 = {base = ['_env_rt', '_env_lxml49']}
361+
py310-rt-lxml60 = {base = ['_env_rt', '_env_lxml60']}
362362
py311-rt-lxml50 = {base = ['_env_rt', '_env_lxml50']}
363363
py311-rt-lxml51 = {base = ['_env_rt', '_env_lxml51']}
364364
py311-rt-lxml52 = {base = ['_env_rt', '_env_lxml52']}
365365
py311-rt-lxml53 = {base = ['_env_rt', '_env_lxml53']}
366366
py311-rt-lxml54 = {base = ['_env_rt', '_env_lxml54']}
367-
py312-rt-lxml49 = {base = ['_env_rt', '_env_lxml49']}
367+
py311-rt-lxml60 = {base = ['_env_rt', '_env_lxml60']}
368368
py312-rt-lxml50 = {base = ['_env_rt', '_env_lxml50']}
369369
py312-rt-lxml51 = {base = ['_env_rt', '_env_lxml51']}
370370
py312-rt-lxml52 = {base = ['_env_rt', '_env_lxml52']}
371371
py312-rt-lxml53 = {base = ['_env_rt', '_env_lxml53']}
372372
py312-rt-lxml54 = {base = ['_env_rt', '_env_lxml54']}
373+
py312-rt-lxml60 = {base = ['_env_rt', '_env_lxml60']}
373374
py313-rt-lxml53 = {base = ['_env_rt', '_env_lxml53']}
374375
py313-rt-lxml54 = {base = ['_env_rt', '_env_lxml54']}
376+
py313-rt-lxml60 = {base = ['_env_rt', '_env_lxml60']}
375377

376378
[tool.tox.env.build-normal]
377379
pass_env = ['PDM_BUILD_SCM_VERSION']

tests/runtime/test_errorlog.py

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import pytest
1313
from hypothesis import HealthCheck, assume, given, settings
1414
from lxml.etree import (
15-
LXML_VERSION,
1615
ErrorDomains,
1716
ErrorLevels,
1817
ErrorTypes,
@@ -51,14 +50,6 @@
5150
# other than those already present in _ListErrorLog
5251

5352

54-
def _method_no_kwarg() -> bool:
55-
# Param for some methods (filter_levels, receive)
56-
# is strictly positional in lxml 4.9.
57-
# Source code doesn't reveal anything abnormal,
58-
# is it some sort of problem with cython?
59-
return LXML_VERSION < (5, 0)
60-
61-
6253
class TestListLog:
6354
def test_from_broken_string(self) -> None:
6455
src = "<bad><a><b></a>&qwerty;</bad>"
@@ -186,10 +177,7 @@ def test_filter_levels_arg_ok(self, list_log: _ListErrorLog) -> None:
186177
del new_log
187178

188179
levels = iter([ErrorLevels.ERROR, ErrorLevels.FATAL])
189-
if _method_no_kwarg():
190-
new_log = list_log.filter_levels(levels)
191-
else:
192-
new_log = list_log.filter_levels(levels=levels)
180+
new_log = list_log.filter_levels(levels=levels)
193181
reveal_type(new_log)
194182
assert len(new_log) > 0
195183

@@ -208,10 +196,7 @@ def test_filter_levels_arg_bad(self, list_log: _ListErrorLog, levels: Any) -> No
208196
(("level", Parameter.POSITIONAL_OR_KEYWORD, Parameter.empty),),
209197
)
210198
def test_filter_from_level_arg_ok(self, list_log: _ListErrorLog) -> None:
211-
if _method_no_kwarg():
212-
new_log = list_log.filter_from_level(ErrorLevels.NONE)
213-
else:
214-
new_log = list_log.filter_from_level(level=ErrorLevels.NONE)
199+
new_log = list_log.filter_from_level(level=ErrorLevels.NONE)
215200
reveal_type(new_log)
216201
assert len(new_log) > 0
217202

@@ -242,10 +227,7 @@ def test_filter_from_level_deriv(self, list_log: _ListErrorLog) -> None:
242227
(("entry", Parameter.POSITIONAL_OR_KEYWORD, Parameter.empty),),
243228
)
244229
def test_receive(self, list_log: _ListErrorLog) -> None:
245-
if _method_no_kwarg():
246-
assert list_log.receive(list_log[0]) is None
247-
else:
248-
assert list_log.receive(entry=list_log[0]) is None
230+
assert list_log.receive(entry=list_log[0]) is None
249231
with pytest.raises(TypeError, match=r"expected .+\._LogEntry, got int"):
250232
list_log.receive(cast(Any, 1))
251233

0 commit comments

Comments
 (0)