Skip to content

Commit a101ed9

Browse files
committed
build: release 4.0.0 (major)
2 parents 798bfa2 + ea8b6d2 commit a101ed9

61 files changed

Lines changed: 2715 additions & 1223 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.coveragerc

Lines changed: 0 additions & 29 deletions
This file was deleted.

.github/workflows/ci.yml

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [develop, master, main]
6+
pull_request:
7+
workflow_dispatch:
8+
9+
concurrency:
10+
group: ${{ github.workflow }}-${{ github.ref }}
11+
cancel-in-progress: true
12+
13+
jobs:
14+
test:
15+
runs-on: ubuntu-latest
16+
strategy:
17+
fail-fast: false
18+
matrix:
19+
python-version:
20+
['3.10', '3.11', '3.12', '3.13', '3.14', 'pypy3.10', 'pypy3.11']
21+
steps:
22+
- uses: actions/checkout@v4
23+
- uses: astral-sh/setup-uv@v6
24+
with:
25+
python-version: ${{ matrix.python-version }}
26+
enable-cache: true
27+
# tox-gh-actions maps the running interpreter to the matching env via the
28+
# [gh-actions] table in tox.ini (PyPy keyed as `pypy-3.10` / `pypy-3.11`).
29+
# COVERAGE_FILE gives each cell a unique data file for the combine job.
30+
- run: uvx --with tox-uv --with tox-gh-actions tox
31+
env:
32+
COVERAGE_FILE: .coverage.${{ matrix.python-version }}
33+
- uses: actions/upload-artifact@v4
34+
with:
35+
name: coverage-${{ matrix.python-version }}
36+
path: .coverage.*
37+
include-hidden-files: true
38+
if-no-files-found: error
39+
40+
lint:
41+
runs-on: ubuntu-latest
42+
steps:
43+
- uses: actions/checkout@v4
44+
- uses: astral-sh/setup-uv@v6
45+
- run: uvx --with tox-uv tox -e lint
46+
47+
type-check:
48+
runs-on: ubuntu-latest
49+
strategy:
50+
fail-fast: false
51+
matrix:
52+
checker: [mypy, pyright, pyrefly]
53+
steps:
54+
- uses: actions/checkout@v4
55+
- uses: astral-sh/setup-uv@v6
56+
- run: uvx --with tox-uv tox -e ${{ matrix.checker }}
57+
58+
codespell:
59+
runs-on: ubuntu-latest
60+
steps:
61+
- uses: actions/checkout@v4
62+
- uses: astral-sh/setup-uv@v6
63+
- run: uvx --with tox-uv tox -e codespell
64+
65+
docs:
66+
runs-on: ubuntu-latest
67+
steps:
68+
- uses: actions/checkout@v4
69+
- uses: astral-sh/setup-uv@v6
70+
- run: uvx --with tox-uv tox -e docs
71+
72+
coverage:
73+
needs: test
74+
runs-on: ubuntu-latest
75+
steps:
76+
- uses: actions/checkout@v4
77+
- uses: astral-sh/setup-uv@v6
78+
- uses: actions/download-artifact@v4
79+
with:
80+
pattern: coverage-*
81+
merge-multiple: true
82+
- run: uv run coverage combine
83+
- run: uv run coverage report --show-missing --fail-under=100

.github/workflows/codeql.yml

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
name: "CodeQL"
1+
name: CodeQL
22

33
on:
44
push:
5-
branches: [ "develop" ]
5+
branches: [develop, master, main]
66
pull_request:
7-
branches: [ "develop" ]
87
schedule:
9-
- cron: "46 1 * * 3"
8+
- cron: '46 1 * * 3' # weekly, Wednesdays 01:46 UTC
109

