V5 #610
This file contains hidden or 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: 🖥️ openbb-cli | |
| on: | |
| pull_request: | |
| branches: | |
| - develop | |
| - v5 | |
| paths: | |
| - 'cli/**' | |
| - '.github/workflows/test-unit-cli.yml' | |
| push: | |
| branches: | |
| - develop | |
| - v5 | |
| paths: | |
| - 'cli/**' | |
| - '.github/workflows/test-unit-cli.yml' | |
| merge_group: | |
| types: [checks_requested] | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| defaults: | |
| run: | |
| shell: bash | |
| working-directory: cli | |
| jobs: | |
| test: | |
| name: Test (${{ matrix.os }} / Python ${{ matrix.python_version }}) | |
| runs-on: ${{ matrix.os }} | |
| env: | |
| OPENBB_ALLOW_ON_COMMAND_OUTPUT: "True" | |
| OPENBB_ALLOW_MUTABLE_EXTENSIONS: "True" | |
| UV_CACHE_DIR: ${{ github.workspace }}/.uv-cache | |
| permissions: | |
| contents: read | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| # Linux: full sweep across every supported Python. | |
| - { os: ubuntu-latest, python_version: "3.10" } | |
| - { os: ubuntu-latest, python_version: "3.11" } | |
| - { os: ubuntu-latest, python_version: "3.12" } | |
| - { os: ubuntu-latest, python_version: "3.13" } | |
| - { os: ubuntu-latest, python_version: "3.14" } | |
| # macOS and Windows: min and max supported. | |
| - { os: macos-latest, python_version: "3.10" } | |
| - { os: macos-latest, python_version: "3.14" } | |
| - { os: windows-latest, python_version: "3.10" } | |
| - { os: windows-latest, python_version: "3.14" } | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| with: | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| - name: Install Python ${{ matrix.python_version }} | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python_version }} | |
| allow-prereleases: true | |
| cache: "pip" | |
| - name: Cache uv (built wheels — scipy/numpy/pandas source builds) | |
| uses: actions/cache@v4 | |
| with: | |
| path: ${{ github.workspace }}/.uv-cache | |
| key: uv-${{ runner.os }}-py${{ matrix.python_version }}-${{ hashFiles('cli/pyproject.toml', 'cli/uv.lock', 'openbb_platform/core/pyproject.toml', 'openbb_platform/obbject_extensions/charting/pyproject.toml', 'openbb_platform/extensions/devtools/pyproject.toml') }} | |
| restore-keys: | | |
| uv-${{ runner.os }}-py${{ matrix.python_version }}- | |
| - name: Install gfortran + OpenBLAS (macOS, prerelease Python — scipy source build) | |
| if: runner.os == 'macOS' && matrix.python_version == '3.15' | |
| shell: bash | |
| working-directory: . | |
| run: | | |
| set -euo pipefail | |
| brew install gcc openblas pkg-config | |
| GFORTRAN_BIN=$(ls /opt/homebrew/opt/gcc/bin/gfortran-* | tail -1) | |
| GFORTRAN_DIR=$(dirname "$GFORTRAN_BIN") | |
| ln -sf "$GFORTRAN_BIN" "$GFORTRAN_DIR/gfortran" | |
| echo "$GFORTRAN_DIR" >> "$GITHUB_PATH" | |
| "$GFORTRAN_DIR/gfortran" --version | |
| OPENBLAS_PC="$(brew --prefix openblas)/lib/pkgconfig" | |
| echo "PKG_CONFIG_PATH=$OPENBLAS_PC" >> "$GITHUB_ENV" | |
| PKG_CONFIG_PATH="$OPENBLAS_PC" pkg-config --modversion openblas | |
| - name: Install gfortran (Linux, prerelease Python — scipy source build) | |
| if: runner.os == 'Linux' && matrix.python_version == '3.15' | |
| shell: bash | |
| working-directory: . | |
| run: | | |
| set -euo pipefail | |
| sudo apt-get update -y | |
| sudo apt-get install -y gfortran libopenblas-dev liblapack-dev | |
| gfortran --version | |
| - name: Install openbb-cli | |
| run: | | |
| python -m pip install --upgrade pip uv | |
| python -m uv pip install --system -e ".[charting]" --group dev | |
| - name: Run unit tests | |
| run: | | |
| python -m pytest tests \ | |
| --cov=openbb_cli \ | |
| --cov-config=.coveragerc \ | |
| --cov-report=term-missing \ | |
| --cov-report=xml:coverage-unit.xml | |
| - name: Upload unit-test coverage artifact | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: openbb-cli-coverage-unit-${{ matrix.os }}-py${{ matrix.python_version }} | |
| path: cli/coverage-unit.xml |