• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

DhyeyMavani2003 / chipfiring / 33744530718
95%
main: 95%

Build:
Build:
LAST BUILD BRANCH: v1.1.5
DEFAULT BRANCH: main
Ran 03 Sep 2026 10:30AM UTC
Jobs 8
Files 39
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

03 Sep 2026 10:28AM UTC coverage: 94.887% (+0.4%) from 94.462%
33744530718

Pull #37

github

claude
fix: stop algorithms from mutating caller-owned divisors

Dhar's algorithm (and GonalityDharAlgorithm) wrapped the divisor passed
to its constructor by reference, so run(), send_debt_to_q(),
legal_set_fire() and get_maximal_legal_firing_set() rewrote the caller's
divisor in place. The algorithm now works on a private copy that shares
the caller's graph object and exposes it as configuration.divisor.

Related copy and identity fixes found by the same audit:

- Add CFDivisor.copy() (and __copy__) returning an independent divisor on
  the same CFGraph object, and use it in GreedyAlgorithm, CFConfig.copy
  and the EWD visualizer instead of copy.deepcopy / dict round trips,
  which silently replaced the graph object.
- Give CFGraph structural __eq__/__hash__ and delegate CFDivisor.__eq__
  and CFConfig._is_comparable_to to it, so linear_equivalence no longer
  rejects divisors on independently built or deserialized copies of the
  same graph.
- Make CFLaplacian.get_reduced_matrix a pure query; it inserted zero
  entries into the cached defaultdict rows on every read.
- Materialize the degrees argument in CFDivisor.__init__ so generators
  and zip objects no longer yield a silent zero divisor.
- Correct docstrings that advertised the mutation, document CFConfig's
  by-reference semantics, and update README, docs and CHANGELOG.
- Re-point two Dhar regression tests at the working divisor and add
  non-mutation, copy-semantics and graph-identity tests.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015nucXSJi5ruBENBYv2PNyS
Pull Request #37: Stop algorithms from mutating caller-owned divisors; add CFDivisor.copy and structural graph equality

263 of 263 new or added lines in 17 files covered. (100.0%)

12 existing lines in 1 file now uncovered.

5604 of 5906 relevant lines covered (94.89%)

15.05 hits per line

Coverage Regressions

Lines Coverage ∆ File
12
73.03
0.0% chipfiring/CFEWDVisualizer.py
Jobs
ID Job ID Ran Files Coverage
1 33744530718.1 03 Sep 2026 10:30AM UTC 78
94.86
GitHub Action Run
2 33744530718.2 03 Sep 2026 10:30AM UTC 76
94.84
GitHub Action Run
3 33744530718.3 03 Sep 2026 10:32AM UTC 76
94.84
GitHub Action Run
4 33744530718.4 03 Sep 2026 10:32AM UTC 78
94.86
GitHub Action Run
5 33744530718.5 03 Sep 2026 10:32AM UTC 76
94.84
GitHub Action Run
6 33744530718.6 03 Sep 2026 10:32AM UTC 76
94.84
GitHub Action Run
7 33744530718.7 03 Sep 2026 10:32AM UTC 76
94.84
GitHub Action Run
8 33744530718.8 03 Sep 2026 10:33AM UTC 76
94.84
GitHub Action Run
Source Files on build 33744530718
  • Tree
  • List 39
  • Changed 17
  • Source Changed 16
  • Coverage Changed 17
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #33744530718
  • Pull Request #37
  • PR Base - main (#32918360930)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc