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
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ NUMBA_CACHE_DIR=/tmp/numba_cache MPLCONFIGDIR=/tmp/matplotlib python -m pytest t

PRs must pass `pytest --cov` on the CI matrix (Python 3.12 **and** 3.13). There
is no black/ruff/flake8 gate — formatting is advisory. (`requires-python` in
`pyproject.toml` is `>=3.9`.)
`pyproject.toml` is `>=3.12`.)

## Configuration & defaults

Expand Down
7 changes: 2 additions & 5 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ dynamic = ["version"]
description="Open-Source Strong Lensing"
readme = { file = "README.md", content-type = "text/markdown" }
license = { text = "MIT" }
requires-python = ">=3.9"
requires-python = ">=3.12"
authors = [
{ name = "James Nightingale", email = "James.Nightingale@newcastle.ac.uk" },
{ name = "Richard Hayes", email = "richard@rghsoftware.co.uk" },
Expand All @@ -18,9 +18,6 @@ classifiers = [
"Topic :: Scientific/Engineering :: Physics",
"Natural Language :: English",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13"
]
Expand Down Expand Up @@ -75,4 +72,4 @@ testpaths = ["test_autolens"]
filterwarnings = [
"ignore:cuda_plugin_extension:UserWarning",
"ignore::DeprecationWarning:jax",
]
]
8 changes: 3 additions & 5 deletions test_autolens/potential_correction/test_fit_interferometer.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,11 @@

# `apply_sparse_operator` is a JAX-only code path: `InterferometerSparseOperator`
# builds its FFT kernel with `jax.numpy` and projects with `jax.ops.segment_sum`
# / `jax.lax`, with no NumPy equivalent. `autonerves[jax]` gates jax to
# Python >= 3.11, so the sparse-route case cannot run on the 3.9/3.10 matrix
# legs — skip it there rather than fail. The dense-route cases stay NumPy-only
# and run everywhere, which is what those legs exist to prove.
# / `jax.lax`, with no NumPy equivalent. Skip the sparse-route case when the
# optional JAX dependency is not installed. The dense route stays NumPy-only.
requires_jax = pytest.mark.skipif(
importlib.util.find_spec("jax") is None,
reason="apply_sparse_operator is a JAX-only path; jax requires Python >= 3.11",
reason="apply_sparse_operator requires the optional JAX dependency",
)


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,11 @@

# `apply_sparse_operator` is a JAX-only code path: `InterferometerSparseOperator`
# builds its FFT kernel with `jax.numpy` and projects with `jax.ops.segment_sum`
# / `jax.lax`, with no NumPy equivalent. `autonerves[jax]` gates jax to
# Python >= 3.11, so the cases below cannot run on the 3.9/3.10 matrix legs —
# skip them there rather than fail. The dense-route cases stay NumPy-only and
# run everywhere, which is what those legs exist to prove.
# / `jax.lax`, with no NumPy equivalent. Skip these cases when the optional JAX
# dependency is not installed. The dense-route cases stay NumPy-only.
requires_jax = pytest.mark.skipif(
importlib.util.find_spec("jax") is None,
reason="apply_sparse_operator is a JAX-only path; jax requires Python >= 3.11",
reason="apply_sparse_operator requires the optional JAX dependency",
)


Expand Down
Loading