[Feature] Pretty Pydantic ValidationError
exceptions
#12867
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: Unit Test | |
env: | |
OPENBB_ENABLE_QUICK_EXIT: true | |
OPENBB_LOG_COLLECT: false | |
OPENBB_USE_PROMPT_TOOLKIT: false | |
OPENBB_FILE_OVERWRITE: true | |
OPENBB_ENABLE_CHECK_API: false | |
OPENBB_PREVIOUS_USE: true | |
OPENBB_USE_INTERACTIVE_DF: false | |
PIP_DEFAULT_TIMEOUT: 100 | |
on: | |
pull_request: | |
branches: | |
- develop | |
- main | |
types: [opened, synchronize, edited, closed, labeled] | |
push: | |
branches: | |
- release/* | |
merge_group: | |
types: [checks_requested] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
check-files-changed: | |
name: Check for changes | |
runs-on: ubuntu-latest | |
# Run this job only if the PR is not merged, PR != draft and the event is not a push | |
if: github.event.pull_request.merged == false && github.event_name != 'push' && github.event.pull_request.draft == false | |
outputs: | |
check-changes: ${{ steps.check-changes.outputs.check-changes }} | |
check-platform-changes: ${{ steps.check-platform-changes.outputs.check-platform-changes }} # New output for openbb_platform changes | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v1 # v1 is used to preserve the git history and works with the git diff command | |
with: | |
fetch-depth: 100 | |
# The GitHub token is preserved by default but this job doesn't need | |
# to be able to push to GitHub. | |
# Check for changes to python files, lockfiles and the openbb_terminal folder | |
- name: Check for changes to files to trigger unit test | |
id: check-changes | |
run: | | |
current_branch=$(jq -r .pull_request.base.ref "$GITHUB_EVENT_PATH") | |
if git diff --name-only origin/$current_branch HEAD | grep -E ".py$|openbb_terminal\/.*|pyproject.toml|poetry.lock|requirements.txt|requirements-full.txt"; then | |
echo "check-changes=true" >> $GITHUB_OUTPUT | |
else | |
echo "check-changes=false" >> $GITHUB_OUTPUT | |
fi | |
# Check for changes to openbb_platform | |
- name: Check for changes to openbb_platform | |
id: check-platform-changes | |
run: | | |
current_branch=$(jq -r .pull_request.base.ref "$GITHUB_EVENT_PATH") | |
if git diff --name-only origin/$current_branch HEAD | grep -E "openbb_platform\/.*"; then | |
echo "check-platform-changes=true" >> $GITHUB_OUTPUT | |
else | |
echo "check-platform-changes=false" >> $GITHUB_OUTPUT | |
fi | |
- name: Show output of previous step | |
run: | | |
echo "check-changes=${{ steps.check-changes.outputs.check-changes }}" | |
echo "check-platform-changes=${{ steps.check-platform-changes.outputs.check-platform-changes }}" | |
base-test: | |
name: Base Tests - Ubuntu-latest - Python 3.9 | |
needs: [check-files-changed] | |
runs-on: ubuntu-latest | |
if: needs.check-files-changed.outputs.check-changes == 'true' && github.event.pull_request.base.ref == 'develop' && needs.check-files-changed.outputs.check-platform-changes == 'false' | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v3 | |
- name: Setup Python 3.9 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.9" | |
architecture: x64 | |
- name: Install Poetry | |
uses: snok/install-poetry@v1 | |
with: | |
version: 1.5.1 | |
virtualenvs-create: true | |
virtualenvs-in-project: true | |
- name: Setup sudo apt installs for ubuntu-latest | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y \ | |
libgtk-3-dev \ | |
libwebkit2gtk-4.0-dev | |
- name: Load cached venv | |
id: cached-poetry-dependencies | |
uses: actions/cache@v3 | |
with: | |
path: .venv | |
key: venv-${{ runner.os }}-v1-${{ hashFiles('**/poetry.lock') }} | |
- name: Install dependencies | |
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true' | |
run: poetry install --no-interaction -E optimization | |
- name: Run tests and coverage test | |
env: | |
MPLBACKEND: Agg | |
run: | | |
source $VENV | |
pytest tests/ --optimization --cov --cov-fail-under=50 --autodoc -n auto --durations=10 --timeout=30 --cov-report=xml | |
- name: Start Terminal and exit | |
run: | | |
source $VENV | |
python terminal.py | |
tests-python: | |
name: Vanilla Python Tests - ${{ matrix.python-version }} | |
needs: [base-test] | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: true | |
matrix: | |
python-version: ["3.8", "3.9", "3.10", "3.11"] | |
os: [ubuntu-latest] | |
exclude: | |
- os: ubuntu-latest | |
python-version: "3.9" | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v3 | |
- name: Setup Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
architecture: x64 | |
- name: Install Poetry | |
uses: snok/install-poetry@v1 | |
with: | |
version: 1.5.1 | |
virtualenvs-create: true | |
virtualenvs-in-project: true | |
- name: Setup sudo apt installs for ubuntu-latest | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y \ | |
libgtk-3-dev \ | |
libwebkit2gtk-4.0-dev | |
- name: Load cached venv | |
id: cached-poetry-dependencies | |
uses: actions/cache@v3 | |
with: | |
path: .venv | |
key: venv-${{ runner.os }}-v1-${{ hashFiles('**/poetry.lock') }} | |
- name: Install dependencies | |
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true' | |
run: poetry install --no-interaction -E optimization | |
- name: List installed packages | |
shell: bash -l {0} | |
run: | | |
source $VENV | |
pip list | |
- name: Run tests | |
env: | |
MPLBACKEND: Agg | |
run: | | |
source $VENV | |
pytest tests/ --optimization --autodoc -n auto --timeout=30 | |
- name: Start Terminal and exit | |
run: | | |
source $VENV | |
python terminal.py | |
full-test: | |
name: Full Test Suite - (${{ matrix.python-version }}, ${{ matrix.os }}) | |
runs-on: ${{ matrix.os }} | |
# Run only when a PR is merged or a push to release/* branch | |
if: github.event_name == 'push' || github.event.pull_request.merged == true | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ["3.8", "3.9", "3.10", "3.11"] | |
os: [ubuntu-latest, macos-latest] | |
exclude: | |
- os: ubuntu-latest | |
python-version: "3.9" | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v3 | |
- name: Setup Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
architecture: x64 | |
- name: Install Poetry | |
uses: snok/install-poetry@v1 | |
with: | |
version: 1.5.1 | |
virtualenvs-create: true | |
virtualenvs-in-project: true | |
- name: Setup sudo apt installs for ubuntu-latest | |
if: runner.os == 'Linux' | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y \ | |
libgtk-3-dev \ | |
libwebkit2gtk-4.0-dev | |
- name: Load cached venv | |
id: cached-poetry-dependencies | |
uses: actions/cache@v3 | |
with: | |
path: .venv | |
key: venv-${{ runner.os }}-v1-${{ hashFiles('**/poetry.lock') }} | |
- name: Install dependencies | |
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true' | |
run: | | |
poetry install --no-interaction -E optimization | |
- name: List installed packages | |
shell: bash -l {0} | |
run: | | |
source $VENV | |
pip list | |
- name: Start Terminal and exit | |
run: | | |
source $VENV | |
python terminal.py | |
- name: Run tests | |
env: | |
MPLBACKEND: Agg | |
run: | | |
source $VENV | |
pytest tests/ --optimization --autodoc -n auto --timeout=30 | |
tests-conda: | |
name: Anaconda Python Tests - (${{ matrix.python-version }}, ${{ matrix.os }}) | |
runs-on: ${{ matrix.os }}-latest | |
if: github.event_name == 'push' || github.event.pull_request.merged == true | |
strategy: | |
fail-fast: false | |
matrix: | |
os: ["ubuntu", "macos"] | |
python-version: ["3.9"] | |
dependencies: [""] | |
include: | |
- os: ubuntu | |
python: 3.9 | |
env: | |
OS: ${{ matrix.os }} | |
PYTHON: ${{ matrix.python }} | |
PYTHONNOUSERSITE: 1 | |
steps: | |
- name: Set git to use LF | |
if: runner.os == 'Windows' | |
run: | | |
git config --global core.autocrlf false | |
git config --global core.eol lf | |
- name: Setup sudo apt installs for ubuntu-latest | |
if: runner.os == 'Linux' | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y \ | |
libgtk-3-dev \ | |
libwebkit2gtk-4.0-dev | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
# Need to fetch more than the last commit so that setuptools-scm can | |
# create the correct version string. If the number of commits since | |
# the last release is greater than this, the version still be wrong. | |
# Increase if necessary. | |
fetch-depth: 100 | |
# The GitHub token is preserved by default but this job doesn't need | |
# to be able to push to GitHub. | |
persist-credentials: false | |
- name: Setup caching for conda packages | |
uses: actions/cache@v3 | |
with: | |
path: ~/conda_pkgs_dir | |
key: conda-${{ runner.os }}-v1-${{ matrix.python }}-${{ hashFiles('build/conda/conda-3-9-env-full.yaml') }} | |
- name: Setup Miniconda | |
uses: conda-incubator/setup-miniconda@v2 | |
with: | |
python-version: ${{ matrix.python }} | |
miniconda-version: "latest" | |
auto-update-conda: true | |
channels: conda-forge,defaults | |
show-channel-urls: true | |
channel-priority: flexible | |
environment-file: build/conda/conda-3-9-env.yaml | |
activate-environment: testing | |
# Needed for caching | |
use-only-tar-bz2: true | |
- name: Update Temp permissions on windows | |
if: runner.os == 'Windows' | |
shell: cmd /C CALL {0} | |
run: >- | |
c:\windows\system32\icacls C:\Users\runneradmin\AppData\Local\Temp /grant "everyone":F /t | |
- name: Get pip cache dir | |
shell: bash -l {0} | |
id: pip-cache | |
run: | | |
echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT | |
- name: pip cache | |
uses: actions/cache@v3 | |
with: | |
path: ${{ steps.pip-cache.outputs.dir }} | |
key: ${{ runner.os }}-v1-3-9-pip-${{ hashFiles('requirements-full.txt') }} | |
restore-keys: | | |
${{ runner.os }}-v1-pip- | |
- name: Install dependencies (Bash) | |
shell: bash -l {0} | |
run: | | |
pip install --requirement requirements-full.txt | |
pip uninstall Brotli -y | |
- name: List installed packages (Bash) | |
shell: bash -l {0} | |
run: | | |
conda list | |
pip list | |
- name: Run tests (Bash) | |
env: | |
MPLBACKEND: Agg | |
shell: bash -l {0} | |
run: pytest tests/ -m "not linux" --optimization -n auto --timeout=30 | |
- name: Start Terminal and exit | |
shell: bash -l {0} | |
run: python terminal.py |