name: Python Quality Gates on: workflow_call: inputs: python-version: type: string default: '3.11' install-extras: description: 'Extras pip da installare (es: dev, test). Lasciare vuoto per solo requirements.txt' type: string default: 'dev' working-directory: description: 'Directory di lavoro se il progetto non รจ in root' type: string default: '.' jobs: python-quality-gates: runs-on: ubuntu-latest defaults: run: working-directory: ${{ inputs.working-directory }} steps: - name: Checkout uses: https://gitea.com/actions/checkout@v4 - name: Setup Python uses: https://github.com/actions/setup-python@v5 with: python-version: ${{ inputs.python-version || '3.11' }} - name: Cache pip uses: https://gitea.com/actions/cache@v4 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ inputs.python-version }}-${{ hashFiles('**/pyproject.toml', '**/requirements*.txt') }} restore-keys: | ${{ runner.os }}-pip-${{ inputs.python-version }}- ${{ runner.os }}-pip- - name: Install dependencies run: | python -m pip install --upgrade pip if [ -n "${{ inputs.install-extras }}" ]; then pip install -e ".[${{ inputs.install-extras }}]" elif [ -f requirements-dev.txt ]; then pip install -r requirements-dev.txt elif [ -f requirements.txt ]; then pip install -r requirements.txt else pip install -e "." fi - name: Lint (ruff) run: ruff check . - name: Format check (ruff) run: ruff format --check . - name: Type check (mypy) run: mypy . - name: Test (pytest) run: pytest --tb=short -q