Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .audit/python315.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
## AI Assistance Disclosure

- [ ] I did **not** use any AI-assistance tools to help create this pull request.
- [x] I **did** use AI-assistance tools to *help* create this pull request.
- [x] I have read, understood and followed the projects' [AI Policy](https://github.com/crossbario/autobahn-python/blob/main/AI_POLICY.md) when creating code, documentation etc. for this pull request.

Submitted by: @p-r-a-v-i-n
Date: 2026-09-27
Related issue(s): #1963
Branch: p-r-a-v-i-n:python315
2 changes: 1 addition & 1 deletion .github/templates/release-development.md.j2
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Development build from pull request

## Python Versions

- **CPython**: 3.11, 3.12, 3.13, 3.14
- **CPython**: 3.11, 3.12, 3.13, 3.14, 3.15
- **PyPy**: 3.11

## Installation
Expand Down
2 changes: 1 addition & 1 deletion .github/templates/release-nightly.md.j2
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Automated nightly build from master branch

## Python Versions

- **CPython**: 3.11, 3.12, 3.13, 3.14
- **CPython**: 3.11, 3.12, 3.13, 3.14, 3.15
- **PyPy**: 3.11

## Installation
Expand Down
2 changes: 1 addition & 1 deletion .github/templates/release-stable.md.j2
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Official release {{ release_name }}

## Python Versions

- **CPython**: 3.11, 3.12, 3.13, 3.14
- **CPython**: 3.11, 3.12, 3.13, 3.14, 3.15
- **PyPy**: 3.11

## Installation
Expand Down
32 changes: 23 additions & 9 deletions .github/workflows/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -179,23 +179,31 @@ functionality to wheel installs including the flatc binary.
|----------|--------------|----------|----------|
| **main.yml** | `documentation` | `docs/_build/html/` | N/A |
| **wstest.yml** | `wstest-results` | WebSocket conformance reports | N/A |
| **wheels.yml** | `wheels-macos-arm64` | macOS ARM64 wheels (cpy311-314, pypy311) | macOS arm64 |
| **wheels.yml** | `wheels-windows-x86_64` | Windows x64 wheels (cpy311-314, pypy311) | Windows x86_64 |
| **wheels.yml** | `wheels-windows-arm64` | Windows ARM64 wheels (cpy311-314, no PyPy) | Windows arm64 |
| **wheels.yml** | `wheels-macos-arm64` | macOS ARM64 wheels (cpy311-315, pypy311-312) | macOS arm64 |
| **wheels.yml** | `wheels-windows-x86_64` | Windows x64 wheels (cpy311-315, pypy311-312) | Windows x86_64 |
| **wheels.yml** | `wheels-windows-arm64` | Windows ARM64 wheels (cpy311-315, no PyPy) | Windows arm64 |
| **wheels.yml** | `linux-wheels-no-nvx` | Pure Python wheels (no NVX) | Linux x86_64 |
| **wheels.yml** | `source-distribution` | `*.tar.gz` sdist | Linux (build host) |
| **wheels-docker.yml** | `artifacts-manylinux_2_28_x86_64` | Linux x64 wheels (see below) | Linux x86_64 |
| **wheels-arm64.yml** | `artifacts-arm64-cpython-3.11-manylinux_2_28_aarch64` | CPython 3.11 wheel | Linux aarch64 |
| **wheels-arm64.yml** | `artifacts-arm64-cpython-3.12-manylinux_2_28_aarch64` | CPython 3.12 wheel | Linux aarch64 |
| **wheels-arm64.yml** | `artifacts-arm64-cpython-3.13-manylinux_2_28_aarch64` | CPython 3.13 wheel | Linux aarch64 |
| **wheels-arm64.yml** | `artifacts-arm64-cpython-3.14-manylinux_2_28_aarch64` | CPython 3.14 wheel | Linux aarch64 |
| **wheels-arm64.yml** | `artifacts-arm64-cpython-3.15-manylinux_2_28_aarch64` | CPython 3.15 wheel | Linux aarch64 |
| **wheels-arm64.yml** | `artifacts-arm64-cpython-3.15-musllinux_1_2_aarch64` | CPython 3.15 musllinux wheel | Linux aarch64 |
| **wheels-arm64.yml** | `artifacts-arm64-pypy-3.11-bookworm-manylinux_2_36_aarch64` | PyPy 3.11 wheel (Debian 12) | Linux aarch64 |
| **wheels-arm64.yml** | `artifacts-arm64-pypy-3.11-trixie-manylinux_2_38_aarch64` | PyPy 3.11 wheel (Debian 13) | Linux aarch64 |
| **wheels-arm64.yml** | `artifacts-arm64-pypy-3.12-bookworm-manylinux_2_36_aarch64` | PyPy 3.12 / pp80 wheel (Debian 12) | Linux aarch64 |
| **wheels-arm64.yml** | `artifacts-arm64-pypy-3.12-trixie-manylinux_2_38_aarch64` | PyPy 3.12 / pp80 wheel (Debian 13) | Linux aarch64 |

