feat: Modernize codebase with Python 3.10+ support and comprehensive improvements #42
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: Tests | |
| on: | |
| push: | |
| branches: [ main, develop ] | |
| pull_request: | |
| branches: [ main, develop ] | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| include: | |
| - python-version: "3.10" | |
| django-version: "5.2" | |
| - python-version: "3.13.7" | |
| django-version: "5.2" | |
| - python-version: "3.13.7" | |
| django-version: "5.1" | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Cache pip dependencies | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.cache/pip | |
| key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements*.txt') }} | |
| restore-keys: | | |
| ${{ runner.os }}-pip- | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install -r requirements-test.txt | |
| # Install specific Django version based on matrix | |
| case "${{ matrix.django-version }}" in | |
| "5.1") | |
| pip install "Django>=5.1,<5.2" | |
| ;; | |
| "5.2") | |
| pip install "Django>=5.2,<5.3" | |
| ;; | |
| esac | |
| # Install the package in development mode | |
| pip install -e . | |
| - name: Run tests | |
| run: | | |
| pytest -v --cov=tink_fields --cov-report=xml --cov-report=term-missing | |
| - name: Upload coverage to Codecov | |
| uses: codecov/codecov-action@v4 | |
| with: | |
| file: ./coverage.xml | |
| flags: unittests | |
| name: codecov-umbrella | |
| fail_ci_if_error: false | |
| lint: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python 3.13.7 | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.13.7" | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install -r requirements-dev.txt | |
| - name: Run Black | |
| run: black --check tink_fields/ | |
| - name: Run isort | |
| run: isort --check-only tink_fields/ | |
| - name: Run flake8 | |
| run: flake8 tink_fields/ --max-line-length=120 | |
| - name: Run mypy | |
| run: mypy tink_fields/ | |
| security: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python 3.13.7 | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.13.7" | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install safety bandit | |
| - name: Run safety check | |
| run: safety check | |
| - name: Run bandit security linter | |
| run: bandit -r tink_fields/ -f json -o bandit-report.json || true | |
| - name: Upload bandit report | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: bandit-report | |
| path: bandit-report.json |