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
3 changes: 3 additions & 0 deletions .github/requirements-develop.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Install these inside tox for checks against the development branches.
comb-spec-searcher @ git+https://github.com/PermutaTriangle/comb_spec_searcher.git@develop
permuta @ git+https://github.com/PermutaTriangle/Permuta.git@develop
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
170 changes: 87 additions & 83 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -1,83 +1,87 @@
name: tests

on: [push, pull_request]

jobs:

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

- python: "3.10"
toxenv: py310
os: ubuntu-latest
- python: "3.11"
toxenv: py311
os: ubuntu-latest
- python: "3.12"
toxenv: py312
os: ubuntu-latest
- python: "3.13"
toxenv: py313
os: ubuntu-latest
- python: "3.14"
toxenv: py314
os: ubuntu-latest

- python: "pypy-3.10"
toxenv: pypy310
os: ubuntu-latest
- python: "pypy-3.11"
toxenv: pypy311
os: ubuntu-latest

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

runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- name: Install dependencies from develop branch
if: github.ref != 'refs/heads/master' && !(github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'master')
run: |
echo "Installing dependencies from develop branches instead of PyPI"
python -m pip install git+https://github.com/PermutaTriangle/comb_spec_searcher.git@develop
python -m pip install git+https://github.com/PermutaTriangle/Permuta.git@develop

# Install the project in development mode to work with the new dependencies
python -m pip install -e .

# Verify installed versions
echo "Checking installed comb_spec_searcher version:"
python -c "import comb_spec_searcher; print(comb_spec_searcher.__version__)"
echo "Checking installed permuta version:"
python -c "import permuta; print(permuta.__version__)"
- 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 .
name: tests

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.15"
toxenv: flake8
os: ubuntu-latest
- python: "3.15"
toxenv: mypy
os: ubuntu-latest
- python: "3.15"
toxenv: pylint
os: ubuntu-latest
- python: "3.15"
toxenv: black
os: ubuntu-latest

- python: "3.11"
toxenv: py311
os: ubuntu-latest
- python: "3.12"
toxenv: py312
os: ubuntu-latest
- python: "3.13"
toxenv: py313
os: ubuntu-latest
- python: "3.14"
toxenv: py314
os: ubuntu-latest
- python: "3.15"
toxenv: py315
os: ubuntu-latest

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

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

runs-on: ${{ matrix.os }}
env:
# Release checks use PyPI; other branches test both development dependencies.
# tox reads this when resolving dependencies inside each test environment.
TILINGS_TEST_DEPS: >-
${{ github.ref != 'refs/heads/master' &&
!(github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'master') &&
'-r.github/requirements-develop.txt' || '' }}
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v7
with:
python-version: ${{ matrix.python }}
cache: pip
cache-dependency-path: |
pyproject.toml
tox.ini
.github/requirements-develop.txt
- 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
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,19 @@ 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 the primary version for linting, packaging, and cross-platform
tests, with compatibility tests for CPython 3.11 through 3.14.
- Black targets Python 3.11, the minimum supported version.

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

### Fixed
- Install the dependencies of PyPy's bundled cffi and HPy packages in tox so
dependency checks pass.

## [4.1.0] - 2026-01-15
### Changed
- new GriddedPerm.contains_patt function checks positions first, then pattern
Expand Down
2 changes: 2 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ To install ``tilings`` on your system, run:

pip install tilings

Python 3.11 or newer is required.

If you would like to edit the source code, you should install ``tilings`` in
development mode by cloning the repository, running

Expand Down
10 changes: 3 additions & 7 deletions pylintrc
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,6 @@ persistent=yes
# Specify a configuration file.
#rcfile=

# When enabled, pylint would attempt to guess common misconfiguration and emit
# user-friendly hints instead of false-positive error messages.
suggestion-mode=yes

# Allow loading of arbitrary C extensions. Extensions are imported into the
# active Python interpreter and may run arbitrary code.
unsafe-load-any-extension=no
Expand Down Expand Up @@ -517,6 +513,6 @@ preferred-modules=
[EXCEPTIONS]

# Exceptions that will emit a warning when being caught. Defaults to
# "BaseException, Exception".
overgeneral-exceptions=BaseException,
Exception
# "builtins.BaseException, builtins.Exception".
overgeneral-exceptions=builtins.BaseException,
builtins.Exception
7 changes: 4 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,17 @@ classifiers = [
"Intended Audience :: Science/Research",
"License :: OSI Approved :: BSD License",
"Programming Language :: Python :: 3",
"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 = [
"comb-spec-searcher>=4.2.1",
"permuta>=2.3.0",
Expand Down Expand Up @@ -68,7 +69,7 @@ include = [
]

[tool.black]
target-version = ['py310']
target-version = ['py311']
include = '\.pyi?$'
exclude = '''
(
Expand Down
4 changes: 2 additions & 2 deletions tilings/algorithms/requirement_placement.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ def already_placed(
return cell in self._point_row_cells
if self.own_col: # Only placing in own column
return cell in self._point_col_cells
raise Exception("Not placing at all!!")
raise ValueError("Not placing at all!!")

def _point_translation(
self, gp: GriddedPerm, index: int, placed_cell: Cell
Expand Down Expand Up @@ -283,7 +283,7 @@ def _farther(c1: Cell, c2: Cell, direction: Dir) -> bool:
return c1[1] > c2[1]
if direction == DIR_SOUTH:
return c1[1] < c2[1]
raise Exception("Invalid direction")
raise ValueError("Invalid direction")

def forced_obstructions_from_requirement(
self,
Expand Down
2 changes: 1 addition & 1 deletion tilings/strategies/factor.py
Original file line number Diff line number Diff line change
Expand Up @@ -633,7 +633,7 @@ def __str__(self) -> str:
elif self.factor_class is FactorWithMonotoneInterleavingStrategy:
s = "factor with monotone interleaving"
else:
raise Exception("Invalid interleaving type")
raise ValueError("Invalid interleaving type")
if self.unions:
s = "unions of " + s
if self.tracked:
Expand Down
24 changes: 16 additions & 8 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -4,31 +4,36 @@
# 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
# PyPy bundles cffi and HPy; virtualenv may omit their dependencies.
pycparser; platform_python_implementation == "PyPy"
setuptools; platform_python_implementation == "PyPy"
{env:TILINGS_TEST_DEPS:}
commands =
pip install --force-reinstall git+https://github.com/PermutaTriangle/comb_spec_searcher.git@develop
pip freeze
pytest
python -m pip check
python -m pip freeze
python -m pytest {posargs}

[pytest]
addopts = --doctest-modules --doctest-ignore-import-errors
Expand All @@ -51,6 +56,7 @@ description = run pylint (static code analysis)
basepython = {[default]basepython}
deps =
pylint
{env:TILINGS_TEST_DEPS:}
commands = pylint tilings

[testenv:mypy]
Expand All @@ -60,11 +66,13 @@ deps =
mypy
types-requests
types-tabulate
{env:TILINGS_TEST_DEPS:}
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