chore(deps-dev): update ruff requirement from >=0.1.0 to >=0.15.10 #2
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: Python Quality Checks | |
| on: | |
| pull_request: | |
| branches: [dev, main] | |
| paths: | |
| - '**.py' | |
| - 'pyproject.toml' | |
| - '.github/workflows/python-quality.yml' | |
| push: | |
| branches: [dev, main] | |
| paths: | |
| - '**.py' | |
| - 'pyproject.toml' | |
| jobs: | |
| quality: | |
| name: Python Quality (${{ matrix.python-version }}) | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] | |
| 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 }} | |
| cache: 'pip' | |
| - name: Install ruff | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install ruff | |
| - name: Syntax validation | |
| run: | | |
| echo "Validating Python syntax for all .py files..." | |
| python -m py_compile app-store-optimization/*.py | |
| python -m py_compile app-store-optimization/lib/*.py | |
| if [ -d "scripts" ] && [ -n "$(find scripts -name '*.py' 2>/dev/null)" ]; then | |
| python -m py_compile scripts/*.py | |
| fi | |
| echo "✅ All Python files have valid syntax" | |
| - name: Ruff linting | |
| run: | | |
| echo "Running ruff linter..." | |
| ruff check app-store-optimization/ scripts/ --output-format=github | |
| echo "✅ Linting passed" | |
| - name: Ruff formatting check | |
| run: | | |
| echo "Checking code formatting..." | |
| ruff format --check app-store-optimization/ scripts/ | |
| echo "✅ Formatting check passed" | |
| - name: Import sorting validation | |
| run: | | |
| echo "Validating import sorting..." | |
| ruff check --select I app-store-optimization/ scripts/ | |
| echo "✅ Import sorting validated" | |
| - name: File structure validation | |
| run: | | |
| echo "Validating no Python files in repository root..." | |
| root_py_files=$(find . -maxdepth 1 -name "*.py" -type f 2>/dev/null || true) | |
| if [ -n "$root_py_files" ]; then | |
| echo "❌ ERROR: Python files found in repository root:" | |
| echo "$root_py_files" | |
| echo "Please move them to appropriate directories (app-store-optimization/, scripts/, tests/)" | |
| exit 1 | |
| fi | |
| echo "✅ File structure validated" | |
| - name: Character limit validation check | |
| if: matrix.python-version == '3.13' | |
| run: | | |
| echo "Validating character limit constants..." | |
| # Check that metadata_optimizer.py has correct platform limits | |
| if grep -q "APPLE_TITLE_LIMIT = 30" app-store-optimization/metadata_optimizer.py && \ | |
| grep -q "APPLE_SUBTITLE_LIMIT = 30" app-store-optimization/metadata_optimizer.py && \ | |
| grep -q "GOOGLE_TITLE_LIMIT = 50" app-store-optimization/metadata_optimizer.py; then | |
| echo "✅ Platform character limits validated" | |
| else | |
| echo "⚠️ WARNING: Character limit constants may have changed" | |
| fi | |
| quality-summary: | |
| name: Quality Summary | |
| runs-on: ubuntu-latest | |
| needs: quality | |
| if: always() | |
| steps: | |
| - name: Check quality status | |
| run: | | |
| if [ "${{ needs.quality.result }}" == "success" ]; then | |
| echo "✅ All Python quality checks passed across all versions" | |
| echo "- Syntax validation: ✅" | |
| echo "- Ruff linting: ✅" | |
| echo "- Code formatting: ✅" | |
| echo "- Import sorting: ✅" | |
| echo "- File structure: ✅" | |
| exit 0 | |
| else | |
| echo "❌ Python quality checks failed" | |
| echo "Please review the errors above and fix them before merging" | |
| exit 1 | |
| fi |