Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
508a4c1
Update gh-ci-cron.yaml
IAlibay Oct 9, 2025
82a9735
Update gh-ci.yaml
IAlibay Oct 9, 2025
9ce0772
Update linters.yaml
IAlibay Oct 9, 2025
9e8cde9
Update gh-ci-cron.yaml
IAlibay Oct 9, 2025
d138fd6
Update deploy.yaml
IAlibay Oct 9, 2025
cf1a394
Update deploy.yaml
IAlibay Oct 9, 2025
67066b5
Update gh-ci.yaml
IAlibay Oct 9, 2025
b1ff70d
Update linters.yaml
IAlibay Oct 9, 2025
77cbae8
Update gh-ci-cron.yaml
IAlibay Oct 9, 2025
486b06c
Update .github/workflows/gh-ci-cron.yaml
IAlibay Oct 12, 2025
7875b58
update changelog, setup, and pipelines
IAlibay Oct 12, 2025
3961b66
try something
IAlibay Oct 12, 2025
cc5f950
try an earlier pin
IAlibay Oct 12, 2025
6f94d17
update rtd build
IAlibay Oct 12, 2025
784216c
turn off build isolation when building non-wheels
IAlibay Oct 12, 2025
6a8588c
fix linters
IAlibay Oct 12, 2025
0924b35
reverse flag order
IAlibay Oct 12, 2025
1a95096
add build deps
IAlibay Oct 12, 2025
7597da2
try ditching cython 3.1 lower pin
IAlibay Oct 12, 2025
f85e875
Update deploy.yaml
IAlibay Oct 12, 2025
733eb2e
Update gh-ci.yaml
IAlibay Oct 12, 2025
0d53715
Issue #5123
IAlibay Oct 12, 2025
f98792a
Update azure-pipelines.yml
IAlibay Oct 12, 2025
7ce6ecc
Update azure-pipelines.yml
IAlibay Oct 12, 2025
29b2cc6
fix flaky warnings check
IAlibay Oct 12, 2025
3189328
Merge branch 'python-3.14' of github.com:MDAnalysis/mdanalysis into p…
IAlibay Oct 12, 2025
aa4e95b
Update deploy.yaml
IAlibay Oct 12, 2025
3b5dcde
Add comment
IAlibay Oct 12, 2025
c15ee0c
Merge branch 'python-3.14' of github.com:MDAnalysis/mdanalysis into p…
IAlibay Oct 12, 2025
80e9c05
Cython >=3.1 tests
IAlibay Oct 12, 2025
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
9 changes: 4 additions & 5 deletions .github/workflows/deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ jobs:
- [macos-13, macosx_*, x86_64]
- [windows-2022, win_amd64, AMD64]
- [macos-14, macosx_*, arm64]
python: ["cp310", "cp311", "cp312", "cp313"]
python: ["cp311", "cp312", "cp313", "cp314"]
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any reason why py310 wheels are no longer being built?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MDAnalysis loosely follows SPEC0 (used to be NEP29), which dropped Python 3.10 sometime around the same time as our last release. The next release of MDAnalysis would be expected to drop Python 3.10, especially if 3.14 support comes through.

I'm taking the opportunity to use this PR tries to do a general tidy up ahead of MDAnalysis v2.10, since I'm likely to need to release it in the next couple of weeks.

defaults:
run:
working-directory: ./package
Expand All @@ -51,7 +51,7 @@ jobs:
fetch-depth: 0

- name: Build wheels
uses: pypa/cibuildwheel@v2.23.0
uses: pypa/cibuildwheel@v3.2.0
with:
package-dir: package
env:
Expand Down Expand Up @@ -246,14 +246,13 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ["3.10", "3.11", "3.12", "3.13"]
python-version: ["3.11", "3.12", "3.13", "3.14"]
type: ["FULL", "MIN"]
exclude:
# Multiple deps don't like windows
- os: windows-latest
type: "FULL"
# Chemfiles won't install over py3.13
- python-version: "3.13"
- python-version: "3.14"
type: "FULL"
env:
MPLBACKEND: agg
Expand Down
28 changes: 14 additions & 14 deletions .github/workflows/gh-ci-cron.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ on:
workflow_dispatch:
# Uncomment when you need to test on a PR
# pull_request:
# branches:
# - develop
# branches:
# - develop