**wheels-docker.yml artifact contents** (`artifacts-manylinux_2_28_x86_64`):
- `cpy311-linux-x86_64-manylinux_2_28`
- `cpy312-linux-x86_64-manylinux_2_28`
- `cpy313-linux-x86_64-manylinux_2_28`
- `cpy314-linux-x86_64-manylinux_2_28`
- `cpy315-linux-x86_64-manylinux_2_28`
- `pypy311-linux-x86_64-manylinux_2_28`
- `pypy312-linux-x86_64-manylinux_2_28`

### 2. Artifact Consumer (release.yml)

Expand All @@ -211,22 +219,28 @@ download action. It maps artifact names via the `check-workflows` job outputs:
| `artifact_linux_no_nvx` | wheels.yml | `linux-wheels-no-nvx` |
| `artifact_manylinux_x86_64` | wheels-docker.yml | `artifacts-manylinux_2_28_x86_64` |
| `artifact_arm64_cp311` | wheels-arm64.yml | `artifacts-arm64-cpython-3.11-manylinux_2_28_aarch64` |
| `artifact_arm64_cp312` | wheels-arm64.yml | `artifacts-arm64-cpython-3.12-manylinux_2_28_aarch64` |
| `artifact_arm64_cp313` | wheels-arm64.yml | `artifacts-arm64-cpython-3.13-manylinux_2_28_aarch64` |
| `artifact_arm64_cp314` | wheels-arm64.yml | `artifacts-arm64-cpython-3.14-manylinux_2_28_aarch64` |
| `artifact_arm64_cp315` | wheels-arm64.yml | `artifacts-arm64-cpython-3.15-manylinux_2_28_aarch64` |
| `artifact_arm64_cp315_musl` | wheels-arm64.yml | `artifacts-arm64-cpython-3.15-musllinux_1_2_aarch64` |
| `artifact_arm64_pypy_bookworm` | wheels-arm64.yml | `artifacts-arm64-pypy-3.11-bookworm-manylinux_2_36_aarch64` |
| `artifact_arm64_pypy_trixie` | wheels-arm64.yml | `artifacts-arm64-pypy-3.11-trixie-manylinux_2_38_aarch64` |
| `artifact_arm64_pypy312_bookworm` | wheels-arm64.yml | `artifacts-arm64-pypy-3.12-bookworm-manylinux_2_36_aarch64` |
| `artifact_arm64_pypy312_trixie` | wheels-arm64.yml | `artifacts-arm64-pypy-3.12-trixie-manylinux_2_38_aarch64` |

## Platform Coverage

### Wheels Built

| Platform | Architecture | Python Versions | Manylinux Tag | Workflow |
|----------|--------------|-----------------|---------------|----------|
| Linux | x86_64 | 3.11, 3.12, 3.13, 3.14, PyPy 3.11 | manylinux_2_28 | wheels-docker.yml |
| Linux | aarch64 | 3.11, 3.13 | manylinux_2_28 | wheels-arm64.yml |
| Linux | aarch64 | PyPy 3.11 | manylinux_2_36/2_38 | wheels-arm64.yml |
| macOS | arm64 | 3.11, 3.12, 3.13, 3.14, PyPy 3.11 | N/A | wheels.yml |
| Windows | x86_64 | 3.11, 3.12, 3.13, 3.14, PyPy 3.11 | N/A | wheels.yml |
| Windows | arm64 | 3.11, 3.12, 3.13, 3.14 (no PyPy) | N/A | wheels.yml |
| Linux | x86_64 | 3.11, 3.12, 3.13, 3.14, 3.15, PyPy 3.11/3.12 | manylinux_2_28 | wheels-docker.yml |
| Linux | aarch64 | 3.11, 3.12, 3.13, 3.14, 3.15 | manylinux_2_28 | wheels-arm64.yml |
| Linux | aarch64 | PyPy 3.11/3.12 | manylinux_2_36/2_38 | wheels-arm64.yml |
| macOS | arm64 | 3.11, 3.12, 3.13, 3.14, 3.15, PyPy 3.11/3.12 | N/A | wheels.yml |
| Windows | x86_64 | 3.11, 3.12, 3.13, 3.14, 3.15, PyPy 3.11/3.12 | N/A | wheels.yml |
| Windows | arm64 | 3.11, 3.12, 3.13, 3.14, 3.15 (no PyPy) | N/A | wheels.yml |

