Fix bug #1591
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: | |
os: [windows-latest, ubuntu-20.04, ubuntu-22.04, macos-13, macos-14, macos-15] | |
# In github action, using python 3.7, pip install will not match the latest version of the package. | |
# Also, python 3.7 is no longer supported from macos-14, and will be phased out from macos-13 in the near future. | |
# All things considered, we have removed python 3.7. | |
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] | |
steps: | |
- name: Test qlib from source | |
uses: actions/checkout@v3 | |
- name: Set up Python ${{ matrix.python-version }} | |
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-14' || matrix.os == 'macos-15' }} | |
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-14' || matrix.os == 'macos-15' }} | |
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 |