Skip to content

Commit

Permalink
Fix Pytest error in test cases due to Numpy 2.0 incompatibility (#627)
Browse files Browse the repository at this point in the history
  • Loading branch information
darrylong committed Jun 29, 2024
1 parent 52979eb commit ef9956e
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 54 deletions.
5 changes: 4 additions & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ jobs:
build-and-test:
docker:
- image: cimg/python:3.10.2
environment:
LIMIT_NUMPY_VERSION: 2.0.0
LIMIT_SCIPY_VERSION: 1.13.1
steps:
- checkout
- python/install-packages:
Expand All @@ -17,7 +20,7 @@ jobs:
no_output_timeout: 30m
command: |
pip install --upgrade pip
pip install --only-binary=numpy,scipy numpy==1.22.4 scipy Cython pytest pytest-cov codecov
pip install --only-binary=numpy,scipy "numpy<$LIMIT_NUMPY_VERSION" "scipy<=$LIMIT_SCIPY_VERSION" Cython pytest pytest-cov codecov
pip install -e .[tests]
- run:
name: Run tests
Expand Down
50 changes: 23 additions & 27 deletions .github/workflows/python-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,62 +17,58 @@ jobs:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-latest, macos-13, macos-14]
# python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
versions:
- { python: "3.8", numpy: 1.22.4 }
- { python: "3.9", numpy: 1.22.4 }
- { python: "3.10", numpy: 1.22.4 }
- { python: "3.11", numpy: 1.24.3 }
- { python: "3.12", numpy: 1.26.4 }

python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
env:
LIMIT_NUMPY_VERSION: 2.0.0
LIMIT_SCIPY_VERSION: 1.13.1
steps:
- name: Get number of CPU cores
uses: SimenB/github-actions-cpu-cores@v2
id: cpu-cores

- uses: actions/checkout@v4

- name: Setup Python ${{ matrix.versions.python }}
if: ${{ (matrix.os != 'macos-14') || ((matrix.os == 'macos-14') && (matrix.versions.python != '3.8') && (matrix.versions.python != '3.9')) }}
- name: Setup Python ${{ matrix.python-version }}
if: ${{ (matrix.os != 'macos-14') || ((matrix.os == 'macos-14') && (matrix.python-version != '3.8') && (matrix.python-version != '3.9')) }}
uses: actions/setup-python@v5
id: pysetup
with:
python-version: ${{ matrix.versions.python }}
python-version: ${{ matrix.python-version }}
cache: 'pip'

- name: Setup Python 3.8-3.9 - macos-arm
if: ${{ (matrix.os == 'macos-14') && ((matrix.versions.python == '3.8') || (matrix.versions.python == '3.9')) }}
if: ${{ (matrix.os == 'macos-14') && ((matrix.python-version == '3.8') || (matrix.python-version == '3.9')) }}
run: |
brew update
brew install python@${{ matrix.versions.python }}
brew install python@${{ matrix.python-version }}
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python${{ matrix.versions.python }} get-pip.py
python${{ matrix.python-version }} get-pip.py
- name: Create Python alias for Windows
if: matrix.os == 'windows-latest'
run: |
$newPath = "${{ steps.pysetup.outputs.python-path }}".Replace("python.exe", "python${{ matrix.versions.python }}.exe")
$newPath = "${{ steps.pysetup.outputs.python-path }}".Replace("python.exe", "python${{ matrix.python-version }}.exe")
New-Item -ItemType HardLink -Path "$newPath" -Value "${{ steps.pysetup.outputs.python-path }}"
- name: Display Python and Pip versions
run: |
python${{ matrix.versions.python }} -c "import sys; print(sys.version)"
python${{ matrix.python-version }} -c "import sys; print(sys.version)"
pip --version
- name: Upgrade pip wheel setuptools
run: pip install wheel setuptools pip --upgrade

- name: Install numpy ${{ matrix.versions.numpy }}
run: pip install numpy==${{ matrix.versions.numpy }}

- name: Display numpy version
run: python${{ matrix.versions.python }} -c "import numpy; print(numpy.__version__)"
run: python${{ matrix.python-version }} -m pip install wheel setuptools pip --upgrade

- name: Install other dependencies
run: python${{ matrix.python-version }} -m pip install Cython pytest pytest-cov flake8

- name: Install other dependencies
run: |
pip install scipy Cython pytest pytest-cov flake8
python${{ matrix.versions.python }} setup.py build_ext -j${{ steps.cpu-cores.outputs.count }}
pip install -e .[tests]
python${{ matrix.python-version }} -m pip install Cython pytest pytest-cov flake8 "numpy<${{ env.LIMIT_NUMPY_VERSION }}" "scipy<=${{ env.LIMIT_SCIPY_VERSION }}"
python${{ matrix.python-version }} setup.py build_ext -j${{ steps.cpu-cores.outputs.count }}
python${{ matrix.python-version }} -m pip install -e .[tests]
- name: Display numpy version
run: python${{ matrix.python-version }} -c "import numpy; print(numpy.__version__)"

