update python version #1566
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Test qlib from source | |
on: | |
push: | |
branches: [ main ] | |
pull_request: | |
branches: [ main ] | |
jobs: | |
build: | |
timeout-minutes: 180 | |
# we may retry for 3 times for `Unit tests with Pytest` | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
# Since macos-latest changed from 12.7.4 to 14.4.1, | |
# the minimum python version that matches a 14.4.1 version of macos is 3.10, | |
# If you want to use python 3.7 in github action, then the latest macos system version is macos-13, | |
# after macos-13 python 3.7 is no longer supported. | |
# so we limit the macos version to macos-13. | |
os: [windows-latest, ubuntu-20.04, ubuntu-22.04, macos-13] | |
# not supporting 3.6 due to annotations is not supported https://stackoverflow.com/a/52890129 | |
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] | |
steps: | |
- name: Test qlib from source | |
uses: actions/checkout@v3 | |
# Since version 3.7 of python for MacOS is installed in CI, version 3.7.17, this version causes "_bz not found error". | |
# So we make the version number of python 3.7 for MacOS more specific. | |
# refs: https://github.com/actions/setup-python/issues/682 | |
- name: Set up Python ${{ matrix.python-version }} | |
if: (matrix.os == 'macos-latest' && matrix.python-version == '3.7') || (matrix.os == 'macos-13' && matrix.python-version == '3.7') | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.7.16" | |
- name: Set up Python ${{ matrix.python-version }} | |
if: (matrix.os != 'macos-latest' || matrix.python-version != '3.7') && (matrix.os != 'macos-13' || matrix.python-version != '3.7') | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Update pip to the latest version | |
run: | | |
python -m pip install --upgrade pip | |
- name: Installing pytorch for macos | |
if: ${{ matrix.os == 'macos-13' || matrix.os == 'macos-latest' }} | |
run: | | |
python -m pip install torch torchvision torchaudio | |
- name: Installing pytorch for ubuntu | |
if: ${{ matrix.os == 'ubuntu-20.04' || matrix.os == 'ubuntu-22.04' }} | |
run: | | |
python -m pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cpu | |
- name: Installing pytorch for windows | |
if: ${{ matrix.os == 'windows-latest' }} | |
run: | | |
python -m pip install torch torchvision torchaudio | |
- name: Set up Python tools | |
run: | | |
make dev | |
- name: Lint with Black | |
run: | | |
make black | |
- name: Make html with sphinx | |
# Since read the docs builds on ubuntu 22.04, we only need to test that the build passes on ubuntu 22.04. | |
if: ${{ matrix.os == 'ubuntu-22.04' }} | |
run: | | |
make docs-gen | |
- name: Check Qlib with pylint | |
run: | | |
make pylint | |
- name: Check Qlib with flake8 | |
run: | | |
make flake8 | |
- name: Check Qlib with mypy | |
run: | | |
make mypy | |
- name: Check Qlib ipynb with nbqa | |
run: | | |
make nbqa | |
- name: Test data downloads | |
run: | | |
python scripts/get_data.py qlib_data --name qlib_data_simple --target_dir ~/.qlib/qlib_data/cn_data --interval 1d --region cn | |
python scripts/get_data.py download_data --file_name rl_data.zip --target_dir tests/.data/rl | |
- name: Install Lightgbm for MacOS | |
if: ${{ matrix.os == 'macos-13' || matrix.os == 'macos-latest' }} | |
run: | | |
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Microsoft/qlib/main/.github/brew_install.sh)" | |
HOMEBREW_NO_AUTO_UPDATE=1 brew install lightgbm | |
# FIX MacOS error: Segmentation fault | |
# reference: https://github.com/microsoft/LightGBM/issues/4229 | |
wget https://raw.githubusercontent.com/Homebrew/homebrew-core/fb8323f2b170bd4ae97e1bac9bf3e2983af3fdb0/Formula/libomp.rb | |
brew unlink libomp | |
brew install libomp.rb | |
- name: Check Qlib ipynb with nbconvert | |
run: | | |
make nbconvert | |
- name: Test workflow by config (install from source) | |
run: | | |
python -m pip install numba | |
python qlib/workflow/cli.py examples/benchmarks/LightGBM/workflow_config_lightgbm_Alpha158.yaml | |
- name: Unit tests with Pytest | |
uses: nick-fields/retry@v2 | |
with: | |
timeout_minutes: 60 | |
max_attempts: 3 | |
command: | | |
cd tests | |
python -m pytest . -m "not slow" --durations=0 |