Skip to content

Commit 7808d71

Browse files
Merge branch 'main' into fix/validate-trailing-operators
2 parents ca0eac9 + 3a77924 commit 7808d71

13 files changed

Lines changed: 169 additions & 49 deletions

File tree

.github/workflows/docs-ci.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ name: CI Documentation
22

33
on: [push, pull_request]
44

5+
permissions: {}
56
jobs:
67
build:
78
runs-on: ubuntu-24.04
@@ -13,10 +14,12 @@ jobs:
1314

1415
steps:
1516
- name: Checkout code
16-
uses: actions/checkout@v4
17+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
18+
with:
19+
persist-credentials: false
1720

1821
- name: Set up Python ${{ matrix.python-version }}
19-
uses: actions/setup-python@v5
22+
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
2023
with:
2124
python-version: ${{ matrix.python-version }}
2225

.github/workflows/pypi-release.yml

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,18 @@ on:
1818
tags:
1919
- "v*.*.*"
2020

21+
permissions: {}
2122
jobs:
2223
build-pypi-distribs:
2324
name: Build and publish library to PyPI
2425
runs-on: ubuntu-24.04
2526

2627
steps:
27-
- uses: actions/checkout@v4
28+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
29+
with:
30+
persist-credentials: false
2831
- name: Set up Python
29-
uses: actions/setup-python@v5
32+
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
3033
with:
3134
python-version: 3.13
3235

