Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Python 3.13 to CI #3103

Merged
merged 42 commits into from
Dec 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
bb74a5f
Add support for Python 3.13
JCGoran Dec 4, 2024
2a7c9cf
Missed one instance
JCGoran Dec 4, 2024
831b2bc
Consistent `neuron_wheel` tags
JCGoran Dec 4, 2024
387ee95
Rerun CI
JCGoran Dec 4, 2024
8d4f106
Merge remote-tracking branch 'origin/jelic/test_313' into jelic/test_313
JCGoran Dec 4, 2024
75b07cd
Upgrade Python orb in circle CI
JCGoran Dec 4, 2024
a5ffdfc
Try suggestion
JCGoran Dec 5, 2024
01320a7
Try in the right location
JCGoran Dec 5, 2024
9821eaf
Fix issue on Python 3.13.1
JCGoran Dec 6, 2024
714c81b
Missed one
JCGoran Dec 6, 2024
1e4bced
And another
JCGoran Dec 6, 2024
6f967c1
Fix rest of issues with iterables
JCGoran Dec 6, 2024
ff010a7
One more
JCGoran Dec 6, 2024
460e12b
More casting to list
JCGoran Dec 6, 2024
8262448
Another one
JCGoran Dec 6, 2024
0564d49
Another
JCGoran Dec 6, 2024
e474bbf
Python 3.13.1 failure for [s for s in sl] where sl is a SectionList.
nrnhines Dec 7, 2024
bf3cc7e
Update doc for h.SectionList()
nrnhines Dec 7, 2024
781a75c
Revert list changes
JCGoran Dec 8, 2024
bb33d12
Merge branch 'hines/seclist-iter' into jelic/test_313
JCGoran Dec 8, 2024
fb30bb5
Add workaround for `install_name_tool` issue
JCGoran Dec 8, 2024
4c9c9d7
Typo
JCGoran Dec 8, 2024
e700d85
Try single quotes
JCGoran Dec 9, 2024
25bb7ae
Merge branch 'jelic/test_313' into circleci/py313
JCGoran Dec 9, 2024
9e96b90
Update pyenv
JCGoran Dec 9, 2024
2c2da0c
I don't know anymore
JCGoran Dec 9, 2024
a4ff914
Do not copy dockerfile
JCGoran Dec 9, 2024
3d23437
Revert "Do not copy dockerfile"
JCGoran Dec 9, 2024
bcf17f2
yYYYYYY
JCGoran Dec 9, 2024
5c23c80
Test
JCGoran Dec 9, 2024
4158389
Try manually
JCGoran Dec 9, 2024
4200be8
Print version
JCGoran Dec 9, 2024
d01a188
Add back most of it
JCGoran Dec 9, 2024
b6bbe92
Fix image
JCGoran Dec 9, 2024
349372a
Missing venv
JCGoran Dec 9, 2024
660dd91
Merge branch 'master' into jelic/test_313
JCGoran Dec 9, 2024
2d4fb82
Bring back original
JCGoran Dec 9, 2024
64f4a32
Merge branch 'circleci/py313' into jelic/test_313
JCGoran Dec 9, 2024
6e959fb
Update image
JCGoran Dec 9, 2024
95074a2
Update Dockerfile
JCGoran Dec 10, 2024
d8cfdc4
Install lib
JCGoran Dec 10, 2024
0c8ea49
Explicitly install all deps
JCGoran Dec 10, 2024
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
34 changes: 13 additions & 21 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
version: 2.1

orbs:
python: circleci/python@2.1.1
python: circleci/python@3.0.0

jobs:
manylinux2014-aarch64:

parameters:
NRN_PYTHON_VERSION:
NRN_PYTHON_VERSION_MINOR:
type: string
NRN_NIGHTLY_UPLOAD:
type: string
Expand All @@ -31,8 +31,8 @@ jobs:
-e NRN_RELEASE_UPLOAD \
-e SETUPTOOLS_SCM_PRETEND_VERSION \
-e NRN_BUILD_FOR_UPLOAD=1 \
'neuronsimulator/neuron_wheel:latest-gcc9-aarch64' \
packaging/python/build_wheels.bash linux << parameters.NRN_PYTHON_VERSION >> coreneuron
'neuronsimulator/neuron_wheel:latest-aarch64' \
JCGoran marked this conversation as resolved.
Show resolved Hide resolved
packaging/python/build_wheels.bash linux 3<< parameters.NRN_PYTHON_VERSION_MINOR >> coreneuron

- store_artifacts:
path: ./wheelhouse
Expand All @@ -41,24 +41,16 @@ jobs:
- run:
name: Test manylinux AArch64 wheel
command: |

# install mpi dependencies
sudo apt update
echo "deb http://ppa.launchpad.net/deadsnakes/ppa/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/deadsnakes-ppa.list && sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F23C5A6CF475977595C89F51BA6932366A755776 && sudo apt update
JCGoran marked this conversation as resolved.
Show resolved Hide resolved
sudo apt update
# install mpi dependencies
sudo apt install -y mpich openmpi-bin libopenmpi-dev libmpich-dev
version=3.<< parameters.NRN_PYTHON_VERSION_MINOR >>
# install Python from deadsnakes
sudo apt install -y python${version}-venv libpython${version}-dev g++ make