- name: Lint with flake8
run: |
Expand All @@ -83,4 +79,4 @@ jobs:
- name: Test with pytest
run: |
pytest --cov=cornac
python${{ matrix.python-version }} -m pytest --cov=cornac
48 changes: 23 additions & 25 deletions .github/workflows/python-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ on:
release:
types: [published]

env:
LIMIT_NUMPY_VERSION: 2.0.0
LIMIT_SCIPY_VERSION: 1.13.1

jobs:
build-wheels:
name: Building on ${{ matrix.os }}
Expand All @@ -20,58 +24,52 @@ jobs:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-latest, macos-13, macos-14]
versions:
- { python: "3.8", numpy: 1.22.4 }
- { python: "3.9", numpy: 1.22.4 }
- { python: "3.10", numpy: 1.22.4 }
- { python: "3.11", numpy: 1.24.3 }
- { python: "3.12", numpy: 1.26.4 }

python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
steps:
- uses: actions/checkout@v4

- name: Setup Python ${{ matrix.versions.python }}
if: ${{ (matrix.os != 'macos-14') || ((matrix.os == 'macos-14') && (matrix.versions.python != '3.8') && (matrix.versions.python != '3.9')) }}
- name: Setup Python ${{ matrix.python-version }}
if: ${{ (matrix.os != 'macos-14') || ((matrix.os == 'macos-14') && (matrix.python-version != '3.8') && (matrix.python-version != '3.9')) }}
uses: actions/setup-python@v5
id: pysetup
with:
python-version: ${{ matrix.versions.python }}
python-version: ${{ matrix.python-version }}
cache: 'pip'

- name: Setup Python 3.8-3.9 - macos-arm
if: ${{ (matrix.os == 'macos-14') && ((matrix.versions.python == '3.8') || (matrix.versions.python == '3.9')) }}
if: ${{ (matrix.os == 'macos-14') && ((matrix.python-version == '3.8') || (matrix.python-version == '3.9')) }}
run: |
brew update
brew install python@${{ matrix.versions.python }}
brew install python@${{ matrix.python-version }}
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python${{ matrix.versions.python }} get-pip.py
python${{ matrix.python-version }} get-pip.py
- name: Create Python alias for Windows
if: matrix.os == 'windows-latest'
run: |
$newPath = "${{ steps.pysetup.outputs.python-path }}".Replace("python.exe", "python${{ matrix.versions.python }}.exe")
$newPath = "${{ steps.pysetup.outputs.python-path }}".Replace("python.exe", "python${{ matrix.python-version }}.exe")
New-Item -ItemType HardLink -Path "$newPath" -Value "${{ steps.pysetup.outputs.python-path }}"
- name: Display Python and Pip versions
run: |
python${{ matrix.versions.python }} -c "import sys; print(sys.version)"
python${{ matrix.python-version }} -c "import sys; print(sys.version)"
pip --version
- name: Upgrade pip wheel setuptools
run: pip install wheel setuptools pip --upgrade
run: python${{ matrix.python-version }} -m pip install wheel setuptools pip --upgrade

- name: Install numpy ${{ matrix.versions.numpy }}
run: pip install numpy==${{ matrix.versions.numpy }}
- name: Install numpy, scipy
run: pip install "numpy<${{ env.LIMIT_NUMPY_VERSION }}" "scipy<=${{ env.LIMIT_SCIPY_VERSION }}"

- name: Display numpy version
run: python${{ matrix.versions.python }} -c "import numpy; print(numpy.__version__)"

- name: Install other dependencies
run: |
pip install scipy Cython wheel
pip install Cython wheel
- name: Display numpy version
run: python${{ matrix.python-version }} -c "import numpy; print(numpy.__version__)"

- name: Build wheels
run: python${{ matrix.versions.python }} setup.py bdist_wheel
run: python${{ matrix.python-version }} setup.py bdist_wheel

- name: Rename Linux wheels to supported platform of PyPI
if: matrix.os == 'ubuntu-latest'
Expand Down Expand Up @@ -105,12 +103,12 @@ jobs:

- name: Install numpy
run: |
python -m pip install numpy==1.22.4
python -m pip install "numpy<${{ env.LIMIT_NUMPY_VERSION }}" "scipy<=${{ env.LIMIT_SCIPY_VERSION }}"
python -c "import numpy; print(numpy.__version__)"
- name: Install other dependencies
run: |
python -m pip install scipy Cython wheel
python -m pip install Cython wheel
- name: Build source tar file
run: python setup.py sdist
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -343,7 +343,7 @@ def run(self):
"recommendation",
],
ext_modules=extensions,
install_requires=["numpy", "scipy", "tqdm", "powerlaw"],
install_requires=["numpy<2.0.0", "scipy<=1.13.1", "tqdm", "powerlaw"],
extras_require={"tests": ["pytest", "pytest-pep8", "pytest-xdist", "pytest-cov", "Flask"]},
cmdclass=cmdclass,
packages=find_packages(),
Expand Down

0 comments on commit ef9956e

Please sign in to comment.