concurrency:
Expand Down Expand Up @@ -107,7 +107,6 @@ jobs:
pip
condarc: |
channels:
- jaimergp/label/unsupported-cudatoolkit-shim
- conda-forge
- bioconda

Expand Down Expand Up @@ -141,7 +140,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04, macos-13]
os: [ubuntu-22.04, macos-13]

steps:
- uses: actions/checkout@v4
Expand All @@ -156,11 +155,10 @@ jobs:
with:
environment-name: mda
create-args: >-
python=3.10
python=3.11
pip
condarc: |
channels:
- jaimergp/label/unsupported-cudatoolkit-shim
- conda-forge
- bioconda

Expand Down Expand Up @@ -190,7 +188,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13"]
python-version: ["3.11", "3.12", "3.13", "3.14"]
steps:
- uses: actions/checkout@v4

Expand Down Expand Up @@ -233,10 +231,8 @@ jobs:
matrix:
# Stick to macos-13 because some of our
# optional deps don't support arm64 (i.e. macos-14)
#
# add "3.13" once conda-forge packages are available (see #4805)
os: [ubuntu-latest, macos-13]
python-version: ["3.10", "3.11", "3.12"]
python-version: ["3.10", "3.11", "3.12", "3.13"]
steps:
- uses: actions/checkout@v4

Expand All @@ -252,10 +248,8 @@ jobs:
create-args: >-
python=${{ matrix.python-version }}
pip
# using jaime's shim to avoid pulling down the cudatoolkit
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This no longer does anything.

condarc: |
channels:
- jaimergp/label/unsupported-cudatoolkit-shim
- conda-forge
- bioconda

Expand Down Expand Up @@ -298,15 +292,21 @@ jobs:
with:
python-version: ${{ matrix.python-version }}

- name: install_deps
shell: bash
run: |
pip install pytest-xdist pytest-timeout "numpy<2.3" "cython<3.1" wheel "setuptools>=40.9.0" packaging

- name: install_mdanalysis
shell: bash
run: |
# If wheels is False we build directly from source so we use the --no-binary flag
# to avoid pulling down wheels for MDAnalysis (which are already precompiled)
# Also need to add `--no-build-isolation` until next release, see Issue #5125
if [ "${{ matrix.wheels }}" == "false" ]; then
INSTALL_FLAGS="-vvv --no-binary"
INSTALL_FLAGS="--no-build-isolation --no-binary"
fi
pip install ${INSTALL_FLAGS} mdanalysis mdanalysistests pytest-xdist pytest-timeout
pip install ${INSTALL_FLAGS} mdanalysis mdanalysistests