# choose available python versions from pyenv
pyenv_py_ver=""
case << parameters.NRN_PYTHON_VERSION >> in
39) pyenv_py_ver="3.9" ;;
310) pyenv_py_ver="3.10" ;;
311) pyenv_py_ver="3.11" ;;
312) pyenv_py_ver="3.12" ;;
*) echo "Error: pyenv python version not specified or not supported." && exit 1;;
esac

env PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install $pyenv_py_ver --force
pyenv global $pyenv_py_ver
export PYTHON_EXE=$(which python)
export PYTHON_EXE=$(which python3.<< parameters.NRN_PYTHON_VERSION_MINOR >>)

# test wheel
packaging/python/test_wheels.sh $PYTHON_EXE $(ls -t wheelhouse/*.whl)
Expand Down Expand Up @@ -86,7 +78,7 @@ workflows:
- /circleci\/.*/
matrix:
parameters:
NRN_PYTHON_VERSION: ["312"]
NRN_PYTHON_VERSION_MINOR: ["13"]
NRN_NIGHTLY_UPLOAD: ["false"]

nightly:
Expand All @@ -101,5 +93,5 @@ workflows:
- manylinux2014-aarch64:
matrix:
parameters:
NRN_PYTHON_VERSION: ["39", "310", "311", "312"]
NRN_PYTHON_VERSION_MINOR: ["9", "10", "11", "12", "13"]
NRN_NIGHTLY_UPLOAD: ["true"]
2 changes: 1 addition & 1 deletion .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ on:
env:
PY_MIN_VERSION: '3.9'
PY_MID_VERSION: '3.10'
PY_MAX_VERSION: '3.12'
PY_MAX_VERSION: '3.13'

jobs:
coverage:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ on:
- release/**

env:
DEFAULT_PY_VERSION: '3.12'
DEFAULT_PY_VERSION: '3.13'

jobs:
documentation:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/neuron-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:
DESIRED_CMAKE_VERSION: 3.17
DYNAMIC_PYTHON_CMAKE_VERSION: 3.18
PY_MIN_VERSION: ${{ matrix.config.python_min_version || '3.9' }}
PY_MAX_VERSION: ${{ matrix.config.python_max_version || '3.12' }}
PY_MAX_VERSION: ${{ matrix.config.python_max_version || '3.13' }}
MUSIC_INSTALL_DIR: /opt/MUSIC
# hash of commit containing mpi4py 4 fix
MUSIC_VERSION: '13f312338dcccebfe74d391b1b24f1b6d816ac6c'
Expand Down
9 changes: 8 additions & 1 deletion azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@ stages:
python.version: '3.11'
Python312:
python.version: '3.12'
Python313:
python.version: '3.13'

steps:

# Secure files documentation:
Expand Down Expand Up @@ -74,7 +77,7 @@ stages:
- script: |
sudo apt update
sudo apt install -y mpich openmpi-bin libopenmpi-dev libmpich-dev
displayName: 'Install Test System Depdendencies'
displayName: 'Install Test System Dependencies'

- template: ci/azure-wheel-test-upload.yml

Expand Down Expand Up @@ -102,6 +105,10 @@ stages:
python.version: '3.12'
python.org.version: '3.12.0'
python.installer.name: 'macos11.pkg'
Python313:
python.version: '3.13'
python.org.version: '3.13.0'
python.installer.name: 'macos11.pkg'

steps:

Expand Down
2 changes: 1 addition & 1 deletion ci/win_build_cmake.sh
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ cd $BUILD_SOURCESDIRECTORY/build
-DNRN_BINARY_DIST_BUILD=ON \
-DPYTHON_EXECUTABLE=/c/Python39/python.exe \
-DNRN_ENABLE_PYTHON_DYNAMIC=ON \
-DNRN_PYTHON_DYNAMIC='c:/Python39/python.exe;c:/Python310/python.exe;c:/Python311/python.exe;c:/Python312/python.exe' \
-DNRN_PYTHON_DYNAMIC='c:/Python39/python.exe;c:/Python310/python.exe;c:/Python311/python.exe;c:/Python312/python.exe;c:/Python313/python.exe' \
-DCMAKE_INSTALL_PREFIX='/c/nrn-install' \
-DMPI_CXX_LIB_NAMES:STRING=msmpi \
-DMPI_C_LIB_NAMES:STRING=msmpi \
Expand Down
1 change: 1 addition & 0 deletions ci/win_download_deps.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ pwsh -command Invoke-WebRequest -MaximumRetryCount 4 -OutFile python-3.9.exe htt
pwsh -command Invoke-WebRequest -MaximumRetryCount 4 -OutFile python-3.10.exe https://www.python.org/ftp/python/3.10.0/python-3.10.0-amd64.exe || goto :error
pwsh -command Invoke-WebRequest -MaximumRetryCount 4 -OutFile python-3.11.exe https://www.python.org/ftp/python/3.11.1/python-3.11.1-amd64.exe || goto :error
pwsh -command Invoke-WebRequest -MaximumRetryCount 4 -OutFile python-3.12.exe https://www.python.org/ftp/python/3.12.1/python-3.12.1-amd64.exe || goto :error
pwsh -command Invoke-WebRequest -MaximumRetryCount 4 -OutFile python-3.13.exe https://www.python.org/ftp/python/3.13.0/python-3.13.0-amd64.exe || goto :error

:: mpi
pwsh -command Invoke-WebRequest -MaximumRetryCount 4 -OutFile msmpisetup.exe https://download.microsoft.com/download/a/5/2/a5207ca5-1203-491a-8fb8-906fd68ae623/msmpisetup.exe || goto :error
Expand Down
3 changes: 3 additions & 0 deletions ci/win_install_deps.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ python-3.9.exe /passive Include_pip=1 Include_test=0 PrependPath=1 DefaultJustFo
python-3.10.exe /passive Include_pip=1 Include_test=0 PrependPath=1 DefaultJustForMeTargetDir=C:\Python310 || goto :error
python-3.11.exe /passive Include_pip=1 Include_test=0 PrependPath=1 DefaultJustForMeTargetDir=C:\Python311 || goto :error
python-3.12.exe /passive Include_pip=1 Include_test=0 PrependPath=1 DefaultJustForMeTargetDir=C:\Python312 || goto :error
python-3.13.exe /passive Include_pip=1 Include_test=0 PrependPath=1 DefaultJustForMeTargetDir=C:\Python313 || goto :error

:: fix msvcc version for all python3
pwsh -command "(Get-Content C:\Python39\Lib\distutils\cygwinccompiler.py) -replace 'elif msc_ver == ''1600'':', 'elif msc_ver == ''1927'':' | Out-File C:\Python39\Lib\distutils\cygwinccompiler.py"
Expand All @@ -24,8 +25,10 @@ C:\Python39\python.exe -m pip install numpy cython || goto :error
C:\Python310\python.exe -m pip install numpy cython || goto :error
C:\Python311\python.exe -m pip install numpy cython || goto :error
C:\Python312\python.exe -m pip install numpy cython || goto :error
C:\Python313\python.exe -m pip install numpy cython || goto :error
:: setuptools 70.2 leads to an error
C:\Python312\python.exe -m pip install setuptools==70.1.1 || goto :error
C:\Python313\python.exe -m pip install setuptools==70.1.1 || goto :error

:: install nsis
nsis-3.05-setup.exe /S || goto :error
Expand Down
3 changes: 3 additions & 0 deletions ci/win_test_installer.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -21,18 +21,21 @@ C:\Python39\python -c "import neuron; neuron.test(); quit()" || set "errorfound=
C:\Python310\python -c "import neuron; neuron.test(); quit()" || set "errorfound=y"
C:\Python311\python -c "import neuron; neuron.test(); quit()" || set "errorfound=y"
C:\Python312\python -c "import neuron; neuron.test(); quit()" || set "errorfound=y"
C:\Python313\python -c "import neuron; neuron.test(); quit()" || set "errorfound=y"

:: install oldest supported numpy
C:\Python39\python.exe -m pip install -r packaging/python/oldest_numpy_requirements.txt || goto :error
C:\Python310\python.exe -m pip install -r packaging/python/oldest_numpy_requirements.txt || goto :error
C:\Python311\python.exe -m pip install -r packaging/python/oldest_numpy_requirements.txt || goto :error
C:\Python312\python.exe -m pip install -r packaging/python/oldest_numpy_requirements.txt || goto :error
C:\Python313\python.exe -m pip install -r packaging/python/oldest_numpy_requirements.txt || goto :error

:: test all pythons again
C:\Python39\python -c "import neuron; neuron.test(); quit()" || set "errorfound=y"
C:\Python310\python -c "import neuron; neuron.test(); quit()" || set "errorfound=y"
C:\Python311\python -c "import neuron; neuron.test(); quit()" || set "errorfound=y"
C:\Python312\python -c "import neuron; neuron.test(); quit()" || set "errorfound=y"
C:\Python313\python -c "import neuron; neuron.test(); quit()" || set "errorfound=y"

:: run also using whatever is system python
python -m pip install numpy
Expand Down
3 changes: 3 additions & 0 deletions packaging/python/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -93,4 +93,7 @@ COPY Dockerfile .
# build wheels from there
WORKDIR /root

# remove Python 3.13t since we do not support the free-threaded build yet
RUN rm -fr /opt/python/cp313-cp313t

ENV NMODL_PYLIB=/nrnwheel/python/lib/libpython3.10.so.1.0
1 change: 1 addition & 0 deletions packaging/python/oldest_numpy_requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ numpy==1.21.6;python_version=='3.9' and platform_machine=='arm64'
numpy==1.21.6;python_version=='3.10'
numpy==1.23.5;python_version=='3.11'
numpy==1.26.4;python_version=='3.12'
numpy==2.1.0;python_version=='3.13'
Loading