Skip to content
Merged
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
5 changes: 5 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@

version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
target-branch: "develop"
schedule:
interval: "weekly"
- package-ecosystem: "pip" # See documentation for possible values
directory: "/" # Location of package manifests
schedule:
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/build-and-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: actions/checkout@v7
- uses: actions/setup-python@v7
with:
python-version: "3.14"
python-version: "3.15"
- name: install dependencies
run: |
python -m pip install --upgrade pip
Expand Down
65 changes: 38 additions & 27 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -1,30 +1,38 @@
name: tests

on: [push, pull_request]
on:
push:
pull_request:
workflow_dispatch:

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:

test:
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
include:
- python: "3.14"
- python: "3.15"
toxenv: flake8
os: ubuntu-latest
- python: "3.14"
- python: "3.15"
toxenv: mypy
os: ubuntu-latest
- python: "3.14"
- python: "3.15"
toxenv: pylint
os: ubuntu-latest
- python: "3.14"
- python: "3.15"
toxenv: black
os: ubuntu-latest

- python: "3.10"
toxenv: py310
os: ubuntu-latest
- python: "3.11"
toxenv: py311
os: ubuntu-latest
Expand All @@ -37,32 +45,35 @@ jobs:
- python: "3.14"
toxenv: py314
os: ubuntu-latest

- python: "pypy3.10"
toxenv: pypy310
- python: "3.15"
toxenv: py315
os: ubuntu-latest
- python: "pypy3.11"

- python: "pypy-3.11"
toxenv: pypy311
os: ubuntu-latest
- python: "pypy-3.12"
toxenv: pypy312
os: ubuntu-latest

- python: "3.14"
toxenv: py314
- python: "3.15"
toxenv: py315
os: macos-latest
- python: "3.14"
toxenv: py314
- python: "3.15"
toxenv: py315
os: windows-latest

runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: actions/checkout@v7
- uses: actions/setup-python@v7
with:
python-version: ${{ matrix.python }}
- name: install dependencies
run: python -m pip install --upgrade pip tox
- name: run
env:
TOXENV: ${{ matrix.toxenv }}
run: tox
- name: setup
run: pip install -e .
python-version: ${{ matrix.python }}
cache: pip
cache-dependency-path: |
pyproject.toml
tox.ini
- name: Install tox
run: python -m pip install --upgrade pip "tox>=4,<5"
- name: Run checks
run: python -m tox run -e ${{ matrix.toxenv }}
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
repos:
- repo: https://github.com/psf/black
rev: 22.10.0
rev: 25.12.0
hooks:
- id: black
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,17 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.

## Unreleased

### Changed
- Minimum Python version is now 3.11; CPython and PyPy 3.10 are no longer supported.
- Python 3.15 is primary for linting, packaging, and cross-platform tests, with
CPython 3.11 through 3.14 compatibility coverage.
- Modernized GitHub Actions, dependency caching, and Black configuration.

### Added
- Required CI coverage for stable PyPy 3.12 alongside PyPy 3.11.

### Fixed
- Supply the dependencies of PyPy's bundled cffi and HPy packages in tox.
- Fixed bug in `Perm.rtlmax_ltrmin_decomposition` and fixed associated tests.

## 2.3.1 - 2025-06-13
Expand Down
2 changes: 2 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ To install Permuta on your system, run:

pip install permuta

Python 3.11 or newer is required.

It is also possible to install Permuta in development mode to work on the
source code, in which case you run the following after cloning the repository:

Expand Down
7 changes: 4 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,17 @@ classifiers = [
"Intended Audience :: Education",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: BSD License",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: 3.15",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Education",
"Topic :: Scientific/Engineering :: Mathematics",
]
requires-python = ">=3.10"
requires-python = ">=3.11"
dependencies = [
"automata-lib==9.2.0",
]
Expand All @@ -53,7 +54,7 @@ include = [
]

[tool.black]
target-version = ['py310']
target-version = ['py311']
include = '\.pyi?$'
exclude = '''

Expand Down
20 changes: 14 additions & 6 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -4,28 +4,35 @@
# and then run "tox" from this directory.

[tox]
minversion = 4
envlist =
flake8, mypy, pylint, black
py{310,311,312,313,314},
pypy{310,311}
py{311,312,313,314,315},
pypy{311,312}

[default]
basepython=python3.14
basepython=python3.15

[testenv]
description = run test
basepython =
py310: python3.10
py311: python3.11
py312: python3.12
py313: python3.13
py314: python3.14
pypy310: pypy3.10
py315: python3.15
pypy311: pypy3.11
pypy312: pypy3.12
deps =
pytest
pytest-timeout
commands = pytest
# PyPy bundles cffi and HPy; virtualenv may omit their dependencies.
pycparser; platform_python_implementation == "PyPy"
setuptools; platform_python_implementation == "PyPy"
commands =
python -m pip check
python -m pip freeze
python -m pytest {posargs}

[pytest]
addopts = --doctest-modules --doctest-ignore-import-errors
Expand Down Expand Up @@ -59,6 +66,7 @@ commands = mypy
[testenv:black]
description = check that comply with autoformating
basepython = {[default]basepython}
skip_install = True
deps =
black==25.12.0
commands = black --check --diff .
Loading