- name: run_tests
shell: bash
Expand Down
37 changes: 25 additions & 12 deletions .github/workflows/gh-ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,29 +28,43 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest, ]
python-version: ["3.10", "3.11", "3.12"]
python-version: ["3.11", "3.12", "3.13"]
full-deps: [true, ]
codecov: [true, ]
cython: ["cython<3.1", ]
include:
- name: python_313
# Including 3.14 and 3.11 without coverage
# and cython >=3.1 to deal temporarily with
# keeping on testing Cython whilst issue #5057
# is not fixed
- name: python_314_nocov
os: ubuntu-latest
python-version: "3.13"
python-version: "3.14"
full-deps: false
codecov: true
- name: macOS_14_arm64_py312
codecov: false
cython: "cython>=3.1"
- name: python_311_nocov
os: ubuntu-latest
python-version: "3.11"
full-deps: false
codecov: false
cython: "cython>=3.1"
- name: macOS_14_arm64_py313
os: macOS-14
python-version: "3.12"
python-version: "3.13"
full-deps: false
codecov: true
cython: "cython<3.1"
- name: numpy_min
os: ubuntu-latest
python-version: "3.10"
python-version: "3.11"
full-deps: false
codecov: true
numpy: numpy=1.23.2
numpy: numpy=1.26.0
cython: "cython<3.1"
- name: asv_check
os: ubuntu-latest
python-version: "3.10"
python-version: "3.11"
full-deps: true
codecov: false
extra-pip-deps: asv
Expand Down Expand Up @@ -88,7 +102,7 @@ jobs:
# disable GSD because it occasionally introduce hanging in testing #4209
gsd: ''
# pin cython
cython: 'cython<3.1'
cython: ${{ matrix.cython }}
# in most cases will just default to empty, i.e. pick up max version from other deps
numpy: ${{ matrix.numpy }}
extra-pip-deps: ${{ matrix.extra-pip-deps }}
Expand Down Expand Up @@ -151,12 +165,11 @@ jobs:
with:
environment-name: mda
create-args: >-
python=3.10
python=3.11
pip
# using jaime's shim to avoid pulling down the cudatoolkit
condarc: |
channels:
- jaimergp/label/unsupported-cudatoolkit-shim
- conda-forge
- bioconda

Expand Down
10 changes: 4 additions & 6 deletions .github/workflows/linters.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:

- uses: actions/setup-python@v5
with:
python-version: "3.10"
python-version: "3.11"

- uses: psf/black@stable
with:
Expand All @@ -55,7 +55,7 @@ jobs:

- uses: actions/setup-python@v5
with:
python-version: "3.10"
python-version: "3.11"

- name: install
run: |
Expand All @@ -80,12 +80,10 @@ jobs:
with:
environment-name: mda
create-args: >-
python=3.10
python=3.11
pip
# using jaime's shim to avoid pulling down the cudatoolkit
condarc: |
channels:
- jaimergp/label/unsupported-cudatoolkit-shim
- conda-forge
- bioconda

Expand All @@ -94,7 +92,7 @@ jobs:
with:
micromamba: true
full-deps: true
numpy: numpy=1.23.2
numpy: numpy=1.26.0
rdkit: rdkit=2023.09.3

- name: install
Expand Down
33 changes: 17 additions & 16 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,39 +21,39 @@ jobs:
MPLBACKEND: agg
strategy:
matrix:
Win-Python310-64bit-full:
PYTHON_VERSION: '3.10'
Win-Python311-64bit-full:
PYTHON_VERSION: '3.11'
PYTHON_ARCH: 'x64'
BUILD_TYPE: 'normal'
imageName: 'windows-2019'
Win-Python312-64bit-full:
PYTHON_VERSION: '3.12'
Win-Python313-64bit-full:
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only going to py313 here because we have lots of deps in this file that aren't py314 compatible yet.

