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

CodeReclaimers / neat-python / 25578897946
87%

Build:
DEFAULT BRANCH: master
Ran 08 May 2026 08:51PM UTC
Jobs 1
Files 30
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

08 May 2026 08:50PM UTC coverage: 87.003% (+0.1%) from 86.868%
25578897946

push

github

CodeReclaimers
Fix bugs surfaced by audit: pickling, empty-input, config validation

Severity-ordered fixes from a bug audit of v2.1.0:

H1/H2 — Checkpoint pickling silently consumed counters
  DefaultGenomeConfig.__getstate__ and DefaultSpeciesSet.__getstate__ called
  next() on the live itertools.count, so every pickle.dumps(...) (i.e. every
  Checkpointer save) skipped one node id and one species id in the running
  process. Now we peek-by-rewind: consume, save the value, then reset the
  counter to start from that same value, leaving the live state unchanged.

H3 — math_util empties raised ZeroDivisionError
  mean/variance/stdev now return nan on empty input; softmax returns []
  on empty input and falls back to a uniform distribution when all exp()
  values underflow to 0. Aggregation callers in neat/aggregations.py
  already guard before calling, so this is a strict relaxation.

H4 — best_genome() raised opaque IndexError
  StatisticsReporter.best_genome() now raises RuntimeError with a clear
  message when called before any generation has been evaluated.

M1 — time_constant_min_value <= 0 now rejected at config load
  CTRNN integration uses exp(-dt/tau); a non-positive minimum would
  divide by zero or flip the decay sign mid-simulation. Validate at
  Config(...) instead.

M4 — Typos in [DefaultGenome] gene-attribute keys silently accepted
  DefaultGenomeConfig.__init__ now mirrors DefaultClassConfig and raises
  UnknownConfigItemError when a key in the section is not in the gene
  attribute schema (e.g. bias_init_typ instead of bias_init_type).

L1 — Added regression test that the innovation tracker counter continues
  monotonically across checkpoint restore (no reset, no skip-ahead).

L3 — GPU activation kernel: unknown activation id now emits NaN instead
  of silently falling back to identity. _padding.py validates upstream so
  this branch is unreachable in practice, but a future ACTIVATION_IDS
  entry without a matching kernel branch would otherwise prod... (continued)

32 of 33 new or added lines in 4 files covered. (96.97%)

2209 of 2539 relevant lines covered (87.0%)

0.87 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
96.62
-0.13% neat/genome.py
Jobs
ID Job ID Ran Files Coverage
1 25578897946.1 08 May 2026 08:51PM UTC 30
87.0
GitHub Action Run
Source Files on build 25578897946
  • Tree
  • List 30
  • Changed 6
  • Source Changed 0
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 1e4c8282 on github
  • Prev Build on master (#24268607044)
  • Next Build on master (#26330410885)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc