Skip to content

Updated workflow to automatically detect python version(s) #2052

Updated workflow to automatically detect python version(s)

Updated workflow to automatically detect python version(s) #2052

name: Tests
on:
push:
branches: main
pull_request:
branches: main
jobs:
generate_python_matrix:
runs-on: ubuntu-latest
outputs:
python_versions: ${{ steps.set-matrix.outputs.python_versions }}
min_python_version: ${{ steps.set-matrix.outputs.min_python_version }}
steps:
- name: Checkout STUMPY
uses: actions/checkout@v4
with:
repository: stumpy-dev/stumpy
- name: Upgrade Pip, Install Minimum Requirements
run: |
python -m pip install --upgrade pip pandas lxml packaging
shell: bash
- name: Generate Python versions
id: set-matrix
run: |
MIN_PYTHON=$(python ./versions.py -mode min | grep python | awk '{print $2}')
MAX_PYTHON=$(python ./versions.py -mode max | grep python | awk '{print $2}')
echo "python_versions=$(python ./versions.py -mode range $MIN_PYTHON $MAX_PYTHON)" >> $GITHUB_OUTPUT
echo "min_python_version=$($MIN_PYTHON)" >> $GITHUB_OUTPUT
shell: bash
minimum-version-testing:
needs: generate_python_matrix:

Check failure on line 31 in .github/workflows/github-actions.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/github-actions.yml

Invalid workflow file

You have an error in your yaml syntax on line 31
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ${{ fromJSON(needs.generate_python_matrix.outputs.min_python_version) }}
steps:
- uses: actions/checkout@v4
- name: Set Up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Display Python Version
run: python -c "import sys; print(sys.version)"
shell: bash
- name: Upgrade Pip
run: python -m pip install --upgrade pip
shell: bash
- name: Generate Minimum Requirements File
run: sed 's/>/=/g' requirements.txt | sed 's/$/\.*/g' > requirements.min.txt
shell: bash
- name: Install Minimum Requirements
run: python -m pip install --upgrade -r requirements.min.txt
shell: bash
- name: Install STUMPY And Other Dependencies
run: python -m pip install --editable .[ci]
shell: bash
- name: Run Black
run: black --check --diff ./
shell: bash
- name: Run Flake8
run: flake8 ./
shell: bash
- name: Install and Link OpenMP
run: |
if [ "$RUNNER_OS" == "macOS" ]; then
echo "Installing OpenMP"
brew install libomp
echo "Linking OpenMP"
brew link --force libomp
echo "Find OpenMP Linking Location"
libfile=`brew list libomp --verbose | grep libomp.dylib`
echo $libfile
echo "Changing @rpath for the omppool.cpython-x-darwin.so shared object to look in $libfile"
ls "$(python -c 'import site; print(site.getsitepackages()[0])')"/numba/np/ufunc/omppool.*.so | xargs install_name_tool -change @rpath/libomp.dylib $libfile
fi
shell: bash
- name: Show Full Numba Environment
run: python -m numba -s
shell: bash
- name: Run Unit Tests
run: ./test.sh unit
shell: bash
unit-testing:
needs: generate_python_matrix
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ${{ fromJSON(needs.generate_python_matrix.outputs.python_versions) }}
steps:
- uses: actions/checkout@v4
- name: Set Up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Display Python Version
run: python -c "import sys; print(sys.version)"
shell: bash
- name: Upgrade Pip
run: python -m pip install --upgrade pip
shell: bash
- name: Install STUMPY And Other Dependencies
run: python -m pip install --editable .[ci]
shell: bash
- name: Run Black
run: black --check --diff ./
shell: bash
- name: Run Flake8
run: flake8 ./
shell: bash
- name: Install OpenMP
run: |
if [ "$RUNNER_OS" == "macOS" ]; then
echo "Installing OpenMP"
brew install libomp
echo "Linking OpenMP"
brew link --force libomp
echo "Find OpenMP Linking Location"
libfile=`brew list libomp --verbose | grep libomp.dylib`
echo $libfile
echo "Changing @rpath for the omppool.cpython-x-darwin.so shared object to look in $libfile"
ls "$(python -c 'import site; print(site.getsitepackages()[0])')"/numba/np/ufunc/omppool.*.so | xargs install_name_tool -change @rpath/libomp.dylib $libfile
fi
shell: bash
- name: Show Full Numba Environment
run: python -m numba -s
shell: bash
- name: Run Unit Tests
run: ./test.sh unit
shell: bash
coverage-testing:
needs: generate_python_matrix
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ${{ fromJSON(needs.generate_python_matrix.outputs.python_versions) }}
steps:
- uses: actions/checkout@v4
- name: Set Up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Display Python Version
run: python -c "import sys; print(sys.version)"
shell: bash
- name: Upgrade Pip
run: python -m pip install --upgrade pip
shell: bash
- name: Install STUMPY And Other Dependencies
run: python -m pip install --editable .[ci]
shell: bash
- name: Run Black
run: black --check --diff ./
shell: bash
- name: Run Flake8
run: flake8 ./
shell: bash
- name: Link OpenMP
run: |
if [ "$RUNNER_OS" == "macOS" ]; then
echo "Installing OpenMP"
brew install libomp
echo "Linking OpenMP"
brew link --force libomp
echo "Find OpenMP Linking Location"
libfile=`brew list libomp --verbose | grep libomp.dylib`
echo $libfile
echo "Changing @rpath for the omppool.cpython-x-darwin.so shared object to look in $libfile"
ls "$(python -c 'import site; print(site.getsitepackages()[0])')"/numba/np/ufunc/omppool.*.so | xargs install_name_tool -change @rpath/libomp.dylib $libfile
fi
shell: bash
- name: Show Full Numba Environment
run: python -m numba -s
shell: bash
- name: Run Coverage Tests
run: ./test.sh coverage
shell: bash