| name: 🧹 General Linting |
|
|
| env: |
| PIP_DEFAULT_TIMEOUT: 100 |
|
|
| on: |
| pull_request: |
| types: [opened, synchronize, edited] |
| |
| |
| |
| |
| |
| merge_group: |
| types: [checks_requested] |
|
|
| |
| concurrency: |
| group: ${{ github.event_name }}-${{ github.repository }}-${{ github.ref }} |
| cancel-in-progress: true |
|
|
| jobs: |
| code-linting: |
| name: General Code Linting |
| runs-on: ubuntu-latest |
| steps: |
| - name: Checkout Code |
| uses: actions/checkout@v4.1.1 |
| with: |
| ref: ${{ github.event.pull_request.head.ref || github.ref }} |
| repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }} |
| fetch-depth: 20 |
| token: ${{ secrets.GITHUB_TOKEN }} |
|
|
| - name: Fetch base branch |
| run: git fetch --no-tags --depth=20 origin ${{ github.base_ref }} |
|
|
| - name: Setup Python 3.10 |
| uses: actions/setup-python@v5 |
| with: |
| python-version: "3.10" |
| architecture: x64 |
|
|
| - name: Get changed files in openbb_platform for PR |
| if: github.event_name == 'pull_request' |
| run: | |
| # "Checking PR diff" |
| echo "diff_files=$(git diff --diff-filter=d --name-only origin/${{ github.base_ref }}...${{ github.head_ref }} | grep -E '^(openbb_platform|cli)/.*\.py$' | grep -v 'openbb_platform/openbb/package' | grep -v 'integration' | grep -v 'tests' | xargs)" >> $GITHUB_ENV |
| echo $diff_files |
| |
| - uses: actions/cache@v4 |
| with: |
| path: ~/.cache/pip |
| key: ${{ runner.os }}-linting-${{ hashFiles('**/poetry.lock') }} |
| restore-keys: ${{ runner.os }}-linting-${{ hashFiles('**/poetry.lock') }} |
|
|
| - run: | |
| pip install openbb-devtools |
| pip install types-pytz types-requests types-termcolor types-tabulate types-PyYAML types-python-dateutil types-setuptools types-six |
| - run: bandit -x ./tests -r . || true |
| - run: codespell --ignore-words=.codespell.ignore --skip="$(tr '\n' ',' < .codespell.skip | sed 's/,$//')" --quiet-level=2 |
| - run: | |
| # Run linters for openbb_platform | cli |
| if [ -n "${{ env.diff_files }}" ]; then |
| black --diff --check ${{ env.diff_files }} |
| mypy ${{ env.diff_files }} --ignore-missing-imports --scripts-are-modules --check-untyped-defs |
| pydocstyle ${{ env.diff_files }} |
| pylint ${{ env.diff_files }} |
| ruff check ${{ env.diff_files }} |
| else |
| echo "No Python files changed in openbb_platform | cli" |
| fi |
| |
| markdown-link-check: |
| name: Markdown Linting |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v4 |
| name: Check out the code |
| - name: Lint Code Base |
| uses: docker://avtodev/markdown-lint:v1 |
| with: |
| args: "./*.md ./changelogs/*.md ./openbb_terminal/**/*.md ./discordbot/**/*.md" |
|
|
| json-yaml-validate: |
| name: JSON Check |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v4 |
|
|
| - name: json-yaml-validate |
| id: json-yaml-validate |
| uses: GrantBirki/json-yaml-validate@v2.0.0 |
| with: |
| yaml_exclude_regex: "construct.yaml" |
| use_gitignore: false |
|
|