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

sandialabs / LoQS / 42140515486
90%

Build:
DEFAULT BRANCH: main
Ran 06 Nov 2026 02:05AM UTC
Jobs 1
Files 84
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

06 Nov 2026 12:57AM UTC coverage: 89.297% (+0.2%) from 89.093%
42140515486

push

github

web-flow
Fix serialization bugs that read back wrong data or failed to write (#171)

* Key the encode cache by a content digest

Make the encode cache's key a SHA-256 digest of each object's typed
content, so values whose Python hashes collide (-1 and -2; 1, True and
1.0) are no longer written as copies of each other and read back wrong.

- _serial_hash now returns the first 16 bytes of a SHA-256 digest of a
  type-tagged, self-delimiting stream, laid out in one commented table.
- The key includes a Serializable's class, keys cycles by depth rather
  than address, and raises on a type the encoders can't write.
- encode raises when ignore_no_serialize_flags is combined with an
  encode cache, since the key honours no-serialize flags.
- Minor: tests for colliding ints, mixed types, strings, lists against
  tuples and subclasses in JSON and HDF5, for a checkpointed shot that
  collides with a program object, and for the new guard.

Co-authored-by: claude-sonnet-5-5 <noreply@anthropic.com>
Co-authored-by: claude-opus-5-5 <noreply@anthropic.com>

* Make dict merges atomic per entry and store UTF-8 strings

Roll back a merge_dict_attr entry that raises, so later keys keep their
own values, and store HDF5 string datasets as exact UTF-8 or raw bytes,
so non-ASCII str and bytes lists round-trip instead of failing.

- Each merge_dict_attr entry is all or nothing: a failure trims both
  sides back and drops the encode-cache entries the entry added.
- A fresh attribute writes only its first entry, and one append loop
  does the rest; a failed first entry deletes the attribute.
- str datasets hold strict UTF-8 sized in bytes and bytes datasets hold
  the bytes as they are; a value that can't read back exactly raises.
- Appends measure width in bytes and refuse bytes on a str side, or the
  reverse, with TypeError.
- One decoder reads dataset sides, and the store's side helpers move
  into streamingmerge.py.
- Minor: tests for refused entries and retries, non-ASCII round tr... (continued)

3722 of 4438 branches covered (83.87%)

Branch coverage included in aggregate %.

12071 of 13248 relevant lines covered (91.12%)

0.91 hits per line

Coverage Regressions

Lines Coverage ∆ File
42
91.5
-1.22% internal/serializable.py
39
93.85
0.15% internal/checkpointstore.py
36
90.64
2.61% internal/encoder/hdf5encoder.py
29
87.07
8.56% internal/streamingmerge.py
28
89.52
-2.7% internal/encoder/jsonencoder.py
17
80.85
0.63% internal/encoder/baseencoder.py
10
92.9
0.0% core/programresults.py
Jobs
ID Job ID Ran Files Coverage
1 42140515486.1 06 Nov 2026 02:05AM UTC 84
89.3
GitHub Action Run
Source Files on build 42140515486
  • Tree
  • List 84
  • Changed 7
  • Source Changed 0
  • Coverage Changed 7
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #42140515486
  • 77b2867e on github
  • Prev Build on main (#41205197238)
  • Next Build on main (#42178660578)
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