name: Python Checks permissions: contents: read on: push: branches: ["main"] paths: - "python/**" pull_request: branches: ["*"] paths: - "python/**" jobs: lint: runs-on: ubuntu-latest defaults: run: working-directory: ./python steps: - uses: actions/checkout@v5 - name: Install Ruff uses: astral-sh/ruff-action@v3 - name: Ruff Lint run: ruff check --config ./pyproject.toml . style: runs-on: ubuntu-latest defaults: run: working-directory: ./python steps: - uses: actions/checkout@v5 - name: Set up Python uses: actions/setup-python@v4 with: python-version-file: "./python/pyproject.toml" - name: Install uv uses: astral-sh/setup-uv@v6 - name: Install style dependencies run: uv sync --locked --only-group style - name: Run format style check run: uv run --directory . ruff format --check --config ./pyproject.toml . - name: Run isort style check run: uv run --directory . isort --check . test: runs-on: ubuntu-latest defaults: run: working-directory: ./python steps: - uses: actions/checkout@v5 with: fetch-depth: 0 - name: Set up Python uses: actions/setup-python@v4 with: python-version-file: "./python/pyproject.toml" - name: Install uv uses: astral-sh/setup-uv@v6 - name: Install the project run: uv sync --locked --all-extras --dev - name: Run tests run: uv run pytest valuecell/core/ --cov=valuecell.core --cov-report=xml --cov-report=term - name: Check coverage run: | uv run diff-cover coverage.xml --fail-under=90