diff --git a/.github/workflows/test_qlib_from_pip.yml b/.github/workflows/test_qlib_from_pip.yml index cc1aaa41f..f7abd3d99 100644 --- a/.github/workflows/test_qlib_from_pip.yml +++ b/.github/workflows/test_qlib_from_pip.yml @@ -13,7 +13,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [windows-latest, ubuntu-24.04, ubuntu-22.04, macos-13, macos-14, macos-15] + os: [windows-latest, ubuntu-24.04, ubuntu-22.04, 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. @@ -46,19 +46,12 @@ jobs: python -m pip install pyqlib python -m pip install "joblib<=1.4.2" - # install.sh file contents from: https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh - # brew_install.sh file contents from: https://raw.githubusercontent.com/Microsoft/qlib/main/.github/brew_install.sh - name: Install Lightgbm for MacOS - if: ${{ matrix.os == 'macos-13' || matrix.os == 'macos-14' || matrix.os == 'macos-15' }} + if: ${{ matrix.os == 'macos-14' || matrix.os == 'macos-15' }} run: | - /bin/bash -c "$(curl -fsSL https://github.com/SunsetWolf/qlib_dataset/releases/download/maocs_lightgbm/install.sh)" - /bin/bash -c "$(curl -fsSL https://github.com/SunsetWolf/qlib_dataset/releases/download/maocs_lightgbm/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 + brew update + brew install libomp || brew reinstall libomp + python -m pip install --no-binary=:all: lightgbm # When the new version is released it should be changed to: # python -m qlib.cli.data qlib_data --target_dir ~/.qlib/qlib_data/cn_data --region cn diff --git a/.github/workflows/test_qlib_from_source.yml b/.github/workflows/test_qlib_from_source.yml index e44e35402..aa56183e7 100644 --- a/.github/workflows/test_qlib_from_source.yml +++ b/.github/workflows/test_qlib_from_source.yml @@ -14,7 +14,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [windows-latest, ubuntu-24.04, ubuntu-22.04, macos-13, macos-14, macos-15] + os: [windows-latest, ubuntu-24.04, ubuntu-22.04, 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. @@ -34,7 +34,7 @@ jobs: python -m pip install --upgrade pip - name: Installing pytorch for macos - if: ${{ matrix.os == 'macos-13' || matrix.os == 'macos-14' || matrix.os == 'macos-15' }} + if: ${{ matrix.os == 'macos-14' || matrix.os == 'macos-15' }} run: | python -m pip install torch torchvision torchaudio @@ -83,19 +83,12 @@ jobs: 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 - # install.sh file contents from: https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh - # brew_install.sh file contents from: https://raw.githubusercontent.com/Microsoft/qlib/main/.github/brew_install.sh - name: Install Lightgbm for MacOS - if: ${{ matrix.os == 'macos-13' || matrix.os == 'macos-14' || matrix.os == 'macos-15' }} + if: ${{ matrix.os == 'macos-14' || matrix.os == 'macos-15' }} run: | - /bin/bash -c "$(curl -fsSL https://github.com/SunsetWolf/qlib_dataset/releases/download/maocs_lightgbm/install.sh)" - /bin/bash -c "$(curl -fsSL https://github.com/SunsetWolf/qlib_dataset/releases/download/maocs_lightgbm/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 + brew update + brew install libomp || brew reinstall libomp + python -m pip install --no-binary=:all: lightgbm - name: Check Qlib ipynb with nbconvert run: | @@ -106,7 +99,24 @@ jobs: python -m pip install numba python qlib/cli/run.py examples/benchmarks/LightGBM/workflow_config_lightgbm_Alpha158.yaml - - name: Unit tests with Pytest + - name: Unit tests with Pytest (MacOS) + if: ${{ matrix.os == 'macos-14' || matrix.os == 'macos-15' }} + uses: nick-fields/retry@v2 + with: + timeout_minutes: 60 + max_attempts: 3 + command: | + # Limit the number of threads in various libraries to prevent Segmentation faults caused by OpenMP multithreading conflicts under macOS. + export OMP_NUM_THREADS=1 # Limit the number of OpenMP threads + export MKL_NUM_THREADS=1 # Limit the number of Intel MKL threads + export NUMEXPR_NUM_THREADS=1 # Limit the number of NumExpr threads + export OPENBLAS_NUM_THREADS=1 # Limit the number of OpenBLAS threads + export VECLIB_MAXIMUM_THREADS=1 # Limit the number of macOS Accelerate/vecLib threads + cd tests + python -m pytest . -m "not slow" --durations=0 + + - name: Unit tests with Pytest (Ubuntu and Windows) + if: ${{ matrix.os != 'macos-13' && matrix.os != 'macos-14' && matrix.os != 'macos-15' }} uses: nick-fields/retry@v2 with: timeout_minutes: 60 diff --git a/.github/workflows/test_qlib_from_source_slow.yml b/.github/workflows/test_qlib_from_source_slow.yml index 210fb1869..147e916a6 100644 --- a/.github/workflows/test_qlib_from_source_slow.yml +++ b/.github/workflows/test_qlib_from_source_slow.yml @@ -14,7 +14,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [windows-latest, ubuntu-24.04, ubuntu-22.04, macos-13, macos-14, macos-15] + os: [windows-latest, ubuntu-24.04, ubuntu-22.04, 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. @@ -40,16 +40,11 @@ jobs: # install.sh file contents from: https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh # brew_install.sh file contents from: https://raw.githubusercontent.com/Microsoft/qlib/main/.github/brew_install.sh - name: Install Lightgbm for MacOS - if: ${{ matrix.os == 'macos-13' || matrix.os == 'macos-14' || matrix.os == 'macos-15' }} + if: ${{ matrix.os == 'macos-14' || matrix.os == 'macos-15' }} run: | - /bin/bash -c "$(curl -fsSL https://github.com/SunsetWolf/qlib_dataset/releases/download/maocs_lightgbm/install.sh)" - /bin/bash -c "$(curl -fsSL https://github.com/SunsetWolf/qlib_dataset/releases/download/maocs_lightgbm/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 + brew update + brew install libomp || brew reinstall libomp + python -m pip install --no-binary=:all: lightgbm - name: Unit tests with Pytest uses: nick-fields/retry@v2 diff --git a/pyproject.toml b/pyproject.toml index c66595d20..3d65fbcba 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -97,10 +97,14 @@ analysis = [ "statsmodels", ] +# In the process of releasing a new version, when checking the manylinux package with twine, an error is reported: +# InvalidDistribution: Invalid distribution metadata: unrecognized or malformed field 'license-file' +# To solve this problem, we added license-files here. Refs: https://github.com/pypa/twine/issues/1216 [tool.setuptools] packages = [ "qlib", ] +license-files = [] [project.scripts] qrun = "qlib.cli.run:run"