### Why Manylinux Containers?

Expand Down
50 changes: 25 additions & 25 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -85,17 +85,17 @@ jobs:

- name: Create Python environment and install tools
run: |
just create cpy314
just install-tools cpy314
just create cpy315
just install-tools cpy315

- name: Code formatting / linting (via ruff)
run: just check-format cpy314
run: just check-format cpy315

- name: Code static typing (via ty)
run: just check-typing cpy314
run: just check-typing cpy315

- name: Code test coverage (Combined Twisted + asyncio) - WITH NVX
run: just check-coverage-combined cpy314 1
run: just check-coverage-combined cpy315 1

- name: Upload coverage report (with-nvx)
if: always()
Expand All @@ -106,7 +106,7 @@ jobs:
retention-days: 14

- name: Code test coverage (Combined Twisted + asyncio) - WITHOUT NVX
run: just check-coverage-combined cpy314 0
run: just check-coverage-combined cpy315 0

- name: Upload coverage report (without-nvx)
if: always()
Expand All @@ -117,16 +117,16 @@ jobs:
retention-days: 14

- name: Unit test - Twisted / trial - WITH NVX
run: just test-twisted cpy314 1
run: just test-twisted cpy315 1

- name: Unit test - Twisted / trial - WITHOUT NVX
run: just test-twisted cpy314 0
run: just test-twisted cpy315 0

- name: Unit test - asyncio / pytest - WITH NVX
run: just test-asyncio cpy314 1
run: just test-asyncio cpy315 1

- name: Unit test - asyncio / pytest - WITHOUT NVX
run: just test-asyncio cpy314 0
run: just test-asyncio cpy315 0

test-serdes:
name: SerDes Conformance Tests
Expand All @@ -142,7 +142,7 @@ jobs:

strategy:
matrix:
python-env: [cpy314, cpy311, pypy311]
python-env: [cpy315, cpy311, pypy312, pypy311]

steps:
- name: Checkout code
Expand Down Expand Up @@ -230,12 +230,12 @@ jobs:
PR_BRANCH: ${{ needs.identifiers.outputs.pr_branch }}

# Runs on ALL supported Python versions (unlike the main test suite, which
# runs on cpy314 only) so import-time annotation regressions that only fire
# runs on cpy315 only) so import-time annotation regressions that only fire
# on CPython < 3.14 - e.g. #1878 - are caught. Crypto extras are installed
# (via install-dev -> autobahn[all]) so the cryptosign code paths run.
strategy:
matrix:
python-env: [cpy314, cpy313, cpy312, cpy311, pypy311]
python-env: [cpy315, cpy314, cpy313, cpy312, cpy311, pypy312, pypy311]

steps:
- name: Checkout code
Expand Down Expand Up @@ -393,11 +393,11 @@ jobs:

- name: Create Python environment and install tools
run: |
just create cpy314
just install-tools cpy314
just create cpy315
just install-tools cpy315

- name: Build documentation
run: just docs cpy314
run: just docs cpy315

- name: Upload documentation artifacts
uses: wamp-proto/wamp-cicd/actions/upload-artifact-verified@main
Expand Down Expand Up @@ -452,13 +452,13 @@ jobs:

# - name: Create Python environment and install tools
# run: |
# just create cpy314
# just install-tools cpy314
# just create cpy315
# just install-tools cpy315

# - name: Run spellcheck
# run: |
# # Navigate to docs directory and run sphinx spellcheck
# cd docs && ../.venvs/cpy314/bin/sphinx-build -b spelling . _spelling
# cd docs && ../.venvs/cpy315/bin/sphinx-build -b spelling . _spelling

# FIXME: 1 warning, 52 errors in 0.82s
#
Expand Down Expand Up @@ -500,12 +500,12 @@ jobs:

# - name: Create Python environment and install package
# run: |
# just create cpy314
# just install-tools cpy314
# just install-dev cpy314
# just create cpy315
# just install-tools cpy315
# just install-dev cpy315

# - name: Run test suite
# run: just test cpy314
# run: just test cpy315

build-schema:
name: FlatBuffers Schema Build
Expand All @@ -521,7 +521,7 @@ jobs:

strategy:
matrix:
python-env: [cpy314, cpy311, pypy311]
python-env: [cpy315, cpy311, pypy312, pypy311]

steps:
- name: Checkout code
Expand Down Expand Up @@ -684,7 +684,7 @@ jobs:

strategy:
matrix:
python-env: [cpy314, cpy311, pypy311]
python-env: [cpy315, cpy311, pypy312, pypy311]

steps:
- name: Checkout code
Expand Down
Loading
Loading