Python 3 POCL:
  script: |
    export PYOPENCL_TEST=portable:cpu
    export EXTRA_INSTALL="jax[cpu]"
    curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/build-and-test-py-project.sh
    . ./build-and-test-py-project.sh
  tags:
  - python3
  - pocl
  - mpi
  except:
  - tags
  artifacts:
    reports:
      junit: test/pytest.xml

Python 3 Nvidia Titan V:
  script: |
    curl -L -O https://tiker.net/ci-support-v0
    . ./ci-support-v0
    export PYOPENCL_TEST=nvi:titan
    build_py_project_in_venv
    pip install --upgrade "jax[cuda]" -f https://storage.googleapis.com/jax-releases/jax_releases.html
    test_py_project

  tags:
  - python3
  - nvidia-titan-v
  except:
  - tags
  artifacts:
    reports:
      junit: test/pytest.xml

Python 3 POCL Nvidia Titan V:
  script: |
    curl -L -O https://tiker.net/ci-support-v0
    . ./ci-support-v0
    export PYOPENCL_TEST=port:titan
    build_py_project_in_venv
    test_py_project

  tags:
  - python3
  - nvidia-titan-v
  except:
  - tags
  artifacts:
    reports:
      junit: test/pytest.xml

Python 3 POCL Examples:
  script:
  - test -n "$SKIP_EXAMPLES" && exit
  - export PYOPENCL_TEST=portable:cpu
  - curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/build-py-project-and-run-examples.sh
  - ". ./build-py-project-and-run-examples.sh"
  tags:
  - python3
  - pocl
  - large-node
  except:
  - tags

Python 3 Conda:
  script: |
    export PYOPENCL_TEST=portable:cpu

    # Avoid crashes like https://gitlab.tiker.net/inducer/arraycontext/-/jobs/536021
    sed -i 's/jax/jax !=0.4.6/' .test-conda-env-py3.yml

    curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/build-and-test-py-project-within-miniconda.sh
    . ./build-and-test-py-project-within-miniconda.sh
  tags:
  # - docker-runner
  - linux
  - large-node
  except:
  - tags

Documentation:
  script: |
    curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/build-docs.sh
    CI_SUPPORT_SPHINX_VERSION_SPECIFIER=">=4.0"
    . ./build-docs.sh
  tags:
  - python3

Ruff:
  script:
  - pipx install ruff
  - ruff check
  tags:
  - docker-runner
  except:
  - tags

Pylint:
  script: |
    EXTRA_INSTALL="jax[cpu]"
    curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/master/prepare-and-run-pylint.sh
    . ./prepare-and-run-pylint.sh "$CI_PROJECT_NAME" examples/*.py test/test_*.py
  tags:
  - python3
  except:
  - tags

Mypy:
  script: |
    # NOTE: jax>=0.4.31 requires python 3.10 and uses pattern matching
    # which conflicts with our mypy.python_version = '3.8' setting
    EXTRA_INSTALL="mypy pytest jax[cpu]<0.4.31"

    curl -L -O https://tiker.net/ci-support-v0
    . ./ci-support-v0

    build_py_project_in_venv
    ./run-mypy.sh
  tags:
  - python3
  except:
  - tags

Downstream:
  parallel:
    matrix:
    - DOWNSTREAM_PROJECT: [meshmode, grudge, mirgecom, mirgecom_examples]
  tags:
  - large-node
  - "docker-runner"
  script: |
    curl -L -O https://tiker.net/ci-support-v0
    . ./ci-support-v0
    test_downstream "$DOWNSTREAM_PROJECT"

    if [[ "$DOWNSTREAM_PROJECT" = "meshmode" ]]; then
        python ../examples/simple-dg.py --lazy
    fi
