name: ci-black-formatting on: push: pull_request: jobs: lint-formatting: runs-on: ubuntu-latest steps: - name: Action - checkout repository uses: actions/checkout@v4.2.2 - name: Action - install python uses: actions/setup-python@v5.3.0 with: python-version: "3.9" - name: Action - install python uses: actions/setup-python@v5.3.0 with: python-version: "3.11" - name: Install dependencies run: | curl -LsSf https://astral.sh/uv/install.sh | sh uv tool install ruff uv tool install black uv tool install poethepoet # black doesn't catch all syntax errors, so we check them explicitly. - name: Check syntax errors id: syntax-errors run: | ERROR=0 python3.9 -W error -m compileall -q src/ifcopenshell-python || ERROR=1 python3.11 -W error -m compileall -q src/bonsai || ERROR=1 exit $ERROR continue-on-error: true - name: Black formatter id: black run: | black --diff --check . continue-on-error: true - name: Ruff check id: ruff run: | ERROR=0 poe ruff-main || ERROR=1 poe ruff-old || ERROR=1 exit $ERROR continue-on-error: true - name: Final check run: | ERROR=0 if [ "${{ steps.syntax-errors.outcome }}" != "success" ]; then echo "::error::Syntax errors check failed, see 'syntax-errors' step for the details." && ERROR=1 fi if [ "${{ steps.black.outcome }}" != "success" ]; then echo "::error::Black formatting check failed, see 'black' step for the details." && ERROR=1 fi if [ "${{ steps.ruff.outcome }}" != "success" ]; then echo "::error::Ruff check failed, see 'ruff' step for the details." && ERROR=1 fi exit $ERROR