Skip to content

chore(deps-dev): update ruff requirement from >=0.1.0 to >=0.15.10 #2

chore(deps-dev): update ruff requirement from >=0.1.0 to >=0.15.10

chore(deps-dev): update ruff requirement from >=0.1.0 to >=0.15.10 #2

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