1110
jobs:
1211
analyze:
@@ -16,26 +15,18 @@ jobs:
1615
actions: read
1716
contents: read
1817
security-events: write
19-
2018
strategy:
2119
fail-fast: false
2220
matrix:
23-
language: [ python ]
24-
21+
language: [python]
2522
steps:
26-
- name: Checkout
27-
uses: actions/checkout@v3
28-
23+
- uses: actions/checkout@v4
2924
- name: Initialize CodeQL
30-
uses: github/codeql-action/init@v2
25+
uses: github/codeql-action/init@v3
3126
with:
3227
languages: ${{ matrix.language }}
3328
queries: +security-and-quality
34-
35-
- name: Autobuild
36-
uses: github/codeql-action/autobuild@v2
37-
3829
- name: Perform CodeQL Analysis
39-
uses: github/codeql-action/analyze@v2
30+
uses: github/codeql-action/analyze@v3
4031
with:
41-
category: "/language:${{ matrix.language }}"
32+
category: '/language:${{ matrix.language }}'

.github/workflows/main.yml

Lines changed: 0 additions & 58 deletions
This file was deleted.

.github/workflows/publish.yml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: Publish
2+
3+
on:
4+
push:
5+
tags: ['v*']
6+
7+
jobs:
8+
build:
9+
runs-on: ubuntu-latest
10+
steps:
11+
- uses: actions/checkout@v4
12+
- uses: astral-sh/setup-uv@v6
13+
- run: uv build
14+
- uses: actions/upload-artifact@v4
15+
with:
16+
name: dist
17+
path: dist/
18+
19+
publish:
20+
needs: build
21+
runs-on: ubuntu-latest
22+
environment: pypi
23+
permissions:
24+
id-token: write # OIDC — PyPI Trusted Publishing + PEP 740 attestations
25+
steps:
26+
- uses: actions/download-artifact@v4
27+
with:
28+
name: dist
29+
path: dist/
30+
- uses: pypa/gh-action-pypi-publish@release/v1
31+
with:
32+
attestations: true

.gitignore

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,37 @@
1-
/build
2-
/dist
3-
/*.egg-info
4-
/docs/_build
5-
/cover
6-
/.eggs
7-
/.*
1+
# Byte-compiled / caches
2+
__pycache__/
3+
*.py[cod]
4+
5+
# Packaging / build
6+
build/
7+
dist/
8+
*.egg-info/
9+
.eggs/
10+
11+
# Virtualenvs & tool caches
12+
.venv/
13+
.tox/
14+
.ruff_cache/
15+
.mypy_cache/
16+
.pytest_cache/
17+
.dmypy.json
18+
19+
# Local Python version pin (per-developer; not enforced on the matrix)
20+
.python-version
21+
22+
# Coverage
23+
.coverage
24+
.coverage.*
25+
htmlcov/
26+
cover/
27+
28+
# Docs
29+
docs/_build/
30+
31+
# Editors / OS
32+
.idea/
33+
.vscode/
34+
.DS_Store
35+
36+
# uv lockfile — not committed at this tier (library); commit at best-in-class.
37+
uv.lock

.readthedocs.yaml

Lines changed: 9 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,20 @@
1-
# Read the Docs configuration file for Sphinx projects
2-
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
1+
# Read the Docs configuration file for Sphinx projects.
2+
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details.
33

4-
# Required
54
version: 2
65

7-
# Set the OS, Python version and other tools you might need
86
build:
9-
os: ubuntu-22.04
7+
os: ubuntu-24.04
108
tools:
11-
python: "3.12"
12-
# You can also specify other tool versions:
13-
# nodejs: "20"
14-
# rust: "1.70"
15-
# golang: "1.20"
9+
python: '3.13'
1610

17-
# Build documentation in the "docs/" directory with Sphinx
1811
sphinx:
1912
configuration: docs/conf.py
20-
# You can configure Sphinx to use a different builder, for instance use the dirhtml builder for simpler URLs
21-
# builder: "dirhtml"
22-
# Fail on all warnings to avoid broken references
23-
# fail_on_warning: true
13+
fail_on_warning: true # mirrors `sphinx-build -W` in CI/tox
2414

25-
# Optionally build your docs in additional formats such as PDF and ePub
26-
formats:
27-
- pdf
28-
- epub
29-
30-
# Optional but recommended, declare the Python requirements required
31-
# to build your documentation
32-
# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
3315
python:
3416
install:
35-
- requirements: docs/requirements.txt
17+
- method: pip
18+
path: .
19+
extra_requirements:
20+
- docs

MANIFEST.in

Lines changed: 0 additions & 12 deletions
This file was deleted.

0 commit comments

Comments
 (0)