Skip to content

Commit 1a67e46

Browse files
authored
Officially support Python 3.13 and update build environment (#271)
* Officially support Python 3.13 and update build environment * Fix related test issues with latest lxml
1 parent 25631bd commit 1a67e46

File tree

6 files changed

+33
-24
lines changed

6 files changed

+33
-24
lines changed

.github/workflows/build.yml

+15-18
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
max-parallel: 4
1818
matrix:
1919
platform: [ubuntu-latest, windows-latest]
20-
tox-env: [py38, py39, py310, py311, py312, nolxml, nohtml5lib]
20+
tox-env: [py38, py39, py310, py311, py312, py313, nolxml, nohtml5lib]
2121
include:
2222
- tox-env: py38
2323
python-version: 3.8
@@ -34,34 +34,31 @@ jobs:
3434
- tox-env: py312
3535
python-version: '3.12'
3636
continue-on-error: false
37+
- tox-env: py313
38+
python-version: '3.13'
39+
continue-on-error: false
3740
- tox-env: nolxml
3841
python-version: '3.11'
3942
continue-on-error: false
4043
- tox-env: nohtml5lib
41-
python-version: '3.10'
44+
python-version: '3.11'
4245
continue-on-error: false
43-
# exclude:
44-
# - platform: windows-latest
45-
# tox-env: py311
46+
exclude:
47+
- platform: windows-latest
48+
tox-env: py313
4649

4750
env:
4851
TOXENV: ${{ matrix.tox-env }}
4952

5053
runs-on: ${{ matrix.platform }}
5154

5255
steps:
53-
- uses: actions/checkout@v3
56+
- uses: actions/checkout@v4
5457
- name: Set up Python ${{ matrix.python-version }}
55-
if: "!endsWith(matrix.python-version, '-dev')"
56-
uses: actions/setup-python@v4
58+
uses: actions/setup-python@v5
5759
with:
5860
python-version: ${{ matrix.python-version }}
5961
allow-prereleases: true
60-
- name: Set up development Python ${{ matrix.python-version }}
61-
if: endsWith(matrix.python-version, '-dev')
62-
uses: deadsnakes/[email protected]
63-
with:
64-
python-version: ${{ matrix.python-version }}
6562
- name: Install dependencies
6663
run: |
6764
python -m pip install --upgrade pip setuptools build tox coverage
@@ -71,7 +68,7 @@ jobs:
7168
continue-on-error: ${{ matrix.continue-on-error }}
7269
- name: Upload Results
7370
if: success()
74-
uses: codecov/codecov-action@v3
71+
uses: codecov/codecov-action@v4
7572
with:
7673
file: ./coverage.xml
7774
flags: unittests
@@ -90,9 +87,9 @@ jobs:
9087
runs-on: ubuntu-latest
9188

9289
steps:
93-
- uses: actions/checkout@v3
90+
- uses: actions/checkout@v4
9491
- name: Set up Python ${{ matrix.python-version }}
95-
uses: actions/setup-python@v4
92+
uses: actions/setup-python@v5
9693
with:
9794
python-version: ${{ matrix.python-version }}
9895
- name: Install dependencies
@@ -114,9 +111,9 @@ jobs:
114111
runs-on: ubuntu-latest
115112

116113
steps:
117-
- uses: actions/checkout@v3
114+
- uses: actions/checkout@v4
118115
- name: Set up Python ${{ matrix.python-version }}
119-
uses: actions/setup-python@v4
116+
uses: actions/setup-python@v5
120117
with:
121118
python-version: ${{ matrix.python-version }}
122119
- name: Install dependencies

.github/workflows/deploy.yml

+4-4
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ jobs:
1616
runs-on: ubuntu-latest
1717

1818
steps:
19-
- uses: actions/checkout@v3
19+
- uses: actions/checkout@v4
2020
with:
2121
fetch-depth: 0
2222
- name: Set up Python ${{ matrix.python-version }}
23-
uses: actions/setup-python@v4
23+
uses: actions/setup-python@v5
2424
with:
2525
python-version: ${{ matrix.python-version }}
2626
- name: Install dependencies
@@ -40,8 +40,8 @@ jobs:
4040
runs-on: ubuntu-latest
4141

4242
steps:
43-
- uses: actions/checkout@v3
44-
- uses: actions/setup-python@v4
43+
- uses: actions/checkout@v4
44+
- uses: actions/setup-python@v5
4545
with:
4646
python-version: 3.11
4747
- name: Package

docs/src/markdown/about/changelog.md

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
## 2.6
44

5+
- **NEW**: Add official support for Python 3.13.
56
- **NEW**: Add support for `&` as scoping root per the CSS Nesting Module, Level 1. When `&` is used outside the
67
context of nesting, it is treated as the scoping root (equivalent to `:scope`).
78
- **FIX**: Improve error message when an unrecognized pseudo-class is used.

hatch_build.py

+1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ def update(self, metadata):
3434
'Programming Language :: Python :: 3.10',
3535
'Programming Language :: Python :: 3.11',
3636
'Programming Language :: Python :: 3.12',
37+
'Programming Language :: Python :: 3.13',
3738
'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
3839
'Topic :: Software Development :: Libraries :: Python Modules',
3940
'Typing :: Typed'

pyproject.toml

+5
Original file line numberDiff line numberDiff line change
@@ -154,3 +154,8 @@ commands =
154154
filterwarnings =
155155
ignore:\nCSS selector pattern:UserWarning
156156
"""
157+
158+
[tool.pytest.ini_options]
159+
filterwarnings = [
160+
"ignore:The 'strip_cdata':DeprecationWarning"
161+
]

tests/test_extra/test_soup_contains.py

+7-2
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,11 @@ def test_contains_warn(self):
304304
['2'],
305305
flags=util.HTML
306306
)
307+
found = False
308+
target = "The pseudo class ':contains' is deprecated, ':-soup-contains' should be used moving forward."
309+
for warn in w:
310+
if target in str(warn.message):
311+
found = True
312+
break
307313
# Verify some things
308-
self.assertTrue(len(w) == 1)
309-
self.assertTrue(issubclass(w[-1].category, FutureWarning))
314+
self.assertTrue(found)

0 commit comments

Comments
 (0)