@@ -40,7 +43,7 @@ jobs:
4043
run: python -m twine check dist/*
4144

4245
- name: Upload built archives
43-
uses: actions/upload-artifact@v4
46+
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f
4447
with:
4548
name: pypi_archives
4649
path: dist/*
@@ -57,13 +60,13 @@ jobs:
5760

5861
steps:
5962
- name: Download built archives
60-
uses: actions/download-artifact@v4
63+
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131
6164
with:
6265
name: pypi_archives
6366
path: dist
6467

6568
- name: Create GH release
66-
uses: softprops/action-gh-release@v2
69+
uses: softprops/action-gh-release@b4309332981a82ec1c5618f44dd2e27cc8bfbfda
6770
with:
6871
draft: true
6972
files: dist/*
@@ -74,16 +77,17 @@ jobs:
7477
needs:
7578
- create-gh-release
7679
runs-on: ubuntu-24.04
80+
environment: pypi-publish
81+
permissions:
82+
id-token: write
7783

7884
steps:
7985
- name: Download built archives
80-
uses: actions/download-artifact@v4
86+
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131
8187
with:
8288
name: pypi_archives
8389
path: dist
8490

8591
- name: Publish to PyPI
8692
if: startsWith(github.ref, 'refs/tags')
87-
uses: pypa/gh-action-pypi-publish@release/v1
88-
with:
89-
password: ${{ secrets.PYPI_API_TOKEN }}
93+
uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b

.github/workflows/zizmor.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
name: GitHub Actions Security Analysis with zizmor 🌈
2+
3+
on:
4+
push:
5+
branches: ["main"]
6+
pull_request:
7+
branches: ["**"]
8+
9+
permissions: {}
10+
11+
jobs:
12+
zizmor:
13+
name: Run zizmor 🌈
14+
runs-on: ubuntu-latest
15+
permissions:
16+
security-events: write # Required for upload-sarif (used by zizmor-action) to upload SARIF files.
17+
steps:
18+
- name: Checkout repository
19+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
20+
with:
21+
persist-credentials: false
22+
23+
- name: Run zizmor 🌈
24+
uses: zizmorcore/zizmor-action@b1d7e1fb5de872772f31590499237e7cce841e8e # v0.5.3

.readthedocs.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ version: 2
77

88
# Build in latest ubuntu/python
99
build:
10-
os: ubuntu-22.04
10+
os: ubuntu-24.04
1111
tools:
12-
python: "3.11"
12+
python: "3.13"
1313

1414
# Build PDF & ePub
1515
formats:

README.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ simplify and normalize license expressions (such as SPDX license expressions)
77
using boolean logic.
88

99
- License: Apache-2.0
10-
- Python: 3.9+
10+
- Python: 3.10+
1111
- Homepage: https://github.com/aboutcode-org/license-expression/
1212
- Install: `pip install license-expression` also available in most Linux distro.
1313

@@ -45,7 +45,7 @@ license expression engine in several projects and products such as:
4545
- REUSE https://reuse.software/ and https://github.com/fsfe/reuse-tool
4646
- ScanCode-io https://github.com/aboutcode-org/scancode.io
4747
- ScanCode-toolkit https://github.com/aboutcode-org/scancode-toolkit
48-
- SecObserve https://github.com/MaibornWolff/SecObserve
48+
- SecObserve https://github.com/SecObserve/SecObserve
4949

5050
See also for details:
5151
- https://spdx.github.io/spdx-spec/v2.3/SPDX-license-expressions

azure-pipelines.yml

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,54 +9,54 @@ jobs:
99
parameters:
1010
job_name: run_code_checks
1111
image_name: ubuntu-24.04
12-
python_versions: ['3.13']
12+
python_versions: ['3.14']
1313
test_suites:
1414
all: make check
1515

1616
- template: etc/ci/azure-posix.yml
1717
parameters:
1818
job_name: ubuntu22_cpython
1919
image_name: ubuntu-22.04
20-
python_versions: ["3.9", "3.10", "3.11", "3.12", "3.13"]
20+
python_versions: ["3.10", "3.11", "3.12", "3.13", "3.14"]
2121
test_suites:
2222
all: venv/bin/pytest -n 2 -vvs
2323

2424
- template: etc/ci/azure-posix.yml
2525
parameters:
2626
job_name: ubuntu24_cpython
2727
image_name: ubuntu-24.04
28-
python_versions: ["3.9", "3.10", "3.11", "3.12", "3.13"]
28+
python_versions: ["3.10", "3.11", "3.12", "3.13", "3.14"]
2929
test_suites:
3030
all: venv/bin/pytest -n 2 -vvs
3131

3232
- template: etc/ci/azure-posix.yml
3333
parameters:
34-
job_name: macos13_cpython
35-
image_name: macOS-13
36-
python_versions: ["3.9", "3.10", "3.11", "3.12", "3.13"]
34+
job_name: macos14_cpython
35+
image_name: macos-14
36+
python_versions: ["3.10", "3.11", "3.12", "3.13", "3.14"]
3737
test_suites:
3838
all: venv/bin/pytest -n 2 -vvs
3939

4040
- template: etc/ci/azure-posix.yml
4141
parameters:
42-
job_name: macos14_cpython
43-
image_name: macOS-14
44-
python_versions: ["3.9", "3.10", "3.11", "3.12", "3.13"]
42+
job_name: macos15_cpython
43+
image_name: macos-15
44+
python_versions: ["3.10", "3.11", "3.12", "3.13", "3.14"]
4545
test_suites:
4646
all: venv/bin/pytest -n 2 -vvs
4747

4848
- template: etc/ci/azure-win.yml
4949
parameters:
50-
job_name: win2025_cpython
51-
image_name: windows-2025
52-
python_versions: ["3.9", "3.10", "3.11", "3.12", "3.13"]
50+
job_name: win2022_cpython
51+
image_name: windows-2022
52+
python_versions: ["3.10", "3.11", "3.12", "3.13", "3.14"]
5353
test_suites:
5454
all: venv\Scripts\pytest -n 2 -vvs
5555

5656
- template: etc/ci/azure-win.yml
5757
parameters:
58-
job_name: win2022_cpython
59-
image_name: windows-2022
60-
python_versions: ["3.9", "3.10", "3.11", "3.12", "3.13"]
58+
job_name: win2025_cpython
59+
image_name: windows-2025
60+
python_versions: ["3.10", "3.11", "3.12", "3.13", "3.14"]
6161
test_suites:
6262
all: venv\Scripts\pytest -n 2 -vvs

etc/scripts/utils_requirements.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"""
1616
Utilities to manage requirements files and call pip.
1717
NOTE: this should use ONLY the standard library and not import anything else
18-
because this is used for boostrapping with no requirements installed.
18+
because this is used for bootstrapping with no requirements installed.
1919
"""
2020

2121

@@ -31,7 +31,7 @@ def load_requirements(requirements_file="requirements.txt", with_unpinned=False)
3131

3232
def get_required_name_versions(requirement_lines, with_unpinned=False):
3333
"""
34-
Yield required (name, version) tuples given a`requirement_lines` iterable of
34+
Yield required (name, version) tuples given a `requirement_lines` iterable of
3535
requirement text lines. Only accept requirements pinned to an exact version.
3636
"""
3737

@@ -47,7 +47,7 @@ def get_required_name_versions(requirement_lines, with_unpinned=False):
4747

4848
def get_required_name_version(requirement, with_unpinned=False):
4949
"""
50-
Return a (name, version) tuple given a`requirement` specifier string.
50+
Return a (name, version) tuple given a `requirement` specifier string.
5151
Requirement version must be pinned. If ``with_unpinned`` is True, unpinned
5252
requirements are accepted and only the name portion is returned.
5353

etc/scripts/utils_thirdparty.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,14 +115,14 @@
115115
TRACE_ULTRA_DEEP = False
116116

117117
# Supported environments
118-
PYTHON_VERSIONS = "39", "310", "311", "312", "313"
118+
PYTHON_VERSIONS = "310", "311", "312", "313", "314"
119119

120120
PYTHON_DOT_VERSIONS_BY_VER = {
121-
"39": "3.9",
122121
"310": "3.10",
123122
"311": "3.11",
124123
"312": "3.12",
125124
"313": "3.13",
125+
"314": "3.14",
126126
}
127127

128128

@@ -134,11 +134,11 @@ def get_python_dot_version(version):
134134

135135

136136
ABIS_BY_PYTHON_VERSION = {
137-
"39": ["cp39", "cp39m", "abi3"],
138137
"310": ["cp310", "cp310m", "abi3"],
139138
"311": ["cp311", "cp311m", "abi3"],
140139
"312": ["cp312", "cp312m", "abi3"],
141140
"313": ["cp313", "cp313m", "abi3"],
141+
"314": ["cp314", "cp314m", "abi3"],
142142
}
143143

144144
PLATFORMS_BY_OS = {

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[build-system]
2-
requires = ["setuptools >= 50", "wheel", "setuptools_scm[toml] >= 6"]
2+
requires = ["setuptools >= 50", "wheel"]
33
build-backend = "setuptools.build_meta"
44

55
[tool.setuptools_scm]

setup.cfg

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,16 +40,14 @@ license_files =
4040
README.rst
4141

4242
[options]
43-
python_requires = >=3.9
43+
python_requires = >=3.10
4444

4545
package_dir =
4646
=src
4747
packages = find:
4848
include_package_data = true
4949
zip_safe = false
5050

51-
setup_requires = setuptools_scm[toml] >= 4
52-
5351
install_requires =
5452
boolean.py >= 4.0
5553

0 commit comments

Comments
 (0)