PYTHON_VERSION: '3.13'
PYTHON_ARCH: 'x64'
BUILD_TYPE: 'normal'
imageName: 'windows-2019'
Win-Python312-64bit-full-wheel:
PYTHON_VERSION: '3.12'
Win-Python313-64bit-full-wheel:
PYTHON_VERSION: '3.13'
PYTHON_ARCH: 'x64'
BUILD_TYPE: 'wheel'
NUMPY_MIN: '1.26.0'
NUMPY_MIN: '2.1.0'
imageName: 'windows-2019'
Win-Python310-64bit-full-wheel:
PYTHON_VERSION: '3.10'
Win-Python311-64bit-full-wheel:
PYTHON_VERSION: '3.11'
PYTHON_ARCH: 'x64'
BUILD_TYPE: 'wheel'
NUMPY_MIN: '1.23.2'
NUMPY_MIN: '1.26.0'
imageName: 'windows-2019'
Linux-Python312-64bit-full-wheel:
PYTHON_VERSION: '3.12'
Linux-Python313-64bit-full-wheel:
PYTHON_VERSION: '3.13'
PYTHON_ARCH: 'x64'
BUILD_TYPE: 'wheel'
NUMPY_MIN: '2.1.0'
imageName: 'ubuntu-latest'
Linux-Python310-64bit-full-wheel:
PYTHON_VERSION: '3.10'
Linux-Python311-64bit-full-wheel:
PYTHON_VERSION: '3.11'
PYTHON_ARCH: 'x64'
BUILD_TYPE: 'wheel'
NUMPY_MIN: '1.23.2'
NUMPY_MIN: '1.26.0'
imageName: 'ubuntu-latest'
pool:
vmImage: $(imageName)
Expand Down Expand Up @@ -100,6 +100,8 @@ jobs:
python -m pip install numpy==$(NUMPY_MIN)
displayName: 'pin to older NumPy (wheel test)'
condition: and(succeeded(), ne(variables['NUMPY_MIN'], ''))
# Disabled PyTNG checking, see issue #5123
# TODO: add pytng>=0.2.3 back once resolved
- script: >-
python -m pip install -vvv
biopython
Expand All @@ -110,7 +112,6 @@ jobs:
mmtf-python
networkx
parmed
pytng>=0.2.3
rdkit>=2024.03.4
tidynamics>=1.0.0
imdclient>=0.2.2
Expand Down
4 changes: 2 additions & 2 deletions maintainer/conda/environment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ dependencies:
- mmtf-python
- mock
- networkx
- numpy>=1.23.2
- numpy>=1.26.0
- pytest
- python==3.10
- python==3.11
- pytng>=0.2.3
- scikit-learn
- scipy
Expand Down
2 changes: 2 additions & 0 deletions package/CHANGELOG
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ Fixes
directly passing them. (Issue #3520, PR #5006)

Enhancements
* Support for Python 3.14 was added (PR #5121).
* Added support for reading and processing streamed data in `coordinates.base`
with new `StreamFrameIteratorSliced` and `StreamReaderBase` (Issue #4827, PR #4923)
* New coordinate reader: Added `IMDReader` for reading real-time streamed
Expand Down Expand Up @@ -80,6 +81,7 @@ Enhancements


Changes
* Support for Python 3.10 was removed, in line with SPEC0 (PR #5121).
* Refactored the RDKit converter code to move the inferring code in a separate
`RDKitInferring` module. The bond order and charges inferrer has been move to
an `MDAnalysisInferrer` dataclass in there. (PR #4305)
Expand Down
10 changes: 5 additions & 5 deletions package/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[build-system]
# Minimum requirements for the build system to execute
requires = [
"Cython>=0.28,<3.1",
"Cython>=0.28",
"packaging",
# numpy requirement for wheel builds for distribution on PyPI - building
# against 2.x yields wheels that are also compatible with numpy 1.x at
Expand All @@ -27,9 +27,9 @@ authors = [
maintainers = [
{name = 'MDAnalysis Core Developers', email = 'mdanalysis@numfocus.org'}
]
requires-python = ">=3.10"
requires-python = ">=3.11"
dependencies = [
'numpy>=1.23.2',
'numpy>=1.26.0',
'GridDataFormats>=0.4.0',
'mmtf-python>=1.0.0',
'joblib>=0.12',
Expand All @@ -55,10 +55,10 @@ classifiers = [
'Operating System :: MacOS :: MacOS X',
'Operating System :: Microsoft :: Windows',
'Programming Language :: Python',
'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 :: C',
'Topic :: Scientific/Engineering',
'Topic :: Scientific/Engineering :: Bio-Informatics',
Expand Down Expand Up @@ -126,7 +126,7 @@ MDAnalysis = [

[tool.black]
line-length = 79
target-version = ['py310', 'py311', 'py312', 'py313']
target-version = ['py311', 'py312', 'py313']
extend-exclude = '''
(
__pycache__
Expand Down
Loading
Loading