Skip to content

Add ruff linting - #860

Open
alongd wants to merge 1 commit into
mainfrom
ruff
Open

alongd wants to merge 1 commit into
mainfrom
ruff

Conversation

@alongd

@alongd alongd commented Apr 8, 2026

Copy link
Copy Markdown
Member

Add ruff as ARC's linter: config in pyproject.toml, workflow in .github/workflows/ruff.yml, status badge in the README.

Ruff currently runs in non-blocking mode (continue-on-error: true)

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds Ruff as a (currently non-blocking) linter/formatter check for ARC, wiring it into repo config, CI, and documentation so contributors can see lint status on PRs.

Changes:

  • Add Ruff configuration to pyproject.toml (rule selection, ignores, per-file ignores, and format settings).
  • Add a GitHub Actions workflow to run ruff check and ruff format --check on PRs and main (non-blocking).
  • Add a Ruff status badge to the README.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 4 comments.

File Description
README.md Adds a Ruff workflow badge to surface lint status.
pyproject.toml Introduces Ruff lint/format configuration and project-specific excludes/ignores.
.github/workflows/ruff.yml Adds a CI workflow that runs Ruff in continue-on-error mode.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread pyproject.toml Outdated
Comment thread .github/workflows/ruff.yml Outdated
Comment thread pyproject.toml
Comment thread pyproject.toml Outdated
@codecov

codecov Bot commented Apr 8, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 67.03%. Comparing base (d9f47ab) to head (2f571a0).

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #860      +/-   ##
==========================================
- Coverage   67.12%   67.03%   -0.09%     
==========================================
  Files         123      123              
  Lines       43602    43602              
  Branches    11144    11144              
==========================================
- Hits        29268    29230      -38     
- Misses      11197    11221      +24     
- Partials     3137     3151      +14     
Flag Coverage Δ
functionaltests 67.03% <ø> (-0.09%) ⬇️
unittests 67.03% <ø> (-0.09%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Comment thread pyproject.toml
"*.egg-info",
".eggs",
"ipython", # notebook tutorials
"arc/molecule", # Cython-compiled sources + tightly coupled modules

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@calvinp0, as discusses offline, now we ignore the entire molecule module

kfir4444 added a commit that referenced this pull request Oct 4, 2026
…rift (#1066)

## What

Adds a `codecov.yml` (23 lines, no code change):

- `coverage.status.project.default.threshold: 1%`
- `coverage.status.patch.default.target: 80%`

## Why

ARC has no Codecov configuration at all — `.coveragerc` configures
coverage.py's *collection*, not
Codecov's *status checks*. With no config, Codecov falls back to its
built-in defaults, under which
the `project` status is `target: auto` with a **0% threshold**: total
coverage may never dip by any
amount relative to the base commit.

The consequence is that nearly every PR adding code covered below the
repository average (~67%)
reports a failing check while every test job, CodeQL and the functional
suite are green. Observed
on the current open set, all red on `codecov/project` alone:

| PR | status |
|---|---|
| #653 | `67.03% (-0.10%)` → `67.05% (-0.08%)` after adding a genuine
unit test |
| #860, #1016, #1039, #1050, #1054, #1055, #1056, #1057 | red on
`codecov/project`, everything else green |

On #653, `codecov/patch` simultaneously reported *"Coverage not
affected"* — the gate that actually
judges whether the PR's new code is tested was already satisfied. A
check that fails on
one-tenth of a percentage point trains reviewers to ignore it, which
costs us the patch signal too.

## What this does and does not change

- **Does:** lets total coverage drift up to 1% without failing the
status.
- **Does:** keep an explicit `patch` target, so the coverage of a PR's
own new or changed lines
remains a gating signal. This is the stricter half of the config, not a
loosening.
- **Does not:** touch any test or source file, change `.coveragerc`, or
alter what coverage is
  collected.
- **Does not:** raise ARC's actual coverage. That is a separate and much
larger piece of work.

Note that Codecov re-evaluates statuses on new uploads, so already-open
PRs will pick this up on
their next CI run rather than retroactively.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants